From 523fd4ec64cf72fa360a3d38403290d408c5ab4f Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Mon, 21 Nov 2016 11:20:28 -0800 Subject: [PATCH 1/4] caffe site --- CMakeLists.txt | 106 + CNAME | 1 + README.md | 5 + development.html | 189 + doxygen/absval__layer_8hpp_source.html | 89 + doxygen/accuracy__layer_8hpp_source.html | 93 + doxygen/annotated.html | 190 + doxygen/argmax__layer_8hpp_source.html | 89 + doxygen/arrowdown.png | Bin 0 -> 246 bytes doxygen/arrowright.png | Bin 0 -> 229 bytes doxygen/base__conv__layer_8hpp_source.html | 94 + doxygen/base__data__layer_8hpp_source.html | 92 + doxygen/batch__norm__layer_8hpp_source.html | 90 + doxygen/batch__reindex__layer_8hpp_source.html | 89 + doxygen/bc_s.png | Bin 0 -> 676 bytes doxygen/bdwn.png | Bin 0 -> 147 bytes doxygen/benchmark_8hpp_source.html | 80 + doxygen/bias__layer_8hpp_source.html | 91 + doxygen/blob_8hpp_source.html | 97 + doxygen/blocking__queue_8hpp_source.html | 80 + doxygen/bnll__layer_8hpp_source.html | 86 + doxygen/caffe_8hpp_source.html | 77 + doxygen/classcaffe_1_1AbsValLayer-members.html | 120 + doxygen/classcaffe_1_1AbsValLayer.html | 485 ++ doxygen/classcaffe_1_1AbsValLayer.png | Bin 0 -> 1083 bytes doxygen/classcaffe_1_1AccuracyLayer-members.html | 126 + doxygen/classcaffe_1_1AccuracyLayer.html | 548 ++ doxygen/classcaffe_1_1AccuracyLayer.png | Bin 0 -> 744 bytes doxygen/classcaffe_1_1AdaDeltaSolver-members.html | 143 + doxygen/classcaffe_1_1AdaDeltaSolver.html | 298 + doxygen/classcaffe_1_1AdaDeltaSolver.png | Bin 0 -> 1145 bytes doxygen/classcaffe_1_1AdaGradSolver-members.html | 143 + doxygen/classcaffe_1_1AdaGradSolver.html | 298 + doxygen/classcaffe_1_1AdaGradSolver.png | Bin 0 -> 1143 bytes doxygen/classcaffe_1_1AdamSolver-members.html | 143 + doxygen/classcaffe_1_1AdamSolver.html | 309 + doxygen/classcaffe_1_1AdamSolver.png | Bin 0 -> 1097 bytes doxygen/classcaffe_1_1ArgMaxLayer-members.html | 123 + doxygen/classcaffe_1_1ArgMaxLayer.html | 507 ++ doxygen/classcaffe_1_1ArgMaxLayer.png | Bin 0 -> 753 bytes doxygen/classcaffe_1_1BNLLLayer-members.html | 120 + doxygen/classcaffe_1_1BNLLLayer.html | 371 + doxygen/classcaffe_1_1BNLLLayer.png | Bin 0 -> 1063 bytes ...classcaffe_1_1BaseConvolutionLayer-members.html | 153 + doxygen/classcaffe_1_1BaseConvolutionLayer.html | 547 ++ doxygen/classcaffe_1_1BaseConvolutionLayer.png | Bin 0 -> 1598 bytes doxygen/classcaffe_1_1BaseDataLayer-members.html | 123 + doxygen/classcaffe_1_1BaseDataLayer.html | 358 + doxygen/classcaffe_1_1BaseDataLayer.png | Bin 0 -> 2959 bytes ...scaffe_1_1BasePrefetchingDataLayer-members.html | 137 + .../classcaffe_1_1BasePrefetchingDataLayer.html | 338 + doxygen/classcaffe_1_1BasePrefetchingDataLayer.png | Bin 0 -> 2948 bytes doxygen/classcaffe_1_1Batch-members.html | 82 + doxygen/classcaffe_1_1Batch.html | 93 + doxygen/classcaffe_1_1BatchNormLayer-members.html | 130 + doxygen/classcaffe_1_1BatchNormLayer.html | 442 + doxygen/classcaffe_1_1BatchNormLayer.png | Bin 0 -> 762 bytes .../classcaffe_1_1BatchReindexLayer-members.html | 119 + doxygen/classcaffe_1_1BatchReindexLayer.html | 468 ++ doxygen/classcaffe_1_1BatchReindexLayer.png | Bin 0 -> 780 bytes doxygen/classcaffe_1_1BiasLayer-members.html | 119 + doxygen/classcaffe_1_1BiasLayer.html | 431 + doxygen/classcaffe_1_1BiasLayer.png | Bin 0 -> 706 bytes doxygen/classcaffe_1_1BilinearFiller-members.html | 85 + doxygen/classcaffe_1_1BilinearFiller.html | 123 + doxygen/classcaffe_1_1BilinearFiller.png | Bin 0 -> 742 bytes doxygen/classcaffe_1_1Blob-members.html | 154 + doxygen/classcaffe_1_1Blob.html | 626 ++ doxygen/classcaffe_1_1BlockingQueue-members.html | 90 + doxygen/classcaffe_1_1BlockingQueue.html | 129 + ...lasscaffe_1_1BlockingQueue_1_1sync-members.html | 82 + doxygen/classcaffe_1_1BlockingQueue_1_1sync.html | 93 + doxygen/classcaffe_1_1CPUTimer-members.html | 102 + doxygen/classcaffe_1_1CPUTimer.html | 157 + doxygen/classcaffe_1_1CPUTimer.png | Bin 0 -> 498 bytes doxygen/classcaffe_1_1Caffe-members.html | 105 + doxygen/classcaffe_1_1Caffe.html | 169 + doxygen/classcaffe_1_1Caffe_1_1RNG-members.html | 85 + doxygen/classcaffe_1_1Caffe_1_1RNG.html | 106 + ...caffe_1_1Caffe_1_1RNG_1_1Generator-members.html | 83 + .../classcaffe_1_1Caffe_1_1RNG_1_1Generator.html | 93 + doxygen/classcaffe_1_1ConcatLayer-members.html | 123 + doxygen/classcaffe_1_1ConcatLayer.html | 529 ++ doxygen/classcaffe_1_1ConcatLayer.png | Bin 0 -> 723 bytes doxygen/classcaffe_1_1ConstantFiller-members.html | 85 + doxygen/classcaffe_1_1ConstantFiller.html | 123 + doxygen/classcaffe_1_1ConstantFiller.png | Bin 0 -> 757 bytes ...classcaffe_1_1ContrastiveLossLayer-members.html | 124 + doxygen/classcaffe_1_1ContrastiveLossLayer.html | 503 ++ doxygen/classcaffe_1_1ContrastiveLossLayer.png | Bin 0 -> 1151 bytes .../classcaffe_1_1ConvolutionLayer-members.html | 154 + doxygen/classcaffe_1_1ConvolutionLayer.html | 400 + doxygen/classcaffe_1_1ConvolutionLayer.png | Bin 0 -> 1179 bytes doxygen/classcaffe_1_1CropLayer-members.html | 120 + doxygen/classcaffe_1_1CropLayer.html | 407 + doxygen/classcaffe_1_1CropLayer.png | Bin 0 -> 708 bytes doxygen/classcaffe_1_1DataLayer-members.html | 140 + doxygen/classcaffe_1_1DataLayer.html | 391 + doxygen/classcaffe_1_1DataLayer.png | Bin 0 -> 2237 bytes doxygen/classcaffe_1_1DataReader-members.html | 89 + doxygen/classcaffe_1_1DataReader.html | 143 + .../classcaffe_1_1DataReader_1_1Body-members.html | 94 + doxygen/classcaffe_1_1DataReader_1_1Body.html | 142 + doxygen/classcaffe_1_1DataReader_1_1Body.png | Bin 0 -> 664 bytes ...sscaffe_1_1DataReader_1_1QueuePair-members.html | 85 + doxygen/classcaffe_1_1DataReader_1_1QueuePair.html | 104 + doxygen/classcaffe_1_1DataTransformer-members.html | 95 + doxygen/classcaffe_1_1DataTransformer.html | 361 + .../classcaffe_1_1DeconvolutionLayer-members.html | 154 + doxygen/classcaffe_1_1DeconvolutionLayer.html | 355 + doxygen/classcaffe_1_1DeconvolutionLayer.png | Bin 0 -> 1183 bytes doxygen/classcaffe_1_1DevicePair-members.html | 86 + doxygen/classcaffe_1_1DevicePair.html | 114 + doxygen/classcaffe_1_1DropoutLayer-members.html | 124 + doxygen/classcaffe_1_1DropoutLayer.html | 460 ++ doxygen/classcaffe_1_1DropoutLayer.png | Bin 0 -> 1073 bytes doxygen/classcaffe_1_1DummyDataLayer-members.html | 121 + doxygen/classcaffe_1_1DummyDataLayer.html | 410 + doxygen/classcaffe_1_1DummyDataLayer.png | Bin 0 -> 768 bytes doxygen/classcaffe_1_1ELULayer-members.html | 120 + doxygen/classcaffe_1_1ELULayer.html | 392 + doxygen/classcaffe_1_1ELULayer.png | Bin 0 -> 1044 bytes doxygen/classcaffe_1_1EltwiseLayer-members.html | 123 + doxygen/classcaffe_1_1EltwiseLayer.html | 416 + doxygen/classcaffe_1_1EltwiseLayer.png | Bin 0 -> 738 bytes doxygen/classcaffe_1_1EmbedLayer-members.html | 124 + doxygen/classcaffe_1_1EmbedLayer.html | 419 + doxygen/classcaffe_1_1EmbedLayer.png | Bin 0 -> 722 bytes .../classcaffe_1_1EuclideanLossLayer-members.html | 121 + doxygen/classcaffe_1_1EuclideanLossLayer.html | 464 ++ doxygen/classcaffe_1_1EuclideanLossLayer.png | Bin 0 -> 1122 bytes doxygen/classcaffe_1_1ExpLayer-members.html | 122 + doxygen/classcaffe_1_1ExpLayer.html | 451 ++ doxygen/classcaffe_1_1ExpLayer.png | Bin 0 -> 1064 bytes doxygen/classcaffe_1_1Filler-members.html | 84 + doxygen/classcaffe_1_1Filler.html | 125 + doxygen/classcaffe_1_1Filler.png | Bin 0 -> 2433 bytes doxygen/classcaffe_1_1FilterLayer-members.html | 121 + doxygen/classcaffe_1_1FilterLayer.html | 518 ++ doxygen/classcaffe_1_1FilterLayer.png | Bin 0 -> 707 bytes doxygen/classcaffe_1_1FlattenLayer-members.html | 119 + doxygen/classcaffe_1_1FlattenLayer.html | 459 ++ doxygen/classcaffe_1_1FlattenLayer.png | Bin 0 -> 721 bytes doxygen/classcaffe_1_1GPUParams-members.html | 92 + doxygen/classcaffe_1_1GPUParams.html | 134 + doxygen/classcaffe_1_1GPUParams.png | Bin 0 -> 1066 bytes doxygen/classcaffe_1_1GaussianFiller-members.html | 86 + doxygen/classcaffe_1_1GaussianFiller.html | 127 + doxygen/classcaffe_1_1GaussianFiller.png | Bin 0 -> 760 bytes doxygen/classcaffe_1_1HDF5DataLayer-members.html | 128 + doxygen/classcaffe_1_1HDF5DataLayer.html | 428 + doxygen/classcaffe_1_1HDF5DataLayer.png | Bin 0 -> 760 bytes doxygen/classcaffe_1_1HDF5OutputLayer-members.html | 127 + doxygen/classcaffe_1_1HDF5OutputLayer.html | 425 + doxygen/classcaffe_1_1HDF5OutputLayer.png | Bin 0 -> 774 bytes doxygen/classcaffe_1_1HingeLossLayer-members.html | 120 + doxygen/classcaffe_1_1HingeLossLayer.html | 377 + doxygen/classcaffe_1_1HingeLossLayer.png | Bin 0 -> 1098 bytes doxygen/classcaffe_1_1Im2colLayer-members.html | 130 + doxygen/classcaffe_1_1Im2colLayer.html | 441 + doxygen/classcaffe_1_1Im2colLayer.png | Bin 0 -> 727 bytes doxygen/classcaffe_1_1ImageDataLayer-members.html | 143 + doxygen/classcaffe_1_1ImageDataLayer.html | 378 + doxygen/classcaffe_1_1ImageDataLayer.png | Bin 0 -> 2285 bytes .../classcaffe_1_1InfogainLossLayer-members.html | 121 + doxygen/classcaffe_1_1InfogainLossLayer.html | 580 ++ doxygen/classcaffe_1_1InfogainLossLayer.png | Bin 0 -> 1114 bytes .../classcaffe_1_1InnerProductLayer-members.html | 125 + doxygen/classcaffe_1_1InnerProductLayer.html | 423 + doxygen/classcaffe_1_1InnerProductLayer.png | Bin 0 -> 774 bytes doxygen/classcaffe_1_1InputLayer-members.html | 119 + doxygen/classcaffe_1_1InputLayer.html | 403 + doxygen/classcaffe_1_1InputLayer.png | Bin 0 -> 704 bytes doxygen/classcaffe_1_1InternalThread-members.html | 87 + doxygen/classcaffe_1_1InternalThread.html | 160 + doxygen/classcaffe_1_1InternalThread.png | Bin 0 -> 2743 bytes doxygen/classcaffe_1_1LRNLayer-members.html | 151 + doxygen/classcaffe_1_1LRNLayer.html | 500 ++ doxygen/classcaffe_1_1LRNLayer.png | Bin 0 -> 702 bytes doxygen/classcaffe_1_1LSTMLayer-members.html | 138 + doxygen/classcaffe_1_1LSTMLayer.html | 312 + doxygen/classcaffe_1_1LSTMLayer.png | Bin 0 -> 1099 bytes doxygen/classcaffe_1_1LSTMUnitLayer-members.html | 121 + doxygen/classcaffe_1_1LSTMUnitLayer.html | 511 ++ doxygen/classcaffe_1_1LSTMUnitLayer.png | Bin 0 -> 749 bytes doxygen/classcaffe_1_1Layer-members.html | 118 + doxygen/classcaffe_1_1Layer.html | 1068 +++ doxygen/classcaffe_1_1Layer.png | Bin 0 -> 18948 bytes doxygen/classcaffe_1_1LayerRegisterer-members.html | 81 + doxygen/classcaffe_1_1LayerRegisterer.html | 90 + doxygen/classcaffe_1_1LayerRegistry-members.html | 86 + doxygen/classcaffe_1_1LayerRegistry.html | 109 + doxygen/classcaffe_1_1LogLayer-members.html | 124 + doxygen/classcaffe_1_1LogLayer.html | 457 ++ doxygen/classcaffe_1_1LogLayer.png | Bin 0 -> 1059 bytes doxygen/classcaffe_1_1LossLayer-members.html | 119 + doxygen/classcaffe_1_1LossLayer.html | 447 ++ doxygen/classcaffe_1_1LossLayer.png | Bin 0 -> 4169 bytes doxygen/classcaffe_1_1MSRAFiller-members.html | 85 + doxygen/classcaffe_1_1MSRAFiller.html | 126 + doxygen/classcaffe_1_1MSRAFiller.png | Bin 0 -> 741 bytes doxygen/classcaffe_1_1MVNLayer-members.html | 124 + doxygen/classcaffe_1_1MVNLayer.html | 370 + doxygen/classcaffe_1_1MVNLayer.png | Bin 0 -> 716 bytes doxygen/classcaffe_1_1MemoryDataLayer-members.html | 143 + doxygen/classcaffe_1_1MemoryDataLayer.html | 379 + doxygen/classcaffe_1_1MemoryDataLayer.png | Bin 0 -> 1170 bytes ...fe_1_1MultinomialLogisticLossLayer-members.html | 120 + ...classcaffe_1_1MultinomialLogisticLossLayer.html | 427 + .../classcaffe_1_1MultinomialLogisticLossLayer.png | Bin 0 -> 1261 bytes doxygen/classcaffe_1_1NesterovSolver-members.html | 142 + doxygen/classcaffe_1_1NesterovSolver.html | 295 + doxygen/classcaffe_1_1NesterovSolver.png | Bin 0 -> 1149 bytes doxygen/classcaffe_1_1Net-members.html | 183 + doxygen/classcaffe_1_1Net.html | 628 ++ doxygen/classcaffe_1_1NeuronLayer-members.html | 119 + doxygen/classcaffe_1_1NeuronLayer.html | 366 + doxygen/classcaffe_1_1NeuronLayer.png | Bin 0 -> 6517 bytes doxygen/classcaffe_1_1P2PSync-members.html | 113 + doxygen/classcaffe_1_1P2PSync.html | 196 + doxygen/classcaffe_1_1P2PSync.png | Bin 0 -> 2025 bytes doxygen/classcaffe_1_1PReLULayer-members.html | 124 + doxygen/classcaffe_1_1PReLULayer.html | 506 ++ doxygen/classcaffe_1_1PReLULayer.png | Bin 0 -> 1066 bytes doxygen/classcaffe_1_1ParameterLayer-members.html | 119 + doxygen/classcaffe_1_1ParameterLayer.html | 391 + doxygen/classcaffe_1_1ParameterLayer.png | Bin 0 -> 756 bytes doxygen/classcaffe_1_1Params-members.html | 89 + doxygen/classcaffe_1_1Params.html | 130 + doxygen/classcaffe_1_1Params.png | Bin 0 -> 1072 bytes doxygen/classcaffe_1_1PoolingLayer-members.html | 133 + doxygen/classcaffe_1_1PoolingLayer.html | 478 ++ doxygen/classcaffe_1_1PoolingLayer.png | Bin 0 -> 732 bytes ...asscaffe_1_1PositiveUnitballFiller-members.html | 85 + doxygen/classcaffe_1_1PositiveUnitballFiller.html | 123 + doxygen/classcaffe_1_1PositiveUnitballFiller.png | Bin 0 -> 802 bytes doxygen/classcaffe_1_1PowerLayer-members.html | 124 + doxygen/classcaffe_1_1PowerLayer.html | 461 ++ doxygen/classcaffe_1_1PowerLayer.png | Bin 0 -> 1068 bytes doxygen/classcaffe_1_1PythonLayer-members.html | 119 + doxygen/classcaffe_1_1PythonLayer.html | 327 + doxygen/classcaffe_1_1PythonLayer.png | Bin 0 -> 723 bytes doxygen/classcaffe_1_1RMSPropSolver-members.html | 143 + doxygen/classcaffe_1_1RMSPropSolver.html | 298 + doxygen/classcaffe_1_1RMSPropSolver.png | Bin 0 -> 1154 bytes doxygen/classcaffe_1_1RNNLayer-members.html | 138 + doxygen/classcaffe_1_1RNNLayer.html | 308 + doxygen/classcaffe_1_1RNNLayer.png | Bin 0 -> 1093 bytes doxygen/classcaffe_1_1ReLULayer-members.html | 120 + doxygen/classcaffe_1_1ReLULayer.html | 392 + doxygen/classcaffe_1_1ReLULayer.png | Bin 0 -> 1060 bytes doxygen/classcaffe_1_1RecurrentLayer-members.html | 137 + doxygen/classcaffe_1_1RecurrentLayer.html | 594 ++ doxygen/classcaffe_1_1RecurrentLayer.png | Bin 0 -> 1518 bytes doxygen/classcaffe_1_1ReductionLayer-members.html | 125 + doxygen/classcaffe_1_1ReductionLayer.html | 428 + doxygen/classcaffe_1_1ReductionLayer.png | Bin 0 -> 748 bytes doxygen/classcaffe_1_1ReshapeLayer-members.html | 122 + doxygen/classcaffe_1_1ReshapeLayer.html | 405 + doxygen/classcaffe_1_1ReshapeLayer.png | Bin 0 -> 735 bytes doxygen/classcaffe_1_1SGDSolver-members.html | 139 + doxygen/classcaffe_1_1SGDSolver.html | 298 + doxygen/classcaffe_1_1SGDSolver.png | Bin 0 -> 2486 bytes doxygen/classcaffe_1_1SPPLayer-members.html | 141 + doxygen/classcaffe_1_1SPPLayer.html | 480 ++ doxygen/classcaffe_1_1SPPLayer.png | Bin 0 -> 695 bytes doxygen/classcaffe_1_1ScaleLayer-members.html | 130 + doxygen/classcaffe_1_1ScaleLayer.html | 522 ++ doxygen/classcaffe_1_1ScaleLayer.png | Bin 0 -> 716 bytes ...fe_1_1SigmoidCrossEntropyLossLayer-members.html | 131 + ...classcaffe_1_1SigmoidCrossEntropyLossLayer.html | 556 ++ .../classcaffe_1_1SigmoidCrossEntropyLossLayer.png | Bin 0 -> 1411 bytes doxygen/classcaffe_1_1SigmoidLayer-members.html | 120 + doxygen/classcaffe_1_1SigmoidLayer.html | 356 + doxygen/classcaffe_1_1SigmoidLayer.png | Bin 0 -> 1099 bytes doxygen/classcaffe_1_1SignalHandler-members.html | 83 + doxygen/classcaffe_1_1SignalHandler.html | 94 + doxygen/classcaffe_1_1SilenceLayer-members.html | 119 + doxygen/classcaffe_1_1SilenceLayer.html | 352 + doxygen/classcaffe_1_1SilenceLayer.png | Bin 0 -> 734 bytes doxygen/classcaffe_1_1SliceLayer-members.html | 124 + doxygen/classcaffe_1_1SliceLayer.html | 419 + doxygen/classcaffe_1_1SliceLayer.png | Bin 0 -> 716 bytes doxygen/classcaffe_1_1SoftmaxLayer-members.html | 124 + doxygen/classcaffe_1_1SoftmaxLayer.html | 371 + doxygen/classcaffe_1_1SoftmaxLayer.png | Bin 0 -> 738 bytes ...classcaffe_1_1SoftmaxWithLossLayer-members.html | 131 + doxygen/classcaffe_1_1SoftmaxWithLossLayer.html | 634 ++ doxygen/classcaffe_1_1SoftmaxWithLossLayer.png | Bin 0 -> 1160 bytes doxygen/classcaffe_1_1Solver-members.html | 124 + doxygen/classcaffe_1_1Solver.html | 258 + doxygen/classcaffe_1_1Solver.png | Bin 0 -> 2676 bytes .../classcaffe_1_1SolverRegisterer-members.html | 81 + doxygen/classcaffe_1_1SolverRegisterer.html | 90 + doxygen/classcaffe_1_1SolverRegistry-members.html | 86 + doxygen/classcaffe_1_1SolverRegistry.html | 109 + .../classcaffe_1_1Solver_1_1Callback-members.html | 83 + doxygen/classcaffe_1_1Solver_1_1Callback.html | 110 + doxygen/classcaffe_1_1Solver_1_1Callback.png | Bin 0 -> 792 bytes doxygen/classcaffe_1_1SplitLayer-members.html | 120 + doxygen/classcaffe_1_1SplitLayer.html | 357 + doxygen/classcaffe_1_1SplitLayer.png | Bin 0 -> 714 bytes doxygen/classcaffe_1_1SyncedMemory-members.html | 97 + doxygen/classcaffe_1_1SyncedMemory.html | 136 + doxygen/classcaffe_1_1TanHLayer-members.html | 120 + doxygen/classcaffe_1_1TanHLayer.html | 356 + doxygen/classcaffe_1_1TanHLayer.png | Bin 0 -> 1068 bytes doxygen/classcaffe_1_1ThresholdLayer-members.html | 121 + doxygen/classcaffe_1_1ThresholdLayer.html | 385 + doxygen/classcaffe_1_1ThresholdLayer.png | Bin 0 -> 1102 bytes doxygen/classcaffe_1_1TileLayer-members.html | 123 + doxygen/classcaffe_1_1TileLayer.html | 365 + doxygen/classcaffe_1_1TileLayer.png | Bin 0 -> 691 bytes doxygen/classcaffe_1_1Timer-members.html | 100 + doxygen/classcaffe_1_1Timer.html | 159 + doxygen/classcaffe_1_1Timer.png | Bin 0 -> 499 bytes doxygen/classcaffe_1_1UniformFiller-members.html | 85 + doxygen/classcaffe_1_1UniformFiller.html | 123 + doxygen/classcaffe_1_1UniformFiller.png | Bin 0 -> 742 bytes doxygen/classcaffe_1_1WindowDataLayer-members.html | 159 + doxygen/classcaffe_1_1WindowDataLayer.html | 416 + doxygen/classcaffe_1_1WindowDataLayer.png | Bin 0 -> 2286 bytes doxygen/classcaffe_1_1WorkerSolver-members.html | 125 + doxygen/classcaffe_1_1WorkerSolver.html | 249 + doxygen/classcaffe_1_1WorkerSolver.png | Bin 0 -> 750 bytes doxygen/classcaffe_1_1XavierFiller-members.html | 85 + doxygen/classcaffe_1_1XavierFiller.html | 126 + doxygen/classcaffe_1_1XavierFiller.png | Bin 0 -> 736 bytes doxygen/classcaffe_1_1db_1_1Cursor-members.html | 88 + doxygen/classcaffe_1_1db_1_1Cursor.html | 105 + doxygen/classcaffe_1_1db_1_1Cursor.png | Bin 0 -> 877 bytes doxygen/classcaffe_1_1db_1_1DB-members.html | 87 + doxygen/classcaffe_1_1db_1_1DB.html | 102 + doxygen/classcaffe_1_1db_1_1DB.png | Bin 0 -> 686 bytes doxygen/classcaffe_1_1db_1_1LMDB-members.html | 114 + doxygen/classcaffe_1_1db_1_1LMDB.html | 138 + doxygen/classcaffe_1_1db_1_1LMDB.png | Bin 0 -> 488 bytes .../classcaffe_1_1db_1_1LMDBCursor-members.html | 115 + doxygen/classcaffe_1_1db_1_1LMDBCursor.html | 143 + doxygen/classcaffe_1_1db_1_1LMDBCursor.png | Bin 0 -> 623 bytes ...lasscaffe_1_1db_1_1LMDBTransaction-members.html | 111 + doxygen/classcaffe_1_1db_1_1LMDBTransaction.html | 135 + doxygen/classcaffe_1_1db_1_1LMDBTransaction.png | Bin 0 -> 678 bytes doxygen/classcaffe_1_1db_1_1LevelDB-members.html | 114 + doxygen/classcaffe_1_1db_1_1LevelDB.html | 138 + doxygen/classcaffe_1_1db_1_1LevelDB.png | Bin 0 -> 507 bytes .../classcaffe_1_1db_1_1LevelDBCursor-members.html | 115 + doxygen/classcaffe_1_1db_1_1LevelDBCursor.html | 143 + doxygen/classcaffe_1_1db_1_1LevelDBCursor.png | Bin 0 -> 644 bytes ...scaffe_1_1db_1_1LevelDBTransaction-members.html | 111 + .../classcaffe_1_1db_1_1LevelDBTransaction.html | 134 + doxygen/classcaffe_1_1db_1_1LevelDBTransaction.png | Bin 0 -> 698 bytes .../classcaffe_1_1db_1_1Transaction-members.html | 85 + doxygen/classcaffe_1_1db_1_1Transaction.html | 96 + doxygen/classcaffe_1_1db_1_1Transaction.png | Bin 0 -> 955 bytes doxygen/classes.html | 130 + doxygen/closed.png | Bin 0 -> 132 bytes doxygen/common_8hpp_source.html | 82 + doxygen/common__layers_8hpp_source.html | 776 ++ doxygen/concat__layer_8hpp_source.html | 90 + doxygen/contrastive__loss__layer_8hpp_source.html | 89 + doxygen/conv__layer_8hpp_source.html | 87 + doxygen/crop__layer_8hpp_source.html | 90 + doxygen/cudnn_8hpp_source.html | 78 + doxygen/cudnn__conv__layer_8hpp_source.html | 78 + doxygen/cudnn__lcn__layer_8hpp_source.html | 78 + doxygen/cudnn__lrn__layer_8hpp_source.html | 78 + doxygen/cudnn__pooling__layer_8hpp_source.html | 78 + doxygen/cudnn__relu__layer_8hpp_source.html | 78 + doxygen/cudnn__sigmoid__layer_8hpp_source.html | 78 + doxygen/cudnn__softmax__layer_8hpp_source.html | 78 + doxygen/cudnn__tanh__layer_8hpp_source.html | 78 + doxygen/data__layer_8hpp_source.html | 88 + doxygen/data__layers_8hpp_source.html | 475 ++ doxygen/data__reader_8hpp_source.html | 84 + doxygen/data__transformer_8hpp_source.html | 84 + doxygen/db_8hpp_source.html | 81 + doxygen/db__leveldb_8hpp_source.html | 78 + doxygen/db__lmdb_8hpp_source.html | 78 + doxygen/deconv__layer_8hpp_source.html | 86 + doxygen/device__alternate_8hpp_source.html | 78 + doxygen/dir_4b7f3da7c7b4301d805dae0326fb91b7.html | 81 + doxygen/dir_5c92236a0f5740f6a611cf0cbca860fd.html | 81 + doxygen/dir_63b6f53f56ebc4a4e494d80608d10658.html | 77 + doxygen/dir_68267d1309a1af8e8297ef4c3efbcdba.html | 81 + doxygen/dir_750d2c266ff028c3ef5b86bdca6396e1.html | 77 + doxygen/dir_b4c5ae27f152c386e8799324caa2412e.html | 77 + doxygen/dir_b9606a76d4acbf8f90a06a4a51ec8b9e.html | 77 + doxygen/dir_d44c64559bbebec7f509842c48db8b23.html | 81 + doxygen/dir_feb0d617e78aec1d705c99fd9e400e0d.html | 77 + doxygen/doc.png | Bin 0 -> 746 bytes doxygen/doxygen.css | 1508 ++++ doxygen/doxygen.png | Bin 0 -> 3779 bytes doxygen/dropout__layer_8hpp_source.html | 92 + doxygen/dummy__data__layer_8hpp_source.html | 90 + doxygen/dynsections.js | 97 + doxygen/eltwise__layer_8hpp_source.html | 90 + doxygen/elu__layer_8hpp_source.html | 87 + doxygen/embed__layer_8hpp_source.html | 90 + doxygen/euclidean__loss__layer_8hpp_source.html | 88 + doxygen/exp__layer_8hpp_source.html | 88 + doxygen/files.html | 184 + doxygen/filler_8hpp_source.html | 93 + doxygen/filter__layer_8hpp_source.html | 90 + doxygen/flatten__layer_8hpp_source.html | 87 + doxygen/folderclosed.png | Bin 0 -> 616 bytes doxygen/folderopen.png | Bin 0 -> 597 bytes doxygen/form_0.png | Bin 0 -> 232 bytes doxygen/form_1.png | Bin 0 -> 466 bytes doxygen/form_10.png | Bin 0 -> 242 bytes doxygen/form_100.png | Bin 0 -> 206 bytes doxygen/form_101.png | Bin 0 -> 474 bytes doxygen/form_102.png | Bin 0 -> 481 bytes doxygen/form_103.png | Bin 0 -> 563 bytes doxygen/form_104.png | Bin 0 -> 607 bytes doxygen/form_105.png | Bin 0 -> 654 bytes doxygen/form_106.png | Bin 0 -> 217 bytes doxygen/form_107.png | Bin 0 -> 1013 bytes doxygen/form_108.png | Bin 0 -> 428 bytes doxygen/form_109.png | Bin 0 -> 623 bytes doxygen/form_11.png | Bin 0 -> 584 bytes doxygen/form_110.png | Bin 0 -> 428 bytes doxygen/form_111.png | Bin 0 -> 376 bytes doxygen/form_112.png | Bin 0 -> 371 bytes doxygen/form_113.png | Bin 0 -> 874 bytes doxygen/form_114.png | Bin 0 -> 1069 bytes doxygen/form_115.png | Bin 0 -> 243 bytes doxygen/form_116.png | Bin 0 -> 206 bytes doxygen/form_117.png | Bin 0 -> 744 bytes doxygen/form_118.png | Bin 0 -> 947 bytes doxygen/form_119.png | Bin 0 -> 1122 bytes doxygen/form_12.png | Bin 0 -> 579 bytes doxygen/form_120.png | Bin 0 -> 630 bytes doxygen/form_121.png | Bin 0 -> 1468 bytes doxygen/form_122.png | Bin 0 -> 637 bytes doxygen/form_123.png | Bin 0 -> 234 bytes doxygen/form_124.png | Bin 0 -> 478 bytes doxygen/form_125.png | Bin 0 -> 234 bytes doxygen/form_126.png | Bin 0 -> 790 bytes doxygen/form_127.png | Bin 0 -> 435 bytes doxygen/form_128.png | Bin 0 -> 203 bytes doxygen/form_129.png | Bin 0 -> 1218 bytes doxygen/form_13.png | Bin 0 -> 477 bytes doxygen/form_130.png | Bin 0 -> 1206 bytes doxygen/form_131.png | Bin 0 -> 542 bytes doxygen/form_132.png | Bin 0 -> 559 bytes doxygen/form_133.png | Bin 0 -> 565 bytes doxygen/form_134.png | Bin 0 -> 353 bytes doxygen/form_135.png | Bin 0 -> 295 bytes doxygen/form_136.png | Bin 0 -> 366 bytes doxygen/form_137.png | Bin 0 -> 383 bytes doxygen/form_138.png | Bin 0 -> 1298 bytes doxygen/form_139.png | Bin 0 -> 438 bytes doxygen/form_14.png | Bin 0 -> 312 bytes doxygen/form_140.png | Bin 0 -> 429 bytes doxygen/form_141.png | Bin 0 -> 437 bytes doxygen/form_142.png | Bin 0 -> 1338 bytes doxygen/form_143.png | Bin 0 -> 1056 bytes doxygen/form_144.png | Bin 0 -> 908 bytes doxygen/form_145.png | Bin 0 -> 203 bytes doxygen/form_146.png | Bin 0 -> 619 bytes doxygen/form_147.png | Bin 0 -> 444 bytes doxygen/form_148.png | Bin 0 -> 297 bytes doxygen/form_149.png | Bin 0 -> 442 bytes doxygen/form_15.png | Bin 0 -> 215 bytes doxygen/form_150.png | Bin 0 -> 247 bytes doxygen/form_151.png | Bin 0 -> 470 bytes doxygen/form_152.png | Bin 0 -> 459 bytes doxygen/form_153.png | Bin 0 -> 352 bytes doxygen/form_154.png | Bin 0 -> 231 bytes doxygen/form_155.png | Bin 0 -> 217 bytes doxygen/form_156.png | Bin 0 -> 236 bytes doxygen/form_157.png | Bin 0 -> 308 bytes doxygen/form_158.png | Bin 0 -> 314 bytes doxygen/form_159.png | Bin 0 -> 595 bytes doxygen/form_16.png | Bin 0 -> 821 bytes doxygen/form_160.png | Bin 0 -> 407 bytes doxygen/form_161.png | Bin 0 -> 427 bytes doxygen/form_162.png | Bin 0 -> 218 bytes doxygen/form_163.png | Bin 0 -> 226 bytes doxygen/form_164.png | Bin 0 -> 436 bytes doxygen/form_165.png | Bin 0 -> 372 bytes doxygen/form_166.png | Bin 0 -> 210 bytes doxygen/form_167.png | Bin 0 -> 325 bytes doxygen/form_168.png | Bin 0 -> 210 bytes doxygen/form_169.png | Bin 0 -> 263 bytes doxygen/form_17.png | Bin 0 -> 583 bytes doxygen/form_170.png | Bin 0 -> 299 bytes doxygen/form_171.png | Bin 0 -> 307 bytes doxygen/form_172.png | Bin 0 -> 238 bytes doxygen/form_173.png | Bin 0 -> 298 bytes doxygen/form_174.png | Bin 0 -> 480 bytes doxygen/form_175.png | Bin 0 -> 460 bytes doxygen/form_176.png | Bin 0 -> 222 bytes doxygen/form_177.png | Bin 0 -> 223 bytes doxygen/form_178.png | Bin 0 -> 898 bytes doxygen/form_179.png | Bin 0 -> 653 bytes doxygen/form_18.png | Bin 0 -> 271 bytes doxygen/form_19.png | Bin 0 -> 429 bytes doxygen/form_2.png | Bin 0 -> 550 bytes doxygen/form_20.png | Bin 0 -> 261 bytes doxygen/form_21.png | Bin 0 -> 345 bytes doxygen/form_22.png | Bin 0 -> 475 bytes doxygen/form_23.png | Bin 0 -> 474 bytes doxygen/form_24.png | Bin 0 -> 207 bytes doxygen/form_25.png | Bin 0 -> 1261 bytes doxygen/form_26.png | Bin 0 -> 490 bytes doxygen/form_27.png | Bin 0 -> 476 bytes doxygen/form_28.png | Bin 0 -> 433 bytes doxygen/form_29.png | Bin 0 -> 448 bytes doxygen/form_3.png | Bin 0 -> 210 bytes doxygen/form_30.png | Bin 0 -> 427 bytes doxygen/form_31.png | Bin 0 -> 343 bytes doxygen/form_32.png | Bin 0 -> 388 bytes doxygen/form_33.png | Bin 0 -> 774 bytes doxygen/form_34.png | Bin 0 -> 460 bytes doxygen/form_35.png | Bin 0 -> 455 bytes doxygen/form_36.png | Bin 0 -> 768 bytes doxygen/form_37.png | Bin 0 -> 204 bytes doxygen/form_38.png | Bin 0 -> 363 bytes doxygen/form_39.png | Bin 0 -> 408 bytes doxygen/form_4.png | Bin 0 -> 487 bytes doxygen/form_40.png | Bin 0 -> 323 bytes doxygen/form_41.png | Bin 0 -> 427 bytes doxygen/form_42.png | Bin 0 -> 435 bytes doxygen/form_43.png | Bin 0 -> 200 bytes doxygen/form_44.png | Bin 0 -> 555 bytes doxygen/form_45.png | Bin 0 -> 1242 bytes doxygen/form_46.png | Bin 0 -> 237 bytes doxygen/form_47.png | Bin 0 -> 263 bytes doxygen/form_48.png | Bin 0 -> 1148 bytes doxygen/form_49.png | Bin 0 -> 405 bytes doxygen/form_5.png | Bin 0 -> 492 bytes doxygen/form_50.png | Bin 0 -> 215 bytes doxygen/form_51.png | Bin 0 -> 228 bytes doxygen/form_52.png | Bin 0 -> 265 bytes doxygen/form_53.png | Bin 0 -> 249 bytes doxygen/form_54.png | Bin 0 -> 569 bytes doxygen/form_55.png | Bin 0 -> 492 bytes doxygen/form_56.png | Bin 0 -> 228 bytes doxygen/form_57.png | Bin 0 -> 271 bytes doxygen/form_58.png | Bin 0 -> 1571 bytes doxygen/form_59.png | Bin 0 -> 267 bytes doxygen/form_6.png | Bin 0 -> 553 bytes doxygen/form_60.png | Bin 0 -> 225 bytes doxygen/form_61.png | Bin 0 -> 228 bytes doxygen/form_62.png | Bin 0 -> 781 bytes doxygen/form_63.png | Bin 0 -> 1175 bytes doxygen/form_64.png | Bin 0 -> 439 bytes doxygen/form_65.png | Bin 0 -> 550 bytes doxygen/form_66.png | Bin 0 -> 267 bytes doxygen/form_67.png | Bin 0 -> 362 bytes doxygen/form_68.png | Bin 0 -> 928 bytes doxygen/form_69.png | Bin 0 -> 215 bytes doxygen/form_7.png | Bin 0 -> 273 bytes doxygen/form_70.png | Bin 0 -> 279 bytes doxygen/form_71.png | Bin 0 -> 233 bytes doxygen/form_72.png | Bin 0 -> 237 bytes doxygen/form_73.png | Bin 0 -> 562 bytes doxygen/form_74.png | Bin 0 -> 686 bytes doxygen/form_75.png | Bin 0 -> 1136 bytes doxygen/form_76.png | Bin 0 -> 211 bytes doxygen/form_77.png | Bin 0 -> 228 bytes doxygen/form_78.png | Bin 0 -> 705 bytes doxygen/form_79.png | Bin 0 -> 402 bytes doxygen/form_8.png | Bin 0 -> 222 bytes doxygen/form_80.png | Bin 0 -> 207 bytes doxygen/form_81.png | Bin 0 -> 211 bytes doxygen/form_82.png | Bin 0 -> 225 bytes doxygen/form_83.png | Bin 0 -> 789 bytes doxygen/form_84.png | Bin 0 -> 215 bytes doxygen/form_85.png | Bin 0 -> 782 bytes doxygen/form_86.png | Bin 0 -> 204 bytes doxygen/form_87.png | Bin 0 -> 302 bytes doxygen/form_88.png | Bin 0 -> 310 bytes doxygen/form_89.png | Bin 0 -> 210 bytes doxygen/form_9.png | Bin 0 -> 230 bytes doxygen/form_90.png | Bin 0 -> 759 bytes doxygen/form_91.png | Bin 0 -> 302 bytes doxygen/form_92.png | Bin 0 -> 300 bytes doxygen/form_93.png | Bin 0 -> 685 bytes doxygen/form_94.png | Bin 0 -> 279 bytes doxygen/form_95.png | Bin 0 -> 617 bytes doxygen/form_96.png | Bin 0 -> 1574 bytes doxygen/form_97.png | Bin 0 -> 380 bytes doxygen/form_98.png | Bin 0 -> 213 bytes doxygen/form_99.png | Bin 0 -> 228 bytes doxygen/format_8hpp_source.html | 78 + doxygen/formula.repository | 180 + doxygen/functions.html | 109 + doxygen/functions_b.html | 210 + doxygen/functions_c.html | 118 + doxygen/functions_d.html | 89 + doxygen/functions_e.html | 157 + doxygen/functions_f.html | 209 + doxygen/functions_func.html | 106 + doxygen/functions_func_b.html | 200 + doxygen/functions_func_c.html | 97 + doxygen/functions_func_d.html | 76 + doxygen/functions_func_e.html | 154 + doxygen/functions_func_f.html | 200 + doxygen/functions_func_g.html | 77 + doxygen/functions_func_h.html | 76 + doxygen/functions_func_i.html | 88 + doxygen/functions_func_l.html | 134 + doxygen/functions_func_m.html | 113 + doxygen/functions_func_n.html | 82 + doxygen/functions_func_o.html | 78 + doxygen/functions_func_p.html | 94 + doxygen/functions_func_r.html | 143 + doxygen/functions_func_s.html | 137 + doxygen/functions_func_t.html | 162 + doxygen/functions_func_u.html | 79 + doxygen/functions_func_w.html | 76 + doxygen/functions_g.html | 77 + doxygen/functions_h.html | 84 + doxygen/functions_i.html | 96 + doxygen/functions_k.html | 77 + doxygen/functions_l.html | 149 + doxygen/functions_m.html | 116 + doxygen/functions_n.html | 101 + doxygen/functions_o.html | 84 + doxygen/functions_p.html | 132 + doxygen/functions_r.html | 149 + doxygen/functions_s.html | 184 + doxygen/functions_t.html | 174 + doxygen/functions_u.html | 82 + doxygen/functions_vars.html | 369 + doxygen/functions_w.html | 76 + doxygen/hdf5_8hpp_source.html | 78 + doxygen/hdf5__data__layer_8hpp_source.html | 91 + doxygen/hdf5__output__layer_8hpp_source.html | 91 + doxygen/hierarchy.html | 197 + doxygen/hinge__loss__layer_8hpp_source.html | 84 + doxygen/im2col_8hpp_source.html | 78 + doxygen/im2col__layer_8hpp_source.html | 94 + doxygen/image__data__layer_8hpp_source.html | 85 + doxygen/index.html | 73 + doxygen/infogain__loss__layer_8hpp_source.html | 89 + doxygen/inner__product__layer_8hpp_source.html | 91 + doxygen/input__layer_8hpp_source.html | 89 + doxygen/insert__splits_8hpp_source.html | 78 + doxygen/internal__thread_8hpp_source.html | 80 + doxygen/io_8hpp_source.html | 78 + doxygen/jquery.js | 87 + doxygen/layer_8hpp_source.html | 113 + doxygen/layer__factory_8hpp_source.html | 81 + doxygen/log__layer_8hpp_source.html | 88 + doxygen/loss__layer_8hpp_source.html | 87 + doxygen/loss__layers_8hpp_source.html | 456 ++ doxygen/lrn__layer_8hpp_source.html | 90 + doxygen/lstm__layer_8hpp_source.html | 99 + doxygen/math__functions_8hpp_source.html | 78 + doxygen/memory__data__layer_8hpp_source.html | 85 + doxygen/menu.js | 26 + doxygen/menudata.js | 75 + doxygen/mkl__alternate_8hpp_source.html | 77 + ...inomial__logistic__loss__layer_8hpp_source.html | 85 + doxygen/mvn__layer_8hpp_source.html | 90 + doxygen/namespaceboost.html | 75 + doxygen/namespacecaffe.html | 1666 ++++ doxygen/namespacecaffe_1_1SolverAction.html | 93 + doxygen/namespacemembers.html | 77 + doxygen/namespacemembers_func.html | 74 + doxygen/namespacemembers_type.html | 74 + doxygen/namespaces.html | 80 + doxygen/nav_f.png | Bin 0 -> 153 bytes doxygen/nav_g.png | Bin 0 -> 95 bytes doxygen/nav_h.png | Bin 0 -> 98 bytes doxygen/net_8hpp_source.html | 130 + doxygen/neuron__layer_8hpp_source.html | 84 + doxygen/neuron__layers_8hpp_source.html | 569 ++ doxygen/open.png | Bin 0 -> 123 bytes doxygen/parallel_8hpp_source.html | 85 + doxygen/parameter__layer_8hpp_source.html | 90 + doxygen/pooling__layer_8hpp_source.html | 92 + doxygen/power__layer_8hpp_source.html | 92 + doxygen/prelu__layer_8hpp_source.html | 89 + doxygen/python__layer_8hpp_source.html | 89 + doxygen/recurrent__layer_8hpp_source.html | 102 + doxygen/reduction__layer_8hpp_source.html | 96 + doxygen/relu__layer_8hpp_source.html | 87 + doxygen/reshape__layer_8hpp_source.html | 93 + doxygen/rng_8hpp_source.html | 78 + doxygen/rnn__layer_8hpp_source.html | 86 + doxygen/scale__layer_8hpp_source.html | 91 + doxygen/search/all_0.html | 26 + doxygen/search/all_0.js | 20 + doxygen/search/all_1.html | 26 + doxygen/search/all_1.js | 34 + doxygen/search/all_10.html | 26 + doxygen/search/all_10.js | 18 + doxygen/search/all_11.html | 26 + doxygen/search/all_11.js | 52 + doxygen/search/all_12.html | 26 + doxygen/search/all_12.js | 19 + doxygen/search/all_13.html | 26 + doxygen/search/all_13.js | 7 + doxygen/search/all_14.html | 26 + doxygen/search/all_14.js | 6 + doxygen/search/all_15.html | 26 + doxygen/search/all_15.js | 4 + doxygen/search/all_2.html | 26 + doxygen/search/all_2.js | 29 + doxygen/search/all_3.html | 26 + doxygen/search/all_3.js | 16 + doxygen/search/all_4.html | 26 + doxygen/search/all_4.js | 14 + doxygen/search/all_5.html | 26 + doxygen/search/all_5.js | 17 + doxygen/search/all_6.html | 26 + doxygen/search/all_6.js | 8 + doxygen/search/all_7.html | 26 + doxygen/search/all_7.js | 9 + doxygen/search/all_8.html | 26 + doxygen/search/all_8.js | 16 + doxygen/search/all_9.html | 26 + doxygen/search/all_9.js | 4 + doxygen/search/all_a.html | 26 + doxygen/search/all_a.js | 23 + doxygen/search/all_b.html | 26 + doxygen/search/all_b.js | 12 + doxygen/search/all_c.html | 26 + doxygen/search/all_c.js | 15 + doxygen/search/all_d.html | 26 + doxygen/search/all_d.js | 6 + doxygen/search/all_e.html | 26 + doxygen/search/all_e.js | 30 + doxygen/search/all_f.html | 26 + doxygen/search/all_f.js | 4 + doxygen/search/classes_0.html | 26 + doxygen/search/classes_0.js | 9 + doxygen/search/classes_1.html | 26 + doxygen/search/classes_1.js | 21 + doxygen/search/classes_10.html | 26 + doxygen/search/classes_10.js | 8 + doxygen/search/classes_11.html | 26 + doxygen/search/classes_11.js | 4 + doxygen/search/classes_12.html | 26 + doxygen/search/classes_12.js | 5 + doxygen/search/classes_13.html | 26 + doxygen/search/classes_13.js | 4 + doxygen/search/classes_2.html | 26 + doxygen/search/classes_2.js | 12 + doxygen/search/classes_3.html | 26 + doxygen/search/classes_3.js | 11 + doxygen/search/classes_4.html | 26 + doxygen/search/classes_4.js | 8 + doxygen/search/classes_5.html | 26 + doxygen/search/classes_5.js | 6 + doxygen/search/classes_6.html | 26 + doxygen/search/classes_6.js | 6 + doxygen/search/classes_7.html | 26 + doxygen/search/classes_7.js | 6 + doxygen/search/classes_8.html | 26 + doxygen/search/classes_8.js | 9 + doxygen/search/classes_9.html | 26 + doxygen/search/classes_9.js | 11 + doxygen/search/classes_a.html | 26 + doxygen/search/classes_a.js | 7 + doxygen/search/classes_b.html | 26 + doxygen/search/classes_b.js | 6 + doxygen/search/classes_c.html | 26 + doxygen/search/classes_c.js | 11 + doxygen/search/classes_d.html | 26 + doxygen/search/classes_d.js | 4 + doxygen/search/classes_e.html | 26 + doxygen/search/classes_e.js | 10 + doxygen/search/classes_f.html | 26 + doxygen/search/classes_f.js | 19 + doxygen/search/close.png | Bin 0 -> 273 bytes doxygen/search/functions_0.html | 26 + doxygen/search/functions_0.js | 12 + doxygen/search/functions_1.html | 26 + doxygen/search/functions_1.js | 12 + doxygen/search/functions_10.html | 26 + doxygen/search/functions_10.js | 10 + doxygen/search/functions_11.html | 26 + doxygen/search/functions_11.js | 5 + doxygen/search/functions_12.html | 26 + doxygen/search/functions_12.js | 4 + doxygen/search/functions_2.html | 26 + doxygen/search/functions_2.js | 11 + doxygen/search/functions_3.html | 26 + doxygen/search/functions_3.js | 4 + doxygen/search/functions_4.html | 26 + doxygen/search/functions_4.js | 8 + doxygen/search/functions_5.html | 26 + doxygen/search/functions_5.js | 11 + doxygen/search/functions_6.html | 26 + doxygen/search/functions_6.js | 5 + doxygen/search/functions_7.html | 26 + doxygen/search/functions_7.js | 4 + doxygen/search/functions_8.html | 26 + doxygen/search/functions_8.js | 8 + doxygen/search/functions_9.html | 26 + doxygen/search/functions_9.js | 10 + doxygen/search/functions_a.html | 26 + doxygen/search/functions_a.js | 7 + doxygen/search/functions_b.html | 26 + doxygen/search/functions_b.js | 6 + doxygen/search/functions_c.html | 26 + doxygen/search/functions_c.js | 4 + doxygen/search/functions_d.html | 26 + doxygen/search/functions_d.js | 10 + doxygen/search/functions_e.html | 26 + doxygen/search/functions_e.js | 9 + doxygen/search/functions_f.html | 26 + doxygen/search/functions_f.js | 22 + doxygen/search/mag_sel.png | Bin 0 -> 563 bytes doxygen/search/namespaces_0.html | 26 + doxygen/search/namespaces_0.js | 4 + doxygen/search/namespaces_1.html | 26 + doxygen/search/namespaces_1.js | 5 + doxygen/search/nomatches.html | 12 + doxygen/search/search.css | 271 + doxygen/search/search.js | 791 ++ doxygen/search/search_l.png | Bin 0 -> 604 bytes doxygen/search/search_m.png | Bin 0 -> 158 bytes doxygen/search/search_r.png | Bin 0 -> 612 bytes doxygen/search/searchdata.js | 30 + doxygen/search/typedefs_0.html | 26 + doxygen/search/typedefs_0.js | 4 + doxygen/search/variables_0.html | 26 + doxygen/search/variables_0.js | 4 + doxygen/search/variables_1.html | 26 + doxygen/search/variables_1.js | 6 + doxygen/search/variables_10.html | 26 + doxygen/search/variables_10.js | 7 + doxygen/search/variables_11.html | 26 + doxygen/search/variables_11.js | 4 + doxygen/search/variables_2.html | 26 + doxygen/search/variables_2.js | 10 + doxygen/search/variables_3.html | 26 + doxygen/search/variables_3.js | 7 + doxygen/search/variables_4.html | 26 + doxygen/search/variables_4.js | 4 + doxygen/search/variables_5.html | 26 + doxygen/search/variables_5.js | 6 + doxygen/search/variables_6.html | 26 + doxygen/search/variables_6.js | 5 + doxygen/search/variables_7.html | 26 + doxygen/search/variables_7.js | 5 + doxygen/search/variables_8.html | 26 + doxygen/search/variables_8.js | 4 + doxygen/search/variables_9.html | 26 + doxygen/search/variables_9.js | 8 + doxygen/search/variables_a.html | 26 + doxygen/search/variables_a.js | 4 + doxygen/search/variables_b.html | 26 + doxygen/search/variables_b.js | 9 + doxygen/search/variables_c.html | 26 + doxygen/search/variables_c.js | 5 + doxygen/search/variables_d.html | 26 + doxygen/search/variables_d.js | 15 + doxygen/search/variables_e.html | 26 + doxygen/search/variables_e.js | 5 + doxygen/search/variables_f.html | 26 + doxygen/search/variables_f.js | 17 + doxygen/sgd__solvers_8hpp_source.html | 91 + ...d__cross__entropy__loss__layer_8hpp_source.html | 97 + doxygen/sigmoid__layer_8hpp_source.html | 86 + doxygen/signal__handler_8h_source.html | 80 + doxygen/silence__layer_8hpp_source.html | 89 + doxygen/slice__layer_8hpp_source.html | 90 + doxygen/softmax__layer_8hpp_source.html | 91 + doxygen/softmax__loss__layer_8hpp_source.html | 100 + doxygen/solver_8hpp_source.html | 83 + doxygen/solver__factory_8hpp_source.html | 81 + doxygen/split__layer_8hpp_source.html | 89 + doxygen/splitbar.png | Bin 0 -> 314 bytes doxygen/spp__layer_8hpp_source.html | 99 + doxygen/sync_off.png | Bin 0 -> 853 bytes doxygen/sync_on.png | Bin 0 -> 845 bytes doxygen/syncedmem_8hpp_source.html | 79 + doxygen/tab_a.png | Bin 0 -> 142 bytes doxygen/tab_b.png | Bin 0 -> 169 bytes doxygen/tab_h.png | Bin 0 -> 177 bytes doxygen/tab_s.png | Bin 0 -> 184 bytes doxygen/tabs.css | 1 + doxygen/tanh__layer_8hpp_source.html | 86 + doxygen/threshold__layer_8hpp_source.html | 87 + doxygen/tile__layer_8hpp_source.html | 89 + doxygen/upgrade__proto_8hpp_source.html | 78 + doxygen/vision__layers_8hpp_source.html | 737 ++ doxygen/window__data__layer_8hpp_source.html | 85 + gathered/examples/00-classification.ipynb | 842 ++ gathered/examples/01-learning-lenet.ipynb | 1350 ++++ gathered/examples/02-fine-tuning.ipynb | 1237 +++ gathered/examples/brewing-logreg.ipynb | 1226 +++ gathered/examples/cifar10.html | 162 + gathered/examples/cpp_classification.html | 133 + gathered/examples/detection.ipynb | 8454 ++++++++++++++++++++ gathered/examples/feature_extraction.html | 139 + gathered/examples/finetune_flickr_style.html | 229 + gathered/examples/imagenet.html | 168 + gathered/examples/mnist.html | 377 + gathered/examples/net_surgery.ipynb | 6963 ++++++++++++++++ .../pascal-multilabel-with-datalayer.ipynb | 541 ++ gathered/examples/siamese.html | 258 + gathered/examples/siamese/mnist_siamese.ipynb | 1971 +++++ gathered/examples/web_demo.html | 99 + images/GitHub-Mark-64px.png | Bin 0 -> 2625 bytes images/caffeine-icon.png | Bin 0 -> 954 bytes index.html | 212 + install_apt.html | 119 + install_osx.html | 206 + install_yum.html | 109 + installation.html | 232 + model_zoo.html | 141 + multigpu.html | 84 + performance_hardware.html | 142 + stylesheets/pygment_trac.css | 69 + stylesheets/reset.css | 21 + stylesheets/styles.css | 348 + tutorial/convolution.html | 74 + tutorial/data.html | 141 + tutorial/fig/backward.jpg | Bin 0 -> 105017 bytes tutorial/fig/forward.jpg | Bin 0 -> 71957 bytes tutorial/fig/forward_backward.png | Bin 0 -> 57267 bytes tutorial/fig/layer.jpg | Bin 0 -> 54757 bytes tutorial/fig/logreg.jpg | Bin 0 -> 42966 bytes tutorial/forward_backward.html | 98 + tutorial/index.html | 118 + tutorial/interfaces.html | 423 + tutorial/layers.html | 824 ++ tutorial/loss.html | 116 + tutorial/net_layer_blob.html | 239 + tutorial/solver.html | 399 + 929 files changed, 106961 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 CNAME create mode 100644 README.md create mode 100644 development.html create mode 100644 doxygen/absval__layer_8hpp_source.html create mode 100644 doxygen/accuracy__layer_8hpp_source.html create mode 100644 doxygen/annotated.html create mode 100644 doxygen/argmax__layer_8hpp_source.html create mode 100644 doxygen/arrowdown.png create mode 100644 doxygen/arrowright.png create mode 100644 doxygen/base__conv__layer_8hpp_source.html create mode 100644 doxygen/base__data__layer_8hpp_source.html create mode 100644 doxygen/batch__norm__layer_8hpp_source.html create mode 100644 doxygen/batch__reindex__layer_8hpp_source.html create mode 100644 doxygen/bc_s.png create mode 100644 doxygen/bdwn.png create mode 100644 doxygen/benchmark_8hpp_source.html create mode 100644 doxygen/bias__layer_8hpp_source.html create mode 100644 doxygen/blob_8hpp_source.html create mode 100644 doxygen/blocking__queue_8hpp_source.html create mode 100644 doxygen/bnll__layer_8hpp_source.html create mode 100644 doxygen/caffe_8hpp_source.html create mode 100644 doxygen/classcaffe_1_1AbsValLayer-members.html create mode 100644 doxygen/classcaffe_1_1AbsValLayer.html create mode 100644 doxygen/classcaffe_1_1AbsValLayer.png create mode 100644 doxygen/classcaffe_1_1AccuracyLayer-members.html create mode 100644 doxygen/classcaffe_1_1AccuracyLayer.html create mode 100644 doxygen/classcaffe_1_1AccuracyLayer.png create mode 100644 doxygen/classcaffe_1_1AdaDeltaSolver-members.html create mode 100644 doxygen/classcaffe_1_1AdaDeltaSolver.html create mode 100644 doxygen/classcaffe_1_1AdaDeltaSolver.png create mode 100644 doxygen/classcaffe_1_1AdaGradSolver-members.html create mode 100644 doxygen/classcaffe_1_1AdaGradSolver.html create mode 100644 doxygen/classcaffe_1_1AdaGradSolver.png create mode 100644 doxygen/classcaffe_1_1AdamSolver-members.html create mode 100644 doxygen/classcaffe_1_1AdamSolver.html create mode 100644 doxygen/classcaffe_1_1AdamSolver.png create mode 100644 doxygen/classcaffe_1_1ArgMaxLayer-members.html create mode 100644 doxygen/classcaffe_1_1ArgMaxLayer.html create mode 100644 doxygen/classcaffe_1_1ArgMaxLayer.png create mode 100644 doxygen/classcaffe_1_1BNLLLayer-members.html create mode 100644 doxygen/classcaffe_1_1BNLLLayer.html create mode 100644 doxygen/classcaffe_1_1BNLLLayer.png create mode 100644 doxygen/classcaffe_1_1BaseConvolutionLayer-members.html create mode 100644 doxygen/classcaffe_1_1BaseConvolutionLayer.html create mode 100644 doxygen/classcaffe_1_1BaseConvolutionLayer.png create mode 100644 doxygen/classcaffe_1_1BaseDataLayer-members.html create mode 100644 doxygen/classcaffe_1_1BaseDataLayer.html create mode 100644 doxygen/classcaffe_1_1BaseDataLayer.png create mode 100644 doxygen/classcaffe_1_1BasePrefetchingDataLayer-members.html create mode 100644 doxygen/classcaffe_1_1BasePrefetchingDataLayer.html create mode 100644 doxygen/classcaffe_1_1BasePrefetchingDataLayer.png create mode 100644 doxygen/classcaffe_1_1Batch-members.html create mode 100644 doxygen/classcaffe_1_1Batch.html create mode 100644 doxygen/classcaffe_1_1BatchNormLayer-members.html create mode 100644 doxygen/classcaffe_1_1BatchNormLayer.html create mode 100644 doxygen/classcaffe_1_1BatchNormLayer.png create mode 100644 doxygen/classcaffe_1_1BatchReindexLayer-members.html create mode 100644 doxygen/classcaffe_1_1BatchReindexLayer.html create mode 100644 doxygen/classcaffe_1_1BatchReindexLayer.png create mode 100644 doxygen/classcaffe_1_1BiasLayer-members.html create mode 100644 doxygen/classcaffe_1_1BiasLayer.html create mode 100644 doxygen/classcaffe_1_1BiasLayer.png create mode 100644 doxygen/classcaffe_1_1BilinearFiller-members.html create mode 100644 doxygen/classcaffe_1_1BilinearFiller.html create mode 100644 doxygen/classcaffe_1_1BilinearFiller.png create mode 100644 doxygen/classcaffe_1_1Blob-members.html create mode 100644 doxygen/classcaffe_1_1Blob.html create mode 100644 doxygen/classcaffe_1_1BlockingQueue-members.html create mode 100644 doxygen/classcaffe_1_1BlockingQueue.html create mode 100644 doxygen/classcaffe_1_1BlockingQueue_1_1sync-members.html create mode 100644 doxygen/classcaffe_1_1BlockingQueue_1_1sync.html create mode 100644 doxygen/classcaffe_1_1CPUTimer-members.html create mode 100644 doxygen/classcaffe_1_1CPUTimer.html create mode 100644 doxygen/classcaffe_1_1CPUTimer.png create mode 100644 doxygen/classcaffe_1_1Caffe-members.html create mode 100644 doxygen/classcaffe_1_1Caffe.html create mode 100644 doxygen/classcaffe_1_1Caffe_1_1RNG-members.html create mode 100644 doxygen/classcaffe_1_1Caffe_1_1RNG.html create mode 100644 doxygen/classcaffe_1_1Caffe_1_1RNG_1_1Generator-members.html create mode 100644 doxygen/classcaffe_1_1Caffe_1_1RNG_1_1Generator.html create mode 100644 doxygen/classcaffe_1_1ConcatLayer-members.html create mode 100644 doxygen/classcaffe_1_1ConcatLayer.html create mode 100644 doxygen/classcaffe_1_1ConcatLayer.png create mode 100644 doxygen/classcaffe_1_1ConstantFiller-members.html create mode 100644 doxygen/classcaffe_1_1ConstantFiller.html create mode 100644 doxygen/classcaffe_1_1ConstantFiller.png create mode 100644 doxygen/classcaffe_1_1ContrastiveLossLayer-members.html create mode 100644 doxygen/classcaffe_1_1ContrastiveLossLayer.html create mode 100644 doxygen/classcaffe_1_1ContrastiveLossLayer.png create mode 100644 doxygen/classcaffe_1_1ConvolutionLayer-members.html create mode 100644 doxygen/classcaffe_1_1ConvolutionLayer.html create mode 100644 doxygen/classcaffe_1_1ConvolutionLayer.png create mode 100644 doxygen/classcaffe_1_1CropLayer-members.html create mode 100644 doxygen/classcaffe_1_1CropLayer.html create mode 100644 doxygen/classcaffe_1_1CropLayer.png create mode 100644 doxygen/classcaffe_1_1DataLayer-members.html create mode 100644 doxygen/classcaffe_1_1DataLayer.html create mode 100644 doxygen/classcaffe_1_1DataLayer.png create mode 100644 doxygen/classcaffe_1_1DataReader-members.html create mode 100644 doxygen/classcaffe_1_1DataReader.html create mode 100644 doxygen/classcaffe_1_1DataReader_1_1Body-members.html create mode 100644 doxygen/classcaffe_1_1DataReader_1_1Body.html create mode 100644 doxygen/classcaffe_1_1DataReader_1_1Body.png create mode 100644 doxygen/classcaffe_1_1DataReader_1_1QueuePair-members.html create mode 100644 doxygen/classcaffe_1_1DataReader_1_1QueuePair.html create mode 100644 doxygen/classcaffe_1_1DataTransformer-members.html create mode 100644 doxygen/classcaffe_1_1DataTransformer.html create mode 100644 doxygen/classcaffe_1_1DeconvolutionLayer-members.html create mode 100644 doxygen/classcaffe_1_1DeconvolutionLayer.html create mode 100644 doxygen/classcaffe_1_1DeconvolutionLayer.png create mode 100644 doxygen/classcaffe_1_1DevicePair-members.html create mode 100644 doxygen/classcaffe_1_1DevicePair.html create mode 100644 doxygen/classcaffe_1_1DropoutLayer-members.html create mode 100644 doxygen/classcaffe_1_1DropoutLayer.html create mode 100644 doxygen/classcaffe_1_1DropoutLayer.png create mode 100644 doxygen/classcaffe_1_1DummyDataLayer-members.html create mode 100644 doxygen/classcaffe_1_1DummyDataLayer.html create mode 100644 doxygen/classcaffe_1_1DummyDataLayer.png create mode 100644 doxygen/classcaffe_1_1ELULayer-members.html create mode 100644 doxygen/classcaffe_1_1ELULayer.html create mode 100644 doxygen/classcaffe_1_1ELULayer.png create mode 100644 doxygen/classcaffe_1_1EltwiseLayer-members.html create mode 100644 doxygen/classcaffe_1_1EltwiseLayer.html create mode 100644 doxygen/classcaffe_1_1EltwiseLayer.png create mode 100644 doxygen/classcaffe_1_1EmbedLayer-members.html create mode 100644 doxygen/classcaffe_1_1EmbedLayer.html create mode 100644 doxygen/classcaffe_1_1EmbedLayer.png create mode 100644 doxygen/classcaffe_1_1EuclideanLossLayer-members.html create mode 100644 doxygen/classcaffe_1_1EuclideanLossLayer.html create mode 100644 doxygen/classcaffe_1_1EuclideanLossLayer.png create mode 100644 doxygen/classcaffe_1_1ExpLayer-members.html create mode 100644 doxygen/classcaffe_1_1ExpLayer.html create mode 100644 doxygen/classcaffe_1_1ExpLayer.png create mode 100644 doxygen/classcaffe_1_1Filler-members.html create mode 100644 doxygen/classcaffe_1_1Filler.html create mode 100644 doxygen/classcaffe_1_1Filler.png create mode 100644 doxygen/classcaffe_1_1FilterLayer-members.html create mode 100644 doxygen/classcaffe_1_1FilterLayer.html create mode 100644 doxygen/classcaffe_1_1FilterLayer.png create mode 100644 doxygen/classcaffe_1_1FlattenLayer-members.html create mode 100644 doxygen/classcaffe_1_1FlattenLayer.html create mode 100644 doxygen/classcaffe_1_1FlattenLayer.png create mode 100644 doxygen/classcaffe_1_1GPUParams-members.html create mode 100644 doxygen/classcaffe_1_1GPUParams.html create mode 100644 doxygen/classcaffe_1_1GPUParams.png create mode 100644 doxygen/classcaffe_1_1GaussianFiller-members.html create mode 100644 doxygen/classcaffe_1_1GaussianFiller.html create mode 100644 doxygen/classcaffe_1_1GaussianFiller.png create mode 100644 doxygen/classcaffe_1_1HDF5DataLayer-members.html create mode 100644 doxygen/classcaffe_1_1HDF5DataLayer.html create mode 100644 doxygen/classcaffe_1_1HDF5DataLayer.png create mode 100644 doxygen/classcaffe_1_1HDF5OutputLayer-members.html create mode 100644 doxygen/classcaffe_1_1HDF5OutputLayer.html create mode 100644 doxygen/classcaffe_1_1HDF5OutputLayer.png create mode 100644 doxygen/classcaffe_1_1HingeLossLayer-members.html create mode 100644 doxygen/classcaffe_1_1HingeLossLayer.html create mode 100644 doxygen/classcaffe_1_1HingeLossLayer.png create mode 100644 doxygen/classcaffe_1_1Im2colLayer-members.html create mode 100644 doxygen/classcaffe_1_1Im2colLayer.html create mode 100644 doxygen/classcaffe_1_1Im2colLayer.png create mode 100644 doxygen/classcaffe_1_1ImageDataLayer-members.html create mode 100644 doxygen/classcaffe_1_1ImageDataLayer.html create mode 100644 doxygen/classcaffe_1_1ImageDataLayer.png create mode 100644 doxygen/classcaffe_1_1InfogainLossLayer-members.html create mode 100644 doxygen/classcaffe_1_1InfogainLossLayer.html create mode 100644 doxygen/classcaffe_1_1InfogainLossLayer.png create mode 100644 doxygen/classcaffe_1_1InnerProductLayer-members.html create mode 100644 doxygen/classcaffe_1_1InnerProductLayer.html create mode 100644 doxygen/classcaffe_1_1InnerProductLayer.png create mode 100644 doxygen/classcaffe_1_1InputLayer-members.html create mode 100644 doxygen/classcaffe_1_1InputLayer.html create mode 100644 doxygen/classcaffe_1_1InputLayer.png create mode 100644 doxygen/classcaffe_1_1InternalThread-members.html create mode 100644 doxygen/classcaffe_1_1InternalThread.html create mode 100644 doxygen/classcaffe_1_1InternalThread.png create mode 100644 doxygen/classcaffe_1_1LRNLayer-members.html create mode 100644 doxygen/classcaffe_1_1LRNLayer.html create mode 100644 doxygen/classcaffe_1_1LRNLayer.png create mode 100644 doxygen/classcaffe_1_1LSTMLayer-members.html create mode 100644 doxygen/classcaffe_1_1LSTMLayer.html create mode 100644 doxygen/classcaffe_1_1LSTMLayer.png create mode 100644 doxygen/classcaffe_1_1LSTMUnitLayer-members.html create mode 100644 doxygen/classcaffe_1_1LSTMUnitLayer.html create mode 100644 doxygen/classcaffe_1_1LSTMUnitLayer.png create mode 100644 doxygen/classcaffe_1_1Layer-members.html create mode 100644 doxygen/classcaffe_1_1Layer.html create mode 100644 doxygen/classcaffe_1_1Layer.png create mode 100644 doxygen/classcaffe_1_1LayerRegisterer-members.html create mode 100644 doxygen/classcaffe_1_1LayerRegisterer.html create mode 100644 doxygen/classcaffe_1_1LayerRegistry-members.html create mode 100644 doxygen/classcaffe_1_1LayerRegistry.html create mode 100644 doxygen/classcaffe_1_1LogLayer-members.html create mode 100644 doxygen/classcaffe_1_1LogLayer.html create mode 100644 doxygen/classcaffe_1_1LogLayer.png create mode 100644 doxygen/classcaffe_1_1LossLayer-members.html create mode 100644 doxygen/classcaffe_1_1LossLayer.html create mode 100644 doxygen/classcaffe_1_1LossLayer.png create mode 100644 doxygen/classcaffe_1_1MSRAFiller-members.html create mode 100644 doxygen/classcaffe_1_1MSRAFiller.html create mode 100644 doxygen/classcaffe_1_1MSRAFiller.png create mode 100644 doxygen/classcaffe_1_1MVNLayer-members.html create mode 100644 doxygen/classcaffe_1_1MVNLayer.html create mode 100644 doxygen/classcaffe_1_1MVNLayer.png create mode 100644 doxygen/classcaffe_1_1MemoryDataLayer-members.html create mode 100644 doxygen/classcaffe_1_1MemoryDataLayer.html create mode 100644 doxygen/classcaffe_1_1MemoryDataLayer.png create mode 100644 doxygen/classcaffe_1_1MultinomialLogisticLossLayer-members.html create mode 100644 doxygen/classcaffe_1_1MultinomialLogisticLossLayer.html create mode 100644 doxygen/classcaffe_1_1MultinomialLogisticLossLayer.png create mode 100644 doxygen/classcaffe_1_1NesterovSolver-members.html create mode 100644 doxygen/classcaffe_1_1NesterovSolver.html create mode 100644 doxygen/classcaffe_1_1NesterovSolver.png create mode 100644 doxygen/classcaffe_1_1Net-members.html create mode 100644 doxygen/classcaffe_1_1Net.html create mode 100644 doxygen/classcaffe_1_1NeuronLayer-members.html create mode 100644 doxygen/classcaffe_1_1NeuronLayer.html create mode 100644 doxygen/classcaffe_1_1NeuronLayer.png create mode 100644 doxygen/classcaffe_1_1P2PSync-members.html create mode 100644 doxygen/classcaffe_1_1P2PSync.html create mode 100644 doxygen/classcaffe_1_1P2PSync.png create mode 100644 doxygen/classcaffe_1_1PReLULayer-members.html create mode 100644 doxygen/classcaffe_1_1PReLULayer.html create mode 100644 doxygen/classcaffe_1_1PReLULayer.png create mode 100644 doxygen/classcaffe_1_1ParameterLayer-members.html create mode 100644 doxygen/classcaffe_1_1ParameterLayer.html create mode 100644 doxygen/classcaffe_1_1ParameterLayer.png create mode 100644 doxygen/classcaffe_1_1Params-members.html create mode 100644 doxygen/classcaffe_1_1Params.html create mode 100644 doxygen/classcaffe_1_1Params.png create mode 100644 doxygen/classcaffe_1_1PoolingLayer-members.html create mode 100644 doxygen/classcaffe_1_1PoolingLayer.html create mode 100644 doxygen/classcaffe_1_1PoolingLayer.png create mode 100644 doxygen/classcaffe_1_1PositiveUnitballFiller-members.html create mode 100644 doxygen/classcaffe_1_1PositiveUnitballFiller.html create mode 100644 doxygen/classcaffe_1_1PositiveUnitballFiller.png create mode 100644 doxygen/classcaffe_1_1PowerLayer-members.html create mode 100644 doxygen/classcaffe_1_1PowerLayer.html create mode 100644 doxygen/classcaffe_1_1PowerLayer.png create mode 100644 doxygen/classcaffe_1_1PythonLayer-members.html create mode 100644 doxygen/classcaffe_1_1PythonLayer.html create mode 100644 doxygen/classcaffe_1_1PythonLayer.png create mode 100644 doxygen/classcaffe_1_1RMSPropSolver-members.html create mode 100644 doxygen/classcaffe_1_1RMSPropSolver.html create mode 100644 doxygen/classcaffe_1_1RMSPropSolver.png create mode 100644 doxygen/classcaffe_1_1RNNLayer-members.html create mode 100644 doxygen/classcaffe_1_1RNNLayer.html create mode 100644 doxygen/classcaffe_1_1RNNLayer.png create mode 100644 doxygen/classcaffe_1_1ReLULayer-members.html create mode 100644 doxygen/classcaffe_1_1ReLULayer.html create mode 100644 doxygen/classcaffe_1_1ReLULayer.png create mode 100644 doxygen/classcaffe_1_1RecurrentLayer-members.html create mode 100644 doxygen/classcaffe_1_1RecurrentLayer.html create mode 100644 doxygen/classcaffe_1_1RecurrentLayer.png create mode 100644 doxygen/classcaffe_1_1ReductionLayer-members.html create mode 100644 doxygen/classcaffe_1_1ReductionLayer.html create mode 100644 doxygen/classcaffe_1_1ReductionLayer.png create mode 100644 doxygen/classcaffe_1_1ReshapeLayer-members.html create mode 100644 doxygen/classcaffe_1_1ReshapeLayer.html create mode 100644 doxygen/classcaffe_1_1ReshapeLayer.png create mode 100644 doxygen/classcaffe_1_1SGDSolver-members.html create mode 100644 doxygen/classcaffe_1_1SGDSolver.html create mode 100644 doxygen/classcaffe_1_1SGDSolver.png create mode 100644 doxygen/classcaffe_1_1SPPLayer-members.html create mode 100644 doxygen/classcaffe_1_1SPPLayer.html create mode 100644 doxygen/classcaffe_1_1SPPLayer.png create mode 100644 doxygen/classcaffe_1_1ScaleLayer-members.html create mode 100644 doxygen/classcaffe_1_1ScaleLayer.html create mode 100644 doxygen/classcaffe_1_1ScaleLayer.png create mode 100644 doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer-members.html create mode 100644 doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer.html create mode 100644 doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer.png create mode 100644 doxygen/classcaffe_1_1SigmoidLayer-members.html create mode 100644 doxygen/classcaffe_1_1SigmoidLayer.html create mode 100644 doxygen/classcaffe_1_1SigmoidLayer.png create mode 100644 doxygen/classcaffe_1_1SignalHandler-members.html create mode 100644 doxygen/classcaffe_1_1SignalHandler.html create mode 100644 doxygen/classcaffe_1_1SilenceLayer-members.html create mode 100644 doxygen/classcaffe_1_1SilenceLayer.html create mode 100644 doxygen/classcaffe_1_1SilenceLayer.png create mode 100644 doxygen/classcaffe_1_1SliceLayer-members.html create mode 100644 doxygen/classcaffe_1_1SliceLayer.html create mode 100644 doxygen/classcaffe_1_1SliceLayer.png create mode 100644 doxygen/classcaffe_1_1SoftmaxLayer-members.html create mode 100644 doxygen/classcaffe_1_1SoftmaxLayer.html create mode 100644 doxygen/classcaffe_1_1SoftmaxLayer.png create mode 100644 doxygen/classcaffe_1_1SoftmaxWithLossLayer-members.html create mode 100644 doxygen/classcaffe_1_1SoftmaxWithLossLayer.html create mode 100644 doxygen/classcaffe_1_1SoftmaxWithLossLayer.png create mode 100644 doxygen/classcaffe_1_1Solver-members.html create mode 100644 doxygen/classcaffe_1_1Solver.html create mode 100644 doxygen/classcaffe_1_1Solver.png create mode 100644 doxygen/classcaffe_1_1SolverRegisterer-members.html create mode 100644 doxygen/classcaffe_1_1SolverRegisterer.html create mode 100644 doxygen/classcaffe_1_1SolverRegistry-members.html create mode 100644 doxygen/classcaffe_1_1SolverRegistry.html create mode 100644 doxygen/classcaffe_1_1Solver_1_1Callback-members.html create mode 100644 doxygen/classcaffe_1_1Solver_1_1Callback.html create mode 100644 doxygen/classcaffe_1_1Solver_1_1Callback.png create mode 100644 doxygen/classcaffe_1_1SplitLayer-members.html create mode 100644 doxygen/classcaffe_1_1SplitLayer.html create mode 100644 doxygen/classcaffe_1_1SplitLayer.png create mode 100644 doxygen/classcaffe_1_1SyncedMemory-members.html create mode 100644 doxygen/classcaffe_1_1SyncedMemory.html create mode 100644 doxygen/classcaffe_1_1TanHLayer-members.html create mode 100644 doxygen/classcaffe_1_1TanHLayer.html create mode 100644 doxygen/classcaffe_1_1TanHLayer.png create mode 100644 doxygen/classcaffe_1_1ThresholdLayer-members.html create mode 100644 doxygen/classcaffe_1_1ThresholdLayer.html create mode 100644 doxygen/classcaffe_1_1ThresholdLayer.png create mode 100644 doxygen/classcaffe_1_1TileLayer-members.html create mode 100644 doxygen/classcaffe_1_1TileLayer.html create mode 100644 doxygen/classcaffe_1_1TileLayer.png create mode 100644 doxygen/classcaffe_1_1Timer-members.html create mode 100644 doxygen/classcaffe_1_1Timer.html create mode 100644 doxygen/classcaffe_1_1Timer.png create mode 100644 doxygen/classcaffe_1_1UniformFiller-members.html create mode 100644 doxygen/classcaffe_1_1UniformFiller.html create mode 100644 doxygen/classcaffe_1_1UniformFiller.png create mode 100644 doxygen/classcaffe_1_1WindowDataLayer-members.html create mode 100644 doxygen/classcaffe_1_1WindowDataLayer.html create mode 100644 doxygen/classcaffe_1_1WindowDataLayer.png create mode 100644 doxygen/classcaffe_1_1WorkerSolver-members.html create mode 100644 doxygen/classcaffe_1_1WorkerSolver.html create mode 100644 doxygen/classcaffe_1_1WorkerSolver.png create mode 100644 doxygen/classcaffe_1_1XavierFiller-members.html create mode 100644 doxygen/classcaffe_1_1XavierFiller.html create mode 100644 doxygen/classcaffe_1_1XavierFiller.png create mode 100644 doxygen/classcaffe_1_1db_1_1Cursor-members.html create mode 100644 doxygen/classcaffe_1_1db_1_1Cursor.html create mode 100644 doxygen/classcaffe_1_1db_1_1Cursor.png create mode 100644 doxygen/classcaffe_1_1db_1_1DB-members.html create mode 100644 doxygen/classcaffe_1_1db_1_1DB.html create mode 100644 doxygen/classcaffe_1_1db_1_1DB.png create mode 100644 doxygen/classcaffe_1_1db_1_1LMDB-members.html create mode 100644 doxygen/classcaffe_1_1db_1_1LMDB.html create mode 100644 doxygen/classcaffe_1_1db_1_1LMDB.png create mode 100644 doxygen/classcaffe_1_1db_1_1LMDBCursor-members.html create mode 100644 doxygen/classcaffe_1_1db_1_1LMDBCursor.html create mode 100644 doxygen/classcaffe_1_1db_1_1LMDBCursor.png create mode 100644 doxygen/classcaffe_1_1db_1_1LMDBTransaction-members.html create mode 100644 doxygen/classcaffe_1_1db_1_1LMDBTransaction.html create mode 100644 doxygen/classcaffe_1_1db_1_1LMDBTransaction.png create mode 100644 doxygen/classcaffe_1_1db_1_1LevelDB-members.html create mode 100644 doxygen/classcaffe_1_1db_1_1LevelDB.html create mode 100644 doxygen/classcaffe_1_1db_1_1LevelDB.png create mode 100644 doxygen/classcaffe_1_1db_1_1LevelDBCursor-members.html create mode 100644 doxygen/classcaffe_1_1db_1_1LevelDBCursor.html create mode 100644 doxygen/classcaffe_1_1db_1_1LevelDBCursor.png create mode 100644 doxygen/classcaffe_1_1db_1_1LevelDBTransaction-members.html create mode 100644 doxygen/classcaffe_1_1db_1_1LevelDBTransaction.html create mode 100644 doxygen/classcaffe_1_1db_1_1LevelDBTransaction.png create mode 100644 doxygen/classcaffe_1_1db_1_1Transaction-members.html create mode 100644 doxygen/classcaffe_1_1db_1_1Transaction.html create mode 100644 doxygen/classcaffe_1_1db_1_1Transaction.png create mode 100644 doxygen/classes.html create mode 100644 doxygen/closed.png create mode 100644 doxygen/common_8hpp_source.html create mode 100644 doxygen/common__layers_8hpp_source.html create mode 100644 doxygen/concat__layer_8hpp_source.html create mode 100644 doxygen/contrastive__loss__layer_8hpp_source.html create mode 100644 doxygen/conv__layer_8hpp_source.html create mode 100644 doxygen/crop__layer_8hpp_source.html create mode 100644 doxygen/cudnn_8hpp_source.html create mode 100644 doxygen/cudnn__conv__layer_8hpp_source.html create mode 100644 doxygen/cudnn__lcn__layer_8hpp_source.html create mode 100644 doxygen/cudnn__lrn__layer_8hpp_source.html create mode 100644 doxygen/cudnn__pooling__layer_8hpp_source.html create mode 100644 doxygen/cudnn__relu__layer_8hpp_source.html create mode 100644 doxygen/cudnn__sigmoid__layer_8hpp_source.html create mode 100644 doxygen/cudnn__softmax__layer_8hpp_source.html create mode 100644 doxygen/cudnn__tanh__layer_8hpp_source.html create mode 100644 doxygen/data__layer_8hpp_source.html create mode 100644 doxygen/data__layers_8hpp_source.html create mode 100644 doxygen/data__reader_8hpp_source.html create mode 100644 doxygen/data__transformer_8hpp_source.html create mode 100644 doxygen/db_8hpp_source.html create mode 100644 doxygen/db__leveldb_8hpp_source.html create mode 100644 doxygen/db__lmdb_8hpp_source.html create mode 100644 doxygen/deconv__layer_8hpp_source.html create mode 100644 doxygen/device__alternate_8hpp_source.html create mode 100644 doxygen/dir_4b7f3da7c7b4301d805dae0326fb91b7.html create mode 100644 doxygen/dir_5c92236a0f5740f6a611cf0cbca860fd.html create mode 100644 doxygen/dir_63b6f53f56ebc4a4e494d80608d10658.html create mode 100644 doxygen/dir_68267d1309a1af8e8297ef4c3efbcdba.html create mode 100644 doxygen/dir_750d2c266ff028c3ef5b86bdca6396e1.html create mode 100644 doxygen/dir_b4c5ae27f152c386e8799324caa2412e.html create mode 100644 doxygen/dir_b9606a76d4acbf8f90a06a4a51ec8b9e.html create mode 100644 doxygen/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 doxygen/dir_feb0d617e78aec1d705c99fd9e400e0d.html create mode 100644 doxygen/doc.png create mode 100644 doxygen/doxygen.css create mode 100644 doxygen/doxygen.png create mode 100644 doxygen/dropout__layer_8hpp_source.html create mode 100644 doxygen/dummy__data__layer_8hpp_source.html create mode 100644 doxygen/dynsections.js create mode 100644 doxygen/eltwise__layer_8hpp_source.html create mode 100644 doxygen/elu__layer_8hpp_source.html create mode 100644 doxygen/embed__layer_8hpp_source.html create mode 100644 doxygen/euclidean__loss__layer_8hpp_source.html create mode 100644 doxygen/exp__layer_8hpp_source.html create mode 100644 doxygen/files.html create mode 100644 doxygen/filler_8hpp_source.html create mode 100644 doxygen/filter__layer_8hpp_source.html create mode 100644 doxygen/flatten__layer_8hpp_source.html create mode 100644 doxygen/folderclosed.png create mode 100644 doxygen/folderopen.png create mode 100644 doxygen/form_0.png create mode 100644 doxygen/form_1.png create mode 100644 doxygen/form_10.png create mode 100644 doxygen/form_100.png create mode 100644 doxygen/form_101.png create mode 100644 doxygen/form_102.png create mode 100644 doxygen/form_103.png create mode 100644 doxygen/form_104.png create mode 100644 doxygen/form_105.png create mode 100644 doxygen/form_106.png create mode 100644 doxygen/form_107.png create mode 100644 doxygen/form_108.png create mode 100644 doxygen/form_109.png create mode 100644 doxygen/form_11.png create mode 100644 doxygen/form_110.png create mode 100644 doxygen/form_111.png create mode 100644 doxygen/form_112.png create mode 100644 doxygen/form_113.png create mode 100644 doxygen/form_114.png create mode 100644 doxygen/form_115.png create mode 100644 doxygen/form_116.png create mode 100644 doxygen/form_117.png create mode 100644 doxygen/form_118.png create mode 100644 doxygen/form_119.png create mode 100644 doxygen/form_12.png create mode 100644 doxygen/form_120.png create mode 100644 doxygen/form_121.png create mode 100644 doxygen/form_122.png create mode 100644 doxygen/form_123.png create mode 100644 doxygen/form_124.png create mode 100644 doxygen/form_125.png create mode 100644 doxygen/form_126.png create mode 100644 doxygen/form_127.png create mode 100644 doxygen/form_128.png create mode 100644 doxygen/form_129.png create mode 100644 doxygen/form_13.png create mode 100644 doxygen/form_130.png create mode 100644 doxygen/form_131.png create mode 100644 doxygen/form_132.png create mode 100644 doxygen/form_133.png create mode 100644 doxygen/form_134.png create mode 100644 doxygen/form_135.png create mode 100644 doxygen/form_136.png create mode 100644 doxygen/form_137.png create mode 100644 doxygen/form_138.png create mode 100644 doxygen/form_139.png create mode 100644 doxygen/form_14.png create mode 100644 doxygen/form_140.png create mode 100644 doxygen/form_141.png create mode 100644 doxygen/form_142.png create mode 100644 doxygen/form_143.png create mode 100644 doxygen/form_144.png create mode 100644 doxygen/form_145.png create mode 100644 doxygen/form_146.png create mode 100644 doxygen/form_147.png create mode 100644 doxygen/form_148.png create mode 100644 doxygen/form_149.png create mode 100644 doxygen/form_15.png create mode 100644 doxygen/form_150.png create mode 100644 doxygen/form_151.png create mode 100644 doxygen/form_152.png create mode 100644 doxygen/form_153.png create mode 100644 doxygen/form_154.png create mode 100644 doxygen/form_155.png create mode 100644 doxygen/form_156.png create mode 100644 doxygen/form_157.png create mode 100644 doxygen/form_158.png create mode 100644 doxygen/form_159.png create mode 100644 doxygen/form_16.png create mode 100644 doxygen/form_160.png create mode 100644 doxygen/form_161.png create mode 100644 doxygen/form_162.png create mode 100644 doxygen/form_163.png create mode 100644 doxygen/form_164.png create mode 100644 doxygen/form_165.png create mode 100644 doxygen/form_166.png create mode 100644 doxygen/form_167.png create mode 100644 doxygen/form_168.png create mode 100644 doxygen/form_169.png create mode 100644 doxygen/form_17.png create mode 100644 doxygen/form_170.png create mode 100644 doxygen/form_171.png create mode 100644 doxygen/form_172.png create mode 100644 doxygen/form_173.png create mode 100644 doxygen/form_174.png create mode 100644 doxygen/form_175.png create mode 100644 doxygen/form_176.png create mode 100644 doxygen/form_177.png create mode 100644 doxygen/form_178.png create mode 100644 doxygen/form_179.png create mode 100644 doxygen/form_18.png create mode 100644 doxygen/form_19.png create mode 100644 doxygen/form_2.png create mode 100644 doxygen/form_20.png create mode 100644 doxygen/form_21.png create mode 100644 doxygen/form_22.png create mode 100644 doxygen/form_23.png create mode 100644 doxygen/form_24.png create mode 100644 doxygen/form_25.png create mode 100644 doxygen/form_26.png create mode 100644 doxygen/form_27.png create mode 100644 doxygen/form_28.png create mode 100644 doxygen/form_29.png create mode 100644 doxygen/form_3.png create mode 100644 doxygen/form_30.png create mode 100644 doxygen/form_31.png create mode 100644 doxygen/form_32.png create mode 100644 doxygen/form_33.png create mode 100644 doxygen/form_34.png create mode 100644 doxygen/form_35.png create mode 100644 doxygen/form_36.png create mode 100644 doxygen/form_37.png create mode 100644 doxygen/form_38.png create mode 100644 doxygen/form_39.png create mode 100644 doxygen/form_4.png create mode 100644 doxygen/form_40.png create mode 100644 doxygen/form_41.png create mode 100644 doxygen/form_42.png create mode 100644 doxygen/form_43.png create mode 100644 doxygen/form_44.png create mode 100644 doxygen/form_45.png create mode 100644 doxygen/form_46.png create mode 100644 doxygen/form_47.png create mode 100644 doxygen/form_48.png create mode 100644 doxygen/form_49.png create mode 100644 doxygen/form_5.png create mode 100644 doxygen/form_50.png create mode 100644 doxygen/form_51.png create mode 100644 doxygen/form_52.png create mode 100644 doxygen/form_53.png create mode 100644 doxygen/form_54.png create mode 100644 doxygen/form_55.png create mode 100644 doxygen/form_56.png create mode 100644 doxygen/form_57.png create mode 100644 doxygen/form_58.png create mode 100644 doxygen/form_59.png create mode 100644 doxygen/form_6.png create mode 100644 doxygen/form_60.png create mode 100644 doxygen/form_61.png create mode 100644 doxygen/form_62.png create mode 100644 doxygen/form_63.png create mode 100644 doxygen/form_64.png create mode 100644 doxygen/form_65.png create mode 100644 doxygen/form_66.png create mode 100644 doxygen/form_67.png create mode 100644 doxygen/form_68.png create mode 100644 doxygen/form_69.png create mode 100644 doxygen/form_7.png create mode 100644 doxygen/form_70.png create mode 100644 doxygen/form_71.png create mode 100644 doxygen/form_72.png create mode 100644 doxygen/form_73.png create mode 100644 doxygen/form_74.png create mode 100644 doxygen/form_75.png create mode 100644 doxygen/form_76.png create mode 100644 doxygen/form_77.png create mode 100644 doxygen/form_78.png create mode 100644 doxygen/form_79.png create mode 100644 doxygen/form_8.png create mode 100644 doxygen/form_80.png create mode 100644 doxygen/form_81.png create mode 100644 doxygen/form_82.png create mode 100644 doxygen/form_83.png create mode 100644 doxygen/form_84.png create mode 100644 doxygen/form_85.png create mode 100644 doxygen/form_86.png create mode 100644 doxygen/form_87.png create mode 100644 doxygen/form_88.png create mode 100644 doxygen/form_89.png create mode 100644 doxygen/form_9.png create mode 100644 doxygen/form_90.png create mode 100644 doxygen/form_91.png create mode 100644 doxygen/form_92.png create mode 100644 doxygen/form_93.png create mode 100644 doxygen/form_94.png create mode 100644 doxygen/form_95.png create mode 100644 doxygen/form_96.png create mode 100644 doxygen/form_97.png create mode 100644 doxygen/form_98.png create mode 100644 doxygen/form_99.png create mode 100644 doxygen/format_8hpp_source.html create mode 100644 doxygen/formula.repository create mode 100644 doxygen/functions.html create mode 100644 doxygen/functions_b.html create mode 100644 doxygen/functions_c.html create mode 100644 doxygen/functions_d.html create mode 100644 doxygen/functions_e.html create mode 100644 doxygen/functions_f.html create mode 100644 doxygen/functions_func.html create mode 100644 doxygen/functions_func_b.html create mode 100644 doxygen/functions_func_c.html create mode 100644 doxygen/functions_func_d.html create mode 100644 doxygen/functions_func_e.html create mode 100644 doxygen/functions_func_f.html create mode 100644 doxygen/functions_func_g.html create mode 100644 doxygen/functions_func_h.html create mode 100644 doxygen/functions_func_i.html create mode 100644 doxygen/functions_func_l.html create mode 100644 doxygen/functions_func_m.html create mode 100644 doxygen/functions_func_n.html create mode 100644 doxygen/functions_func_o.html create mode 100644 doxygen/functions_func_p.html create mode 100644 doxygen/functions_func_r.html create mode 100644 doxygen/functions_func_s.html create mode 100644 doxygen/functions_func_t.html create mode 100644 doxygen/functions_func_u.html create mode 100644 doxygen/functions_func_w.html create mode 100644 doxygen/functions_g.html create mode 100644 doxygen/functions_h.html create mode 100644 doxygen/functions_i.html create mode 100644 doxygen/functions_k.html create mode 100644 doxygen/functions_l.html create mode 100644 doxygen/functions_m.html create mode 100644 doxygen/functions_n.html create mode 100644 doxygen/functions_o.html create mode 100644 doxygen/functions_p.html create mode 100644 doxygen/functions_r.html create mode 100644 doxygen/functions_s.html create mode 100644 doxygen/functions_t.html create mode 100644 doxygen/functions_u.html create mode 100644 doxygen/functions_vars.html create mode 100644 doxygen/functions_w.html create mode 100644 doxygen/hdf5_8hpp_source.html create mode 100644 doxygen/hdf5__data__layer_8hpp_source.html create mode 100644 doxygen/hdf5__output__layer_8hpp_source.html create mode 100644 doxygen/hierarchy.html create mode 100644 doxygen/hinge__loss__layer_8hpp_source.html create mode 100644 doxygen/im2col_8hpp_source.html create mode 100644 doxygen/im2col__layer_8hpp_source.html create mode 100644 doxygen/image__data__layer_8hpp_source.html create mode 100644 doxygen/index.html create mode 100644 doxygen/infogain__loss__layer_8hpp_source.html create mode 100644 doxygen/inner__product__layer_8hpp_source.html create mode 100644 doxygen/input__layer_8hpp_source.html create mode 100644 doxygen/insert__splits_8hpp_source.html create mode 100644 doxygen/internal__thread_8hpp_source.html create mode 100644 doxygen/io_8hpp_source.html create mode 100644 doxygen/jquery.js create mode 100644 doxygen/layer_8hpp_source.html create mode 100644 doxygen/layer__factory_8hpp_source.html create mode 100644 doxygen/log__layer_8hpp_source.html create mode 100644 doxygen/loss__layer_8hpp_source.html create mode 100644 doxygen/loss__layers_8hpp_source.html create mode 100644 doxygen/lrn__layer_8hpp_source.html create mode 100644 doxygen/lstm__layer_8hpp_source.html create mode 100644 doxygen/math__functions_8hpp_source.html create mode 100644 doxygen/memory__data__layer_8hpp_source.html create mode 100644 doxygen/menu.js create mode 100644 doxygen/menudata.js create mode 100644 doxygen/mkl__alternate_8hpp_source.html create mode 100644 doxygen/multinomial__logistic__loss__layer_8hpp_source.html create mode 100644 doxygen/mvn__layer_8hpp_source.html create mode 100644 doxygen/namespaceboost.html create mode 100644 doxygen/namespacecaffe.html create mode 100644 doxygen/namespacecaffe_1_1SolverAction.html create mode 100644 doxygen/namespacemembers.html create mode 100644 doxygen/namespacemembers_func.html create mode 100644 doxygen/namespacemembers_type.html create mode 100644 doxygen/namespaces.html create mode 100644 doxygen/nav_f.png create mode 100644 doxygen/nav_g.png create mode 100644 doxygen/nav_h.png create mode 100644 doxygen/net_8hpp_source.html create mode 100644 doxygen/neuron__layer_8hpp_source.html create mode 100644 doxygen/neuron__layers_8hpp_source.html create mode 100644 doxygen/open.png create mode 100644 doxygen/parallel_8hpp_source.html create mode 100644 doxygen/parameter__layer_8hpp_source.html create mode 100644 doxygen/pooling__layer_8hpp_source.html create mode 100644 doxygen/power__layer_8hpp_source.html create mode 100644 doxygen/prelu__layer_8hpp_source.html create mode 100644 doxygen/python__layer_8hpp_source.html create mode 100644 doxygen/recurrent__layer_8hpp_source.html create mode 100644 doxygen/reduction__layer_8hpp_source.html create mode 100644 doxygen/relu__layer_8hpp_source.html create mode 100644 doxygen/reshape__layer_8hpp_source.html create mode 100644 doxygen/rng_8hpp_source.html create mode 100644 doxygen/rnn__layer_8hpp_source.html create mode 100644 doxygen/scale__layer_8hpp_source.html create mode 100644 doxygen/search/all_0.html create mode 100644 doxygen/search/all_0.js create mode 100644 doxygen/search/all_1.html create mode 100644 doxygen/search/all_1.js create mode 100644 doxygen/search/all_10.html create mode 100644 doxygen/search/all_10.js create mode 100644 doxygen/search/all_11.html create mode 100644 doxygen/search/all_11.js create mode 100644 doxygen/search/all_12.html create mode 100644 doxygen/search/all_12.js create mode 100644 doxygen/search/all_13.html create mode 100644 doxygen/search/all_13.js create mode 100644 doxygen/search/all_14.html create mode 100644 doxygen/search/all_14.js create mode 100644 doxygen/search/all_15.html create mode 100644 doxygen/search/all_15.js create mode 100644 doxygen/search/all_2.html create mode 100644 doxygen/search/all_2.js create mode 100644 doxygen/search/all_3.html create mode 100644 doxygen/search/all_3.js create mode 100644 doxygen/search/all_4.html create mode 100644 doxygen/search/all_4.js create mode 100644 doxygen/search/all_5.html create mode 100644 doxygen/search/all_5.js create mode 100644 doxygen/search/all_6.html create mode 100644 doxygen/search/all_6.js create mode 100644 doxygen/search/all_7.html create mode 100644 doxygen/search/all_7.js create mode 100644 doxygen/search/all_8.html create mode 100644 doxygen/search/all_8.js create mode 100644 doxygen/search/all_9.html create mode 100644 doxygen/search/all_9.js create mode 100644 doxygen/search/all_a.html create mode 100644 doxygen/search/all_a.js create mode 100644 doxygen/search/all_b.html create mode 100644 doxygen/search/all_b.js create mode 100644 doxygen/search/all_c.html create mode 100644 doxygen/search/all_c.js create mode 100644 doxygen/search/all_d.html create mode 100644 doxygen/search/all_d.js create mode 100644 doxygen/search/all_e.html create mode 100644 doxygen/search/all_e.js create mode 100644 doxygen/search/all_f.html create mode 100644 doxygen/search/all_f.js create mode 100644 doxygen/search/classes_0.html create mode 100644 doxygen/search/classes_0.js create mode 100644 doxygen/search/classes_1.html create mode 100644 doxygen/search/classes_1.js create mode 100644 doxygen/search/classes_10.html create mode 100644 doxygen/search/classes_10.js create mode 100644 doxygen/search/classes_11.html create mode 100644 doxygen/search/classes_11.js create mode 100644 doxygen/search/classes_12.html create mode 100644 doxygen/search/classes_12.js create mode 100644 doxygen/search/classes_13.html create mode 100644 doxygen/search/classes_13.js create mode 100644 doxygen/search/classes_2.html create mode 100644 doxygen/search/classes_2.js create mode 100644 doxygen/search/classes_3.html create mode 100644 doxygen/search/classes_3.js create mode 100644 doxygen/search/classes_4.html create mode 100644 doxygen/search/classes_4.js create mode 100644 doxygen/search/classes_5.html create mode 100644 doxygen/search/classes_5.js create mode 100644 doxygen/search/classes_6.html create mode 100644 doxygen/search/classes_6.js create mode 100644 doxygen/search/classes_7.html create mode 100644 doxygen/search/classes_7.js create mode 100644 doxygen/search/classes_8.html create mode 100644 doxygen/search/classes_8.js create mode 100644 doxygen/search/classes_9.html create mode 100644 doxygen/search/classes_9.js create mode 100644 doxygen/search/classes_a.html create mode 100644 doxygen/search/classes_a.js create mode 100644 doxygen/search/classes_b.html create mode 100644 doxygen/search/classes_b.js create mode 100644 doxygen/search/classes_c.html create mode 100644 doxygen/search/classes_c.js create mode 100644 doxygen/search/classes_d.html create mode 100644 doxygen/search/classes_d.js create mode 100644 doxygen/search/classes_e.html create mode 100644 doxygen/search/classes_e.js create mode 100644 doxygen/search/classes_f.html create mode 100644 doxygen/search/classes_f.js create mode 100644 doxygen/search/close.png create mode 100644 doxygen/search/functions_0.html create mode 100644 doxygen/search/functions_0.js create mode 100644 doxygen/search/functions_1.html create mode 100644 doxygen/search/functions_1.js create mode 100644 doxygen/search/functions_10.html create mode 100644 doxygen/search/functions_10.js create mode 100644 doxygen/search/functions_11.html create mode 100644 doxygen/search/functions_11.js create mode 100644 doxygen/search/functions_12.html create mode 100644 doxygen/search/functions_12.js create mode 100644 doxygen/search/functions_2.html create mode 100644 doxygen/search/functions_2.js create mode 100644 doxygen/search/functions_3.html create mode 100644 doxygen/search/functions_3.js create mode 100644 doxygen/search/functions_4.html create mode 100644 doxygen/search/functions_4.js create mode 100644 doxygen/search/functions_5.html create mode 100644 doxygen/search/functions_5.js create mode 100644 doxygen/search/functions_6.html create mode 100644 doxygen/search/functions_6.js create mode 100644 doxygen/search/functions_7.html create mode 100644 doxygen/search/functions_7.js create mode 100644 doxygen/search/functions_8.html create mode 100644 doxygen/search/functions_8.js create mode 100644 doxygen/search/functions_9.html create mode 100644 doxygen/search/functions_9.js create mode 100644 doxygen/search/functions_a.html create mode 100644 doxygen/search/functions_a.js create mode 100644 doxygen/search/functions_b.html create mode 100644 doxygen/search/functions_b.js create mode 100644 doxygen/search/functions_c.html create mode 100644 doxygen/search/functions_c.js create mode 100644 doxygen/search/functions_d.html create mode 100644 doxygen/search/functions_d.js create mode 100644 doxygen/search/functions_e.html create mode 100644 doxygen/search/functions_e.js create mode 100644 doxygen/search/functions_f.html create mode 100644 doxygen/search/functions_f.js create mode 100644 doxygen/search/mag_sel.png create mode 100644 doxygen/search/namespaces_0.html create mode 100644 doxygen/search/namespaces_0.js create mode 100644 doxygen/search/namespaces_1.html create mode 100644 doxygen/search/namespaces_1.js create mode 100644 doxygen/search/nomatches.html create mode 100644 doxygen/search/search.css create mode 100644 doxygen/search/search.js create mode 100644 doxygen/search/search_l.png create mode 100644 doxygen/search/search_m.png create mode 100644 doxygen/search/search_r.png create mode 100644 doxygen/search/searchdata.js create mode 100644 doxygen/search/typedefs_0.html create mode 100644 doxygen/search/typedefs_0.js create mode 100644 doxygen/search/variables_0.html create mode 100644 doxygen/search/variables_0.js create mode 100644 doxygen/search/variables_1.html create mode 100644 doxygen/search/variables_1.js create mode 100644 doxygen/search/variables_10.html create mode 100644 doxygen/search/variables_10.js create mode 100644 doxygen/search/variables_11.html create mode 100644 doxygen/search/variables_11.js create mode 100644 doxygen/search/variables_2.html create mode 100644 doxygen/search/variables_2.js create mode 100644 doxygen/search/variables_3.html create mode 100644 doxygen/search/variables_3.js create mode 100644 doxygen/search/variables_4.html create mode 100644 doxygen/search/variables_4.js create mode 100644 doxygen/search/variables_5.html create mode 100644 doxygen/search/variables_5.js create mode 100644 doxygen/search/variables_6.html create mode 100644 doxygen/search/variables_6.js create mode 100644 doxygen/search/variables_7.html create mode 100644 doxygen/search/variables_7.js create mode 100644 doxygen/search/variables_8.html create mode 100644 doxygen/search/variables_8.js create mode 100644 doxygen/search/variables_9.html create mode 100644 doxygen/search/variables_9.js create mode 100644 doxygen/search/variables_a.html create mode 100644 doxygen/search/variables_a.js create mode 100644 doxygen/search/variables_b.html create mode 100644 doxygen/search/variables_b.js create mode 100644 doxygen/search/variables_c.html create mode 100644 doxygen/search/variables_c.js create mode 100644 doxygen/search/variables_d.html create mode 100644 doxygen/search/variables_d.js create mode 100644 doxygen/search/variables_e.html create mode 100644 doxygen/search/variables_e.js create mode 100644 doxygen/search/variables_f.html create mode 100644 doxygen/search/variables_f.js create mode 100644 doxygen/sgd__solvers_8hpp_source.html create mode 100644 doxygen/sigmoid__cross__entropy__loss__layer_8hpp_source.html create mode 100644 doxygen/sigmoid__layer_8hpp_source.html create mode 100644 doxygen/signal__handler_8h_source.html create mode 100644 doxygen/silence__layer_8hpp_source.html create mode 100644 doxygen/slice__layer_8hpp_source.html create mode 100644 doxygen/softmax__layer_8hpp_source.html create mode 100644 doxygen/softmax__loss__layer_8hpp_source.html create mode 100644 doxygen/solver_8hpp_source.html create mode 100644 doxygen/solver__factory_8hpp_source.html create mode 100644 doxygen/split__layer_8hpp_source.html create mode 100644 doxygen/splitbar.png create mode 100644 doxygen/spp__layer_8hpp_source.html create mode 100644 doxygen/sync_off.png create mode 100644 doxygen/sync_on.png create mode 100644 doxygen/syncedmem_8hpp_source.html create mode 100644 doxygen/tab_a.png create mode 100644 doxygen/tab_b.png create mode 100644 doxygen/tab_h.png create mode 100644 doxygen/tab_s.png create mode 100644 doxygen/tabs.css create mode 100644 doxygen/tanh__layer_8hpp_source.html create mode 100644 doxygen/threshold__layer_8hpp_source.html create mode 100644 doxygen/tile__layer_8hpp_source.html create mode 100644 doxygen/upgrade__proto_8hpp_source.html create mode 100644 doxygen/vision__layers_8hpp_source.html create mode 100644 doxygen/window__data__layer_8hpp_source.html create mode 100644 gathered/examples/00-classification.ipynb create mode 100644 gathered/examples/01-learning-lenet.ipynb create mode 100644 gathered/examples/02-fine-tuning.ipynb create mode 100644 gathered/examples/brewing-logreg.ipynb create mode 100644 gathered/examples/cifar10.html create mode 100644 gathered/examples/cpp_classification.html create mode 100644 gathered/examples/detection.ipynb create mode 100644 gathered/examples/feature_extraction.html create mode 100644 gathered/examples/finetune_flickr_style.html create mode 100644 gathered/examples/imagenet.html create mode 100644 gathered/examples/mnist.html create mode 100644 gathered/examples/net_surgery.ipynb create mode 100644 gathered/examples/pascal-multilabel-with-datalayer.ipynb create mode 100644 gathered/examples/siamese.html create mode 100644 gathered/examples/siamese/mnist_siamese.ipynb create mode 100644 gathered/examples/web_demo.html create mode 100644 images/GitHub-Mark-64px.png create mode 100644 images/caffeine-icon.png create mode 100644 index.html create mode 100644 install_apt.html create mode 100644 install_osx.html create mode 100644 install_yum.html create mode 100644 installation.html create mode 100644 model_zoo.html create mode 100644 multigpu.html create mode 100644 performance_hardware.html create mode 100644 stylesheets/pygment_trac.css create mode 100644 stylesheets/reset.css create mode 100644 stylesheets/styles.css create mode 100644 tutorial/convolution.html create mode 100644 tutorial/data.html create mode 100644 tutorial/fig/backward.jpg create mode 100644 tutorial/fig/forward.jpg create mode 100644 tutorial/fig/forward_backward.png create mode 100644 tutorial/fig/layer.jpg create mode 100644 tutorial/fig/logreg.jpg create mode 100644 tutorial/forward_backward.html create mode 100644 tutorial/index.html create mode 100644 tutorial/interfaces.html create mode 100644 tutorial/layers.html create mode 100644 tutorial/loss.html create mode 100644 tutorial/net_layer_blob.html create mode 100644 tutorial/solver.html diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000000..ae47e461736 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,106 @@ +# Building docs script +# Requirements: +# sudo apt-get install doxygen texlive ruby-dev +# sudo gem install jekyll execjs therubyracer + +if(NOT BUILD_docs OR NOT DOXYGEN_FOUND) + return() +endif() + +################################################################################################# +# Gather docs from /examples/**/readme.md +function(gather_readmes_as_prebuild_cmd target gathered_dir root) + set(full_gathered_dir ${root}/${gathered_dir}) + + file(GLOB_RECURSE readmes ${root}/examples/readme.md ${root}/examples/README.md) + foreach(file ${readmes}) + # Only use file if it is to be included in docs. + file(STRINGS ${file} file_lines REGEX "include_in_docs: true") + + if(file_lines) + # Since everything is called readme.md, rename it by its dirname. + file(RELATIVE_PATH file ${root} ${file}) + get_filename_component(folder ${file} PATH) + set(new_filename ${full_gathered_dir}/${folder}.md) + + # folder value might be like /readme.md. That's why make directory. + get_filename_component(new_folder ${new_filename} PATH) + add_custom_command(TARGET ${target} PRE_BUILD + COMMAND ${CMAKE_COMMAND} -E make_directory ${new_folder} + COMMAND ln -sf ${root}/${file} ${new_filename} + COMMENT "Creating symlink ${new_filename} -> ${root}/${file}" + WORKING_DIRECTORY ${root} VERBATIM) + endif() + endforeach() +endfunction() + +################################################################################################ +# Gather docs from examples/*.ipynb and add YAML front-matter. +function(gather_notebooks_as_prebuild_cmd target gathered_dir root) + set(full_gathered_dir ${root}/${gathered_dir}) + + if(NOT PYTHON_EXECUTABLE) + message(STATUS "Python interpeter is not found. Can't include *.ipynb files in docs. Skipping...") + return() + endif() + + file(GLOB_RECURSE notebooks ${root}/examples/*.ipynb) + foreach(file ${notebooks}) + file(RELATIVE_PATH file ${root} ${file}) + set(new_filename ${full_gathered_dir}/${file}) + + get_filename_component(new_folder ${new_filename} PATH) + add_custom_command(TARGET ${target} PRE_BUILD + COMMAND ${CMAKE_COMMAND} -E make_directory ${new_folder} + COMMAND ${PYTHON_EXECUTABLE} scripts/copy_notebook.py ${file} ${new_filename} + COMMENT "Copying notebook ${file} to ${new_filename}" + WORKING_DIRECTORY ${root} VERBATIM) + endforeach() + + set(${outputs_var} ${outputs} PARENT_SCOPE) +endfunction() + +################################################################################################ +########################## [ Non macro part ] ################################################## + +# Gathering is done at each 'make doc' +file(REMOVE_RECURSE ${PROJECT_SOURCE_DIR}/docs/gathered) + +# Doxygen config file path +set(DOXYGEN_config_file ${PROJECT_SOURCE_DIR}/.Doxyfile CACHE FILEPATH "Doxygen config file") + +# Adding docs target +add_custom_target(docs COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_config_file} + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + COMMENT "Launching doxygen..." VERBATIM) + +# Gathering examples into docs subfolder +gather_notebooks_as_prebuild_cmd(docs docs/gathered ${PROJECT_SOURCE_DIR}) +gather_readmes_as_prebuild_cmd(docs docs/gathered ${PROJECT_SOURCE_DIR}) + +# Auto detect output directory +file(STRINGS ${DOXYGEN_config_file} config_line REGEX "OUTPUT_DIRECTORY[ \t]+=[^=].*") +if(config_line) + string(REGEX MATCH "OUTPUT_DIRECTORY[ \t]+=([^=].*)" __ver_check "${config_line}") + string(STRIP ${CMAKE_MATCH_1} output_dir) + message(STATUS "Detected Doxygen OUTPUT_DIRECTORY: ${output_dir}") +else() + set(output_dir ./doxygen/) + message(STATUS "Can't find OUTPUT_DIRECTORY in doxygen config file. Try to use default: ${output_dir}") +endif() + +if(NOT IS_ABSOLUTE ${output_dir}) + set(output_dir ${PROJECT_SOURCE_DIR}/${output_dir}) + get_filename_component(output_dir ${output_dir} ABSOLUTE) +endif() + +# creates symlink in docs subfolder to code documentation built by doxygen +add_custom_command(TARGET docs POST_BUILD VERBATIM + COMMAND ln -sfn "${output_dir}/html" doxygen + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/docs + COMMENT "Creating symlink ${PROJECT_SOURCE_DIR}/docs/doxygen -> ${output_dir}/html") + +# for quick launch of jekyll +add_custom_target(jekyll COMMAND jekyll serve -w -s . -d _site --port=4000 + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/docs + COMMENT "Launching jekyll..." VERBATIM) diff --git a/CNAME b/CNAME new file mode 100644 index 00000000000..eee1ae26d98 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +caffe.berkeleyvision.org diff --git a/README.md b/README.md new file mode 100644 index 00000000000..8f1781e3634 --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# Caffe Documentation + +To generate the documentation, run `$CAFFE_ROOT/scripts/build_docs.sh`. + +To push your changes to the documentation to the gh-pages branch of your or the BVLC repo, run `$CAFFE_ROOT/scripts/deploy_docs.sh `. diff --git a/development.html b/development.html new file mode 100644 index 00000000000..89eb2249b35 --- /dev/null +++ b/development.html @@ -0,0 +1,189 @@ + + + + + + + + + Caffe | Developing and Contributing + + + + + + + + + + + + + +
+
+

Caffe

+

+ Deep learning framework by the BVLC +

+

+ Created by +
+ Yangqing Jia +
+ Lead Developer +
+ Evan Shelhamer +

+
+
+ +

Development and Contributing

+ +

Caffe is developed with active participation of the community.
+The BVLC brewers welcome all contributions!

+ +

The exact details of contributions are recorded by versioning and cited in our acknowledgements. +This method is impartial and always up-to-date.

+ +

License

+ +

Caffe is licensed under the terms in LICENSE. By contributing to the project, you agree to the license and copyright terms therein and release your contribution under these terms.

+ + + +

Caffe uses a shared copyright model: each contributor holds copyright over their contributions to Caffe. The project versioning records all such contribution and copyright details.

+ +

If a contributor wants to further mark their specific copyright on a particular contribution, they should indicate their copyright solely in the commit message of the change when it is committed. Do not include copyright notices in files for this purpose.

+ +

Documentation

+ +

This website, written with Jekyll, acts as the official Caffe documentation – simply run scripts/build_docs.sh and view the website at http://0.0.0.0:4000.

+ +

We prefer tutorials and examples to be documented close to where they live, in readme.md files. +The build_docs.sh script gathers all examples/**/readme.md and examples/*.ipynb files, and makes a table of contents. +To be included in the docs, the readme files must be annotated with YAML front-matter, including the flag include_in_docs: true. +Similarly for IPython notebooks: simply include "include_in_docs": true in the "metadata" JSON field.

+ +

Other docs, such as installation guides, are written in the docs directory and manually linked to from the index.md page.

+ +

We strive to provide lots of usage examples, and to document all code in docstrings. +We absolutely appreciate any contribution to this effort!

+ +

Versioning

+ +

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 are catalogued online.

+ +

Issues & Pull Request Protocol

+ +

Post Issues to propose features, report bugs, and discuss framework code. +Large-scale development work is guided by milestones, which are sets of Issues selected for bundling as releases.

+ +

Please note that since the core developers are largely researchers, we may work on a feature in isolation for some time before releasing it to the community, so as to claim honest academic contribution. +We do release things as soon as a reasonable technical report may be written, and we still aim to inform the community of ongoing development through Github Issues.

+ +

When you are ready to develop a feature or fixing a bug, follow this protocol:

+ +
    +
  • Develop in feature branches with descriptive names. Branch off of the latest master.
  • +
  • Bring your work up-to-date by rebasing onto the latest master when done. +(Groom your changes by interactive rebase, if you’d like.)
  • +
  • Pull request your contribution to BVLC/caffe’s master branch for discussion and review. +
      +
    • Make PRs as soon as development begins, to let discussion guide development.
    • +
    • A PR is only ready for merge review when it is a fast-forward merge, and all code is documented, linted, and tested – that means your PR must include tests!
    • +
    +
  • +
  • When the PR satisfies the above properties, use comments to request maintainer review.
  • +
+ +

The following is a poetic presentation of the protocol in code form.

+ +

Shelhamer’s “life of a branch in four acts”

+ +

Make the feature branch off of the latest bvlc/master

+ +
git checkout master
+git pull upstream master
+git checkout -b feature
+# do your work, make commits
+
+
+ +

Prepare to merge by rebasing your branch on the latest bvlc/master

+ +
# make sure master is fresh
+git checkout master
+git pull upstream master
+# rebase your branch on the tip of master
+git checkout feature
+git rebase master
+
+
+ +

Push your branch to pull request it into BVLC/caffe:master

+ +
git push origin feature
+# ...make pull request to master...
+
+
+ +

Now make a pull request! You can do this from the command line (git pull-request -b master) if you install hub. Hub has many other magical uses.

+ +

The pull request of feature into master will be a clean merge. Applause.

+ +

Historical note: Caffe once relied on a two branch master and dev workflow. +PRs from this time are still open but these will be merged into master or closed.

+ +

Testing

+ +

Run make runtest to check the project tests. New code requires new tests. Pull requests that fail tests will not be accepted.

+ +

The gtest framework we use provides many additional options, which you can access by running the test binaries directly. One of the more useful options is --gtest_filter, which allows you to filter tests by name:

+ +
# run all tests with CPU in the name
+build/test/test_all.testbin --gtest_filter='*CPU*'
+
+# run all tests without GPU in the name (note the leading minus sign)
+build/test/test_all.testbin --gtest_filter=-'*GPU*'
+
+
+ +

To get a list of all options googletest provides, simply pass the --help flag:

+ +
build/test/test_all.testbin --help
+
+
+ +

Style

+ +
    +
  • Run make lint to check C++ code.
  • +
  • Wrap lines at 80 chars.
  • +
  • Follow Google C++ style and Google python style + PEP 8.
  • +
  • Remember that “a foolish consistency is the hobgoblin of little minds,” so use your best judgement to write the clearest code for your particular case.
  • +
+ + +
+
+ + diff --git a/doxygen/absval__layer_8hpp_source.html b/doxygen/absval__layer_8hpp_source.html new file mode 100644 index 00000000000..a6647e2a4e6 --- /dev/null +++ b/doxygen/absval__layer_8hpp_source.html @@ -0,0 +1,89 @@ + + + + + + + +Caffe: include/caffe/layers/absval_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
absval_layer.hpp
+
+
+
1 #ifndef CAFFE_ABSVAL_LAYER_HPP_
2 #define CAFFE_ABSVAL_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 #include "caffe/layers/neuron_layer.hpp"
11 
12 namespace caffe {
13 
24 template <typename Dtype>
25 class AbsValLayer : public NeuronLayer<Dtype> {
26  public:
27  explicit AbsValLayer(const LayerParameter& param)
28  : NeuronLayer<Dtype>(param) {}
29  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
30  const vector<Blob<Dtype>*>& top);
31 
32  virtual inline const char* type() const { return "AbsVal"; }
33  virtual inline int ExactNumBottomBlobs() const { return 1; }
34  virtual inline int ExactNumTopBlobs() const { return 1; }
35 
36  protected:
38  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
39  const vector<Blob<Dtype>*>& top);
40  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
41  const vector<Blob<Dtype>*>& top);
42 
60  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
61  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
62  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
63  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
64 };
65 
66 } // namespace caffe
67 
68 #endif // CAFFE_ABSVAL_LAYER_HPP_
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: absval_layer.hpp:33
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Computes .
Definition: absval_layer.cpp:17
+
virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: absval_layer.cpp:9
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
Computes .
Definition: absval_layer.hpp:25
+
virtual const char * type() const
Returns the layer type.
Definition: absval_layer.hpp:32
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Computes the error gradient w.r.t. the absolute value inputs.
Definition: absval_layer.cpp:25
+
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
An interface for layers that take one blob as input ( ) and produce one equally-sized blob as output ...
Definition: neuron_layer.hpp:19
+
virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: absval_layer.hpp:34
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/accuracy__layer_8hpp_source.html b/doxygen/accuracy__layer_8hpp_source.html new file mode 100644 index 00000000000..f888cca62bc --- /dev/null +++ b/doxygen/accuracy__layer_8hpp_source.html @@ -0,0 +1,93 @@ + + + + + + + +Caffe: include/caffe/layers/accuracy_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
accuracy_layer.hpp
+
+
+
1 #ifndef CAFFE_ACCURACY_LAYER_HPP_
2 #define CAFFE_ACCURACY_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 #include "caffe/layers/loss_layer.hpp"
11 
12 namespace caffe {
13 
18 template <typename Dtype>
19 class AccuracyLayer : public Layer<Dtype> {
20  public:
29  explicit AccuracyLayer(const LayerParameter& param)
30  : Layer<Dtype>(param) {}
31  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
32  const vector<Blob<Dtype>*>& top);
33  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
34  const vector<Blob<Dtype>*>& top);
35 
36  virtual inline const char* type() const { return "Accuracy"; }
37  virtual inline int ExactNumBottomBlobs() const { return 2; }
38 
39  // If there are two top blobs, then the second blob will contain
40  // accuracies per class.
41  virtual inline int MinTopBlobs() const { return 1; }
42  virtual inline int MaxTopBlobs() const { return 2; }
43 
44  protected:
69  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
70  const vector<Blob<Dtype>*>& top);
71 
72 
74  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
75  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {
76  for (int i = 0; i < propagate_down.size(); ++i) {
77  if (propagate_down[i]) { NOT_IMPLEMENTED; }
78  }
79  }
80 
81  int label_axis_, outer_num_, inner_num_;
82 
83  int top_k_;
84 
91 };
92 
93 } // namespace caffe
94 
95 #endif // CAFFE_ACCURACY_LAYER_HPP_
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: accuracy_layer.hpp:37
+
virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: accuracy_layer.cpp:11
+
int ignore_label_
The label indicating that an instance should be ignored.
Definition: accuracy_layer.hpp:88
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Definition: accuracy_layer.cpp:48
+
virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: accuracy_layer.cpp:23
+
Computes the classification accuracy for a one-of-many classification task.
Definition: accuracy_layer.hpp:19
+
virtual int MaxTopBlobs() const
Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required...
Definition: accuracy_layer.hpp:42
+
bool has_ignore_label_
Whether to ignore instances with a certain label.
Definition: accuracy_layer.hpp:86
+
virtual int MinTopBlobs() const
Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
Definition: accuracy_layer.hpp:41
+
AccuracyLayer(const LayerParameter &param)
Definition: accuracy_layer.hpp:29
+
virtual const char * type() const
Returns the layer type.
Definition: accuracy_layer.hpp:36
+
Blob< Dtype > nums_buffer_
Keeps counts of the number of samples per class.
Definition: accuracy_layer.hpp:90
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Not implemented – AccuracyLayer cannot be used as a loss.
Definition: accuracy_layer.hpp:74
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/annotated.html b/doxygen/annotated.html new file mode 100644 index 00000000000..dd193689b3b --- /dev/null +++ b/doxygen/annotated.html @@ -0,0 +1,190 @@ + + + + + + + +Caffe: Class List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 1234]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 NcaffeA layer factory that allows one to register layers. During runtime, registered layers can be called by passing a LayerParameter protobuffer to the CreateLayer function:
+
+
+ + + + diff --git a/doxygen/argmax__layer_8hpp_source.html b/doxygen/argmax__layer_8hpp_source.html new file mode 100644 index 00000000000..1d916f0f8b0 --- /dev/null +++ b/doxygen/argmax__layer_8hpp_source.html @@ -0,0 +1,89 @@ + + + + + + + +Caffe: include/caffe/layers/argmax_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
argmax_layer.hpp
+
+
+
1 #ifndef CAFFE_ARGMAX_LAYER_HPP_
2 #define CAFFE_ARGMAX_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 namespace caffe {
11 
23 template <typename Dtype>
24 class ArgMaxLayer : public Layer<Dtype> {
25  public:
38  explicit ArgMaxLayer(const LayerParameter& param)
39  : Layer<Dtype>(param) {}
40  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
41  const vector<Blob<Dtype>*>& top);
42  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
43  const vector<Blob<Dtype>*>& top);
44 
45  virtual inline const char* type() const { return "ArgMax"; }
46  virtual inline int ExactNumBottomBlobs() const { return 1; }
47  virtual inline int ExactNumTopBlobs() const { return 1; }
48 
49  protected:
62  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
63  const vector<Blob<Dtype>*>& top);
65  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
66  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {
67  NOT_IMPLEMENTED;
68  }
69  bool out_max_val_;
70  size_t top_k_;
71  bool has_axis_;
72  int axis_;
73 };
74 
75 } // namespace caffe
76 
77 #endif // CAFFE_ARGMAX_LAYER_HPP_
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: argmax_layer.cpp:11
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: argmax_layer.hpp:46
+
Compute the index of the max values for each datum across all dimensions .
Definition: argmax_layer.hpp:24
+
virtual const char * type() const
Returns the layer type.
Definition: argmax_layer.hpp:45
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Definition: argmax_layer.cpp:55
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: argmax_layer.hpp:47
+
virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: argmax_layer.cpp:33
+
ArgMaxLayer(const LayerParameter &param)
Definition: argmax_layer.hpp:38
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Not implemented (non-differentiable function)
Definition: argmax_layer.hpp:65
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/arrowdown.png b/doxygen/arrowdown.png new file mode 100644 index 0000000000000000000000000000000000000000..0b63f6d38c4b9ec907b820192ebe9724ed6eca22 GIT binary patch literal 246 zcmVkw!R34#Lv2LOS^S2tZA31X++9RY}n zChwn@Z)Wz*WWHH{)HDtJnq&A2hk$b-y(>?@z0iHr41EKCGp#T5?07*qoM6N<$f(V3Pvj6}9 literal 0 HcmV?d00001 diff --git a/doxygen/arrowright.png b/doxygen/arrowright.png new file mode 100644 index 0000000000000000000000000000000000000000..c6ee22f937a07d1dbfc27c669d11f8ed13e2f152 GIT binary patch literal 229 zcmV^P)R?RzRoKvklcaQ%HF6%rK2&ZgO(-ihJ_C zzrKgp4jgO( fd_(yg|3PpEQb#9`a?Pz_00000NkvXXu0mjftR`5K literal 0 HcmV?d00001 diff --git a/doxygen/base__conv__layer_8hpp_source.html b/doxygen/base__conv__layer_8hpp_source.html new file mode 100644 index 00000000000..5c5102cbcdc --- /dev/null +++ b/doxygen/base__conv__layer_8hpp_source.html @@ -0,0 +1,94 @@ + + + + + + + +Caffe: include/caffe/layers/base_conv_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
base_conv_layer.hpp
+
+
+
1 #ifndef CAFFE_BASE_CONVOLUTION_LAYER_HPP_
2 #define CAFFE_BASE_CONVOLUTION_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 #include "caffe/util/im2col.hpp"
10 
11 namespace caffe {
12 
17 template <typename Dtype>
18 class BaseConvolutionLayer : public Layer<Dtype> {
19  public:
20  explicit BaseConvolutionLayer(const LayerParameter& param)
21  : Layer<Dtype>(param) {}
22  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
23  const vector<Blob<Dtype>*>& top);
24  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
25  const vector<Blob<Dtype>*>& top);
26 
27  virtual inline int MinBottomBlobs() const { return 1; }
28  virtual inline int MinTopBlobs() const { return 1; }
29  virtual inline bool EqualNumBottomTopBlobs() const { return true; }
30 
31  protected:
32  // Helper functions that abstract away the column buffer and gemm arguments.
33  // The last argument in forward_cpu_gemm is so that we can skip the im2col if
34  // we just called weight_cpu_gemm with the same input.
35  void forward_cpu_gemm(const Dtype* input, const Dtype* weights,
36  Dtype* output, bool skip_im2col = false);
37  void forward_cpu_bias(Dtype* output, const Dtype* bias);
38  void backward_cpu_gemm(const Dtype* input, const Dtype* weights,
39  Dtype* output);
40  void weight_cpu_gemm(const Dtype* input, const Dtype* output, Dtype*
41  weights);
42  void backward_cpu_bias(Dtype* bias, const Dtype* input);
43 
44 #ifndef CPU_ONLY
45  void forward_gpu_gemm(const Dtype* col_input, const Dtype* weights,
46  Dtype* output, bool skip_im2col = false);
47  void forward_gpu_bias(Dtype* output, const Dtype* bias);
48  void backward_gpu_gemm(const Dtype* input, const Dtype* weights,
49  Dtype* col_output);
50  void weight_gpu_gemm(const Dtype* col_input, const Dtype* output, Dtype*
51  weights);
52  void backward_gpu_bias(Dtype* bias, const Dtype* input);
53 #endif
54 
56  inline int input_shape(int i) {
57  return (*bottom_shape_)[channel_axis_ + i];
58  }
59  // reverse_dimensions should return true iff we are implementing deconv, so
60  // that conv helpers know which dimensions are which.
61  virtual bool reverse_dimensions() = 0;
62  // Compute height_out_ and width_out_ from other parameters.
63  virtual void compute_output_shape() = 0;
64 
76  vector<int> col_buffer_shape_;
78  vector<int> output_shape_;
79  const vector<int>* bottom_shape_;
80 
81  int num_spatial_axes_;
82  int bottom_dim_;
83  int top_dim_;
84 
85  int channel_axis_;
86  int num_;
87  int channels_;
88  int group_;
89  int out_spatial_dim_;
90  int weight_offset_;
91  int num_output_;
92  bool bias_term_;
93  bool is_1x1_;
94  bool force_nd_im2col_;
95 
96  private:
97  // wrap im2col/col2im so we don't have to remember the (long) argument lists
98  inline void conv_im2col_cpu(const Dtype* data, Dtype* col_buff) {
99  if (!force_nd_im2col_ && num_spatial_axes_ == 2) {
100  im2col_cpu(data, conv_in_channels_,
101  conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2],
102  kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1],
103  pad_.cpu_data()[0], pad_.cpu_data()[1],
104  stride_.cpu_data()[0], stride_.cpu_data()[1],
105  dilation_.cpu_data()[0], dilation_.cpu_data()[1], col_buff);
106  } else {
107  im2col_nd_cpu(data, num_spatial_axes_, conv_input_shape_.cpu_data(),
108  col_buffer_shape_.data(), kernel_shape_.cpu_data(),
109  pad_.cpu_data(), stride_.cpu_data(), dilation_.cpu_data(), col_buff);
110  }
111  }
112  inline void conv_col2im_cpu(const Dtype* col_buff, Dtype* data) {
113  if (!force_nd_im2col_ && num_spatial_axes_ == 2) {
114  col2im_cpu(col_buff, conv_in_channels_,
115  conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2],
116  kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1],
117  pad_.cpu_data()[0], pad_.cpu_data()[1],
118  stride_.cpu_data()[0], stride_.cpu_data()[1],
119  dilation_.cpu_data()[0], dilation_.cpu_data()[1], data);
120  } else {
121  col2im_nd_cpu(col_buff, num_spatial_axes_, conv_input_shape_.cpu_data(),
122  col_buffer_shape_.data(), kernel_shape_.cpu_data(),
123  pad_.cpu_data(), stride_.cpu_data(), dilation_.cpu_data(), data);
124  }
125  }
126 #ifndef CPU_ONLY
127  inline void conv_im2col_gpu(const Dtype* data, Dtype* col_buff) {
128  if (!force_nd_im2col_ && num_spatial_axes_ == 2) {
129  im2col_gpu(data, conv_in_channels_,
130  conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2],
131  kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1],
132  pad_.cpu_data()[0], pad_.cpu_data()[1],
133  stride_.cpu_data()[0], stride_.cpu_data()[1],
134  dilation_.cpu_data()[0], dilation_.cpu_data()[1], col_buff);
135  } else {
136  im2col_nd_gpu(data, num_spatial_axes_, num_kernels_im2col_,
137  conv_input_shape_.gpu_data(), col_buffer_.gpu_shape(),
138  kernel_shape_.gpu_data(), pad_.gpu_data(),
139  stride_.gpu_data(), dilation_.gpu_data(), col_buff);
140  }
141  }
142  inline void conv_col2im_gpu(const Dtype* col_buff, Dtype* data) {
143  if (!force_nd_im2col_ && num_spatial_axes_ == 2) {
144  col2im_gpu(col_buff, conv_in_channels_,
145  conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2],
146  kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1],
147  pad_.cpu_data()[0], pad_.cpu_data()[1],
148  stride_.cpu_data()[0], stride_.cpu_data()[1],
149  dilation_.cpu_data()[0], dilation_.cpu_data()[1], data);
150  } else {
151  col2im_nd_gpu(col_buff, num_spatial_axes_, num_kernels_col2im_,
152  conv_input_shape_.gpu_data(), col_buffer_.gpu_shape(),
153  kernel_shape_.gpu_data(), pad_.gpu_data(), stride_.gpu_data(),
154  dilation_.gpu_data(), data);
155  }
156  }
157 #endif
158 
159  int num_kernels_im2col_;
160  int num_kernels_col2im_;
161  int conv_out_channels_;
162  int conv_in_channels_;
163  int conv_out_spatial_dim_;
164  int kernel_dim_;
165  int col_offset_;
166  int output_offset_;
167 
168  Blob<Dtype> col_buffer_;
169  Blob<Dtype> bias_multiplier_;
170 };
171 
172 } // namespace caffe
173 
174 #endif // CAFFE_BASE_CONVOLUTION_LAYER_HPP_
Blob< int > kernel_shape_
The spatial dimensions of a filter kernel.
Definition: base_conv_layer.hpp:66
+
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
int input_shape(int i)
The spatial dimensions of the input.
Definition: base_conv_layer.hpp:56
+
virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: base_conv_layer.cpp:12
+
Abstract base class that factors out the BLAS code common to ConvolutionLayer and DeconvolutionLayer...
Definition: base_conv_layer.hpp:18
+
virtual bool EqualNumBottomTopBlobs() const
Returns true if the layer requires an equal number of bottom and top blobs.
Definition: base_conv_layer.hpp:29
+
virtual int MinBottomBlobs() const
Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is requi...
Definition: base_conv_layer.hpp:27
+
Blob< int > pad_
The spatial dimensions of the padding.
Definition: base_conv_layer.hpp:70
+
virtual int MinTopBlobs() const
Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
Definition: base_conv_layer.hpp:28
+
vector< int > col_buffer_shape_
The spatial dimensions of the col_buffer.
Definition: base_conv_layer.hpp:76
+
vector< int > output_shape_
The spatial dimensions of the output.
Definition: base_conv_layer.hpp:78
+
virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: base_conv_layer.cpp:186
+
Blob< int > conv_input_shape_
The spatial dimensions of the convolution input.
Definition: base_conv_layer.hpp:74
+
Blob< int > stride_
The spatial dimensions of the stride.
Definition: base_conv_layer.hpp:68
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
Blob< int > dilation_
The spatial dimensions of the dilation.
Definition: base_conv_layer.hpp:72
+
+ + + + diff --git a/doxygen/base__data__layer_8hpp_source.html b/doxygen/base__data__layer_8hpp_source.html new file mode 100644 index 00000000000..0d28d18fcf1 --- /dev/null +++ b/doxygen/base__data__layer_8hpp_source.html @@ -0,0 +1,92 @@ + + + + + + + +Caffe: include/caffe/layers/base_data_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
base_data_layer.hpp
+
+
+
1 #ifndef CAFFE_DATA_LAYERS_HPP_
2 #define CAFFE_DATA_LAYERS_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/data_transformer.hpp"
8 #include "caffe/internal_thread.hpp"
9 #include "caffe/layer.hpp"
10 #include "caffe/proto/caffe.pb.h"
11 #include "caffe/util/blocking_queue.hpp"
12 
13 namespace caffe {
14 
20 template <typename Dtype>
21 class BaseDataLayer : public Layer<Dtype> {
22  public:
23  explicit BaseDataLayer(const LayerParameter& param);
24  // LayerSetUp: implements common data layer setup functionality, and calls
25  // DataLayerSetUp to do special data layer setup for individual layer types.
26  // This method may not be overridden except by the BasePrefetchingDataLayer.
27  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
28  const vector<Blob<Dtype>*>& top);
29  // Data layers should be shared by multiple solvers in parallel
30  virtual inline bool ShareInParallel() const { return true; }
31  virtual void DataLayerSetUp(const vector<Blob<Dtype>*>& bottom,
32  const vector<Blob<Dtype>*>& top) {}
33  // Data layers have no bottoms, so reshaping is trivial.
34  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
35  const vector<Blob<Dtype>*>& top) {}
36 
37  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
38  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
39  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
40  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
41 
42  protected:
43  TransformationParameter transform_param_;
44  shared_ptr<DataTransformer<Dtype> > data_transformer_;
45  bool output_labels_;
46 };
47 
48 template <typename Dtype>
49 class Batch {
50  public:
51  Blob<Dtype> data_, label_;
52 };
53 
54 template <typename Dtype>
56  public BaseDataLayer<Dtype>, public InternalThread {
57  public:
58  explicit BasePrefetchingDataLayer(const LayerParameter& param);
59  // LayerSetUp: implements common data layer setup functionality, and calls
60  // DataLayerSetUp to do special data layer setup for individual layer types.
61  // This method may not be overridden.
62  void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
63  const vector<Blob<Dtype>*>& top);
64 
65  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
66  const vector<Blob<Dtype>*>& top);
67  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
68  const vector<Blob<Dtype>*>& top);
69 
70  // Prefetches batches (asynchronously if to GPU memory)
71  static const int PREFETCH_COUNT = 3;
72 
73  protected:
74  virtual void InternalThreadEntry();
75  virtual void load_batch(Batch<Dtype>* batch) = 0;
76 
77  Batch<Dtype> prefetch_[PREFETCH_COUNT];
78  BlockingQueue<Batch<Dtype>*> prefetch_free_;
79  BlockingQueue<Batch<Dtype>*> prefetch_full_;
80 
81  Blob<Dtype> transformed_data_;
82 };
83 
84 } // namespace caffe
85 
86 #endif // CAFFE_DATA_LAYERS_HPP_
Definition: base_data_layer.hpp:49
+
Definition: base_data_layer.hpp:55
+
virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
Definition: layer.hpp:341
+
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: base_data_layer.hpp:34
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: base_data_layer.hpp:37
+
virtual bool ShareInParallel() const
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.
Definition: base_data_layer.hpp:30
+
Provides base for data layers that feed blobs to the Net.
Definition: base_data_layer.hpp:21
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)=0
Using the CPU device, compute the layer output.
+
Definition: internal_thread.hpp:19
+
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: base_data_layer.hpp:39
+
Definition: blocking_queue.hpp:10
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: base_data_layer.cpp:21
+
+ + + + diff --git a/doxygen/batch__norm__layer_8hpp_source.html b/doxygen/batch__norm__layer_8hpp_source.html new file mode 100644 index 00000000000..2c4dd90ffac --- /dev/null +++ b/doxygen/batch__norm__layer_8hpp_source.html @@ -0,0 +1,90 @@ + + + + + + + +Caffe: include/caffe/layers/batch_norm_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
batch_norm_layer.hpp
+
+
+
1 #ifndef CAFFE_BATCHNORM_LAYER_HPP_
2 #define CAFFE_BATCHNORM_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 namespace caffe {
11 
39 template <typename Dtype>
40 class BatchNormLayer : public Layer<Dtype> {
41  public:
42  explicit BatchNormLayer(const LayerParameter& param)
43  : Layer<Dtype>(param) {}
44  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
45  const vector<Blob<Dtype>*>& top);
46  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
47  const vector<Blob<Dtype>*>& top);
48 
49  virtual inline const char* type() const { return "BatchNorm"; }
50  virtual inline int ExactNumBottomBlobs() const { return 1; }
51  virtual inline int ExactNumTopBlobs() const { return 1; }
52 
53  protected:
54  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
55  const vector<Blob<Dtype>*>& top);
56  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
57  const vector<Blob<Dtype>*>& top);
58  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
59  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
60  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
61  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
62 
63  Blob<Dtype> mean_, variance_, temp_, x_norm_;
64  bool use_global_stats_;
65  Dtype moving_average_fraction_;
66  int channels_;
67  Dtype eps_;
68 
69  // extra temporarary variables is used to carry out sums/broadcasting
70  // using BLAS
71  Blob<Dtype> batch_sum_multiplier_;
72  Blob<Dtype> num_by_chans_;
73  Blob<Dtype> spatial_sum_multiplier_;
74 };
75 
76 } // namespace caffe
77 
78 #endif // CAFFE_BATCHNORM_LAYER_HPP_
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: batch_norm_layer.cpp:169
+
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
Normalizes the input to have 0-mean and/or unit (1) variance across the batch.
Definition: batch_norm_layer.hpp:40
+
virtual const char * type() const
Returns the layer type.
Definition: batch_norm_layer.hpp:49
+
virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: batch_norm_layer.cpp:52
+
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: batch_norm_layer.hpp:51
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the CPU device, compute the layer output.
Definition: batch_norm_layer.cpp:87
+
virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: batch_norm_layer.cpp:10
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: batch_norm_layer.hpp:50
+
virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/batch__reindex__layer_8hpp_source.html b/doxygen/batch__reindex__layer_8hpp_source.html new file mode 100644 index 00000000000..4d28d9eab10 --- /dev/null +++ b/doxygen/batch__reindex__layer_8hpp_source.html @@ -0,0 +1,89 @@ + + + + + + + +Caffe: include/caffe/layers/batch_reindex_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
batch_reindex_layer.hpp
+
+
+
1 #ifndef CAFFE_BATCHREINDEX_LAYER_HPP_
2 #define CAFFE_BATCHREINDEX_LAYER_HPP_
3 
4 #include <utility>
5 #include <vector>
6 
7 #include "caffe/blob.hpp"
8 #include "caffe/layer.hpp"
9 #include "caffe/proto/caffe.pb.h"
10 
11 namespace caffe {
12 
20 template <typename Dtype>
21 class BatchReindexLayer : public Layer<Dtype> {
22  public:
23  explicit BatchReindexLayer(const LayerParameter& param)
24  : Layer<Dtype>(param) {}
25  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
26  const vector<Blob<Dtype>*>& top);
27 
28  virtual inline const char* type() const { return "BatchReindex"; }
29  virtual inline int ExactNumBottomBlobs() const { return 2; }
30  virtual inline int ExactNumTopBlobs() const { return 1; }
31 
32  protected:
45  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
46  const vector<Blob<Dtype>*>& top);
47  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
48  const vector<Blob<Dtype>*>& top);
49 
65  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
66  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
67  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
68  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
69 
70  private:
71  struct pair_sort_first {
72  bool operator()(const std::pair<int, int> &left,
73  const std::pair<int, int> &right) {
74  return left.first < right.first;
75  }
76  };
77  void check_batch_reindex(int initial_num, int final_num,
78  const Dtype* ridx_data);
79 };
80 
81 } // namespace caffe
82 
83 #endif // CAFFE_BATCHREINDEX_LAYER_HPP_
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual const char * type() const
Returns the layer type.
Definition: batch_reindex_layer.hpp:28
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: batch_reindex_layer.hpp:29
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Definition: batch_reindex_layer.cpp:33
+
virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: batch_reindex_layer.cpp:9
+
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Computes the error gradient w.r.t. the reordered input.
Definition: batch_reindex_layer.cpp:52
+
Index into the input blob along its first axis.
Definition: batch_reindex_layer.hpp:21
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: batch_reindex_layer.hpp:30
+
virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/bc_s.png b/doxygen/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/doxygen/bdwn.png b/doxygen/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +Caffe: include/caffe/util/benchmark.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
benchmark.hpp
+
+
+
1 #ifndef CAFFE_UTIL_BENCHMARK_H_
2 #define CAFFE_UTIL_BENCHMARK_H_
3 
4 #include <boost/date_time/posix_time/posix_time.hpp>
5 
6 #include "caffe/util/device_alternate.hpp"
7 
8 namespace caffe {
9 
10 class Timer {
11  public:
12  Timer();
13  virtual ~Timer();
14  virtual void Start();
15  virtual void Stop();
16  virtual float MilliSeconds();
17  virtual float MicroSeconds();
18  virtual float Seconds();
19 
20  inline bool initted() { return initted_; }
21  inline bool running() { return running_; }
22  inline bool has_run_at_least_once() { return has_run_at_least_once_; }
23 
24  protected:
25  void Init();
26 
27  bool initted_;
28  bool running_;
29  bool has_run_at_least_once_;
30 #ifndef CPU_ONLY
31  cudaEvent_t start_gpu_;
32  cudaEvent_t stop_gpu_;
33 #endif
34  boost::posix_time::ptime start_cpu_;
35  boost::posix_time::ptime stop_cpu_;
36  float elapsed_milliseconds_;
37  float elapsed_microseconds_;
38 };
39 
40 class CPUTimer : public Timer {
41  public:
42  explicit CPUTimer();
43  virtual ~CPUTimer() {}
44  virtual void Start();
45  virtual void Stop();
46  virtual float MilliSeconds();
47  virtual float MicroSeconds();
48 };
49 
50 } // namespace caffe
51 
52 #endif // CAFFE_UTIL_BENCHMARK_H_
Definition: benchmark.hpp:10
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
Definition: benchmark.hpp:40
+
+ + + + diff --git a/doxygen/bias__layer_8hpp_source.html b/doxygen/bias__layer_8hpp_source.html new file mode 100644 index 00000000000..f2ad1438360 --- /dev/null +++ b/doxygen/bias__layer_8hpp_source.html @@ -0,0 +1,91 @@ + + + + + + + +Caffe: include/caffe/layers/bias_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
bias_layer.hpp
+
+
+
1 #ifndef CAFFE_BIAS_LAYER_HPP_
2 #define CAFFE_BIAS_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 namespace caffe {
11 
21 template <typename Dtype>
22 class BiasLayer : public Layer<Dtype> {
23  public:
24  explicit BiasLayer(const LayerParameter& param)
25  : Layer<Dtype>(param) {}
26  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
27  const vector<Blob<Dtype>*>& top);
28  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
29  const vector<Blob<Dtype>*>& top);
30 
31  virtual inline const char* type() const { return "Bias"; }
32  virtual inline int MinBottomBlobs() const { return 1; }
33  virtual inline int MaxBottomBlobs() const { return 2; }
34  virtual inline int ExactNumTopBlobs() const { return 1; }
35 
36  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
37  const vector<Blob<Dtype>*>& top);
38  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
39  const vector<Blob<Dtype>*>& top);
40  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
41  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
42  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
43  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
44 
45  private:
46  Blob<Dtype> bias_multiplier_;
47  int outer_dim_, bias_dim_, inner_dim_, dim_;
48 };
49 
50 
51 
52 } // namespace caffe
53 
54 #endif // CAFFE_BIAS_LAYER_HPP_
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: bias_layer.hpp:34
+
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
Computes a sum of two input Blobs, with the shape of the latter Blob "broadcast" to match the shape o...
Definition: bias_layer.hpp:22
+
virtual int MaxBottomBlobs() const
Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is requi...
Definition: bias_layer.hpp:33
+
virtual const char * type() const
Returns the layer type.
Definition: bias_layer.hpp:31
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the CPU device, compute the layer output.
Definition: bias_layer.cpp:72
+
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: bias_layer.cpp:90
+
virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: bias_layer.cpp:40
+
virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: bias_layer.cpp:10
+
virtual int MinBottomBlobs() const
Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is requi...
Definition: bias_layer.hpp:32
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/blob_8hpp_source.html b/doxygen/blob_8hpp_source.html new file mode 100644 index 00000000000..ef092c79b22 --- /dev/null +++ b/doxygen/blob_8hpp_source.html @@ -0,0 +1,97 @@ + + + + + + + +Caffe: include/caffe/blob.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
blob.hpp
+
+
+
1 #ifndef CAFFE_BLOB_HPP_
2 #define CAFFE_BLOB_HPP_
3 
4 #include <algorithm>
5 #include <string>
6 #include <vector>
7 
8 #include "caffe/common.hpp"
9 #include "caffe/proto/caffe.pb.h"
10 #include "caffe/syncedmem.hpp"
11 
12 const int kMaxBlobAxes = 32;
13 
14 namespace caffe {
15 
23 template <typename Dtype>
24 class Blob {
25  public:
26  Blob()
27  : data_(), diff_(), count_(0), capacity_(0) {}
28 
30  explicit Blob(const int num, const int channels, const int height,
31  const int width);
32  explicit Blob(const vector<int>& shape);
33 
35  void Reshape(const int num, const int channels, const int height,
36  const int width);
51  void Reshape(const vector<int>& shape);
52  void Reshape(const BlobShape& shape);
53  void ReshapeLike(const Blob& other);
54  inline string shape_string() const {
55  ostringstream stream;
56  for (int i = 0; i < shape_.size(); ++i) {
57  stream << shape_[i] << " ";
58  }
59  stream << "(" << count_ << ")";
60  return stream.str();
61  }
62  inline const vector<int>& shape() const { return shape_; }
71  inline int shape(int index) const {
72  return shape_[CanonicalAxisIndex(index)];
73  }
74  inline int num_axes() const { return shape_.size(); }
75  inline int count() const { return count_; }
76 
85  inline int count(int start_axis, int end_axis) const {
86  CHECK_LE(start_axis, end_axis);
87  CHECK_GE(start_axis, 0);
88  CHECK_GE(end_axis, 0);
89  CHECK_LE(start_axis, num_axes());
90  CHECK_LE(end_axis, num_axes());
91  int count = 1;
92  for (int i = start_axis; i < end_axis; ++i) {
93  count *= shape(i);
94  }
95  return count;
96  }
103  inline int count(int start_axis) const {
104  return count(start_axis, num_axes());
105  }
106 
118  inline int CanonicalAxisIndex(int axis_index) const {
119  CHECK_GE(axis_index, -num_axes())
120  << "axis " << axis_index << " out of range for " << num_axes()
121  << "-D Blob with shape " << shape_string();
122  CHECK_LT(axis_index, num_axes())
123  << "axis " << axis_index << " out of range for " << num_axes()
124  << "-D Blob with shape " << shape_string();
125  if (axis_index < 0) {
126  return axis_index + num_axes();
127  }
128  return axis_index;
129  }
130 
132  inline int num() const { return LegacyShape(0); }
134  inline int channels() const { return LegacyShape(1); }
136  inline int height() const { return LegacyShape(2); }
138  inline int width() const { return LegacyShape(3); }
139  inline int LegacyShape(int index) const {
140  CHECK_LE(num_axes(), 4)
141  << "Cannot use legacy accessors on Blobs with > 4 axes.";
142  CHECK_LT(index, 4);
143  CHECK_GE(index, -4);
144  if (index >= num_axes() || index < -num_axes()) {
145  // Axis is out of range, but still in [0, 3] (or [-4, -1] for reverse
146  // indexing) -- this special case simulates the one-padding used to fill
147  // extraneous axes of legacy blobs.
148  return 1;
149  }
150  return shape(index);
151  }
152 
153  inline int offset(const int n, const int c = 0, const int h = 0,
154  const int w = 0) const {
155  CHECK_GE(n, 0);
156  CHECK_LE(n, num());
157  CHECK_GE(channels(), 0);
158  CHECK_LE(c, channels());
159  CHECK_GE(height(), 0);
160  CHECK_LE(h, height());
161  CHECK_GE(width(), 0);
162  CHECK_LE(w, width());
163  return ((n * channels() + c) * height() + h) * width() + w;
164  }
165 
166  inline int offset(const vector<int>& indices) const {
167  CHECK_LE(indices.size(), num_axes());
168  int offset = 0;
169  for (int i = 0; i < num_axes(); ++i) {
170  offset *= shape(i);
171  if (indices.size() > i) {
172  CHECK_GE(indices[i], 0);
173  CHECK_LT(indices[i], shape(i));
174  offset += indices[i];
175  }
176  }
177  return offset;
178  }
188  void CopyFrom(const Blob<Dtype>& source, bool copy_diff = false,
189  bool reshape = false);
190 
191  inline Dtype data_at(const int n, const int c, const int h,
192  const int w) const {
193  return cpu_data()[offset(n, c, h, w)];
194  }
195 
196  inline Dtype diff_at(const int n, const int c, const int h,
197  const int w) const {
198  return cpu_diff()[offset(n, c, h, w)];
199  }
200 
201  inline Dtype data_at(const vector<int>& index) const {
202  return cpu_data()[offset(index)];
203  }
204 
205  inline Dtype diff_at(const vector<int>& index) const {
206  return cpu_diff()[offset(index)];
207  }
208 
209  inline const shared_ptr<SyncedMemory>& data() const {
210  CHECK(data_);
211  return data_;
212  }
213 
214  inline const shared_ptr<SyncedMemory>& diff() const {
215  CHECK(diff_);
216  return diff_;
217  }
218 
219  const Dtype* cpu_data() const;
220  void set_cpu_data(Dtype* data);
221  const int* gpu_shape() const;
222  const Dtype* gpu_data() const;
223  const Dtype* cpu_diff() const;
224  const Dtype* gpu_diff() const;
225  Dtype* mutable_cpu_data();
226  Dtype* mutable_gpu_data();
227  Dtype* mutable_cpu_diff();
228  Dtype* mutable_gpu_diff();
229  void Update();
230  void FromProto(const BlobProto& proto, bool reshape = true);
231  void ToProto(BlobProto* proto, bool write_diff = false) const;
232 
234  Dtype asum_data() const;
236  Dtype asum_diff() const;
238  Dtype sumsq_data() const;
240  Dtype sumsq_diff() const;
241 
243  void scale_data(Dtype scale_factor);
245  void scale_diff(Dtype scale_factor);
246 
255  void ShareData(const Blob& other);
264  void ShareDiff(const Blob& other);
265 
266  bool ShapeEquals(const BlobProto& other);
267 
268  protected:
269  shared_ptr<SyncedMemory> data_;
270  shared_ptr<SyncedMemory> diff_;
271  shared_ptr<SyncedMemory> shape_data_;
272  vector<int> shape_;
273  int count_;
274  int capacity_;
275 
276  DISABLE_COPY_AND_ASSIGN(Blob);
277 }; // class Blob
278 
279 } // namespace caffe
280 
281 #endif // CAFFE_BLOB_HPP_
int channels() const
Deprecated legacy shape accessor channels: use shape(1) instead.
Definition: blob.hpp:134
+
int shape(int index) const
Returns the dimension of the index-th axis (or the negative index-th axis from the end...
Definition: blob.hpp:71
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
Dtype asum_diff() const
Compute the sum of absolute values (L1 norm) of the diff.
Definition: blob.cpp:227
+
void ShareDiff(const Blob &other)
Set the diff_ shared_ptr to point to the SyncedMemory holding the diff_ of Blob other – useful in La...
Definition: blob.cpp:144
+
void ShareData(const Blob &other)
Set the data_ shared_ptr to point to the SyncedMemory holding the data_ of Blob other – useful in La...
Definition: blob.cpp:138
+
Dtype asum_data() const
Compute the sum of absolute values (L1 norm) of the data.
Definition: blob.cpp:192
+
int height() const
Deprecated legacy shape accessor height: use shape(2) instead.
Definition: blob.hpp:136
+
void Reshape(const int num, const int channels, const int height, const int width)
Deprecated; use Reshape(const vector<int>& shape).
Definition: blob.cpp:12
+
Dtype sumsq_diff() const
Compute the sum of squares (L2 norm squared) of the diff.
Definition: blob.cpp:299
+
void scale_diff(Dtype scale_factor)
Scale the blob diff by a constant factor.
Definition: blob.cpp:367
+
int CanonicalAxisIndex(int axis_index) const
Returns the &#39;canonical&#39; version of a (usually) user-specified axis, allowing for negative indexing (e...
Definition: blob.hpp:118
+
void CopyFrom(const Blob< Dtype > &source, bool copy_diff=false, bool reshape=false)
Copy from a source Blob.
Definition: blob.cpp:415
+
Dtype sumsq_data() const
Compute the sum of squares (L2 norm squared) of the data.
Definition: blob.cpp:262
+
void scale_data(Dtype scale_factor)
Scale the blob data by a constant factor.
Definition: blob.cpp:334
+
int num() const
Deprecated legacy shape accessor num: use shape(0) instead.
Definition: blob.hpp:132
+
int width() const
Deprecated legacy shape accessor width: use shape(3) instead.
Definition: blob.hpp:138
+
int count(int start_axis) const
Compute the volume of a slice spanning from a particular first axis to the final axis.
Definition: blob.hpp:103
+
int count(int start_axis, int end_axis) const
Compute the volume of a slice; i.e., the product of dimensions among a range of axes.
Definition: blob.hpp:85
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/blocking__queue_8hpp_source.html b/doxygen/blocking__queue_8hpp_source.html new file mode 100644 index 00000000000..93e7832ca7f --- /dev/null +++ b/doxygen/blocking__queue_8hpp_source.html @@ -0,0 +1,80 @@ + + + + + + + +Caffe: include/caffe/util/blocking_queue.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
blocking_queue.hpp
+
+
+
1 #ifndef CAFFE_UTIL_BLOCKING_QUEUE_HPP_
2 #define CAFFE_UTIL_BLOCKING_QUEUE_HPP_
3 
4 #include <queue>
5 #include <string>
6 
7 namespace caffe {
8 
9 template<typename T>
11  public:
12  explicit BlockingQueue();
13 
14  void push(const T& t);
15 
16  bool try_pop(T* t);
17 
18  // This logs a message if the threads needs to be blocked
19  // useful for detecting e.g. when data feeding is too slow
20  T pop(const string& log_on_wait = "");
21 
22  bool try_peek(T* t);
23 
24  // Return element without removing it
25  T peek();
26 
27  size_t size() const;
28 
29  protected:
35  class sync;
36 
37  std::queue<T> queue_;
38  shared_ptr<sync> sync_;
39 
40 DISABLE_COPY_AND_ASSIGN(BlockingQueue);
41 };
42 
43 } // namespace caffe
44 
45 #endif
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
Definition: blocking_queue.cpp:12
+
Definition: blocking_queue.hpp:10
+
+ + + + diff --git a/doxygen/bnll__layer_8hpp_source.html b/doxygen/bnll__layer_8hpp_source.html new file mode 100644 index 00000000000..6d93ce07278 --- /dev/null +++ b/doxygen/bnll__layer_8hpp_source.html @@ -0,0 +1,86 @@ + + + + + + + +Caffe: include/caffe/layers/bnll_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
bnll_layer.hpp
+
+
+
1 #ifndef CAFFE_BNLL_LAYER_HPP_
2 #define CAFFE_BNLL_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 #include "caffe/layers/neuron_layer.hpp"
11 
12 namespace caffe {
13 
31 template <typename Dtype>
32 class BNLLLayer : public NeuronLayer<Dtype> {
33  public:
34  explicit BNLLLayer(const LayerParameter& param)
35  : NeuronLayer<Dtype>(param) {}
36 
37  virtual inline const char* type() const { return "BNLL"; }
38 
39  protected:
41  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
42  const vector<Blob<Dtype>*>& top);
43  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
44  const vector<Blob<Dtype>*>& top);
45 
62  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
63  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
64  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
65  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
66 };
67 
68 } // namespace caffe
69 
70 #endif // CAFFE_BNLL_LAYER_HPP_
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual const char * type() const
Returns the layer type.
Definition: bnll_layer.hpp:37
+
Computes if ; otherwise.
Definition: bnll_layer.hpp:32
+
An interface for layers that take one blob as input ( ) and produce one equally-sized blob as output ...
Definition: neuron_layer.hpp:19
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Computes the error gradient w.r.t. the BNLL inputs.
Definition: bnll_layer.cpp:24
+
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Computes if ; otherwise.
Definition: bnll_layer.cpp:11
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/caffe_8hpp_source.html b/doxygen/caffe_8hpp_source.html new file mode 100644 index 00000000000..32806abee55 --- /dev/null +++ b/doxygen/caffe_8hpp_source.html @@ -0,0 +1,77 @@ + + + + + + + +Caffe: include/caffe/caffe.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe.hpp
+
+
+
1 // caffe.hpp is the header file that you need to include in your code. It wraps
2 // all the internal caffe header files into one for simpler inclusion.
3 
4 #ifndef CAFFE_CAFFE_HPP_
5 #define CAFFE_CAFFE_HPP_
6 
7 #include "caffe/blob.hpp"
8 #include "caffe/common.hpp"
9 #include "caffe/filler.hpp"
10 #include "caffe/layer.hpp"
11 #include "caffe/layer_factory.hpp"
12 #include "caffe/net.hpp"
13 #include "caffe/parallel.hpp"
14 #include "caffe/proto/caffe.pb.h"
15 #include "caffe/solver.hpp"
16 #include "caffe/solver_factory.hpp"
17 #include "caffe/util/benchmark.hpp"
18 #include "caffe/util/io.hpp"
19 #include "caffe/util/upgrade_proto.hpp"
20 
21 #endif // CAFFE_CAFFE_HPP_
+ + + + diff --git a/doxygen/classcaffe_1_1AbsValLayer-members.html b/doxygen/classcaffe_1_1AbsValLayer-members.html new file mode 100644 index 00000000000..d76e78d6e5a --- /dev/null +++ b/doxygen/classcaffe_1_1AbsValLayer-members.html @@ -0,0 +1,120 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::AbsValLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::AbsValLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AbsValLayer(const LayerParameter &param) (defined in caffe::AbsValLayer< Dtype >)caffe::AbsValLayer< Dtype >inlineexplicit
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::AbsValLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::AbsValLayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::AbsValLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::AbsValLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::AbsValLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::AbsValLayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::AbsValLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
NeuronLayer(const LayerParameter &param) (defined in caffe::NeuronLayer< Dtype >)caffe::NeuronLayer< Dtype >inlineexplicit
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::NeuronLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::AbsValLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1AbsValLayer.html b/doxygen/classcaffe_1_1AbsValLayer.html new file mode 100644 index 00000000000..2d013f0ce2d --- /dev/null +++ b/doxygen/classcaffe_1_1AbsValLayer.html @@ -0,0 +1,485 @@ + + + + + + + +Caffe: caffe::AbsValLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::AbsValLayer< Dtype > Class Template Reference
+
+
+ +

Computes $ y = |x| $. + More...

+ +

#include <absval_layer.hpp>

+
+Inheritance diagram for caffe::AbsValLayer< Dtype >:
+
+
+ + +caffe::NeuronLayer< Dtype > +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

AbsValLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::NeuronLayer< Dtype >
NeuronLayer (const LayerParameter &param)
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Computes $ y = |x| $. More...
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Computes the error gradient w.r.t. the absolute value inputs. More...
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::AbsValLayer< Dtype >

+ +

Computes $ y = |x| $.

+
Parameters
+ + + +
bottominput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the inputs $ x $
  2. +
+
topoutput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the computed outputs $ y = |x| $
  2. +
+
+
+
+

Member Function Documentation

+ +

§ Backward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void caffe::AbsValLayer< Dtype >::Backward_cpu (const vector< Blob< Dtype > *> & top,
const vector< bool > & propagate_down,
const vector< Blob< Dtype > *> & bottom 
)
+
+protectedvirtual
+
+ +

Computes the error gradient w.r.t. the absolute value inputs.

+
Parameters
+ + + + +
topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
    +
  1. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
  2. +
+
propagate_downsee Layer::Backward.
bottominput Blob vector (length 2)
    +
  1. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \frac{\partial E}{\partial x} = \mathrm{sign}(x) \frac{\partial E}{\partial y} $ if propagate_down[0]
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::AbsValLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::NeuronLayer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::AbsValLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::NeuronLayer< Dtype >.

+ +
+
+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::AbsValLayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+ +

Computes $ y = |x| $.

+
Parameters
+ + + +
bottominput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the inputs $ x $
  2. +
+
topoutput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the computed outputs $ y = |x| $
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::AbsValLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1AbsValLayer.png b/doxygen/classcaffe_1_1AbsValLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..ffac33495db4bea1aed14ec1dabd7d1a046c7a13 GIT binary patch literal 1083 zcmeAS@N?(olHy`uVBq!ia0vp^n}N84gBeK9F4tNQq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0PkFjHhEy=VoqMtGwE~ZeKikUx|4(ke zJ0W562H$nBLMQGywT0X8+d+x%Q-i!_`iOYW@;a&G`Oz!Qv+KI)VF6oj2Rv4~S2)JAH4b=h}pD?q(b5%VA0Kr#^3(ci%u-JO2FKm&;$@{Kh-^ zVA+RdJW<*kYMm!lM%Cx-v%71q@^V>T$-V!7OMjYtj(wt^u&?(IZ{@Tl8LFFAj%v?T z)r|9h2K1#jgJBhe&oa)L^8G&-sHfB^`Lo+97k}ez*dJiTd_;RDQiJ1t+%c>AXy`R?py2LZGp}0>j^EsK+p56L`Ptobzh32+AJ5r)^F{Bjbi30hC*F*|qPSW6$F_;_ zpK{*&)N7vqY-3j@eka> zvo}%qCoD0z`{KHI9rM4IpL(Cf4eq=BYqRmb#18gy%CsdFwllpoQ}q~+ykIn#sg_b_ z^Q?K^grA)@vR``6+%#wS=Y%!*aD;B-H=Wa)eAL7mR!)INLhp?E(?7d6)LxS`zwf_S zj49^oEzYX-49dJS;wP)?ulkxkv%ZtPASC%-+3vI-mj8{{ZMOZK_WIFPQQcp58?%hR z7u=q=ec$iR_ckz8yp{9W@h!E@?$^sTn`L*enehAAnU^`s?(H;wKlAU)sGnUQUzV)< zeaphX+0`QXn|9SJ=Fe5iXDXw92cNw>r-2efdy}|C7y{=l6D>?)qDEIOopKs&_v6*EYYERx{itKBMQxzC?pp zm-d2_Ewh3D>+`xVj_zX=SSqc!?$542tcXO*_G1Yw;f4Q>o0dA$>pw%hpU0h-{(kgTe~DWM4ff(|Hp literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1AccuracyLayer-members.html b/doxygen/classcaffe_1_1AccuracyLayer-members.html new file mode 100644 index 00000000000..e8851027ab9 --- /dev/null +++ b/doxygen/classcaffe_1_1AccuracyLayer-members.html @@ -0,0 +1,126 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::AccuracyLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::AccuracyLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AccuracyLayer(const LayerParameter &param)caffe::AccuracyLayer< Dtype >inlineexplicit
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::AccuracyLayer< Dtype >inlineprotectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inlineprotectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::AccuracyLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::AccuracyLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
has_ignore_label_caffe::AccuracyLayer< Dtype >protected
ignore_label_caffe::AccuracyLayer< Dtype >protected
inner_num_ (defined in caffe::AccuracyLayer< Dtype >)caffe::AccuracyLayer< Dtype >protected
IsShared() constcaffe::Layer< Dtype >inline
label_axis_ (defined in caffe::AccuracyLayer< Dtype >)caffe::AccuracyLayer< Dtype >protected
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::AccuracyLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::AccuracyLayer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::AccuracyLayer< Dtype >inlinevirtual
nums_buffer_caffe::AccuracyLayer< Dtype >protected
outer_num_ (defined in caffe::AccuracyLayer< Dtype >)caffe::AccuracyLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::AccuracyLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
top_k_ (defined in caffe::AccuracyLayer< Dtype >)caffe::AccuracyLayer< Dtype >protected
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::AccuracyLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1AccuracyLayer.html b/doxygen/classcaffe_1_1AccuracyLayer.html new file mode 100644 index 00000000000..12e701dbc9d --- /dev/null +++ b/doxygen/classcaffe_1_1AccuracyLayer.html @@ -0,0 +1,548 @@ + + + + + + + +Caffe: caffe::AccuracyLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::AccuracyLayer< Dtype > Class Template Reference
+
+
+ +

Computes the classification accuracy for a one-of-many classification task. + More...

+ +

#include <accuracy_layer.hpp>

+
+Inheritance diagram for caffe::AccuracyLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 AccuracyLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Not implemented – AccuracyLayer cannot be used as a loss.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+int label_axis_
 
+int outer_num_
 
+int inner_num_
 
+int top_k_
 
+bool has_ignore_label_
 Whether to ignore instances with a certain label.
 
+int ignore_label_
 The label indicating that an instance should be ignored.
 
+Blob< Dtype > nums_buffer_
 Keeps counts of the number of samples per class.
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::AccuracyLayer< Dtype >

+ +

Computes the classification accuracy for a one-of-many classification task.

+

Constructor & Destructor Documentation

+ +

§ AccuracyLayer()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + +
caffe::AccuracyLayer< Dtype >::AccuracyLayer (const LayerParameter & param)
+
+inlineexplicit
+
+
Parameters
+ + +
paramprovides AccuracyParameter accuracy_param, with AccuracyLayer options:
    +
  • top_k (optional, default 1). Sets the maximum rank $ k $ at which a prediction is considered correct. For example, if $ k = 5 $, a prediction is counted correct if the correct label is among the top 5 predicted labels.
  • +
+
+
+
+ +
+
+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::AccuracyLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::AccuracyLayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+
Parameters
+ + + +
bottominput Blob vector (length 2)
    +
  1. $ (N \times C \times H \times W) $ the predictions $ x $, a Blob with values in $ [-\infty, +\infty] $ indicating the predicted score for each of the $ K = CHW $ classes. Each $ x_n $ is mapped to a predicted label $ \hat{l}_n $ given by its maximal index: $ \hat{l}_n = \arg\max\limits_k x_{nk} $
  2. +
  3. $ (N \times 1 \times 1 \times 1) $ the labels $ l $, an integer-valued Blob with values $ l_n \in [0, 1, 2, ..., K - 1] $ indicating the correct class label among the $ K $ classes
  4. +
+
topoutput Blob vector (length 1)
    +
  1. $ (1 \times 1 \times 1 \times 1) $ the computed accuracy: $ \frac{1}{N} \sum\limits_{n=1}^N \delta\{ \hat{l}_n = l_n \} $, where $ \delta\{\mathrm{condition}\} = \left\{ \begin{array}{lr} 1 & \mbox{if condition} \\ 0 & \mbox{otherwise} \end{array} \right. $
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::AccuracyLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ MaxTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::AccuracyLayer< Dtype >::MaxTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some maximum number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ MinTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::AccuracyLayer< Dtype >::MinTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some minimum number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::AccuracyLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1AccuracyLayer.png b/doxygen/classcaffe_1_1AccuracyLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..00f3579e0987106c5223491ae86143764c6c4dfc GIT binary patch literal 744 zcmeAS@N?(olHy`uVBq!ia0vp^2Z1<%gBeIpU-r-gNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~m3z84hEy=Vo%^=$wE_=oyYR~Q|4(es zwAkO5Z$-GRST~`$*EQzRfns7m!9yG`K$+}h0{wtW~hHqmXesoF^xH6o5#FI z2}!!ACdUihXo;GCT_TF(T-dieDR+P7T@NWr@cEp!N0t3*@dxI{jh~(`FxdND=0;RX zn0db7=ES1Pjaxk?Req|SP2{{3Vcoz#f~N zFl*V$bjCZY*d4CFn)l%23)zL$P3jKMIsOXwM6n30bz~4&O+5Y(r@8dXRu2Z*YypNN zSwOtX?SsuDea3G;IksnB2#S+(3*~rrZZiM;)HS^i&VFHFe>%hLOX}D8f7gGz6&(?M zyLQ+0!9i3j>MB=}fPI~uLrcJKN%=_Z>$7H|KZtpfXxtFLcNChTK22WQ%mvv4FO#mPbR%8GG literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1AdaDeltaSolver-members.html b/doxygen/classcaffe_1_1AdaDeltaSolver-members.html new file mode 100644 index 00000000000..e9ada0d6f63 --- /dev/null +++ b/doxygen/classcaffe_1_1AdaDeltaSolver-members.html @@ -0,0 +1,143 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::AdaDeltaSolver< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::AdaDeltaSolver< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
action_request_function_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
AdaDeltaPreSolve() (defined in caffe::AdaDeltaSolver< Dtype >)caffe::AdaDeltaSolver< Dtype >protected
AdaDeltaSolver(const SolverParameter &param) (defined in caffe::AdaDeltaSolver< Dtype >)caffe::AdaDeltaSolver< Dtype >inlineexplicit
AdaDeltaSolver(const string &param_file) (defined in caffe::AdaDeltaSolver< Dtype >)caffe::AdaDeltaSolver< Dtype >inlineexplicit
add_callback(Callback *value) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
ApplyUpdate() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
callbacks() const (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
callbacks_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
CheckSnapshotWritePermissions() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
ClipGradients() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
ComputeUpdateValue(int param_id, Dtype rate) (defined in caffe::AdaDeltaSolver< Dtype >)caffe::AdaDeltaSolver< Dtype >protectedvirtual
current_step_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
DISABLE_COPY_AND_ASSIGN(AdaDeltaSolver) (defined in caffe::AdaDeltaSolver< Dtype >)caffe::AdaDeltaSolver< Dtype >protected
DISABLE_COPY_AND_ASSIGN(SGDSolver) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
DISABLE_COPY_AND_ASSIGN(Solver) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
DisplayOutputBlobs(const int net_id) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
GetLearningRate() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
GetRequestedAction() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
history() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >inline
history_ (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
Init(const SolverParameter &param) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
InitTestNets() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
InitTrainNet() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
iter() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
iter_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
losses_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
net() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
net_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Normalize(int param_id) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
param() const (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
param_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
PreSolve() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
Regularize(int param_id) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
requested_early_exit_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Restore(const char *resume_file) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
RestoreSolverStateFromBinaryProto(const string &state_file) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
RestoreSolverStateFromHDF5(const string &state_file) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
root_solver_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
SetActionFunction(ActionCallback func) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
SGDSolver(const SolverParameter &param) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >inlineexplicit
SGDSolver(const string &param_file) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >inlineexplicit
smoothed_loss_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Snapshot() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
SnapshotFilename(const string extension) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
SnapshotSolverState(const string &model_filename) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
SnapshotSolverStateToBinaryProto(const string &model_filename) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
SnapshotSolverStateToHDF5(const string &model_filename) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
SnapshotToBinaryProto() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
SnapshotToHDF5() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Solve(const char *resume_file=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >virtual
Solve(const string resume_file) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
Solver(const SolverParameter &param, const Solver *root_solver=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >explicit
Solver(const string &param_file, const Solver *root_solver=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >explicit
Step(int iters) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
temp_ (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
Test(const int test_net_id=0) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
test_nets() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
test_nets_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
TestAll() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
type() constcaffe::AdaDeltaSolver< Dtype >inlinevirtual
update_ (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
UpdateSmoothedLoss(Dtype loss, int start_iter, int average_loss) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
~Solver() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1AdaDeltaSolver.html b/doxygen/classcaffe_1_1AdaDeltaSolver.html new file mode 100644 index 00000000000..b109f6dc2a3 --- /dev/null +++ b/doxygen/classcaffe_1_1AdaDeltaSolver.html @@ -0,0 +1,298 @@ + + + + + + + +Caffe: caffe::AdaDeltaSolver< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::AdaDeltaSolver< Dtype > Class Template Reference
+
+
+
+Inheritance diagram for caffe::AdaDeltaSolver< Dtype >:
+
+
+ + +caffe::SGDSolver< Dtype > +caffe::Solver< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

AdaDeltaSolver (const SolverParameter &param)
 
AdaDeltaSolver (const string &param_file)
 
+virtual const char * type () const
 Returns the solver type.
 
- Public Member Functions inherited from caffe::SGDSolver< Dtype >
SGDSolver (const SolverParameter &param)
 
SGDSolver (const string &param_file)
 
+const vector< shared_ptr< Blob< Dtype > > > & history ()
 
- Public Member Functions inherited from caffe::Solver< Dtype >
Solver (const SolverParameter &param, const Solver *root_solver=NULL)
 
Solver (const string &param_file, const Solver *root_solver=NULL)
 
+void Init (const SolverParameter &param)
 
+void InitTrainNet ()
 
+void InitTestNets ()
 
+void SetActionFunction (ActionCallback func)
 
+SolverAction::Enum GetRequestedAction ()
 
+virtual void Solve (const char *resume_file=NULL)
 
+void Solve (const string resume_file)
 
+void Step (int iters)
 
+void Restore (const char *resume_file)
 
+void Snapshot ()
 
+const SolverParameter & param () const
 
+shared_ptr< Net< Dtype > > net ()
 
+const vector< shared_ptr< Net< Dtype > > > & test_nets ()
 
+int iter ()
 
+const vector< Callback * > & callbacks () const
 
+void add_callback (Callback *value)
 
+void CheckSnapshotWritePermissions ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+void AdaDeltaPreSolve ()
 
+virtual void ComputeUpdateValue (int param_id, Dtype rate)
 
DISABLE_COPY_AND_ASSIGN (AdaDeltaSolver)
 
- Protected Member Functions inherited from caffe::SGDSolver< Dtype >
+void PreSolve ()
 
+Dtype GetLearningRate ()
 
+virtual void ApplyUpdate ()
 
+virtual void Normalize (int param_id)
 
+virtual void Regularize (int param_id)
 
+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)
 
DISABLE_COPY_AND_ASSIGN (SGDSolver)
 
- Protected Member Functions inherited from caffe::Solver< Dtype >
+string SnapshotFilename (const string extension)
 
+string SnapshotToBinaryProto ()
 
+string SnapshotToHDF5 ()
 
+void TestAll ()
 
+void Test (const int test_net_id=0)
 
+void DisplayOutputBlobs (const int net_id)
 
+void UpdateSmoothedLoss (Dtype loss, int start_iter, int average_loss)
 
DISABLE_COPY_AND_ASSIGN (Solver)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::SGDSolver< Dtype >
+vector< shared_ptr< Blob< Dtype > > > history_
 
+vector< shared_ptr< Blob< Dtype > > > update_
 
+vector< shared_ptr< Blob< Dtype > > > temp_
 
- Protected Attributes inherited from caffe::Solver< Dtype >
+SolverParameter param_
 
+int iter_
 
+int current_step_
 
+shared_ptr< Net< Dtype > > net_
 
+vector< shared_ptr< Net< Dtype > > > test_nets_
 
+vector< Callback * > callbacks_
 
+vector< Dtype > losses_
 
+Dtype smoothed_loss_
 
+const Solver *const root_solver_
 
+ActionCallback action_request_function_
 
+bool requested_early_exit_
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1AdaDeltaSolver.png b/doxygen/classcaffe_1_1AdaDeltaSolver.png new file mode 100644 index 0000000000000000000000000000000000000000..9a8986e1034b2df935c502d0f80186d7209b34a8 GIT binary patch literal 1145 zcmeAS@N?(olHy`uVBq!ia0vp^2Z6YQgBeI>o~{Q;NCfzVxc>kDAIN<1=4)yHp$R}1 z7#}!rfVK0EJdn##666=m08|75S5Ji)F)*-jc)B=-R4~4sdvVPww^RQ8pZtDK z;6m4uFL&mIO!B)U*~k>zdM*4}<-B&W%__WWR3`pWL0iSDG3`7i$(>v~#U z?f-lH)$Wxlb6=VrJU?xBu5`MdfQ+81=k}7;1n%oXe=~D$ub95QbVXIT)7#kCsMA5I zZ8zN}>AhlV{JwHW*sSiwy)XHe+;MPE@Qpn^+xyZ)J)tYt+YT%}&gu9#p#Q-69cK!f z6FlvTZD&1=)?X7k`!8?f()??GPZi8vAb!=%@H@-71@&ylO5W~x`2YX&gNlv%=FuWH zffuJ~)lXsHCN}fLuT9CXr|Pa_Pu*X~-}86=RVB|~(SNURf6K|TRml5NtZl=A5H8PM ztKIJaCALm-n3Ob?Ws=Bh^Mf|$Kc8Uw5xke7?b-*H_19l;92VZg$mT9FUm;u2Vap^2 zg)mPBfz>Ju9ic)DN3=K@fch9VdNDObs4_aNL6x49J@0vChN1VR171v?U7kn;VZ8cwOj@on2SWWc`Tq&Xs?X62Y^B_FFX{ws|2kp{V=Tqm5+?IBtIM z{_}xrO2YQ>F+M-PtH+(H_H3UdcXw0#e)ePk?6W7TxW0V1{cRzOZ|}4v#kRc%t_XPU zTJZd?lIO0)@TBBxaQ?H+CWe0@`V9+BZ4SORwL0{HCBNaI;4$?RQ7i&$i3(s?_&=Yu zEK@4Vhk;oe8Xs0l70Z9PH`HeJSN;}ZNl%_t_n~^nsjP72YKIS(Z%P_mvZBx!PamOCB?2SiY$t zet%Bztla+XxzDWJXFn}hczVr>Df?A;$ur)@{cK_X@@C$1W_s*vE|Mqv{KC8g=QAYA zSiF^HF5b3!y{>iEcb&IZJC;XpH_6^wx}bW>+^#^qIm$0wS8T8NeBEWAfx@sh=7_a0p_ z<$KhuH6PbyTzlWRaeqiR!@T9(_qU}BUkPS^@%kdmZzui>FCK2^c+d??n_rtvd@q}< b`p0;6w%_LJK-piwa)QCr)z4*}Q$iB}PJ$70 literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1AdaGradSolver-members.html b/doxygen/classcaffe_1_1AdaGradSolver-members.html new file mode 100644 index 00000000000..afa7975324d --- /dev/null +++ b/doxygen/classcaffe_1_1AdaGradSolver-members.html @@ -0,0 +1,143 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::AdaGradSolver< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::AdaGradSolver< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
action_request_function_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
AdaGradSolver(const SolverParameter &param) (defined in caffe::AdaGradSolver< Dtype >)caffe::AdaGradSolver< Dtype >inlineexplicit
AdaGradSolver(const string &param_file) (defined in caffe::AdaGradSolver< Dtype >)caffe::AdaGradSolver< Dtype >inlineexplicit
add_callback(Callback *value) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
ApplyUpdate() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
callbacks() const (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
callbacks_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
CheckSnapshotWritePermissions() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
ClipGradients() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
ComputeUpdateValue(int param_id, Dtype rate) (defined in caffe::AdaGradSolver< Dtype >)caffe::AdaGradSolver< Dtype >protectedvirtual
constructor_sanity_check() (defined in caffe::AdaGradSolver< Dtype >)caffe::AdaGradSolver< Dtype >inlineprotected
current_step_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
DISABLE_COPY_AND_ASSIGN(AdaGradSolver) (defined in caffe::AdaGradSolver< Dtype >)caffe::AdaGradSolver< Dtype >protected
DISABLE_COPY_AND_ASSIGN(SGDSolver) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
DISABLE_COPY_AND_ASSIGN(Solver) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
DisplayOutputBlobs(const int net_id) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
GetLearningRate() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
GetRequestedAction() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
history() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >inline
history_ (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
Init(const SolverParameter &param) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
InitTestNets() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
InitTrainNet() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
iter() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
iter_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
losses_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
net() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
net_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Normalize(int param_id) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
param() const (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
param_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
PreSolve() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
Regularize(int param_id) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
requested_early_exit_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Restore(const char *resume_file) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
RestoreSolverStateFromBinaryProto(const string &state_file) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
RestoreSolverStateFromHDF5(const string &state_file) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
root_solver_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
SetActionFunction(ActionCallback func) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
SGDSolver(const SolverParameter &param) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >inlineexplicit
SGDSolver(const string &param_file) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >inlineexplicit
smoothed_loss_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Snapshot() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
SnapshotFilename(const string extension) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
SnapshotSolverState(const string &model_filename) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
SnapshotSolverStateToBinaryProto(const string &model_filename) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
SnapshotSolverStateToHDF5(const string &model_filename) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
SnapshotToBinaryProto() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
SnapshotToHDF5() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Solve(const char *resume_file=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >virtual
Solve(const string resume_file) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
Solver(const SolverParameter &param, const Solver *root_solver=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >explicit
Solver(const string &param_file, const Solver *root_solver=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >explicit
Step(int iters) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
temp_ (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
Test(const int test_net_id=0) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
test_nets() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
test_nets_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
TestAll() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
type() constcaffe::AdaGradSolver< Dtype >inlinevirtual
update_ (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
UpdateSmoothedLoss(Dtype loss, int start_iter, int average_loss) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
~Solver() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1AdaGradSolver.html b/doxygen/classcaffe_1_1AdaGradSolver.html new file mode 100644 index 00000000000..43887fba3c1 --- /dev/null +++ b/doxygen/classcaffe_1_1AdaGradSolver.html @@ -0,0 +1,298 @@ + + + + + + + +Caffe: caffe::AdaGradSolver< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::AdaGradSolver< Dtype > Class Template Reference
+
+
+
+Inheritance diagram for caffe::AdaGradSolver< Dtype >:
+
+
+ + +caffe::SGDSolver< Dtype > +caffe::Solver< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

AdaGradSolver (const SolverParameter &param)
 
AdaGradSolver (const string &param_file)
 
+virtual const char * type () const
 Returns the solver type.
 
- Public Member Functions inherited from caffe::SGDSolver< Dtype >
SGDSolver (const SolverParameter &param)
 
SGDSolver (const string &param_file)
 
+const vector< shared_ptr< Blob< Dtype > > > & history ()
 
- Public Member Functions inherited from caffe::Solver< Dtype >
Solver (const SolverParameter &param, const Solver *root_solver=NULL)
 
Solver (const string &param_file, const Solver *root_solver=NULL)
 
+void Init (const SolverParameter &param)
 
+void InitTrainNet ()
 
+void InitTestNets ()
 
+void SetActionFunction (ActionCallback func)
 
+SolverAction::Enum GetRequestedAction ()
 
+virtual void Solve (const char *resume_file=NULL)
 
+void Solve (const string resume_file)
 
+void Step (int iters)
 
+void Restore (const char *resume_file)
 
+void Snapshot ()
 
+const SolverParameter & param () const
 
+shared_ptr< Net< Dtype > > net ()
 
+const vector< shared_ptr< Net< Dtype > > > & test_nets ()
 
+int iter ()
 
+const vector< Callback * > & callbacks () const
 
+void add_callback (Callback *value)
 
+void CheckSnapshotWritePermissions ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void ComputeUpdateValue (int param_id, Dtype rate)
 
+void constructor_sanity_check ()
 
DISABLE_COPY_AND_ASSIGN (AdaGradSolver)
 
- Protected Member Functions inherited from caffe::SGDSolver< Dtype >
+void PreSolve ()
 
+Dtype GetLearningRate ()
 
+virtual void ApplyUpdate ()
 
+virtual void Normalize (int param_id)
 
+virtual void Regularize (int param_id)
 
+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)
 
DISABLE_COPY_AND_ASSIGN (SGDSolver)
 
- Protected Member Functions inherited from caffe::Solver< Dtype >
+string SnapshotFilename (const string extension)
 
+string SnapshotToBinaryProto ()
 
+string SnapshotToHDF5 ()
 
+void TestAll ()
 
+void Test (const int test_net_id=0)
 
+void DisplayOutputBlobs (const int net_id)
 
+void UpdateSmoothedLoss (Dtype loss, int start_iter, int average_loss)
 
DISABLE_COPY_AND_ASSIGN (Solver)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::SGDSolver< Dtype >
+vector< shared_ptr< Blob< Dtype > > > history_
 
+vector< shared_ptr< Blob< Dtype > > > update_
 
+vector< shared_ptr< Blob< Dtype > > > temp_
 
- Protected Attributes inherited from caffe::Solver< Dtype >
+SolverParameter param_
 
+int iter_
 
+int current_step_
 
+shared_ptr< Net< Dtype > > net_
 
+vector< shared_ptr< Net< Dtype > > > test_nets_
 
+vector< Callback * > callbacks_
 
+vector< Dtype > losses_
 
+Dtype smoothed_loss_
 
+const Solver *const root_solver_
 
+ActionCallback action_request_function_
 
+bool requested_early_exit_
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1AdaGradSolver.png b/doxygen/classcaffe_1_1AdaGradSolver.png new file mode 100644 index 0000000000000000000000000000000000000000..6222d1a0ef778f32ff1f2c73f9b5bf0d4711e4ef GIT binary patch literal 1143 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SPgBeJ+af+A#DTx4|5ZC|z{{xvX-h3_XKQsZz z0^RR^V~%zn=2{zxw{$ zAsK>mtMBPdUD9nXtZ^YY;qX$Gm)fxmH=4E{sf)U8_Uvh{?5cB99jg7OU)vNi zGjZF*CEdSx9>i+RoBHfgdh)Kv8rRP=Mg(8~^lVbel5B>rTNw*h7BXGC`TmoJwN7g5_C2`amAd+s8I%97)>84@f3?2$QXWHq_Xd^P)fEiEDk?9d z?>^-6yfh!~LtDmYmGjue4)}j%kceE&Y$Mk!+{5?bOMOn$L&i;9j7PK>8I-0nFiiAf zXz);Fa9AS5pb*5#Ah42!p(BKe!39L;GxxOX^=4w@uL5IRDzV-Z$UE zs;<4bJufw=bREmB>Ro4R^0%Bd;Pbe&aTi0~<4yIMdiP`)ZU`plS)Mw2XJP)bbx+T# z-h3{wV4oR-o@rK!uD`4$SIgJs><`lCD9&NhxtaPW=h}w4-^`hFH+;T5=>kKhDt)zTySJR;NU>PEUH9fBl1H0Q=dd`g4rYtv+9B zA`MgT%a?1uRu%QiDmh*ImrvsN|J6>DM3&~;XO=T(bZu6d`#OzbS&hdf*1PY30d4NZ z;MoZsw^UT~2mRB+KthvZ2*ME@HjlJTRz1hJJ43Vu2Nkj)SC=MR@TsHAl z?&eI0fyIeC!}&LL+#CGgZcKik#PHzjtIy8!o41Ng^Io=`;r(95Jw2tb!>;d=-NjI_ z$@+lb)up{Poqsp~zx!?D-8I)=?Vk1H;U+)E6|2|Vrad%kc>SxJ{Wi~I$%f#_1MB0r zX`bD7{PwKs@N}Izv(@h{PWiAW`0iysw}PAv_LPTw!t?WT3t~4a z<}plDF=EdRkB=_9@@8jcviJv^)AM6@tQF;Lu>SnaYWnSG3{{M;bnpE+*fLr6HPenI zZ-ME$)corYP{<32W7iHcTUD#NEOXYetM&(9`Z-;W T{H6*lB^W$i{an^LB{Ts53qJ=k literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1AdamSolver-members.html b/doxygen/classcaffe_1_1AdamSolver-members.html new file mode 100644 index 00000000000..878bd4033e8 --- /dev/null +++ b/doxygen/classcaffe_1_1AdamSolver-members.html @@ -0,0 +1,143 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::AdamSolver< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::AdamSolver< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
action_request_function_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
AdamPreSolve() (defined in caffe::AdamSolver< Dtype >)caffe::AdamSolver< Dtype >protected
AdamSolver(const SolverParameter &param) (defined in caffe::AdamSolver< Dtype >)caffe::AdamSolver< Dtype >inlineexplicit
AdamSolver(const string &param_file) (defined in caffe::AdamSolver< Dtype >)caffe::AdamSolver< Dtype >inlineexplicit
add_callback(Callback *value) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
ApplyUpdate() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
callbacks() const (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
callbacks_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
CheckSnapshotWritePermissions() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
ClipGradients() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
ComputeUpdateValue(int param_id, Dtype rate) (defined in caffe::AdamSolver< Dtype >)caffe::AdamSolver< Dtype >protectedvirtual
current_step_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
DISABLE_COPY_AND_ASSIGN(AdamSolver) (defined in caffe::AdamSolver< Dtype >)caffe::AdamSolver< Dtype >protected
DISABLE_COPY_AND_ASSIGN(SGDSolver) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
DISABLE_COPY_AND_ASSIGN(Solver) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
DisplayOutputBlobs(const int net_id) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
GetLearningRate() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
GetRequestedAction() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
history() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >inline
history_ (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
Init(const SolverParameter &param) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
InitTestNets() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
InitTrainNet() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
iter() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
iter_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
losses_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
net() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
net_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Normalize(int param_id) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
param() const (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
param_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
PreSolve() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
Regularize(int param_id) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
requested_early_exit_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Restore(const char *resume_file) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
RestoreSolverStateFromBinaryProto(const string &state_file) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
RestoreSolverStateFromHDF5(const string &state_file) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
root_solver_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
SetActionFunction(ActionCallback func) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
SGDSolver(const SolverParameter &param) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >inlineexplicit
SGDSolver(const string &param_file) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >inlineexplicit
smoothed_loss_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Snapshot() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
SnapshotFilename(const string extension) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
SnapshotSolverState(const string &model_filename) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
SnapshotSolverStateToBinaryProto(const string &model_filename) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
SnapshotSolverStateToHDF5(const string &model_filename) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
SnapshotToBinaryProto() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
SnapshotToHDF5() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Solve(const char *resume_file=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >virtual
Solve(const string resume_file) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
Solver(const SolverParameter &param, const Solver *root_solver=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >explicit
Solver(const string &param_file, const Solver *root_solver=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >explicit
Step(int iters) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
temp_ (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
Test(const int test_net_id=0) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
test_nets() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
test_nets_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
TestAll() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
type() constcaffe::AdamSolver< Dtype >inlinevirtual
update_ (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
UpdateSmoothedLoss(Dtype loss, int start_iter, int average_loss) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
~Solver() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1AdamSolver.html b/doxygen/classcaffe_1_1AdamSolver.html new file mode 100644 index 00000000000..1c11ba5a805 --- /dev/null +++ b/doxygen/classcaffe_1_1AdamSolver.html @@ -0,0 +1,309 @@ + + + + + + + +Caffe: caffe::AdamSolver< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::AdamSolver< Dtype > Class Template Reference
+
+
+ +

AdamSolver, an algorithm for first-order gradient-based optimization of stochastic objective functions, based on adaptive estimates of lower-order moments. Described in [1]. + More...

+ +

#include <sgd_solvers.hpp>

+
+Inheritance diagram for caffe::AdamSolver< Dtype >:
+
+
+ + +caffe::SGDSolver< Dtype > +caffe::Solver< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

AdamSolver (const SolverParameter &param)
 
AdamSolver (const string &param_file)
 
+virtual const char * type () const
 Returns the solver type.
 
- Public Member Functions inherited from caffe::SGDSolver< Dtype >
SGDSolver (const SolverParameter &param)
 
SGDSolver (const string &param_file)
 
+const vector< shared_ptr< Blob< Dtype > > > & history ()
 
- Public Member Functions inherited from caffe::Solver< Dtype >
Solver (const SolverParameter &param, const Solver *root_solver=NULL)
 
Solver (const string &param_file, const Solver *root_solver=NULL)
 
+void Init (const SolverParameter &param)
 
+void InitTrainNet ()
 
+void InitTestNets ()
 
+void SetActionFunction (ActionCallback func)
 
+SolverAction::Enum GetRequestedAction ()
 
+virtual void Solve (const char *resume_file=NULL)
 
+void Solve (const string resume_file)
 
+void Step (int iters)
 
+void Restore (const char *resume_file)
 
+void Snapshot ()
 
+const SolverParameter & param () const
 
+shared_ptr< Net< Dtype > > net ()
 
+const vector< shared_ptr< Net< Dtype > > > & test_nets ()
 
+int iter ()
 
+const vector< Callback * > & callbacks () const
 
+void add_callback (Callback *value)
 
+void CheckSnapshotWritePermissions ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+void AdamPreSolve ()
 
+virtual void ComputeUpdateValue (int param_id, Dtype rate)
 
DISABLE_COPY_AND_ASSIGN (AdamSolver)
 
- Protected Member Functions inherited from caffe::SGDSolver< Dtype >
+void PreSolve ()
 
+Dtype GetLearningRate ()
 
+virtual void ApplyUpdate ()
 
+virtual void Normalize (int param_id)
 
+virtual void Regularize (int param_id)
 
+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)
 
DISABLE_COPY_AND_ASSIGN (SGDSolver)
 
- Protected Member Functions inherited from caffe::Solver< Dtype >
+string SnapshotFilename (const string extension)
 
+string SnapshotToBinaryProto ()
 
+string SnapshotToHDF5 ()
 
+void TestAll ()
 
+void Test (const int test_net_id=0)
 
+void DisplayOutputBlobs (const int net_id)
 
+void UpdateSmoothedLoss (Dtype loss, int start_iter, int average_loss)
 
DISABLE_COPY_AND_ASSIGN (Solver)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::SGDSolver< Dtype >
+vector< shared_ptr< Blob< Dtype > > > history_
 
+vector< shared_ptr< Blob< Dtype > > > update_
 
+vector< shared_ptr< Blob< Dtype > > > temp_
 
- Protected Attributes inherited from caffe::Solver< Dtype >
+SolverParameter param_
 
+int iter_
 
+int current_step_
 
+shared_ptr< Net< Dtype > > net_
 
+vector< shared_ptr< Net< Dtype > > > test_nets_
 
+vector< Callback * > callbacks_
 
+vector< Dtype > losses_
 
+Dtype smoothed_loss_
 
+const Solver *const root_solver_
 
+ActionCallback action_request_function_
 
+bool requested_early_exit_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::AdamSolver< Dtype >

+ +

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).

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1AdamSolver.png b/doxygen/classcaffe_1_1AdamSolver.png new file mode 100644 index 0000000000000000000000000000000000000000..5cc81e00c194a670e6b5c36bd8db5857b28a4a48 GIT binary patch literal 1097 zcmeAS@N?(olHy`uVBq!ia0vp^Yk|0fgBeIJ5}5r3NJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~-|%#C45?szJNIJWY6Bh@e&Ln>|DW8h zJK=_+NLlIHToq+E)q|b>J#Y5~d1+qmQ1YCtk*TWb=Be#zxXXLD&T5sd)s=B+DxUIR zH`PbS&i1+#Xr38=TRx_wFaN^4JXKHg62IN;iM_8j_2!zqzWi;~#47?-Yf87|g@#L* zPx=zLe9OK1qbm-Jt}?cDxUN&Q<=U0rJv&t@YnSBq%dYi)&c9{uXTi1cg$JuWcZ;?C zJaRW|uY2~@@HF>q|66aX4^_KbcZJ29xJRWM^sP0#tELxOKYRP~E&JYl7q0%b%6992 z=XiYI^24}g}E%i4pJBlx+`7?9`U1B<-k;#}e zWebC$S5$+9s;)!NBrydyPi}$5OISMsk)>~44@D2VUk2D zm=!$t>a6`9H23PmSHD`W?K6BPw(HsThjVtXl&<`&m|OiOBi3sBjL09~p1rwp?Ptfe z^%kG{GOm9y54hXDaf02Iz3#jBt-slKZQhp8H`thO1^WEDWO3=1`Mhhovd6E@xFxis z=WXUaKCYcSsSDpX){f6u6sQli1<4RlW`M+!Cu2uXJ zaXW4G?%LLa3r@5N{Tjx+FQ z#)kGLXZxJJX@B&aNk03+9qzAB*Ofngx%%6ceG|8DQ=idsVo}d4K$C_;Y_3F(lXWzTG&HspQupABG(P&=mLO)v?o?bSA%$_j&8q VczAN=EnvQ9@O1TaS?83{1OTP8A1VL< literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1ArgMaxLayer-members.html b/doxygen/classcaffe_1_1ArgMaxLayer-members.html new file mode 100644 index 00000000000..0c3996ee914 --- /dev/null +++ b/doxygen/classcaffe_1_1ArgMaxLayer-members.html @@ -0,0 +1,123 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::ArgMaxLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::ArgMaxLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
ArgMaxLayer(const LayerParameter &param)caffe::ArgMaxLayer< Dtype >inlineexplicit
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
axis_ (defined in caffe::ArgMaxLayer< Dtype >)caffe::ArgMaxLayer< Dtype >protected
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::ArgMaxLayer< Dtype >inlineprotectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inlineprotectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::ArgMaxLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::ArgMaxLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ArgMaxLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
has_axis_ (defined in caffe::ArgMaxLayer< Dtype >)caffe::ArgMaxLayer< Dtype >protected
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ArgMaxLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
out_max_val_ (defined in caffe::ArgMaxLayer< Dtype >)caffe::ArgMaxLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ArgMaxLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
top_k_ (defined in caffe::ArgMaxLayer< Dtype >)caffe::ArgMaxLayer< Dtype >protected
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::ArgMaxLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1ArgMaxLayer.html b/doxygen/classcaffe_1_1ArgMaxLayer.html new file mode 100644 index 00000000000..104f40d9cca --- /dev/null +++ b/doxygen/classcaffe_1_1ArgMaxLayer.html @@ -0,0 +1,507 @@ + + + + + + + +Caffe: caffe::ArgMaxLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::ArgMaxLayer< Dtype > Class Template Reference
+
+
+ +

Compute the index of the $ K $ max values for each datum across all dimensions $ (C \times H \times W) $. + More...

+ +

#include <argmax_layer.hpp>

+
+Inheritance diagram for caffe::ArgMaxLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ArgMaxLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Not implemented (non-differentiable function)
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+bool out_max_val_
 
+size_t top_k_
 
+bool has_axis_
 
+int axis_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::ArgMaxLayer< Dtype >

+ +

Compute the index of the $ K $ max values for each datum across all dimensions $ (C \times H \times W) $.

+

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.

+

Constructor & Destructor Documentation

+ +

§ ArgMaxLayer()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + +
caffe::ArgMaxLayer< Dtype >::ArgMaxLayer (const LayerParameter & param)
+
+inlineexplicit
+
+
Parameters
+ + +
paramprovides ArgMaxParameter argmax_param, with ArgMaxLayer options:
    +
  • top_k (optional uint, default 1). the number $ K $ of maximal items to output.
  • +
  • out_max_val (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 (optional int). if set, maximise along the specified axis else maximise the flattened trailing dimensions for each index of the first / num dimension.
  • +
+
+
+
+ +
+
+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::ArgMaxLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::ArgMaxLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::ArgMaxLayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+
Parameters
+ + + +
bottominput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the inputs $ x $
  2. +
+
topoutput Blob vector (length 1)
    +
  1. $ (N \times 1 \times K) $ or, if out_max_val $ (N \times 2 \times K) $ unless axis set than e.g. $ (N \times K \times H \times W) $ if axis == 1 the computed outputs $ y_n = \arg\max\limits_i x_{ni} $ (for $ K = 1 $).
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::ArgMaxLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::ArgMaxLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1ArgMaxLayer.png b/doxygen/classcaffe_1_1ArgMaxLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..304e91559809add779f227db459b7ac92ab32073 GIT binary patch literal 753 zcmeAS@N?(olHy`uVBq!ia0vp^+kiNLgBeIR8`rM{QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;gO?QLh(%{*uMaz{^c%S`mXr13SeUEt|6m6xjyeO_NZ zRi&~t(f+&Do9pd&OO!pYf914hRX=9==5g({#P|7=f&y&gWn9g7zbsBDo3!NouZFp? zx7#J(P0l?%*Lc3}U-M;oPtK~o3=!XO`a0L|-pZ_Bk}yt7ok;irlExAW(x+$m17Uy=S~o=A16P(xwV4Ti;AHZTIc&)jqA5Szr( zR$c=yZs~+6VrB<4baNU4(G(PLDYpD{VVL0yQ?qr0eEC<^19i8Izs_Elapc*BjjI~} z&atU1OxipDZNU+{H|Et$G9eC^DwF5Pe_sF5E;@4myp5GnZ+3h;lN-jh>iOxo?`?mI zk}DYIY--NQl~2n^PvTtaKBqKWxb|}H)I}}1zJIrcy2+Lm1|?o!`q*#E#?Q00?moZx zLBu_0{~{*)gyW|ZCuQxuJv%vhcG!|bR-e=FUj4rJ(6)E74kv?KYsIEDe`fnOTj`|d z#_$g|z<}LRDg8Dr*L*{4+?#pq+vln7|8o4pvg=v5%Y=kyO}ZjwT{>x%|C6wZ+Q-;- zU7Y9rb>{2hm6I7tRww7Ke_8$e{l@A#*?krdVsG?*VU)Q#f7 + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::BNLLLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::BNLLLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::BNLLLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::BNLLLayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
BNLLLayer(const LayerParameter &param) (defined in caffe::BNLLLayer< Dtype >)caffe::BNLLLayer< Dtype >inlineexplicit
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::NeuronLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::NeuronLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BNLLLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BNLLLayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlinevirtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
NeuronLayer(const LayerParameter &param) (defined in caffe::NeuronLayer< Dtype >)caffe::NeuronLayer< Dtype >inlineexplicit
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::NeuronLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::BNLLLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1BNLLLayer.html b/doxygen/classcaffe_1_1BNLLLayer.html new file mode 100644 index 00000000000..55d59576e6a --- /dev/null +++ b/doxygen/classcaffe_1_1BNLLLayer.html @@ -0,0 +1,371 @@ + + + + + + + +Caffe: caffe::BNLLLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::BNLLLayer< Dtype > Class Template Reference
+
+
+ +

Computes $ y = x + \log(1 + \exp(-x)) $ if $ x > 0 $; $ y = \log(1 + \exp(x)) $ otherwise. + More...

+ +

#include <bnll_layer.hpp>

+
+Inheritance diagram for caffe::BNLLLayer< Dtype >:
+
+
+ + +caffe::NeuronLayer< Dtype > +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

BNLLLayer (const LayerParameter &param)
 
+virtual const char * type () const
 Returns the layer type.
 
- Public Member Functions inherited from caffe::NeuronLayer< Dtype >
NeuronLayer (const LayerParameter &param)
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Computes $ y = x + \log(1 + \exp(-x)) $ if $ x > 0 $; $ y = \log(1 + \exp(x)) $ otherwise. More...
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Computes the error gradient w.r.t. the BNLL inputs. More...
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::BNLLLayer< Dtype >

+ +

Computes $ y = x + \log(1 + \exp(-x)) $ if $ x > 0 $; $ y = \log(1 + \exp(x)) $ otherwise.

+
Parameters
+ + + +
bottominput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the inputs $ x $
  2. +
+
topoutput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the computed outputs $ y = \left\{ \begin{array}{ll} x + \log(1 + \exp(-x)) & \mbox{if } x > 0 \\ \log(1 + \exp(x)) & \mbox{otherwise} \end{array} \right. $
  2. +
+
+
+
+

Member Function Documentation

+ +

§ Backward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void caffe::BNLLLayer< Dtype >::Backward_cpu (const vector< Blob< Dtype > *> & top,
const vector< bool > & propagate_down,
const vector< Blob< Dtype > *> & bottom 
)
+
+protectedvirtual
+
+ +

Computes the error gradient w.r.t. the BNLL inputs.

+
Parameters
+ + + + +
topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
    +
  1. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
  2. +
+
propagate_downsee Layer::Backward.
bottominput Blob vector (length 2)
    +
  1. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \frac{\partial E}{\partial x} $ if propagate_down[0]
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::BNLLLayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+ +

Computes $ y = x + \log(1 + \exp(-x)) $ if $ x > 0 $; $ y = \log(1 + \exp(x)) $ otherwise.

+
Parameters
+ + + +
bottominput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the inputs $ x $
  2. +
+
topoutput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the computed outputs $ y = \left\{ \begin{array}{ll} x + \log(1 + \exp(-x)) & \mbox{if } x > 0 \\ \log(1 + \exp(x)) & \mbox{otherwise} \end{array} \right. $
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/caffe/layers/bnll_layer.hpp
  • +
  • src/caffe/layers/bnll_layer.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1BNLLLayer.png b/doxygen/classcaffe_1_1BNLLLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..08116c3b4e5233d6f7080a1f9627619d883eb341 GIT binary patch literal 1063 zcmeAS@N?(olHy`uVBq!ia0vp^n}N84gBeK9F4tNQq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0w|TlahEy=VoqPM-XDuF=aJH52|DV{M z%O}C)d!zpEN{@9$o(jiwdJ6MBHJ6@rnY3i3$eBq`)+bC;spmD+KfP*^|D<J_Y)i(}XOpg6FfFcIJHvj4NZ4{;&6%eK%U8TNT3mR zXrtKInQLdfT^2cC{L1zj(HFC4=SappaZ*2b%w+kE>5uN5ea@Yh9Qv#{_1D{)ZKa1@ z4D$DQHpg(~+?|lJE@uAb_4(I%J*BQVJpH@>zux^cIoE%T&k~=+cWhRv)SjVwGX9{B z=f5hWnWc)xR8^+&(W1%{#M*Um~?fi&yQ<+Isa z1E>GouzBCB%dv*h`DNdHVvV;a6{YF%XHDPf@ng>f{=#kP%j~ASwfMe$@0>F!KNU8A z3TvoO|&tuYTwpU+!|2NntB86&g zASgt+(mX$1pKQ5w$}^#cemRE8nNH7+C)>T?oH_r*WykX;WJ;MI=!@VCLM$PC;`%0? z(?AK{=f1{-v5oZ7Z literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1BaseConvolutionLayer-members.html b/doxygen/classcaffe_1_1BaseConvolutionLayer-members.html new file mode 100644 index 00000000000..bd21b7e830d --- /dev/null +++ b/doxygen/classcaffe_1_1BaseConvolutionLayer-members.html @@ -0,0 +1,153 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::BaseConvolutionLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::BaseConvolutionLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)=0caffe::Layer< Dtype >protectedpure virtual
backward_cpu_bias(Dtype *bias, const Dtype *input) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
backward_cpu_gemm(const Dtype *input, const Dtype *weights, Dtype *output) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inlineprotectedvirtual
backward_gpu_bias(Dtype *bias, const Dtype *input) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
backward_gpu_gemm(const Dtype *input, const Dtype *weights, Dtype *col_output) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
BaseConvolutionLayer(const LayerParameter &param) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >inlineexplicit
bias_term_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
bottom_dim_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
bottom_shape_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
channel_axis_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
channels_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
col_buffer_shape_caffe::BaseConvolutionLayer< Dtype >protected
compute_output_shape()=0 (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protectedpure virtual
conv_input_shape_caffe::BaseConvolutionLayer< Dtype >protected
dilation_caffe::BaseConvolutionLayer< Dtype >protected
EqualNumBottomTopBlobs() constcaffe::BaseConvolutionLayer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
force_nd_im2col_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)=0caffe::Layer< Dtype >protectedpure virtual
forward_cpu_bias(Dtype *output, const Dtype *bias) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
forward_cpu_gemm(const Dtype *input, const Dtype *weights, Dtype *output, bool skip_im2col=false) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
forward_gpu_bias(Dtype *output, const Dtype *bias) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
forward_gpu_gemm(const Dtype *col_input, const Dtype *weights, Dtype *output, bool skip_im2col=false) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
group_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
input_shape(int i)caffe::BaseConvolutionLayer< Dtype >inlineprotected
is_1x1_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
IsShared() constcaffe::Layer< Dtype >inline
kernel_shape_caffe::BaseConvolutionLayer< Dtype >protected
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BaseConvolutionLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::BaseConvolutionLayer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::BaseConvolutionLayer< Dtype >inlinevirtual
num_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
num_output_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
num_spatial_axes_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
out_spatial_dim_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
output_shape_caffe::BaseConvolutionLayer< Dtype >protected
pad_caffe::BaseConvolutionLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BaseConvolutionLayer< Dtype >virtual
reverse_dimensions()=0 (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protectedpure virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
stride_caffe::BaseConvolutionLayer< Dtype >protected
top_dim_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::Layer< Dtype >inlinevirtual
weight_cpu_gemm(const Dtype *input, const Dtype *output, Dtype *weights) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
weight_gpu_gemm(const Dtype *col_input, const Dtype *output, Dtype *weights) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
weight_offset_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1BaseConvolutionLayer.html b/doxygen/classcaffe_1_1BaseConvolutionLayer.html new file mode 100644 index 00000000000..fdf601fecc1 --- /dev/null +++ b/doxygen/classcaffe_1_1BaseConvolutionLayer.html @@ -0,0 +1,547 @@ + + + + + + + +Caffe: caffe::BaseConvolutionLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::BaseConvolutionLayer< Dtype > Class Template Referenceabstract
+
+
+ +

Abstract base class that factors out the BLAS code common to ConvolutionLayer and DeconvolutionLayer. + More...

+ +

#include <base_conv_layer.hpp>

+
+Inheritance diagram for caffe::BaseConvolutionLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > +caffe::ConvolutionLayer< Dtype > +caffe::DeconvolutionLayer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

BaseConvolutionLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+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)
 
+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)
 
+int input_shape (int i)
 The spatial dimensions of the input.
 
+virtual bool reverse_dimensions ()=0
 
+virtual void compute_output_shape ()=0
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)=0
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)=0
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+Blob< int > kernel_shape_
 The spatial dimensions of a filter kernel.
 
+Blob< int > stride_
 The spatial dimensions of the stride.
 
+Blob< int > pad_
 The spatial dimensions of the padding.
 
+Blob< int > dilation_
 The spatial dimensions of the dilation.
 
+Blob< int > conv_input_shape_
 The spatial dimensions of the convolution input.
 
+vector< int > col_buffer_shape_
 The spatial dimensions of the col_buffer.
 
+vector< int > output_shape_
 The spatial dimensions of the output.
 
+const vector< int > * 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_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::BaseConvolutionLayer< Dtype >

+ +

Abstract base class that factors out the BLAS code common to ConvolutionLayer and DeconvolutionLayer.

+

Member Function Documentation

+ +

§ EqualNumBottomTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual bool caffe::BaseConvolutionLayer< Dtype >::EqualNumBottomTopBlobs () const
+
+inlinevirtual
+
+ +

Returns true if the layer requires an equal number of bottom and top blobs.

+

This method should be overridden to return true if your layer expects an equal number of bottom and top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::BaseConvolutionLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ MinBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::BaseConvolutionLayer< Dtype >::MinBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some minimum number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ MinTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::BaseConvolutionLayer< Dtype >::MinTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some minimum number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::BaseConvolutionLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1BaseConvolutionLayer.png b/doxygen/classcaffe_1_1BaseConvolutionLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..0c4a5bc09a8e3c13d69a9940de1788fc87d4a5bf GIT binary patch literal 1598 zcmb_cX;f236n=on5*DRM&{QHCv?|dc8idLwP<)sYKwPGmEjT_G|=wnr&@u>gi)x z8qKGE4uDpJFW6L!AKC9=^s-NjCS{|5E}KqGXY z%rwyrd^7pArNleTgOcS}G=v^xIVyQ)X|>Tql*`2MiTnNEK8VA&S=dE9YdMagy{cQ{ za{Fma?7S_+I%F+wzu;FJ*4-TFF3GZ9$}z0AmXXvFwe*5r2Rx8#t*p~n69(sV=7J%% zeB+gC5aPJtM%OR;1VXiZ*sFT~$ORXNJl?E{1Gmg6P{2vRPN3TcP&();yQ26bcn3$G z(XFj-Mhsgq1vP*^7 zSPO@sbrcY$Cvx|m>S+1{IjXYrtzWa;czK$@;E|ln)jFGs$8<^w1BZ^$YK42M_e~s* zbS>e!&t`Y}*d|qJCKD2)O>g&%Tc}XPsCyMmjyQg_KzP~?246p3piftL47=|gK z1qDt#BB$fN&*AeKS_$J|a7GGj@tcX~xBA9t!mJ<h1eofR8ft>_VvIe-PtGJp zdaY#W-xPKVxYB}fQDMy2wu^p+TA@B?1Sr+^*wYYDHrdurl&QU_r7@!;hIm3%9BI?L zpgJllyYXo6XIe#pkiRGv4YUD?xfrHOd5Tb#@{&>K%e;h$>oR*rW^~I0aWTyJ5_uEZ zqcR5H7&!6#d{Niu;(bw_u=?s^ir-Bi$~}fjWkuvwLM|SQZu|8qszir5Dp)}3IB;KtO_rYdPz0xxUC;PpU%3dvC zt+}urI-+KNd&%p$+_zA$xD9&B(?gN literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1BaseDataLayer-members.html b/doxygen/classcaffe_1_1BaseDataLayer-members.html new file mode 100644 index 00000000000..6a3a93fb34d --- /dev/null +++ b/doxygen/classcaffe_1_1BaseDataLayer-members.html @@ -0,0 +1,123 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::BaseDataLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::BaseDataLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::BaseDataLayer< Dtype >inlinevirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::BaseDataLayer< Dtype >inlinevirtual
BaseDataLayer(const LayerParameter &param) (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >explicit
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
data_transformer_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected
DataLayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top) (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >inlinevirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)=0caffe::Layer< Dtype >protectedpure virtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BaseDataLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
output_labels_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BaseDataLayer< Dtype >inlinevirtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::BaseDataLayer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
transform_param_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected
type() constcaffe::Layer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1BaseDataLayer.html b/doxygen/classcaffe_1_1BaseDataLayer.html new file mode 100644 index 00000000000..8ee134e4dbc --- /dev/null +++ b/doxygen/classcaffe_1_1BaseDataLayer.html @@ -0,0 +1,358 @@ + + + + + + + +Caffe: caffe::BaseDataLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::BaseDataLayer< Dtype > Class Template Reference
+
+
+ +

Provides base for data layers that feed blobs to the Net. + More...

+ +

#include <base_data_layer.hpp>

+
+Inheritance diagram for caffe::BaseDataLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > +caffe::BasePrefetchingDataLayer< Dtype > +caffe::MemoryDataLayer< Dtype > +caffe::DataLayer< Dtype > +caffe::ImageDataLayer< Dtype > +caffe::WindowDataLayer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

BaseDataLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual bool ShareInParallel () const
 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 void DataLayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Attributes

+TransformationParameter transform_param_
 
+shared_ptr< DataTransformer< Dtype > > data_transformer_
 
+bool output_labels_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+ + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from caffe::Layer< Dtype >
+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)=0
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::BaseDataLayer< Dtype >

+ +

Provides base for data layers that feed blobs to the Net.

+

TODO(dox): thorough documentation for Forward and proto params.

+

Member Function Documentation

+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::BaseDataLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +

Reimplemented in caffe::BasePrefetchingDataLayer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void caffe::BaseDataLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+inlinevirtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1BaseDataLayer.png b/doxygen/classcaffe_1_1BaseDataLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..6340f22fd96ca41d04cafd8303a59245e55be9eb GIT binary patch literal 2959 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 T7PZc0i-5-t=V()A<$3KN51U-$ literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1BasePrefetchingDataLayer-members.html b/doxygen/classcaffe_1_1BasePrefetchingDataLayer-members.html new file mode 100644 index 00000000000..7f7f217d1c4 --- /dev/null +++ b/doxygen/classcaffe_1_1BasePrefetchingDataLayer-members.html @@ -0,0 +1,137 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::BasePrefetchingDataLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::BasePrefetchingDataLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::BaseDataLayer< Dtype >inlinevirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::BaseDataLayer< Dtype >inlinevirtual
BaseDataLayer(const LayerParameter &param) (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >explicit
BasePrefetchingDataLayer(const LayerParameter &param) (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >explicit
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
data_transformer_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected
DataLayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top) (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >inlinevirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BasePrefetchingDataLayer< Dtype >virtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BasePrefetchingDataLayer< Dtype >virtual
InternalThread() (defined in caffe::InternalThread)caffe::InternalThreadinline
InternalThreadEntry() (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protectedvirtual
is_started() const (defined in caffe::InternalThread)caffe::InternalThread
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BasePrefetchingDataLayer< Dtype >virtual
load_batch(Batch< Dtype > *batch)=0 (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protectedpure virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
must_stop() (defined in caffe::InternalThread)caffe::InternalThreadprotected
output_labels_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
prefetch_ (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protected
PREFETCH_COUNT (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >static
prefetch_free_ (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protected
prefetch_full_ (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BaseDataLayer< Dtype >inlinevirtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::BaseDataLayer< Dtype >inlinevirtual
StartInternalThread()caffe::InternalThread
StopInternalThread()caffe::InternalThread
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
transform_param_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected
transformed_data_ (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protected
type() constcaffe::Layer< Dtype >inlinevirtual
~InternalThread() (defined in caffe::InternalThread)caffe::InternalThreadvirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1BasePrefetchingDataLayer.html b/doxygen/classcaffe_1_1BasePrefetchingDataLayer.html new file mode 100644 index 00000000000..c97f4f99395 --- /dev/null +++ b/doxygen/classcaffe_1_1BasePrefetchingDataLayer.html @@ -0,0 +1,338 @@ + + + + + + + +Caffe: caffe::BasePrefetchingDataLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::BasePrefetchingDataLayer< Dtype > Class Template Referenceabstract
+
+
+
+Inheritance diagram for caffe::BasePrefetchingDataLayer< Dtype >:
+
+
+ + +caffe::BaseDataLayer< Dtype > +caffe::InternalThread +caffe::Layer< Dtype > +caffe::DataLayer< Dtype > +caffe::ImageDataLayer< Dtype > +caffe::WindowDataLayer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

BasePrefetchingDataLayer (const LayerParameter &param)
 
void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
- Public Member Functions inherited from caffe::BaseDataLayer< Dtype >
BaseDataLayer (const LayerParameter &param)
 
+virtual bool ShareInParallel () const
 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 void DataLayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
- Public Member Functions inherited from caffe::InternalThread
void StartInternalThread ()
 
void StopInternalThread ()
 
+bool is_started () const
 
+ + + +

+Static Public Attributes

+static const int PREFETCH_COUNT = 3
 
+ + + + + + + + + + + + + +

+Protected Member Functions

+virtual void InternalThreadEntry ()
 
+virtual void load_batch (Batch< Dtype > *batch)=0
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
- Protected Member Functions inherited from caffe::InternalThread
+bool must_stop ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+Batch< Dtype > prefetch_ [PREFETCH_COUNT]
 
+BlockingQueue< Batch< Dtype > * > prefetch_free_
 
+BlockingQueue< Batch< Dtype > * > prefetch_full_
 
+Blob< Dtype > transformed_data_
 
- Protected Attributes inherited from caffe::BaseDataLayer< Dtype >
+TransformationParameter transform_param_
 
+shared_ptr< DataTransformer< Dtype > > data_transformer_
 
+bool output_labels_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Member Function Documentation

+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::BasePrefetchingDataLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::BaseDataLayer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1BasePrefetchingDataLayer.png b/doxygen/classcaffe_1_1BasePrefetchingDataLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..8162ad27db4e9732b899274e68d4753e7ca12c45 GIT binary patch literal 2948 zcmb_edpwls9v`Bl+%gVo<@Ux-4inkM8jLc`XpJ>_O_5RBU8ESB%j7mTm5eA#TGvQv zUx_xi!i>_G(~4Z0#$84(k;}vwjN!b)p7Y;1|D5xFKJW89@9+8jp6B`ep6~DbeUpD6 zx+p2`Rzx5WN(8(U34z#xgvX5vTi_Pj&D{ofT0ea6iCbS^hldlNg%Q_Z-hf9NZ)0Pl zd~&}o{HYL5A|6G+PSS__r>6x1u|u8U_!l*! z1zu@fTeYv8$GUTtcd*`Cx^?+&mAwQqAc%FOI3d9+T~_uIUJa$!h%Zh+=#!ij6%Kp} zM=2+%H$8(OADepC3=@JTWenuyDx<5Bvw5){ts+8LL^cE&tE2Spa@C8i9lG6PUY)Yf zf2&M-Q;=&Ds&HCVkVfo!b9hLl*9rvflJPP!WlS`?vsU6~o9j-|wehLAbAGMwin7bd z90YNak*e*JHl#%5G73W{+�o{%xV4h zAZVopn}9&SP?MEYkfxlSeEN|z-`Io$->I4CVPSv0lVx8^LlY1(WpI$xO|Fsw+u=J= zZQsAKnBKqE|9?7_H%n1rL^xq2L(l#lnw;&t{}5WKb7E8;Dt-u2(hbT~Q4mBf#+x`X zph*o>r(${$6pdrdR=*sk`eQ_k5Y&50+_SRQs{w+VfA8v#0733IYgNcP$ARjlrl4n` zWID6g_$M_Kvqy23)x-`J9Ipv+i1B2U`cXik!um1Bl;eN_TeHwvaY?hkS8?2B;Zui5 zfb@AA^4%gPykW-j%raH-bhUWOqriVYrJ%&d!G0(}n^^))n&qR}ZjN~~&)IWN-i4X^ zGXCaLux|JfFXKMi>~+k$Vm&x%{&mv*vlW;ujX+eIJA$10dVy8)Lh;4hM2ywc9rV=pNW_^4FlKA?)T!u-0!WbqnL_k z#(OGszH#*clayjw9z)T0@PZ0tNwc4BXz8|TQBKYJw?*225Zmp8T;c|&6RCzc`c{$c zv%@KLBlftXaGT_hcc&IW)a`KbD!e5?!t7@c-i$S2ue_+(cjAImnmVgvTynM~@GwVd zd|xC3eR22cZp(PT&KY8u4ISiKB_mY`=4%v9mdKgW@?MuNDleYUIpAuctYeibzP02+ ziq(0C+Zjc8(sKranC`{3ERC`0b%|e0Hri*MQ-1K;Z}hT=rvu5;F?Lqr+ZyRf?N|)v4#N-6f%%Om+>B8g8|N4AD%D& z_jIM#9k@)IfaDfHuMr(~=?0)ztkJ%ofTc}cIvuS~z~W6Bu^9<-9os)$24wWh5(+cq zE*(9H#qUz>R1D0NdS}SVRl1r0+ZBT3yEnrBv!OvFjWc3i&(gyt_!&tQ{`b1e8m3x* zwPvBJ_lVR8Bj~R}eQwZ_gfNs=d^qm5ij4DO9e*xzB~Q@bw8q56rNq@|LN{p zxlX<~QtKe)fYsC>F#R!lba9~VbEz3GgvtytFL66BNNp{LSu8Tpt|q?+{{#cY%vS}( zh|gM{>f+bkJ{!;nRm21|wfZhBRiOh%oKy6$-Rb;y{ZolF;oaG-y2j%UE%L!#HH6zW zR!7V!_2&a5&0~2VvXKKV%v;qQYyuU>XxJw3Vh9tT@WgUip`n@nQH>Sy!ad?myc^rf z%XJ6vU;<|o%`2y?N54I{l)Pnn;KIdH@@LnM`+N3jC#B^yKgOx*Ej+f){caRSwN^n} zeoU0s!J79L{H3lY698AwO8n-G9xxdaNqfB+yCT%{p*$^RuJi{PLA;FFaNvCC3o00({F zWqE5u1$+u&Eyw`g1D%RNmjMqj7zZmt#-<|N05%l?NQNebUrGNLMxND>9R@FuL7{w$ zWt1-nM(i0ndwC#}48}DFJI_;h@ht9WJM=u`Wu=UuNV)0{p{i<;Xo6H8?+9{5%lSwi znF2eh~jMBAO=G2K8gIIm=RDP#U# zN!$gH8&zAU5#qhfX;{p`48`sEz%6=anA{gHi6}W1T3QyZE%+r2^EIwdJ4p!Yc%R#r zD*lvdGd6V_(`z|i*wkTN59`QGCciq9Zu#fWf<6SrG`sI+t$t!~P1S=6Lw4yaff8!v zd{_YMgk;E!D&h~XG$@VxPt+c@huDUs*oH4_C%Relyp%C}6!RY+?(zE6W7dbp1k3xw zVvjOv;)19((?^>g(Dqi=?=hRF87yWM@ODl*Q{oD^rP9v+885t z$}52#YO#Nyj`Q|gcJ)oOEMEb=JDd|L{*=d0$qc1uw`8&?mQhCp$G1vO#eDi2hQB&r|f)8Fh6UW~8@R^YT%*;rjM{NERDB83uw`A=YRa^~0q119@&7;_*Aommu zT3A1)d2K8WV78qkGt4hXF0%PFPbuw(ag=5sc!0tKQAglb^?LuJyYu{c0xSZrRM-Mp zQh#0N`aNXamU8HMx^C*2@cz>8*71IfI`RsuA2rk8NH@&R%HnhQv|sazph*!;GJYE5 zy59g`sVIbCaKlmoqmN(!D+!FgjH|GcK$Dq3HnPjojeh67;zkFA#Y?uC=3?DkZ-fB| O_#xnkPLB_ry!cPt{c8{a literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1Batch-members.html b/doxygen/classcaffe_1_1Batch-members.html new file mode 100644 index 00000000000..c21e71bbeb3 --- /dev/null +++ b/doxygen/classcaffe_1_1Batch-members.html @@ -0,0 +1,82 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::Batch< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::Batch< Dtype >, including all inherited members.

+ + + +
data_ (defined in caffe::Batch< Dtype >)caffe::Batch< Dtype >
label_ (defined in caffe::Batch< Dtype >)caffe::Batch< Dtype >
+ + + + diff --git a/doxygen/classcaffe_1_1Batch.html b/doxygen/classcaffe_1_1Batch.html new file mode 100644 index 00000000000..42c6dc0794d --- /dev/null +++ b/doxygen/classcaffe_1_1Batch.html @@ -0,0 +1,93 @@ + + + + + + + +Caffe: caffe::Batch< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::Batch< Dtype > Class Template Reference
+
+
+ + + + + + +

+Public Attributes

+Blob< Dtype > data_
 
+Blob< Dtype > label_
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classcaffe_1_1BatchNormLayer-members.html b/doxygen/classcaffe_1_1BatchNormLayer-members.html new file mode 100644 index 00000000000..9cae174ddbc --- /dev/null +++ b/doxygen/classcaffe_1_1BatchNormLayer-members.html @@ -0,0 +1,130 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::BatchNormLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::BatchNormLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::BatchNormLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::BatchNormLayer< Dtype >protectedvirtual
batch_sum_multiplier_ (defined in caffe::BatchNormLayer< Dtype >)caffe::BatchNormLayer< Dtype >protected
BatchNormLayer(const LayerParameter &param) (defined in caffe::BatchNormLayer< Dtype >)caffe::BatchNormLayer< Dtype >inlineexplicit
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
channels_ (defined in caffe::BatchNormLayer< Dtype >)caffe::BatchNormLayer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
eps_ (defined in caffe::BatchNormLayer< Dtype >)caffe::BatchNormLayer< Dtype >protected
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::BatchNormLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::BatchNormLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BatchNormLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BatchNormLayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BatchNormLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
mean_ (defined in caffe::BatchNormLayer< Dtype >)caffe::BatchNormLayer< Dtype >protected
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
moving_average_fraction_ (defined in caffe::BatchNormLayer< Dtype >)caffe::BatchNormLayer< Dtype >protected
num_by_chans_ (defined in caffe::BatchNormLayer< Dtype >)caffe::BatchNormLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BatchNormLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
spatial_sum_multiplier_ (defined in caffe::BatchNormLayer< Dtype >)caffe::BatchNormLayer< Dtype >protected
temp_ (defined in caffe::BatchNormLayer< Dtype >)caffe::BatchNormLayer< Dtype >protected
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::BatchNormLayer< Dtype >inlinevirtual
use_global_stats_ (defined in caffe::BatchNormLayer< Dtype >)caffe::BatchNormLayer< Dtype >protected
variance_ (defined in caffe::BatchNormLayer< Dtype >)caffe::BatchNormLayer< Dtype >protected
x_norm_ (defined in caffe::BatchNormLayer< Dtype >)caffe::BatchNormLayer< Dtype >protected
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1BatchNormLayer.html b/doxygen/classcaffe_1_1BatchNormLayer.html new file mode 100644 index 00000000000..aa966ee08c7 --- /dev/null +++ b/doxygen/classcaffe_1_1BatchNormLayer.html @@ -0,0 +1,442 @@ + + + + + + + +Caffe: caffe::BatchNormLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::BatchNormLayer< Dtype > Class Template Reference
+
+
+ +

Normalizes the input to have 0-mean and/or unit (1) variance across the batch. + More...

+ +

#include <batch_norm_layer.hpp>

+
+Inheritance diagram for caffe::BatchNormLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

BatchNormLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+Blob< Dtype > mean_
 
+Blob< Dtype > variance_
 
+Blob< Dtype > temp_
 
+Blob< Dtype > x_norm_
 
+bool use_global_stats_
 
+Dtype moving_average_fraction_
 
+int channels_
 
+Dtype eps_
 
+Blob< Dtype > batch_sum_multiplier_
 
+Blob< Dtype > num_by_chans_
 
+Blob< Dtype > spatial_sum_multiplier_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::BatchNormLayer< Dtype >

+ +

Normalizes the input to have 0-mean and/or unit (1) variance across 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. 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 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 arXiv:1502.03167 (2015).

+

TODO(dox): thorough documentation for Forward, Backward, and proto params.

+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::BatchNormLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::BatchNormLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::BatchNormLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::BatchNormLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1BatchNormLayer.png b/doxygen/classcaffe_1_1BatchNormLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..76e626b3257138c1a4bb0f24d018c72dd20e665f GIT binary patch literal 762 zcmeAS@N?(olHy`uVBq!ia0vp^$ALJ2gBeK9+A)zINJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~b$YruhEy=Vo%^=$u>y}Pzj@I8{}Z=s zD&BaKeE7|l*KR$}%o-)$G#~tvI&0ZWwxmf*)?a@xVTpy5%p?(a`zIcnr@wk$3SIhh zef1QTx3AM>Hh=bIsFi8I>=CqIuXxJS(=$E1t6!GNoSwdD(;K@7cTQc_Syp_wV$zb= zyH0KVwTb_7j8(tx^aJ5HK4tsFo}TS}X=RngtL(#tNsrc;o%}3Q=OXW^?`}6Q?Q)2_ zv~c#tYprdE)vlkboVjFja{koszSD#se!J*s*OPg7UjCWm4}bpPZr}Ln`C`MrM}BVj zdTLF{U6VBKt3oNSr>cC8f8TF)UH#QmmC{wpv+DN?-ame^TX4!^Y2_?Cm6yd}?=(A4 zdi3I?q3`7{f0-(_%Q2W=@U@WZuWq>0^0>2*d&2I5o+?%W&t_(YJ~nm-8D72yU??yY znpiMA$|ztsa`6E}$Kr#G0`6!E#HR*%nG0|}cx?((D0qA`!=5cGbILM4Pm_0leQ9gl z>eZ_k^I1GQceXw4k?!%8&+YmSD=?IWSe{~f;$!nWK6iGbRpmxaH%Z0wscvUw*ZWBa zN^aVC$LYC(*yW?0-5Kr4TepFNa<6Zt_S&+Nf76mJzi(#QcWByuS@kl{ZbdOnLkX1AUeG@t&H8=7hHCS~7^H8XQ8 zzFk}S^uzB}lNW#6En75+zxv&+=Kb^g4}UH^_E0`my1YO_{$GvBvg_yC*M_I9&AOEv zc;0MT+)R&H(M>X`z+iu(`~7{t)XA+?tRDhPf9x$#{%777*Rw$8u0-Hx#t+@_u-g|K e + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::BatchReindexLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::BatchReindexLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::BatchReindexLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::BatchReindexLayer< Dtype >protectedvirtual
BatchReindexLayer(const LayerParameter &param) (defined in caffe::BatchReindexLayer< Dtype >)caffe::BatchReindexLayer< Dtype >inlineexplicit
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::BatchReindexLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::BatchReindexLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BatchReindexLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BatchReindexLayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlinevirtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BatchReindexLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::BatchReindexLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1BatchReindexLayer.html b/doxygen/classcaffe_1_1BatchReindexLayer.html new file mode 100644 index 00000000000..8624440334a --- /dev/null +++ b/doxygen/classcaffe_1_1BatchReindexLayer.html @@ -0,0 +1,468 @@ + + + + + + + +Caffe: caffe::BatchReindexLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::BatchReindexLayer< Dtype > Class Template Reference
+
+
+ +

Index into the input blob along its first axis. + More...

+ +

#include <batch_reindex_layer.hpp>

+
+Inheritance diagram for caffe::BatchReindexLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

BatchReindexLayer (const LayerParameter &param)
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Computes the error gradient w.r.t. the reordered input. More...
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::BatchReindexLayer< Dtype >

+ +

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.

+

Member Function Documentation

+ +

§ Backward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void caffe::BatchReindexLayer< Dtype >::Backward_cpu (const vector< Blob< Dtype > *> & top,
const vector< bool > & propagate_down,
const vector< Blob< Dtype > *> & bottom 
)
+
+protectedvirtual
+
+ +

Computes the error gradient w.r.t. the reordered input.

+
Parameters
+ + + + +
topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
    +
  1. $ (M \times ...) $: containing error gradients $ \frac{\partial E}{\partial y} $ with respect to concatenated outputs $ y $
  2. +
+
propagate_downsee Layer::Backward.
bottominput Blob vector (length 2):
    +
  • $ \frac{\partial E}{\partial y} $ 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.
  • +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::BatchReindexLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::BatchReindexLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::BatchReindexLayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+
Parameters
+ + + +
bottominput Blob vector (length 2+)
    +
  1. $ (N \times ...) $ the inputs $ x_1 $
  2. +
  3. $ (M) $ the inputs $ x_2 $
  4. +
+
topoutput Blob vector (length 1)
    +
  1. $ (M \times ...) $: the reindexed array $ y = x_1[x_2] $
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::BatchReindexLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1BatchReindexLayer.png b/doxygen/classcaffe_1_1BatchReindexLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..e49315eef0f2144f248d36351f9f5daea3647f9c GIT binary patch literal 780 zcmeAS@N?(olHy`uVBq!ia0vp^*MK;HgBeH$U8%kaq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0W_!9ghEy=Vo%_1zu>w!4eP8;ofBkzr zYaJgwGW9f%t$gw224l;Gc87nbH|d=Idql~z{PK}WOEhLhOcHT@pSX0(sjr@wLYF?j z|3Syo>Uwm<`G{2&$2RQBQ+Zk1oAh?}?q{00Z`WQ=%vIj~ZOM-x*RQ=wGp;o|<2A`- zo#UG1%-=?5*KW?=St#@7_vIP8rkPJ);$6k4{awWPV?RS)sp9%RG2n*Z||@-q7WbNAHRzfP)CmN@dVd@q)NR^MmpCCZ#VL(5~E%FEAS{|I|e zTJ)lEtIp{nYsMO{c!uwnZ8z@Qmv^$%e+~Op*`0Y^rrL@QGQK(uK<_gInrviPl##^f za`6aL$D&SF0asyeg)TKQ2N5&{dzMZK+BM&U0T^&lg|=(lb$^D18o#~rD7<`6-qqZO zb$sW;(@QtZn|sya;f`Zg(LZe0MGO*4-YetmrY{%wuV zjn8N6R%iHoXhA^x>*k$l_ZFIkl?5eS zEnhBq+bk~GyeV(p^JzNgPp&-AwB}HhvvIpp_4f8RDW|`CmU38cyPuRj+x*zvwM?hq z&D9TfpU1uC+P0|?cG7i|-mfj+W?b5RSaz4+ww}zg;#q6o-L*Qbb?9BsbL9uwPQ9tq zzLc*v*ju(eN7W=cy=&Ibsx@ZIgsgPTGy4~=YB}DyrSnzIyfddHKLx3>{P5*%DSUYN z&;EqoprZ$*mT^teZIHhL3!mHNhD)d9Ew%S@(_NnXzuO9!bQwHd{an^LB{Ts5(%W>8 literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1BiasLayer-members.html b/doxygen/classcaffe_1_1BiasLayer-members.html new file mode 100644 index 00000000000..fbf4826da0b --- /dev/null +++ b/doxygen/classcaffe_1_1BiasLayer-members.html @@ -0,0 +1,119 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::BiasLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::BiasLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::BiasLayer< Dtype >virtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::BiasLayer< Dtype >virtual
BiasLayer(const LayerParameter &param) (defined in caffe::BiasLayer< Dtype >)caffe::BiasLayer< Dtype >inlineexplicit
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::BiasLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BiasLayer< Dtype >virtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BiasLayer< Dtype >virtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BiasLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::BiasLayer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::BiasLayer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BiasLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::BiasLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1BiasLayer.html b/doxygen/classcaffe_1_1BiasLayer.html new file mode 100644 index 00000000000..6c5791a8a36 --- /dev/null +++ b/doxygen/classcaffe_1_1BiasLayer.html @@ -0,0 +1,431 @@ + + + + + + + +Caffe: caffe::BiasLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::BiasLayer< Dtype > Class Template Reference
+
+
+ +

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. + More...

+ +

#include <bias_layer.hpp>

+
+Inheritance diagram for caffe::BiasLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

BiasLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::BiasLayer< Dtype >

+ +

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. Note: in case bias and scaling are desired, both operations can be handled by ScaleLayer configured with bias_term: true.

+

Member Function Documentation

+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::BiasLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::BiasLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ MaxBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::BiasLayer< Dtype >::MaxBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some maximum number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ MinBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::BiasLayer< Dtype >::MinBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some minimum number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::BiasLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/caffe/layers/bias_layer.hpp
  • +
  • src/caffe/layers/bias_layer.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1BiasLayer.png b/doxygen/classcaffe_1_1BiasLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..a72d32a19682cd07773ad4ff83f5d2a4b2e7d0d0 GIT binary patch literal 706 zcmeAS@N?(olHy`uVBq!ia0vp^3xPO*gBeJ=IX<-jQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;->tV zwTHrQdA~9|lqco+%Q5#*^6A~xn*E>GD4*FcW3}d!#_tUO$mbdHR?%&QWiyPwAW!V1gYoGMRJE~=p$YrG|OJ>Y#xxFpdnES!v zDh8jmFFED=Zwf9~uVM1*v#@{oDz#ySn4*JEw}8SjR}O*8N-Q0jf=oxYa4;rCwJ;d! zIyKBdmj3TCBgiYbo5f%wOjPdS=GK3&E`6=P&hSj~*5ip!zOCX*W!FUh^&H-lx;9ku`EPp`w0)P}k<|I73vUOx?g*X{H1$pBRR4B8@3*IRJ=SuH z*7&XWxX$%P(E`Vay4@j`%S*t4=RIq?T-o`={tcykf3wfa+iv9FTh5oOFD>r1@{i@2 zwH04}-~4{;&bO`M?+$gTe~DWM4fA)G + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::BilinearFiller< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::BilinearFiller< Dtype >, including all inherited members.

+ + + + + + +
BilinearFiller(const FillerParameter &param) (defined in caffe::BilinearFiller< Dtype >)caffe::BilinearFiller< Dtype >inlineexplicit
Fill(Blob< Dtype > *blob) (defined in caffe::BilinearFiller< Dtype >)caffe::BilinearFiller< Dtype >inlinevirtual
Filler(const FillerParameter &param) (defined in caffe::Filler< Dtype >)caffe::Filler< Dtype >inlineexplicit
filler_param_ (defined in caffe::Filler< Dtype >)caffe::Filler< Dtype >protected
~Filler() (defined in caffe::Filler< Dtype >)caffe::Filler< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1BilinearFiller.html b/doxygen/classcaffe_1_1BilinearFiller.html new file mode 100644 index 00000000000..2a81ae83b92 --- /dev/null +++ b/doxygen/classcaffe_1_1BilinearFiller.html @@ -0,0 +1,123 @@ + + + + + + + +Caffe: caffe::BilinearFiller< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::BilinearFiller< Dtype > Class Template Reference
+
+
+ +

Fills a Blob with coefficients for bilinear interpolation. + More...

+ +

#include <filler.hpp>

+
+Inheritance diagram for caffe::BilinearFiller< Dtype >:
+
+
+ + +caffe::Filler< Dtype > + +
+ + + + + + + + + +

+Public Member Functions

BilinearFiller (const FillerParameter &param)
 
+virtual void Fill (Blob< Dtype > *blob)
 
- Public Member Functions inherited from caffe::Filler< Dtype >
Filler (const FillerParameter &param)
 
+ + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::Filler< Dtype >
+FillerParameter filler_param_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::BilinearFiller< Dtype >

+ +

Fills a Blob with coefficients for bilinear interpolation.

+

A common use case is with the DeconvolutionLayer acting as upsampling. You can upsample a feature map with shape of (B, C, H, W) by any integer factor using the following proto.

layer {
name: "upsample", type: "Deconvolution"
bottom: "{{bottom_name}}" top: "{{top_name}}"
convolution_param {
kernel_size: {{2 * factor - factor % 2}} stride: {{factor}}
num_output: {{C}} group: {{C}}
pad: {{ceil((factor - 1) / 2.)}}
weight_filler: { type: "bilinear" } bias_term: false
}
param { lr_mult: 0 decay_mult: 0 }
}

Please use this by replacing {{}} with your values. By specifying num_output: {{C}} group: {{C}}, it behaves as channel-wise convolution. The filter shape of this deconvolution layer will be (C, 1, K, K) where K is kernel_size, and this filler will set a (K, K) interpolation kernel for every channel of the filter identically. The resulting shape of the top feature map will be (B, C, factor * H, factor * W). Note that the learning rate and the weight decay are set to 0 in order to keep coefficient values of bilinear interpolation unchanged during training. If you apply this to an image, this operation is equivalent to the following call in Python with Scikit.Image.

out = skimage.transform.rescale(img, factor, mode='constant', cval=0)

The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classcaffe_1_1BilinearFiller.png b/doxygen/classcaffe_1_1BilinearFiller.png new file mode 100644 index 0000000000000000000000000000000000000000..f6d934dcbbdd338e1097d774cf4c5305a5e3130c GIT binary patch literal 742 zcmeAS@N?(olHy`uVBq!ia0vp^8-O@~gBeKn>GHn=QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;b4?bLx27nl`GgTz-#6k`}12%WUW@)}?w@iW>eeNl z4Zf1x_LjTmJ<|>EryrwEY;Vw>X7Rlst#L9>KHK&k=7s-H9~M7gru@C2N;3D~cDZkQ z6DJ8(yZ*hfR8R4w+pEKx=jNAldcIm5|G%|{qr!ZP%HE~t8Ez*|TT=c-)7#_HdJ~YR z)HbMmy&_x@IW1LzvE(9if=Vyjp9&r~8>tVI%XJ<-Y)GHZ@M1M5&xK%Ni3Q8m3>^G@ z6B_2tI=}!762_`5Cgv|!SlC{yL{aeI2e)F&L>C4LcbJ~JjQ0MI`}zJpNk41G@ah&{ zNp)6FrFFjg0cr7s!%W)`-Tuw?;bk6!sOp0sOSALlpTC|HH7mJ5dYf9T%?rL9{r>oE z@3w{ObF=@r!Mr5u_R+lLMNCT)ZOrZ$&05>5fB7g^THzw( z3jg-|}p+dE;(doB2kxeUq5_$!XUbgQqj(EU}xj zZO?U82D^3A^@{PVHP8KD&Ti=E6 + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::Blob< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::Blob< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
asum_data() constcaffe::Blob< Dtype >
asum_data() const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
asum_data() const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
asum_diff() constcaffe::Blob< Dtype >
asum_diff() const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
asum_diff() const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
Blob() (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >inline
Blob(const int num, const int channels, const int height, const int width)caffe::Blob< Dtype >explicit
Blob(const vector< int > &shape) (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >explicit
CanonicalAxisIndex(int axis_index) constcaffe::Blob< Dtype >inline
capacity_ (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >protected
channels() constcaffe::Blob< Dtype >inline
CopyFrom(const Blob< Dtype > &source, bool copy_diff=false, bool reshape=false)caffe::Blob< Dtype >
count() const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >inline
count(int start_axis, int end_axis) constcaffe::Blob< Dtype >inline
count(int start_axis) constcaffe::Blob< Dtype >inline
count_ (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >protected
cpu_data() const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
cpu_diff() const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
data() const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >inline
data_ (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >protected
data_at(const int n, const int c, const int h, const int w) const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >inline
data_at(const vector< int > &index) const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >inline
diff() const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >inline
diff_ (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >protected
diff_at(const int n, const int c, const int h, const int w) const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >inline
diff_at(const vector< int > &index) const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >inline
DISABLE_COPY_AND_ASSIGN(Blob) (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >protected
FromProto(const BlobProto &proto, bool reshape=true) (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
gpu_data() const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
gpu_diff() const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
gpu_shape() const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
height() constcaffe::Blob< Dtype >inline
LegacyShape(int index) const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >inline
mutable_cpu_data() (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
mutable_cpu_diff() (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
mutable_gpu_data() (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
mutable_gpu_diff() (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
num() constcaffe::Blob< Dtype >inline
num_axes() const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >inline
offset(const int n, const int c=0, const int h=0, const int w=0) const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >inline
offset(const vector< int > &indices) const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >inline
Reshape(const int num, const int channels, const int height, const int width)caffe::Blob< Dtype >
Reshape(const vector< int > &shape)caffe::Blob< Dtype >
Reshape(const BlobShape &shape) (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
ReshapeLike(const Blob &other) (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
scale_data(Dtype scale_factor)caffe::Blob< Dtype >
scale_data(unsigned int scale_factor) (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
scale_data(int scale_factor) (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
scale_diff(Dtype scale_factor)caffe::Blob< Dtype >
scale_diff(unsigned int scale_factor) (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
scale_diff(int scale_factor) (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
set_cpu_data(Dtype *data) (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
shape() const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >inline
shape(int index) constcaffe::Blob< Dtype >inline
shape_ (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >protected
shape_data_ (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >protected
shape_string() const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >inline
ShapeEquals(const BlobProto &other) (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
ShareData(const Blob &other)caffe::Blob< Dtype >
ShareDiff(const Blob &other)caffe::Blob< Dtype >
sumsq_data() constcaffe::Blob< Dtype >
sumsq_data() const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
sumsq_data() const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
sumsq_diff() constcaffe::Blob< Dtype >
sumsq_diff() const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
sumsq_diff() const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
ToProto(BlobProto *proto, bool write_diff=false) const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
ToProto(BlobProto *proto, bool write_diff) const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
ToProto(BlobProto *proto, bool write_diff) const (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
Update() (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
Update() (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
Update() (defined in caffe::Blob< Dtype >)caffe::Blob< Dtype >
width() constcaffe::Blob< Dtype >inline
+ + + + diff --git a/doxygen/classcaffe_1_1Blob.html b/doxygen/classcaffe_1_1Blob.html new file mode 100644 index 00000000000..67ed1a2de22 --- /dev/null +++ b/doxygen/classcaffe_1_1Blob.html @@ -0,0 +1,626 @@ + + + + + + + +Caffe: caffe::Blob< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::Blob< Dtype > Class Template Reference
+
+
+ +

A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers, Nets, and Solvers interact. + More...

+ +

#include <blob.hpp>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Blob (const int num, const int channels, const int height, const int width)
 Deprecated; use Blob(const vector<int>& shape).
 
Blob (const vector< int > &shape)
 
+void Reshape (const int num, const int channels, const int height, const int width)
 Deprecated; use Reshape(const vector<int>& shape).
 
void Reshape (const vector< int > &shape)
 Change the dimensions of the blob, allocating new memory if necessary. More...
 
+void Reshape (const BlobShape &shape)
 
+void ReshapeLike (const Blob &other)
 
+string shape_string () const
 
+const vector< int > & shape () const
 
int shape (int index) const
 Returns the dimension of the index-th axis (or the negative index-th axis from the end, if index is negative). More...
 
+int num_axes () const
 
+int count () const
 
int count (int start_axis, int end_axis) const
 Compute the volume of a slice; i.e., the product of dimensions among a range of axes. More...
 
int count (int start_axis) const
 Compute the volume of a slice spanning from a particular first axis to the final axis. More...
 
int CanonicalAxisIndex (int axis_index) const
 Returns the 'canonical' version of a (usually) user-specified axis, allowing for negative indexing (e.g., -1 for the last axis). More...
 
+int num () const
 Deprecated legacy shape accessor num: use shape(0) instead.
 
+int channels () const
 Deprecated legacy shape accessor channels: use shape(1) instead.
 
+int height () const
 Deprecated legacy shape accessor height: use shape(2) instead.
 
+int width () const
 Deprecated legacy shape accessor width: use shape(3) instead.
 
+int LegacyShape (int index) const
 
+int offset (const int n, const int c=0, const int h=0, const int w=0) const
 
+int offset (const vector< int > &indices) const
 
void CopyFrom (const Blob< Dtype > &source, bool copy_diff=false, bool reshape=false)
 Copy from a source Blob. More...
 
+Dtype data_at (const int n, const int c, const int h, const int w) const
 
+Dtype diff_at (const int n, const int c, const int h, const int w) const
 
+Dtype data_at (const vector< int > &index) const
 
+Dtype diff_at (const vector< int > &index) const
 
+const shared_ptr< SyncedMemory > & data () const
 
+const shared_ptr< SyncedMemory > & diff () const
 
+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
 
+Dtype * mutable_cpu_data ()
 
+Dtype * mutable_gpu_data ()
 
+Dtype * mutable_cpu_diff ()
 
+Dtype * mutable_gpu_diff ()
 
+void Update ()
 
+void FromProto (const BlobProto &proto, bool reshape=true)
 
+void ToProto (BlobProto *proto, bool write_diff=false) const
 
+Dtype asum_data () const
 Compute the sum of absolute values (L1 norm) of the data.
 
+Dtype asum_diff () const
 Compute the sum of absolute values (L1 norm) of the diff.
 
+Dtype sumsq_data () const
 Compute the sum of squares (L2 norm squared) of the data.
 
+Dtype sumsq_diff () const
 Compute the sum of squares (L2 norm squared) of the diff.
 
+void scale_data (Dtype scale_factor)
 Scale the blob data by a constant factor.
 
+void scale_diff (Dtype scale_factor)
 Scale the blob diff by a constant factor.
 
void ShareData (const Blob &other)
 Set the data_ shared_ptr to point to the SyncedMemory holding the data_ of Blob other – useful in Layers which simply perform a copy in their Forward pass. More...
 
void ShareDiff (const Blob &other)
 Set the diff_ shared_ptr to point to the SyncedMemory holding the diff_ of Blob other – useful in Layers which simply perform a copy in their Forward pass. More...
 
+bool ShapeEquals (const BlobProto &other)
 
+template<>
void Update ()
 
+template<>
void Update ()
 
+template<>
unsigned int asum_data () const
 
+template<>
int asum_data () const
 
+template<>
unsigned int asum_diff () const
 
+template<>
int asum_diff () const
 
+template<>
unsigned int sumsq_data () const
 
+template<>
int sumsq_data () const
 
+template<>
unsigned int sumsq_diff () const
 
+template<>
int sumsq_diff () const
 
+template<>
void scale_data (unsigned int scale_factor)
 
+template<>
void scale_data (int scale_factor)
 
+template<>
void scale_diff (unsigned int scale_factor)
 
+template<>
void scale_diff (int scale_factor)
 
+template<>
void ToProto (BlobProto *proto, bool write_diff) const
 
+template<>
void ToProto (BlobProto *proto, bool write_diff) const
 
+ + + +

+Protected Member Functions

DISABLE_COPY_AND_ASSIGN (Blob)
 
+ + + + + + + + + + + + + +

+Protected Attributes

+shared_ptr< SyncedMemorydata_
 
+shared_ptr< SyncedMemorydiff_
 
+shared_ptr< SyncedMemoryshape_data_
 
+vector< int > shape_
 
+int count_
 
+int capacity_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::Blob< Dtype >

+ +

A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers, Nets, and Solvers interact.

+

TODO(dox): more thorough description.

+

Member Function Documentation

+ +

§ CanonicalAxisIndex()

+ +
+
+
+template<typename Dtype>
+ + + + + +
+ + + + + + + + +
int caffe::Blob< Dtype >::CanonicalAxisIndex (int axis_index) const
+
+inline
+
+ +

Returns the 'canonical' version of a (usually) user-specified axis, allowing for negative indexing (e.g., -1 for the last axis).

+
Parameters
+ + +
axis_indexthe axis index. If 0 <= index < num_axes(), return index. If -num_axes <= index <= -1, return (num_axes() - (-index)), e.g., the last axis index (num_axes() - 1) if index == -1, the second to last if index == -2, etc. Dies on out of range index.
+
+
+ +
+
+ +

§ CopyFrom()

+ +
+
+
+template<typename Dtype>
+ + + + + + + + + + + + + + + + + + + + + + + + +
void caffe::Blob< Dtype >::CopyFrom (const Blob< Dtype > & source,
bool copy_diff = false,
bool reshape = false 
)
+
+ +

Copy from a source Blob.

+
Parameters
+ + + + +
sourcethe Blob to copy from
copy_diffif false, copy the data; if true, copy the diff
reshapeif false, require this Blob to be pre-shaped to the shape of other (and die otherwise); if true, Reshape this Blob to other's shape if necessary
+
+
+ +
+
+ +

§ count() [1/2]

+ +
+
+
+template<typename Dtype>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
int caffe::Blob< Dtype >::count (int start_axis,
int end_axis 
) const
+
+inline
+
+ +

Compute the volume of a slice; i.e., the product of dimensions among a range of axes.

+
Parameters
+ + + +
start_axisThe first axis to include in the slice.
end_axisThe first axis to exclude from the slice.
+
+
+ +
+
+ +

§ count() [2/2]

+ +
+
+
+template<typename Dtype>
+ + + + + +
+ + + + + + + + +
int caffe::Blob< Dtype >::count (int start_axis) const
+
+inline
+
+ +

Compute the volume of a slice spanning from a particular first axis to the final axis.

+
Parameters
+ + +
start_axisThe first axis to include in the slice.
+
+
+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + + + + +
void caffe::Blob< Dtype >::Reshape (const vector< int > & shape)
+
+ +

Change the dimensions of the blob, allocating new memory if necessary.

+

This function can be called both to create an initial allocation of memory, and to adjust the dimensions of a top blob during Layer::Reshape or Layer::Forward. When changing the size of blob, memory will only be reallocated if sufficient memory does not already exist, and excess memory will never be freed.

+

Note that reshaping an input blob and immediately calling Net::Backward is an error; either Net::Forward or Net::Reshape need to be called to propagate the new input shape to higher layers.

+ +
+
+ +

§ shape()

+ +
+
+
+template<typename Dtype>
+ + + + + +
+ + + + + + + + +
int caffe::Blob< Dtype >::shape (int index) const
+
+inline
+
+ +

Returns the dimension of the index-th axis (or the negative index-th axis from the end, if index is negative).

+
Parameters
+ + +
indexthe axis index, which may be negative as it will be "canonicalized" using CanonicalAxisIndex. Dies on out of range index.
+
+
+ +
+
+ +

§ ShareData()

+ +
+
+
+template<typename Dtype >
+ + + + + + + + +
void caffe::Blob< Dtype >::ShareData (const Blob< Dtype > & other)
+
+ +

Set the data_ shared_ptr to point to the SyncedMemory holding the data_ of Blob other – useful in Layers which simply perform a copy in their Forward pass.

+

This deallocates the SyncedMemory holding this Blob's data_, as shared_ptr calls its destructor when reset with the "=" operator.

+ +
+
+ +

§ ShareDiff()

+ +
+
+
+template<typename Dtype >
+ + + + + + + + +
void caffe::Blob< Dtype >::ShareDiff (const Blob< Dtype > & other)
+
+ +

Set the diff_ shared_ptr to point to the SyncedMemory holding the diff_ of Blob other – useful in Layers which simply perform a copy in their Forward pass.

+

This deallocates the SyncedMemory holding this Blob's diff_, as shared_ptr calls its destructor when reset with the "=" operator.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/caffe/blob.hpp
  • +
  • src/caffe/blob.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1BlockingQueue-members.html b/doxygen/classcaffe_1_1BlockingQueue-members.html new file mode 100644 index 00000000000..c46483480ae --- /dev/null +++ b/doxygen/classcaffe_1_1BlockingQueue-members.html @@ -0,0 +1,90 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::BlockingQueue< T > Member List
+
+
+ +

This is the complete list of members for caffe::BlockingQueue< T >, including all inherited members.

+ + + + + + + + + + + +
BlockingQueue() (defined in caffe::BlockingQueue< T >)caffe::BlockingQueue< T >explicit
DISABLE_COPY_AND_ASSIGN(BlockingQueue) (defined in caffe::BlockingQueue< T >)caffe::BlockingQueue< T >protected
peek() (defined in caffe::BlockingQueue< T >)caffe::BlockingQueue< T >
pop(const string &log_on_wait="") (defined in caffe::BlockingQueue< T >)caffe::BlockingQueue< T >
push(const T &t) (defined in caffe::BlockingQueue< T >)caffe::BlockingQueue< T >
queue_ (defined in caffe::BlockingQueue< T >)caffe::BlockingQueue< T >protected
size() const (defined in caffe::BlockingQueue< T >)caffe::BlockingQueue< T >
sync_ (defined in caffe::BlockingQueue< T >)caffe::BlockingQueue< T >protected
try_peek(T *t) (defined in caffe::BlockingQueue< T >)caffe::BlockingQueue< T >
try_pop(T *t) (defined in caffe::BlockingQueue< T >)caffe::BlockingQueue< T >
+ + + + diff --git a/doxygen/classcaffe_1_1BlockingQueue.html b/doxygen/classcaffe_1_1BlockingQueue.html new file mode 100644 index 00000000000..a5c63229ee4 --- /dev/null +++ b/doxygen/classcaffe_1_1BlockingQueue.html @@ -0,0 +1,129 @@ + + + + + + + +Caffe: caffe::BlockingQueue< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::BlockingQueue< T > Class Template Reference
+
+
+ + + + +

+Classes

class  sync
 
+ + + + + + + + + + + + + +

+Public Member Functions

+void push (const T &t)
 
+bool try_pop (T *t)
 
+T pop (const string &log_on_wait="")
 
+bool try_peek (T *t)
 
+T peek ()
 
+size_t size () const
 
+ + + +

+Protected Member Functions

DISABLE_COPY_AND_ASSIGN (BlockingQueue)
 
+ + + + + +

+Protected Attributes

+std::queue< T > queue_
 
+shared_ptr< syncsync_
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1BlockingQueue_1_1sync-members.html b/doxygen/classcaffe_1_1BlockingQueue_1_1sync-members.html new file mode 100644 index 00000000000..76bedc2b5a1 --- /dev/null +++ b/doxygen/classcaffe_1_1BlockingQueue_1_1sync-members.html @@ -0,0 +1,82 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::BlockingQueue< T >::sync Member List
+
+
+ +

This is the complete list of members for caffe::BlockingQueue< T >::sync, including all inherited members.

+ + + +
condition_ (defined in caffe::BlockingQueue< T >::sync)caffe::BlockingQueue< T >::sync
mutex_ (defined in caffe::BlockingQueue< T >::sync)caffe::BlockingQueue< T >::syncmutable
+ + + + diff --git a/doxygen/classcaffe_1_1BlockingQueue_1_1sync.html b/doxygen/classcaffe_1_1BlockingQueue_1_1sync.html new file mode 100644 index 00000000000..9371a9d41f2 --- /dev/null +++ b/doxygen/classcaffe_1_1BlockingQueue_1_1sync.html @@ -0,0 +1,93 @@ + + + + + + + +Caffe: caffe::BlockingQueue< T >::sync Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::BlockingQueue< T >::sync Class Reference
+
+
+ + + + + + +

+Public Attributes

+boost::mutex mutex_
 
+boost::condition_variable condition_
 
+
The documentation for this class was generated from the following file:
    +
  • src/caffe/util/blocking_queue.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1CPUTimer-members.html b/doxygen/classcaffe_1_1CPUTimer-members.html new file mode 100644 index 00000000000..2aceb4d2932 --- /dev/null +++ b/doxygen/classcaffe_1_1CPUTimer-members.html @@ -0,0 +1,102 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::CPUTimer Member List
+
+
+ +

This is the complete list of members for caffe::CPUTimer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
CPUTimer() (defined in caffe::CPUTimer)caffe::CPUTimerexplicit
elapsed_microseconds_ (defined in caffe::Timer)caffe::Timerprotected
elapsed_milliseconds_ (defined in caffe::Timer)caffe::Timerprotected
has_run_at_least_once() (defined in caffe::Timer)caffe::Timerinline
has_run_at_least_once_ (defined in caffe::Timer)caffe::Timerprotected
Init() (defined in caffe::Timer)caffe::Timerprotected
initted() (defined in caffe::Timer)caffe::Timerinline
initted_ (defined in caffe::Timer)caffe::Timerprotected
MicroSeconds() (defined in caffe::CPUTimer)caffe::CPUTimervirtual
MilliSeconds() (defined in caffe::CPUTimer)caffe::CPUTimervirtual
running() (defined in caffe::Timer)caffe::Timerinline
running_ (defined in caffe::Timer)caffe::Timerprotected
Seconds() (defined in caffe::Timer)caffe::Timervirtual
Start() (defined in caffe::CPUTimer)caffe::CPUTimervirtual
start_cpu_ (defined in caffe::Timer)caffe::Timerprotected
start_gpu_ (defined in caffe::Timer)caffe::Timerprotected
Stop() (defined in caffe::CPUTimer)caffe::CPUTimervirtual
stop_cpu_ (defined in caffe::Timer)caffe::Timerprotected
stop_gpu_ (defined in caffe::Timer)caffe::Timerprotected
Timer() (defined in caffe::Timer)caffe::Timer
~CPUTimer() (defined in caffe::CPUTimer)caffe::CPUTimerinlinevirtual
~Timer() (defined in caffe::Timer)caffe::Timervirtual
+ + + + diff --git a/doxygen/classcaffe_1_1CPUTimer.html b/doxygen/classcaffe_1_1CPUTimer.html new file mode 100644 index 00000000000..a4f5a259633 --- /dev/null +++ b/doxygen/classcaffe_1_1CPUTimer.html @@ -0,0 +1,157 @@ + + + + + + + +Caffe: caffe::CPUTimer Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::CPUTimer Class Reference
+
+
+
+Inheritance diagram for caffe::CPUTimer:
+
+
+ + +caffe::Timer + +
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+virtual void Start ()
 
+virtual void Stop ()
 
+virtual float MilliSeconds ()
 
+virtual float MicroSeconds ()
 
- Public Member Functions inherited from caffe::Timer
+virtual float Seconds ()
 
+bool initted ()
 
+bool running ()
 
+bool has_run_at_least_once ()
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from caffe::Timer
+void Init ()
 
- Protected Attributes inherited from caffe::Timer
+bool initted_
 
+bool running_
 
+bool has_run_at_least_once_
 
+cudaEvent_t start_gpu_
 
+cudaEvent_t stop_gpu_
 
+boost::posix_time::ptime start_cpu_
 
+boost::posix_time::ptime stop_cpu_
 
+float elapsed_milliseconds_
 
+float elapsed_microseconds_
 
+
The documentation for this class was generated from the following files:
    +
  • include/caffe/util/benchmark.hpp
  • +
  • src/caffe/util/benchmark.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1CPUTimer.png b/doxygen/classcaffe_1_1CPUTimer.png new file mode 100644 index 0000000000000000000000000000000000000000..2f48d491e11e82983c9a7822765149b9a61a5822 GIT binary patch literal 498 zcmVvTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0004jNkliv(r4IjY-(#F+>T~&@UC6M4}>`{LcV~h(#6cM>y&Jhu@>pyWq z$m*8TCH<<1$cZj+wpf#Rmk}>GTdH+PX{UKv)tv2p{!zPTDNH%#1pT0<6_F=f8r^rZ zlb&+gzI zyTl#F*|&hc8z-ljhm>7Sy~oUWdSzcO;mWR^Q%=wiYFhWd;cWSJ0rv2U)507$$Mf|4 z>B%i8y?Nl|5G@^5xZ&XyN2fC3OzL*hpZDkKKfThQSzkV^oAz5?RJKtj>N{4eI&hlb o{QnK$Q#l8~t}o<-5W@ZX0fAx`hRe&Gn*aa+07*qoM6N<$f(TOPdH?_b literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1Caffe-members.html b/doxygen/classcaffe_1_1Caffe-members.html new file mode 100644 index 00000000000..876f8c635e1 --- /dev/null +++ b/doxygen/classcaffe_1_1Caffe-members.html @@ -0,0 +1,105 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::Caffe Member List
+
+
+ +

This is the complete list of members for caffe::Caffe, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Brew enum name (defined in caffe::Caffe)caffe::Caffe
CheckDevice(const int device_id) (defined in caffe::Caffe)caffe::Caffestatic
CPU enum value (defined in caffe::Caffe)caffe::Caffe
cublas_handle() (defined in caffe::Caffe)caffe::Caffeinlinestatic
cublas_handle_ (defined in caffe::Caffe)caffe::Caffeprotected
curand_generator() (defined in caffe::Caffe)caffe::Caffeinlinestatic
curand_generator_ (defined in caffe::Caffe)caffe::Caffeprotected
DeviceQuery() (defined in caffe::Caffe)caffe::Caffestatic
FindDevice(const int start_id=0) (defined in caffe::Caffe)caffe::Caffestatic
Get() (defined in caffe::Caffe)caffe::Caffestatic
GPU enum value (defined in caffe::Caffe)caffe::Caffe
mode() (defined in caffe::Caffe)caffe::Caffeinlinestatic
mode_ (defined in caffe::Caffe)caffe::Caffeprotected
random_generator_ (defined in caffe::Caffe)caffe::Caffeprotected
rng_stream() (defined in caffe::Caffe)caffe::Caffeinlinestatic
root_solver() (defined in caffe::Caffe)caffe::Caffeinlinestatic
root_solver_ (defined in caffe::Caffe)caffe::Caffeprotected
set_mode(Brew mode) (defined in caffe::Caffe)caffe::Caffeinlinestatic
set_random_seed(const unsigned int seed) (defined in caffe::Caffe)caffe::Caffestatic
set_root_solver(bool val) (defined in caffe::Caffe)caffe::Caffeinlinestatic
set_solver_count(int val) (defined in caffe::Caffe)caffe::Caffeinlinestatic
SetDevice(const int device_id) (defined in caffe::Caffe)caffe::Caffestatic
solver_count() (defined in caffe::Caffe)caffe::Caffeinlinestatic
solver_count_ (defined in caffe::Caffe)caffe::Caffeprotected
~Caffe() (defined in caffe::Caffe)caffe::Caffe
+ + + + diff --git a/doxygen/classcaffe_1_1Caffe.html b/doxygen/classcaffe_1_1Caffe.html new file mode 100644 index 00000000000..646d0f15bd7 --- /dev/null +++ b/doxygen/classcaffe_1_1Caffe.html @@ -0,0 +1,169 @@ + + + + + + + +Caffe: caffe::Caffe Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ + + + +

+Classes

class  RNG
 
+ + + +

+Public Types

enum  Brew { CPU, +GPU + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

+static CaffeGet ()
 
+static RNGrng_stream ()
 
+static cublasHandle_t cublas_handle ()
 
+static curandGenerator_t curand_generator ()
 
+static Brew mode ()
 
+static void set_mode (Brew mode)
 
+static void set_random_seed (const unsigned int seed)
 
+static void SetDevice (const int device_id)
 
+static void DeviceQuery ()
 
+static bool CheckDevice (const int device_id)
 
+static int FindDevice (const int start_id=0)
 
+static int solver_count ()
 
+static void set_solver_count (int val)
 
+static bool root_solver ()
 
+static void set_root_solver (bool val)
 
+ + + + + + + + + + + + + +

+Protected Attributes

+cublasHandle_t cublas_handle_
 
+curandGenerator_t curand_generator_
 
+shared_ptr< RNGrandom_generator_
 
+Brew mode_
 
+int solver_count_
 
+bool root_solver_
 
+
The documentation for this class was generated from the following files:
    +
  • include/caffe/common.hpp
  • +
  • src/caffe/common.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1Caffe_1_1RNG-members.html b/doxygen/classcaffe_1_1Caffe_1_1RNG-members.html new file mode 100644 index 00000000000..b95b6cd6800 --- /dev/null +++ b/doxygen/classcaffe_1_1Caffe_1_1RNG-members.html @@ -0,0 +1,85 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::Caffe::RNG Member List
+
+
+ +

This is the complete list of members for caffe::Caffe::RNG, including all inherited members.

+ + + + + + +
generator() (defined in caffe::Caffe::RNG)caffe::Caffe::RNG
operator=(const RNG &) (defined in caffe::Caffe::RNG)caffe::Caffe::RNG
RNG() (defined in caffe::Caffe::RNG)caffe::Caffe::RNG
RNG(unsigned int seed) (defined in caffe::Caffe::RNG)caffe::Caffe::RNGexplicit
RNG(const RNG &) (defined in caffe::Caffe::RNG)caffe::Caffe::RNGexplicit
+ + + + diff --git a/doxygen/classcaffe_1_1Caffe_1_1RNG.html b/doxygen/classcaffe_1_1Caffe_1_1RNG.html new file mode 100644 index 00000000000..79d36d90686 --- /dev/null +++ b/doxygen/classcaffe_1_1Caffe_1_1RNG.html @@ -0,0 +1,106 @@ + + + + + + + +Caffe: caffe::Caffe::RNG Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::Caffe::RNG Class Reference
+
+
+ + + + +

+Classes

class  Generator
 
+ + + + + + + + + +

+Public Member Functions

RNG (unsigned int seed)
 
RNG (const RNG &)
 
+RNGoperator= (const RNG &)
 
+void * generator ()
 
+
The documentation for this class was generated from the following files:
    +
  • include/caffe/common.hpp
  • +
  • src/caffe/common.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1Caffe_1_1RNG_1_1Generator-members.html b/doxygen/classcaffe_1_1Caffe_1_1RNG_1_1Generator-members.html new file mode 100644 index 00000000000..61ed8d06f6f --- /dev/null +++ b/doxygen/classcaffe_1_1Caffe_1_1RNG_1_1Generator-members.html @@ -0,0 +1,83 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::Caffe::RNG::Generator Member List
+
+
+ +

This is the complete list of members for caffe::Caffe::RNG::Generator, including all inherited members.

+ + + + +
Generator() (defined in caffe::Caffe::RNG::Generator)caffe::Caffe::RNG::Generatorinline
Generator(unsigned int seed) (defined in caffe::Caffe::RNG::Generator)caffe::Caffe::RNG::Generatorinlineexplicit
rng() (defined in caffe::Caffe::RNG::Generator)caffe::Caffe::RNG::Generatorinline
+ + + + diff --git a/doxygen/classcaffe_1_1Caffe_1_1RNG_1_1Generator.html b/doxygen/classcaffe_1_1Caffe_1_1RNG_1_1Generator.html new file mode 100644 index 00000000000..ad228175b1c --- /dev/null +++ b/doxygen/classcaffe_1_1Caffe_1_1RNG_1_1Generator.html @@ -0,0 +1,93 @@ + + + + + + + +Caffe: caffe::Caffe::RNG::Generator Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::Caffe::RNG::Generator Class Reference
+
+
+ + + + + + +

+Public Member Functions

Generator (unsigned int seed)
 
+caffe::rng_t * rng ()
 
+
The documentation for this class was generated from the following file:
    +
  • src/caffe/common.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1ConcatLayer-members.html b/doxygen/classcaffe_1_1ConcatLayer-members.html new file mode 100644 index 00000000000..c346a6cb422 --- /dev/null +++ b/doxygen/classcaffe_1_1ConcatLayer-members.html @@ -0,0 +1,123 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::ConcatLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::ConcatLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::ConcatLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::ConcatLayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
concat_axis_ (defined in caffe::ConcatLayer< Dtype >)caffe::ConcatLayer< Dtype >protected
concat_input_size_ (defined in caffe::ConcatLayer< Dtype >)caffe::ConcatLayer< Dtype >protected
ConcatLayer(const LayerParameter &param) (defined in caffe::ConcatLayer< Dtype >)caffe::ConcatLayer< Dtype >inlineexplicit
count_ (defined in caffe::ConcatLayer< Dtype >)caffe::ConcatLayer< Dtype >protected
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::ConcatLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ConcatLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ConcatLayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ConcatLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::ConcatLayer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
num_concats_ (defined in caffe::ConcatLayer< Dtype >)caffe::ConcatLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ConcatLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::ConcatLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1ConcatLayer.html b/doxygen/classcaffe_1_1ConcatLayer.html new file mode 100644 index 00000000000..5f17d6e7147 --- /dev/null +++ b/doxygen/classcaffe_1_1ConcatLayer.html @@ -0,0 +1,529 @@ + + + + + + + +Caffe: caffe::ConcatLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::ConcatLayer< Dtype > Class Template Reference
+
+
+ +

Takes at least two Blobs and concatenates them along either the num or channel dimension, outputting the result. + More...

+ +

#include <concat_layer.hpp>

+
+Inheritance diagram for caffe::ConcatLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ConcatLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Computes the error gradient w.r.t. the concatenate inputs. More...
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+int count_
 
+int num_concats_
 
+int concat_input_size_
 
+int concat_axis_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::ConcatLayer< Dtype >

+ +

Takes at least two Blobs and concatenates them along either the num or channel dimension, outputting the result.

+

Member Function Documentation

+ +

§ Backward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void caffe::ConcatLayer< Dtype >::Backward_cpu (const vector< Blob< Dtype > *> & top,
const vector< bool > & propagate_down,
const vector< Blob< Dtype > *> & bottom 
)
+
+protectedvirtual
+
+ +

Computes the error gradient w.r.t. the concatenate inputs.

+
Parameters
+ + + + +
topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
    +
  1. $ (KN \times C \times H \times W) $ if axis == 0, or $ (N \times KC \times H \times W) $ if axis == 1: containing error gradients $ \frac{\partial E}{\partial y} $ with respect to concatenated outputs $ y $
  2. +
+
propagate_downsee Layer::Backward.
bottominput Blob vector (length K), into which the top gradient $ \frac{\partial E}{\partial y} $ is deconcatenated back to the inputs $ \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} $
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::ConcatLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::ConcatLayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+
Parameters
+ + + +
bottominput Blob vector (length 2+)
    +
  1. $ (N \times C \times H \times W) $ the inputs $ x_1 $
  2. +
  3. $ (N \times C \times H \times W) $ the inputs $ x_2 $
  4. +
  5. ...
  6. +
+
    +
  • K $ (N \times C \times H \times W) $ the inputs $ x_K $
  • +
+
topoutput Blob vector (length 1)
    +
  1. $ (KN \times C \times H \times W) $ if axis == 0, or $ (N \times KC \times H \times W) $ if axis == 1: the concatenated output $ y = [\begin{array}{cccc} x_1 & x_2 & ... & x_K \end{array}] $
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::ConcatLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ MinBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::ConcatLayer< Dtype >::MinBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some minimum number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::ConcatLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1ConcatLayer.png b/doxygen/classcaffe_1_1ConcatLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..46ff253b6799b49d013871454baeeb7cf472fd1f GIT binary patch literal 723 zcmeAS@N?(olHy`uVBq!ia0vp^8-X~0gBeIBzE8OTq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0l001;Ln;{G&P_c3NrA_ezr6GRfA#%Z zIU;6iHXGL~9(-e!xOC3eEp@54x8-VW^t|K}b!5_$)vh|8`=k{46j#ldydaP2KL4D0|M`rGC#@XtDGqi?d=!UY=ZMJ4H20#?}1f7gGak&r9rgh2-Pj zp5?ima@$BzZvEDJ>B~tWv%D`w%6EP~-}U3zk_}d>OH}m2OAN{dk2e`=p4anNyS8ZE zm986VXMXKTf2X*w>&{kBtDQ$RGmhMt@$B%|sS@VrKe8t!ht7L^>dWruH@s341xaZMl*MQiJldH zBsFQR*JNYwjh`-sK72c6$FbewnYn_;oeWle#C5J=-l@=S9Yvd zy5xSxN;I?kk%&oBj*mZUjqKxRmg`>qy0oqNMuqnI!qi*keYr!VZU zH|1;9@^5GC-YNgw_BSw4CbN~jc=6+ZV};0%=SL17*xzq>KzwTlV+{yT{Z-4McxF+3 Y*Jag>;$93wz!b>f>FVdQ&MBb@07f-bR{#J2 literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1ConstantFiller-members.html b/doxygen/classcaffe_1_1ConstantFiller-members.html new file mode 100644 index 00000000000..77a58980d78 --- /dev/null +++ b/doxygen/classcaffe_1_1ConstantFiller-members.html @@ -0,0 +1,85 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::ConstantFiller< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::ConstantFiller< Dtype >, including all inherited members.

+ + + + + + +
ConstantFiller(const FillerParameter &param) (defined in caffe::ConstantFiller< Dtype >)caffe::ConstantFiller< Dtype >inlineexplicit
Fill(Blob< Dtype > *blob) (defined in caffe::ConstantFiller< Dtype >)caffe::ConstantFiller< Dtype >inlinevirtual
Filler(const FillerParameter &param) (defined in caffe::Filler< Dtype >)caffe::Filler< Dtype >inlineexplicit
filler_param_ (defined in caffe::Filler< Dtype >)caffe::Filler< Dtype >protected
~Filler() (defined in caffe::Filler< Dtype >)caffe::Filler< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1ConstantFiller.html b/doxygen/classcaffe_1_1ConstantFiller.html new file mode 100644 index 00000000000..a1b86123e4e --- /dev/null +++ b/doxygen/classcaffe_1_1ConstantFiller.html @@ -0,0 +1,123 @@ + + + + + + + +Caffe: caffe::ConstantFiller< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::ConstantFiller< Dtype > Class Template Reference
+
+
+ +

Fills a Blob with constant values $ x = 0 $. + More...

+ +

#include <filler.hpp>

+
+Inheritance diagram for caffe::ConstantFiller< Dtype >:
+
+
+ + +caffe::Filler< Dtype > + +
+ + + + + + + + + +

+Public Member Functions

ConstantFiller (const FillerParameter &param)
 
+virtual void Fill (Blob< Dtype > *blob)
 
- Public Member Functions inherited from caffe::Filler< Dtype >
Filler (const FillerParameter &param)
 
+ + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::Filler< Dtype >
+FillerParameter filler_param_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::ConstantFiller< Dtype >

+ +

Fills a Blob with constant values $ x = 0 $.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classcaffe_1_1ConstantFiller.png b/doxygen/classcaffe_1_1ConstantFiller.png new file mode 100644 index 0000000000000000000000000000000000000000..e13961f4ab1e51ce98b20bf270285942a715f68a GIT binary patch literal 757 zcmeAS@N?(olHy`uVBq!ia0vp^+kiNLgBeIR8`rM{QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;Da*+YHvtN+}!f2``M z+gGZ8-Q!ZVUY7m5aNEm1doJ4XDtd-jtd|wu^4wD9aq_jy=Q+!lRPC?b(r)oap82zg z=c|Wn%eeCG&s=zN-S^G6l^f=4<9+e}ut7N%8H(W&hrXAP)BX6hw%g)_@!A!d*_xbFNf9wNq zZ=3vtkVQqPtXLpJv~Bw!-_8>%It;NniHs zdMZv#w zSaxW$?pr5&zx@2?+JBbYUYg$jR(-tg$p3=N+qOT02BrPy4d)L=ub;%UJh{6b zRfTMsK}thT4U#DvB1sG|J%V>gTe~ HDWM4fydiWQ literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1ContrastiveLossLayer-members.html b/doxygen/classcaffe_1_1ContrastiveLossLayer-members.html new file mode 100644 index 00000000000..ed6b233cc5c --- /dev/null +++ b/doxygen/classcaffe_1_1ContrastiveLossLayer-members.html @@ -0,0 +1,124 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::ContrastiveLossLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::ContrastiveLossLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::ContrastiveLossLayer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::LossLayer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::ContrastiveLossLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::ContrastiveLossLayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
ContrastiveLossLayer(const LayerParameter &param) (defined in caffe::ContrastiveLossLayer< Dtype >)caffe::ContrastiveLossLayer< Dtype >inlineexplicit
diff_ (defined in caffe::ContrastiveLossLayer< Dtype >)caffe::ContrastiveLossLayer< Dtype >protected
diff_sq_ (defined in caffe::ContrastiveLossLayer< Dtype >)caffe::ContrastiveLossLayer< Dtype >protected
dist_sq_ (defined in caffe::ContrastiveLossLayer< Dtype >)caffe::ContrastiveLossLayer< Dtype >protected
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::ContrastiveLossLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::LossLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ContrastiveLossLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ContrastiveLossLayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ContrastiveLossLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
LossLayer(const LayerParameter &param) (defined in caffe::LossLayer< Dtype >)caffe::LossLayer< Dtype >inlineexplicit
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::LossLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
summer_vec_ (defined in caffe::ContrastiveLossLayer< Dtype >)caffe::ContrastiveLossLayer< Dtype >protected
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::ContrastiveLossLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1ContrastiveLossLayer.html b/doxygen/classcaffe_1_1ContrastiveLossLayer.html new file mode 100644 index 00000000000..ab2b0a21f11 --- /dev/null +++ b/doxygen/classcaffe_1_1ContrastiveLossLayer.html @@ -0,0 +1,503 @@ + + + + + + + +Caffe: caffe::ContrastiveLossLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::ContrastiveLossLayer< Dtype > Class Template Reference
+
+
+ +

Computes the contrastive loss $ 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 $ where $ d = \left| \left| a_n - b_n \right| \right|_2 $. This can be used to train siamese networks. + More...

+ +

#include <contrastive_loss_layer.hpp>

+
+Inheritance diagram for caffe::ContrastiveLossLayer< Dtype >:
+
+
+ + +caffe::LossLayer< Dtype > +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ContrastiveLossLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual bool AllowForceBackward (const int bottom_index) const
 
- Public Member Functions inherited from caffe::LossLayer< Dtype >
LossLayer (const LayerParameter &param)
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual bool AutoTopBlobs () const
 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 int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Computes the contrastive loss $ 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 $ where $ d = \left| \left| a_n - b_n \right| \right|_2 $. This can be used to train siamese networks. More...
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Computes the Contrastive error gradient w.r.t. the inputs. More...
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+Blob< Dtype > diff_
 
+Blob< Dtype > dist_sq_
 
+Blob< Dtype > diff_sq_
 
+Blob< Dtype > summer_vec_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::ContrastiveLossLayer< Dtype >

+ +

Computes the contrastive loss $ 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 $ where $ d = \left| \left| a_n - b_n \right| \right|_2 $. This can be used to train siamese networks.

+
Parameters
+ + + +
bottominput Blob vector (length 3)
    +
  1. $ (N \times C \times 1 \times 1) $ the features $ a \in [-\infty, +\infty]$
  2. +
  3. $ (N \times C \times 1 \times 1) $ the features $ b \in [-\infty, +\infty]$
  4. +
  5. $ (N \times 1 \times 1 \times 1) $ the binary similarity $ s \in [0, 1]$
  6. +
+
topoutput Blob vector (length 1)
    +
  1. $ (1 \times 1 \times 1 \times 1) $ the computed contrastive loss: $ 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 $ where $ d = \left| \left| a_n - b_n \right| \right|_2 $. This can be used to train siamese networks.
  2. +
+
+
+
+

Member Function Documentation

+ +

§ AllowForceBackward()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + +
virtual bool caffe::ContrastiveLossLayer< Dtype >::AllowForceBackward (const int bottom_index) const
+
+inlinevirtual
+
+

Unlike most loss layers, in the ContrastiveLossLayer we can backpropagate to the first two inputs.

+ +

Reimplemented from caffe::LossLayer< Dtype >.

+ +
+
+ +

§ Backward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void caffe::ContrastiveLossLayer< Dtype >::Backward_cpu (const vector< Blob< Dtype > *> & top,
const vector< bool > & propagate_down,
const vector< Blob< Dtype > *> & bottom 
)
+
+protectedvirtual
+
+ +

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]).

+
Parameters
+ + + + +
topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
    +
  1. $ (1 \times 1 \times 1 \times 1) $ This Blob's diff will simply contain the loss_weight* $ \lambda $, as $ \lambda $ is the coefficient of this layer's output $\ell_i$ in the overall Net loss $ E = \lambda_i \ell_i + \mbox{other loss terms}$; hence $ \frac{\partial E}{\partial \ell_i} = \lambda_i $. (*Assuming that this top Blob is not used as a bottom (input) by any other layer of the Net.)
  2. +
+
propagate_downsee Layer::Backward.
bottominput Blob vector (length 2)
    +
  1. $ (N \times C \times 1 \times 1) $ the features $a$; Backward fills their diff with gradients if propagate_down[0]
  2. +
  3. $ (N \times C \times 1 \times 1) $ the features $b$; Backward fills their diff with gradients if propagate_down[1]
  4. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::ContrastiveLossLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::LossLayer< Dtype >.

+ +
+
+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::ContrastiveLossLayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+ +

Computes the contrastive loss $ 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 $ where $ d = \left| \left| a_n - b_n \right| \right|_2 $. This can be used to train siamese networks.

+
Parameters
+ + + +
bottominput Blob vector (length 3)
    +
  1. $ (N \times C \times 1 \times 1) $ the features $ a \in [-\infty, +\infty]$
  2. +
  3. $ (N \times C \times 1 \times 1) $ the features $ b \in [-\infty, +\infty]$
  4. +
  5. $ (N \times 1 \times 1 \times 1) $ the binary similarity $ s \in [0, 1]$
  6. +
+
topoutput Blob vector (length 1)
    +
  1. $ (1 \times 1 \times 1 \times 1) $ the computed contrastive loss: $ 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 $ where $ d = \left| \left| a_n - b_n \right| \right|_2 $. This can be used to train siamese networks.
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::ContrastiveLossLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::LossLayer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1ContrastiveLossLayer.png b/doxygen/classcaffe_1_1ContrastiveLossLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..d6b674d3d1ff37a80d741a36d15f8e941d89b09f GIT binary patch literal 1151 zcmeAS@N?(olHy`uVBq!ia0vp^kAb*@gBeIFC9io7q$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IYL_&i-4Ln;{G&V4v-u>z0V`uWel{FSe~ zEvOneW2)cw%^P2S+{`3c{_2PWyy~!&c`OYMYWSk!Y)5H z|1(Wx?nP}0`99e>(#dc9ls)aQPVRZVO*LEA0>gMZtGFQ#pX!lNHzhPlm`+{n>|Hu3_>W}T1!Zo?$ zYG-rj)*IJX$S(HfvVJ~!ihWX!>+;+nzXhky`pNWW`u>dXO8##1uk~WY&(AxI|Gxd4 z@p@HffUnEsXGdu?r54MsIZTC{NU-VWtqEn%wW)4o5Iqu9)#r{@0F%k-|hdgoi8yWs=N7U$;Ttrw-fHHc{@Mz)|2S! z?DEQ#r24o2q>8t>{b9>pe%vrB`1+@3)^7FF*6i`TEnd#!Zy43y-@W@Q|H~`U2h^hb z3oS3G#lCt|pRBVjd*9TOb(<@W`K`Nk=SI-=r4RZpF1x)>ZJp$XNyKfk!VM*7Q{dtdH=BI8Z6ulVoUlCSyR zhqum{7J7Di+Ukqj!fwaFBPUG%{MFEg|8C57Tle2|*!$1>Sm2R{p2Ho2k2yX#!P2np hzIm5Te5YTNkDeYgebIv5zk#I%gQu&X%Q~loCICvNJK+ET literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1ConvolutionLayer-members.html b/doxygen/classcaffe_1_1ConvolutionLayer-members.html new file mode 100644 index 00000000000..c289b36c501 --- /dev/null +++ b/doxygen/classcaffe_1_1ConvolutionLayer-members.html @@ -0,0 +1,154 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::ConvolutionLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::ConvolutionLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::ConvolutionLayer< Dtype >protectedvirtual
backward_cpu_bias(Dtype *bias, const Dtype *input) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
backward_cpu_gemm(const Dtype *input, const Dtype *weights, Dtype *output) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::ConvolutionLayer< Dtype >protectedvirtual
backward_gpu_bias(Dtype *bias, const Dtype *input) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
backward_gpu_gemm(const Dtype *input, const Dtype *weights, Dtype *col_output) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
BaseConvolutionLayer(const LayerParameter &param) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >inlineexplicit
bias_term_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
bottom_dim_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
bottom_shape_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
channel_axis_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
channels_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
col_buffer_shape_caffe::BaseConvolutionLayer< Dtype >protected
compute_output_shape() (defined in caffe::ConvolutionLayer< Dtype >)caffe::ConvolutionLayer< Dtype >protectedvirtual
conv_input_shape_caffe::BaseConvolutionLayer< Dtype >protected
ConvolutionLayer(const LayerParameter &param)caffe::ConvolutionLayer< Dtype >inlineexplicit
dilation_caffe::BaseConvolutionLayer< Dtype >protected
EqualNumBottomTopBlobs() constcaffe::BaseConvolutionLayer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
force_nd_im2col_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ConvolutionLayer< Dtype >protectedvirtual
forward_cpu_bias(Dtype *output, const Dtype *bias) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
forward_cpu_gemm(const Dtype *input, const Dtype *weights, Dtype *output, bool skip_im2col=false) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ConvolutionLayer< Dtype >protectedvirtual
forward_gpu_bias(Dtype *output, const Dtype *bias) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
forward_gpu_gemm(const Dtype *col_input, const Dtype *weights, Dtype *output, bool skip_im2col=false) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
group_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
input_shape(int i)caffe::BaseConvolutionLayer< Dtype >inlineprotected
is_1x1_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
IsShared() constcaffe::Layer< Dtype >inline
kernel_shape_caffe::BaseConvolutionLayer< Dtype >protected
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BaseConvolutionLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::BaseConvolutionLayer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::BaseConvolutionLayer< Dtype >inlinevirtual
num_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
num_output_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
num_spatial_axes_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
out_spatial_dim_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
output_shape_caffe::BaseConvolutionLayer< Dtype >protected
pad_caffe::BaseConvolutionLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BaseConvolutionLayer< Dtype >virtual
reverse_dimensions() (defined in caffe::ConvolutionLayer< Dtype >)caffe::ConvolutionLayer< Dtype >inlineprotectedvirtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
stride_caffe::BaseConvolutionLayer< Dtype >protected
top_dim_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::ConvolutionLayer< Dtype >inlinevirtual
weight_cpu_gemm(const Dtype *input, const Dtype *output, Dtype *weights) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
weight_gpu_gemm(const Dtype *col_input, const Dtype *output, Dtype *weights) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
weight_offset_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1ConvolutionLayer.html b/doxygen/classcaffe_1_1ConvolutionLayer.html new file mode 100644 index 00000000000..773f07480bd --- /dev/null +++ b/doxygen/classcaffe_1_1ConvolutionLayer.html @@ -0,0 +1,400 @@ + + + + + + + +Caffe: caffe::ConvolutionLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::ConvolutionLayer< Dtype > Class Template Reference
+
+
+ +

Convolves the input image with a bank of learned filters, and (optionally) adds biases. + More...

+ +

#include <conv_layer.hpp>

+
+Inheritance diagram for caffe::ConvolutionLayer< Dtype >:
+
+
+ + +caffe::BaseConvolutionLayer< Dtype > +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ConvolutionLayer (const LayerParameter &param)
 
+virtual const char * type () const
 Returns the layer type.
 
- Public Member Functions inherited from caffe::BaseConvolutionLayer< Dtype >
BaseConvolutionLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
+virtual bool reverse_dimensions ()
 
+virtual void compute_output_shape ()
 
- Protected Member Functions inherited from caffe::BaseConvolutionLayer< Dtype >
+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)
 
+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)
 
+int input_shape (int i)
 The spatial dimensions of the input.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::BaseConvolutionLayer< Dtype >
+Blob< int > kernel_shape_
 The spatial dimensions of a filter kernel.
 
+Blob< int > stride_
 The spatial dimensions of the stride.
 
+Blob< int > pad_
 The spatial dimensions of the padding.
 
+Blob< int > dilation_
 The spatial dimensions of the dilation.
 
+Blob< int > conv_input_shape_
 The spatial dimensions of the convolution input.
 
+vector< int > col_buffer_shape_
 The spatial dimensions of the col_buffer.
 
+vector< int > output_shape_
 The spatial dimensions of the output.
 
+const vector< int > * 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_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::ConvolutionLayer< Dtype >

+ +

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.

+

Constructor & Destructor Documentation

+ +

§ ConvolutionLayer()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + +
caffe::ConvolutionLayer< Dtype >::ConvolutionLayer (const LayerParameter & param)
+
+inlineexplicit
+
+
Parameters
+ + +
paramprovides 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 (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 (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.
  • +
  • dilation (optional, default 1). The filter dilation, given by dilation_size for equal dimensions for different dilation. By default the convolution has dilation 1.
  • +
  • group (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 $ \geq 1 $, 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 (optional, default true). Whether to have a bias.
  • +
  • engine: convolution has CAFFE (matrix multiplication) and CUDNN (library kernels + stream parallelism) engines.
  • +
+
+
+
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/caffe/layers/conv_layer.hpp
  • +
  • src/caffe/layers/conv_layer.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1ConvolutionLayer.png b/doxygen/classcaffe_1_1ConvolutionLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..d808aebfd8128daf56ac867d8fd1b6736f3cc669 GIT binary patch literal 1179 zcmeAS@N?(olHy`uVBq!ia0vp^FMzm%gBeKPY7Q3wQW60^A+G=b{|Cvv`C8h4XabN0 z#s>}@VC}pk59D%`1o;Is02P72)l(rx3=AwhgX&-@FQ7rbWEskU5NCsn%O<=IuGk8LhqioTazBNpBowWCO=wJcKf~K-yZS6c-Gjg4$JA5 zljnAB)#wgq%<6Cd`qSoB_kyjpt7b2We%Y6m?B1KXkMV!8`|R>Bj4L*ND&J!8x5GMX z^}3s@YxK@)o^8Dn7VEj}>HCatUj;+MCs|#cm{+Q+^0M-;Y=-{x?M-FHb#ME;F4bRQ zn7YJ6YQZEC&+rSC^PUTHJUCy69OrnGGqV?Rr~&B7eFeCb(!w%2)-I&um z|G}R(_ogu~OTJ?+>7YM-@`QP;Urtr>UAo-Rw~AZ98&B|Kji3EXGiNO`?%-6|2a7Z- zwyL#}_Dnv%SEe%LKK*Xa-;f=fy=Tg~dy%yZ%qQ=?IdKJ_$N^w%%;h|wyw&0Q)#z`Z zvc6v49-T37TKVaD`BBxccdK4Hcg<>parsPL+sB#3k1sK;SjqTm(izR1*lL067j53u zl}+B0YaO9S1L zm)WH94b$C4HxyF;YCGgkSfmve_`dm?*w4QUe$U+b<4Spn_!Gfr#pPQxnx8UmdTO{e zEpZQ%jIeOiGLu~ApZwEpIfh7rpr>mdKI;Vst E03;nMUH||9 literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1CropLayer-members.html b/doxygen/classcaffe_1_1CropLayer-members.html new file mode 100644 index 00000000000..51e2588015b --- /dev/null +++ b/doxygen/classcaffe_1_1CropLayer-members.html @@ -0,0 +1,120 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::CropLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::CropLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::CropLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::CropLayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
CropLayer(const LayerParameter &param) (defined in caffe::CropLayer< Dtype >)caffe::CropLayer< Dtype >inlineexplicit
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::CropLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::CropLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::CropLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::CropLayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::CropLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
offsets (defined in caffe::CropLayer< Dtype >)caffe::CropLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::CropLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::CropLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1CropLayer.html b/doxygen/classcaffe_1_1CropLayer.html new file mode 100644 index 00000000000..9cb6689e354 --- /dev/null +++ b/doxygen/classcaffe_1_1CropLayer.html @@ -0,0 +1,407 @@ + + + + + + + +Caffe: caffe::CropLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::CropLayer< Dtype > Class Template Reference
+
+
+ +

Takes a Blob and crop it, to the shape specified by the second input Blob, across all dimensions after the specified axis. + More...

+ +

#include <crop_layer.hpp>

+
+Inheritance diagram for caffe::CropLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

CropLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + +

+Protected Attributes

+vector< int > offsets
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::CropLayer< Dtype >

+ +

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.

+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::CropLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::CropLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::CropLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::CropLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/caffe/layers/crop_layer.hpp
  • +
  • src/caffe/layers/crop_layer.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1CropLayer.png b/doxygen/classcaffe_1_1CropLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..ebeefd2d25eeebe52544026b52b32ad30fca755b GIT binary patch literal 708 zcmeAS@N?(olHy`uVBq!ia0vp^OMy6mgBeKruX1$)QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;!RhUDQP<`J*`%M`SJSR zRrj9-u{+-{&e=6_$@Hv1z3};qXMD0aZ*^+VrVP%R$7i~4o}KecV#Z{Zl`GkvzB*Yq zGjU!{blRG)TBqxiU%B0jneU+SZ|^mI2%K_RbK12C)_ zB(`e2PyH&AV0XTVdBv5|>pOF-%S<)oCx1QE_}uQ)H$jH2Tu+PkT6TT^`TPdk`G2R} z&d>k0C)Fq$9B`inZ<_2beEv3I-L-G0c|I>W*}mt=HK{nGYgJR9{$Dq{=wa=tM=8#c z$BXz^+FZy#^EtEKw3%1w{{@;u#j_uaj)M{Sp?ZeMx+iA(y_UX7A~X{_JN z*f*Li`{y}pW6rauak+9&m)cjwez|h*OHAA?Df5XM{%OCLMn_d0yd``puy%QTmk6#iv4+^Vedy + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::DataLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::DataLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::BaseDataLayer< Dtype >inlinevirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::BaseDataLayer< Dtype >inlinevirtual
BaseDataLayer(const LayerParameter &param) (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >explicit
BasePrefetchingDataLayer(const LayerParameter &param) (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >explicit
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
data_transformer_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected
DataLayer(const LayerParameter &param) (defined in caffe::DataLayer< Dtype >)caffe::DataLayer< Dtype >explicit
DataLayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top) (defined in caffe::DataLayer< Dtype >)caffe::DataLayer< Dtype >virtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::DataLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BasePrefetchingDataLayer< Dtype >virtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BasePrefetchingDataLayer< Dtype >virtual
InternalThread() (defined in caffe::InternalThread)caffe::InternalThreadinline
InternalThreadEntry() (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protectedvirtual
is_started() const (defined in caffe::InternalThread)caffe::InternalThread
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BasePrefetchingDataLayer< Dtype >virtual
load_batch(Batch< Dtype > *batch) (defined in caffe::DataLayer< Dtype >)caffe::DataLayer< Dtype >protectedvirtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::DataLayer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::DataLayer< Dtype >inlinevirtual
must_stop() (defined in caffe::InternalThread)caffe::InternalThreadprotected
output_labels_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
prefetch_ (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protected
PREFETCH_COUNT (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >static
prefetch_free_ (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protected
prefetch_full_ (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protected
reader_ (defined in caffe::DataLayer< Dtype >)caffe::DataLayer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BaseDataLayer< Dtype >inlinevirtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::DataLayer< Dtype >inlinevirtual
StartInternalThread()caffe::InternalThread
StopInternalThread()caffe::InternalThread
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
transform_param_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected
transformed_data_ (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protected
type() constcaffe::DataLayer< Dtype >inlinevirtual
~DataLayer() (defined in caffe::DataLayer< Dtype >)caffe::DataLayer< Dtype >virtual
~InternalThread() (defined in caffe::InternalThread)caffe::InternalThreadvirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1DataLayer.html b/doxygen/classcaffe_1_1DataLayer.html new file mode 100644 index 00000000000..587aeaae42c --- /dev/null +++ b/doxygen/classcaffe_1_1DataLayer.html @@ -0,0 +1,391 @@ + + + + + + + +Caffe: caffe::DataLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::DataLayer< Dtype > Class Template Reference
+
+
+
+Inheritance diagram for caffe::DataLayer< Dtype >:
+
+
+ + +caffe::BasePrefetchingDataLayer< Dtype > +caffe::BaseDataLayer< Dtype > +caffe::InternalThread +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

DataLayer (const LayerParameter &param)
 
+virtual void DataLayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual bool ShareInParallel () const
 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 const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
- Public Member Functions inherited from caffe::BasePrefetchingDataLayer< Dtype >
BasePrefetchingDataLayer (const LayerParameter &param)
 
void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
- Public Member Functions inherited from caffe::BaseDataLayer< Dtype >
BaseDataLayer (const LayerParameter &param)
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
- Public Member Functions inherited from caffe::InternalThread
void StartInternalThread ()
 
void StopInternalThread ()
 
+bool is_started () const
 
+ + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void load_batch (Batch< Dtype > *batch)
 
- Protected Member Functions inherited from caffe::BasePrefetchingDataLayer< Dtype >
+virtual void InternalThreadEntry ()
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
- Protected Member Functions inherited from caffe::InternalThread
+bool must_stop ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+DataReader reader_
 
- Protected Attributes inherited from caffe::BasePrefetchingDataLayer< Dtype >
+Batch< Dtype > prefetch_ [PREFETCH_COUNT]
 
+BlockingQueue< Batch< Dtype > * > prefetch_free_
 
+BlockingQueue< Batch< Dtype > * > prefetch_full_
 
+Blob< Dtype > transformed_data_
 
- Protected Attributes inherited from caffe::BaseDataLayer< Dtype >
+TransformationParameter transform_param_
 
+shared_ptr< DataTransformer< Dtype > > data_transformer_
 
+bool output_labels_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+ + + + +

+Additional Inherited Members

- Static Public Attributes inherited from caffe::BasePrefetchingDataLayer< Dtype >
+static const int PREFETCH_COUNT = 3
 
+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::DataLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ MaxTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::DataLayer< Dtype >::MaxTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some maximum number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ MinTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::DataLayer< Dtype >::MinTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some minimum number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/caffe/layers/data_layer.hpp
  • +
  • src/caffe/layers/data_layer.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1DataLayer.png b/doxygen/classcaffe_1_1DataLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..d3f6c42c6a6bd1fcbb447b83043dd6137876cd50 GIT binary patch literal 2237 zcma);dsGtp7RQGQj!tEi5oDQGn1zo>(~Qi@D=9tH2#7RID~;loW~SvU7D>{{Ovy(n z*3Cm14E3_ttTi+HyZ8Rh%=+!mZ~x|; zueaw+&{-E*Y%#w4NjDptfTt2^;-lc zK^V7uhKWGnW`Sy#2kHo#(@5}sMNY3C|PhM1OkreXd z)w8d(?zo_G!txtEib1V}_^S7-wQQI=_9(Ew`?l@qA)%-x^GJ|MKYGb;=^{ljm@l!U zjI^w}zTF?MTPTB~=`Cz79nib%^$jjHW+2{m#)X_o6{(d3CQ=Hd7K1?bq!ok#=ESRq zccGL(TD*>}rQ1q(*8_vs-8Fohj4P^_aVKlIiOTY% zci&Bm>m9eI%={4Bb&{QkFJM9+&8#T?aelneytgCzqob;kZtdP!s=bMX=o&wSs?*%6 zh^FysleRX@c9TI-d2e@gkg1h7p!*9wYb~lXrA@B20nf_huOk$r{%#^+6}l<jAWs_Y~-@%)QmV%v;NuP-+w~7mH z_{_{vu8t~jPubw1*Al!MDuZg0oQ|Z4%!Nf<{FuepwU{s2L2#94By8ukFJmGpq%-O^ zOT5lv9|kUW>fD^~%hn65B`|q;?(ov)85919SMSAfiXx^GUnH8o+h(git(Xp5Kzh{B zHdUqC-o@0LxB2KcoE0Cx~F4qqk&IEgTrhA}P(z*q_d!3oMM%Zb?w{ zuI9*B-8oZbo4p#?nZ&-7+u%wXZch2t0_zn=+o$IjS>G`Uhe<8X5}_Eu1X`cN z+GFC()panTL}a5LXL9)qe!@`CWBR6*h-4mI=PB z)~_I=q{TPf*)N-5;7*<0&l&2tN4Vc&dA49f_K1j(SXf?GMgU~Sgp!^<2|@HkVmcOi zrsc9Oq&F;uB|+1l9sa$rd?W1>la~Sh1Ce_gf^0%u(p%(p>Gd}}{cfJ%96QOrnG`Ed z@ChScz@=z#a?9sMOJLwq$jSOV0aXFAVT$}qG+u)2kKL*gGL^;Xh^Bctkp+Rpuct|Y z{&{u>uLI@- zjuId|K*l}ZQTLM<+(IPeOz+w8M*Gmy|~7*sw{Nqr|cII(VPG#&y==2DFZw~zlCI(cz60&g)}+!nR$j3 zgVy5kqL+urN!hv1{PM<#bX1MJQKF_Uo_9@O^2mY7J5FO2bT=<_Yn!Ct>CnF^7`^g{ zP;x%D5Im&`6r-zGI{NeGPk(&)j0=HF*T>r5eB(NrNDnw1CsXgtA9&Nr`Y`O`KW}{Q zZ2l2r$D{Ei@9lBiFzr6W7H7K070Y;7-mjgC mhv)s6{a>?am{(5Gpv72zy`A;51WWi|1E7$-Jqq1}xPJoRiS$PR literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1DataReader-members.html b/doxygen/classcaffe_1_1DataReader-members.html new file mode 100644 index 00000000000..1974aef66a5 --- /dev/null +++ b/doxygen/classcaffe_1_1DataReader-members.html @@ -0,0 +1,89 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::DataReader Member List
+
+
+ +

This is the complete list of members for caffe::DataReader, including all inherited members.

+ + + + + + + + + + +
bodies_ (defined in caffe::DataReader)caffe::DataReaderprotectedstatic
body_ (defined in caffe::DataReader)caffe::DataReaderprotected
DataReader(const LayerParameter &param) (defined in caffe::DataReader)caffe::DataReaderexplicit
DISABLE_COPY_AND_ASSIGN(DataReader) (defined in caffe::DataReader)caffe::DataReaderprotected
free() const (defined in caffe::DataReader)caffe::DataReaderinline
full() const (defined in caffe::DataReader)caffe::DataReaderinline
queue_pair_ (defined in caffe::DataReader)caffe::DataReaderprotected
source_key(const LayerParameter &param) (defined in caffe::DataReader)caffe::DataReaderinlineprotectedstatic
~DataReader() (defined in caffe::DataReader)caffe::DataReader
+ + + + diff --git a/doxygen/classcaffe_1_1DataReader.html b/doxygen/classcaffe_1_1DataReader.html new file mode 100644 index 00000000000..131d431188f --- /dev/null +++ b/doxygen/classcaffe_1_1DataReader.html @@ -0,0 +1,143 @@ + + + + + + + +Caffe: caffe::DataReader Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

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. + More...

+ +

#include <data_reader.hpp>

+ + + + + + +

+Classes

class  Body
 
class  QueuePair
 
+ + + + + + + +

+Public Member Functions

DataReader (const LayerParameter &param)
 
+BlockingQueue< Datum * > & free () const
 
+BlockingQueue< Datum * > & full () const
 
+ + + +

+Protected Member Functions

DISABLE_COPY_AND_ASSIGN (DataReader)
 
+ + + +

+Static Protected Member Functions

+static string source_key (const LayerParameter &param)
 
+ + + + + +

+Protected Attributes

+const shared_ptr< QueuePairqueue_pair_
 
+shared_ptr< Bodybody_
 
+ + + +

+Static Protected Attributes

+static map< const string, boost::weak_ptr< DataReader::Body > > bodies_
 
+

Detailed Description

+

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.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1DataReader_1_1Body-members.html b/doxygen/classcaffe_1_1DataReader_1_1Body-members.html new file mode 100644 index 00000000000..602e293f2e0 --- /dev/null +++ b/doxygen/classcaffe_1_1DataReader_1_1Body-members.html @@ -0,0 +1,94 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::DataReader::Body Member List
+
+
+ +

This is the complete list of members for caffe::DataReader::Body, including all inherited members.

+ + + + + + + + + + + + + + + +
Body(const LayerParameter &param) (defined in caffe::DataReader::Body)caffe::DataReader::Bodyexplicit
DataReader (defined in caffe::DataReader::Body)caffe::DataReader::Bodyfriend
DISABLE_COPY_AND_ASSIGN(Body) (defined in caffe::DataReader::Body)caffe::DataReader::Bodyprotected
InternalThread() (defined in caffe::InternalThread)caffe::InternalThreadinline
InternalThreadEntry() (defined in caffe::DataReader::Body)caffe::DataReader::Bodyprotectedvirtual
is_started() const (defined in caffe::InternalThread)caffe::InternalThread
must_stop() (defined in caffe::InternalThread)caffe::InternalThreadprotected
new_queue_pairs_ (defined in caffe::DataReader::Body)caffe::DataReader::Bodyprotected
param_ (defined in caffe::DataReader::Body)caffe::DataReader::Bodyprotected
read_one(db::Cursor *cursor, QueuePair *qp) (defined in caffe::DataReader::Body)caffe::DataReader::Bodyprotected
StartInternalThread()caffe::InternalThread
StopInternalThread()caffe::InternalThread
~Body() (defined in caffe::DataReader::Body)caffe::DataReader::Bodyvirtual
~InternalThread() (defined in caffe::InternalThread)caffe::InternalThreadvirtual
+ + + + diff --git a/doxygen/classcaffe_1_1DataReader_1_1Body.html b/doxygen/classcaffe_1_1DataReader_1_1Body.html new file mode 100644 index 00000000000..906d22509ec --- /dev/null +++ b/doxygen/classcaffe_1_1DataReader_1_1Body.html @@ -0,0 +1,142 @@ + + + + + + + +Caffe: caffe::DataReader::Body Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::DataReader::Body Class Reference
+
+
+
+Inheritance diagram for caffe::DataReader::Body:
+
+
+ + +caffe::InternalThread + +
+ + + + + + + + + + + +

+Public Member Functions

Body (const LayerParameter &param)
 
- Public Member Functions inherited from caffe::InternalThread
void StartInternalThread ()
 
void StopInternalThread ()
 
+bool is_started () const
 
+ + + + + + + + + + +

+Protected Member Functions

+void InternalThreadEntry ()
 
+void read_one (db::Cursor *cursor, QueuePair *qp)
 
DISABLE_COPY_AND_ASSIGN (Body)
 
- Protected Member Functions inherited from caffe::InternalThread
+bool must_stop ()
 
+ + + + + +

+Protected Attributes

+const LayerParameter param_
 
+BlockingQueue< shared_ptr< QueuePair > > new_queue_pairs_
 
+ + + +

+Friends

+class DataReader
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1DataReader_1_1Body.png b/doxygen/classcaffe_1_1DataReader_1_1Body.png new file mode 100644 index 0000000000000000000000000000000000000000..018b4a8b2b6bb5093500afbb2750358c6905b369 GIT binary patch literal 664 zcmeAS@N?(olHy`uVBq!ia0vp^Q-L^ugBeJwM;@;NQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;Ygr+Ar*{o=f3TGtia>SZyt32|HSR8 z0XYgQ)3*fO6kU90Nnua%2lr?C#|vdncREiJyS!}Dk{M=GRgQj{skJotoY_xR&$*Y1 z6aVclm!4m@q-w21SnJ9=o|Bew1@1Kq*RNdsb6-UEjOjOj%$ccqEo)QA+2cpgmv#h9 zt@xLecRDfO&oX=Olwec7M)kjio~gx;uHICaJ9;|U(`#-`jpy4P3s2={86|q%$lZGN zbX9y%XuWuRkoCHiYNB(VY}i-5;&bh~V?QR{`gnO?SLg@jtLJ~8I(NcSzHUv8^KHqJ zP_1ltEqQyZ=1E^tbG1CXGJ`#Xd}e!1N{X8H%AzmXl<|+MEyJ|SlS2BBcSU#y*)9}2 z5;ZyNyn;i>Y%YamzN`Y5moar@1~VSnvXUX`RtSS(u2#bgGf@X0BetA~(%N4(3B&P{& zd3whFebUc;v(l5?O7${+8>^OxuJH>lPv6S3uPHg}_r6(Tm&_B_G+mZC)1F*$bIPkt z>wl^Jjg7w>Fg1lQq^#!D3zO{FsMC>iUTyJ9|4=i1_Cdu7^Fw$4Z{7FSJLsm6zVp+4 pzW*=Pr#HL@`&}p0OLOfq`=iS8_w0h*a)HT+!PC{xWt~$(69A + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::DataReader::QueuePair Member List
+
+
+ +

This is the complete list of members for caffe::DataReader::QueuePair, including all inherited members.

+ + + + + + +
DISABLE_COPY_AND_ASSIGN(QueuePair) (defined in caffe::DataReader::QueuePair)caffe::DataReader::QueuePair
free_ (defined in caffe::DataReader::QueuePair)caffe::DataReader::QueuePair
full_ (defined in caffe::DataReader::QueuePair)caffe::DataReader::QueuePair
QueuePair(int size) (defined in caffe::DataReader::QueuePair)caffe::DataReader::QueuePairexplicit
~QueuePair() (defined in caffe::DataReader::QueuePair)caffe::DataReader::QueuePair
+ + + + diff --git a/doxygen/classcaffe_1_1DataReader_1_1QueuePair.html b/doxygen/classcaffe_1_1DataReader_1_1QueuePair.html new file mode 100644 index 00000000000..c27c9a1f218 --- /dev/null +++ b/doxygen/classcaffe_1_1DataReader_1_1QueuePair.html @@ -0,0 +1,104 @@ + + + + + + + +Caffe: caffe::DataReader::QueuePair Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::DataReader::QueuePair Class Reference
+
+
+ + + + + + +

+Public Member Functions

QueuePair (int size)
 
DISABLE_COPY_AND_ASSIGN (QueuePair)
 
+ + + + + +

+Public Attributes

+BlockingQueue< Datum * > free_
 
+BlockingQueue< Datum * > full_
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1DataTransformer-members.html b/doxygen/classcaffe_1_1DataTransformer-members.html new file mode 100644 index 00000000000..7c20be89fef --- /dev/null +++ b/doxygen/classcaffe_1_1DataTransformer-members.html @@ -0,0 +1,95 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::DataTransformer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::DataTransformer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + +
data_mean_ (defined in caffe::DataTransformer< Dtype >)caffe::DataTransformer< Dtype >protected
DataTransformer(const TransformationParameter &param, Phase phase) (defined in caffe::DataTransformer< Dtype >)caffe::DataTransformer< Dtype >explicit
InferBlobShape(const Datum &datum)caffe::DataTransformer< Dtype >
InferBlobShape(const vector< Datum > &datum_vector)caffe::DataTransformer< Dtype >
InitRand()caffe::DataTransformer< Dtype >
mean_values_ (defined in caffe::DataTransformer< Dtype >)caffe::DataTransformer< Dtype >protected
param_ (defined in caffe::DataTransformer< Dtype >)caffe::DataTransformer< Dtype >protected
phase_ (defined in caffe::DataTransformer< Dtype >)caffe::DataTransformer< Dtype >protected
Rand(int n)caffe::DataTransformer< Dtype >protectedvirtual
rng_ (defined in caffe::DataTransformer< Dtype >)caffe::DataTransformer< Dtype >protected
Transform(const Datum &datum, Blob< Dtype > *transformed_blob)caffe::DataTransformer< Dtype >
Transform(const vector< Datum > &datum_vector, Blob< Dtype > *transformed_blob)caffe::DataTransformer< Dtype >
Transform(Blob< Dtype > *input_blob, Blob< Dtype > *transformed_blob)caffe::DataTransformer< Dtype >
Transform(const Datum &datum, Dtype *transformed_data) (defined in caffe::DataTransformer< Dtype >)caffe::DataTransformer< Dtype >protected
~DataTransformer() (defined in caffe::DataTransformer< Dtype >)caffe::DataTransformer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1DataTransformer.html b/doxygen/classcaffe_1_1DataTransformer.html new file mode 100644 index 00000000000..abb31b65279 --- /dev/null +++ b/doxygen/classcaffe_1_1DataTransformer.html @@ -0,0 +1,361 @@ + + + + + + + +Caffe: caffe::DataTransformer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::DataTransformer< Dtype > Class Template Reference
+
+
+ +

Applies common transformations to the input data, such as scaling, mirroring, substracting the image mean... + More...

+ +

#include <data_transformer.hpp>

+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

DataTransformer (const TransformationParameter &param, Phase phase)
 
+void InitRand ()
 Initialize the Random number generations if needed by the transformation.
 
void Transform (const Datum &datum, Blob< Dtype > *transformed_blob)
 Applies the transformation defined in the data layer's transform_param block to the data. More...
 
void Transform (const vector< Datum > &datum_vector, Blob< Dtype > *transformed_blob)
 Applies the transformation defined in the data layer's transform_param block to a vector of Datum. More...
 
void Transform (Blob< Dtype > *input_blob, Blob< Dtype > *transformed_blob)
 Applies the same transformation defined in the data layer's transform_param block to all the num images in a input_blob. More...
 
vector< int > InferBlobShape (const Datum &datum)
 Infers the shape of transformed_blob will have when the transformation is applied to the data. More...
 
vector< int > InferBlobShape (const vector< Datum > &datum_vector)
 Infers the shape of transformed_blob will have when the transformation is applied to the data. It uses the first element to infer the shape of the blob. More...
 
+ + + + + + +

+Protected Member Functions

virtual int Rand (int n)
 Infers the shape of transformed_blob will have when the transformation is applied to the data. It uses the first element to infer the shape of the blob. More...
 
+void Transform (const Datum &datum, Dtype *transformed_data)
 
+ + + + + + + + + + + +

+Protected Attributes

+TransformationParameter param_
 
+shared_ptr< Caffe::RNGrng_
 
+Phase phase_
 
+Blob< Dtype > data_mean_
 
+vector< Dtype > mean_values_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::DataTransformer< Dtype >

+ +

Applies common transformations to the input data, such as scaling, mirroring, substracting the image mean...

+

Member Function Documentation

+ +

§ InferBlobShape() [1/2]

+ +
+
+
+template<typename Dtype >
+ + + + + + + + +
vector< int > caffe::DataTransformer< Dtype >::InferBlobShape (const Datum & datum)
+
+ +

Infers the shape of transformed_blob will have when the transformation is applied to the data.

+
Parameters
+ + +
datumDatum containing the data to be transformed.
+
+
+ +
+
+ +

§ InferBlobShape() [2/2]

+ +
+
+
+template<typename Dtype >
+ + + + + + + + +
vector< int > caffe::DataTransformer< Dtype >::InferBlobShape (const vector< Datum > & datum_vector)
+
+ +

Infers the shape of transformed_blob will have when the transformation is applied to the data. It uses the first element to infer the shape of the blob.

+
Parameters
+ + +
datum_vectorA vector of Datum containing the data to be transformed.
+
+
+ +
+
+ +

§ Rand()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + +
int caffe::DataTransformer< Dtype >::Rand (int n)
+
+protectedvirtual
+
+ +

Infers the shape of transformed_blob will have when the transformation is applied to the data. It uses the first element to infer the shape of the blob.

+
Parameters
+ + + +
mat_vectorA vector of Mat containing the data to be transformed. Generates a random integer from Uniform({0, 1, ..., n-1}).
nThe upperbound (exclusive) value of the random number.
+
+
+
Returns
A uniformly random integer value from ({0, 1, ..., n-1}).
+ +
+
+ +

§ Transform() [1/3]

+ +
+
+
+template<typename Dtype >
+ + + + + + + + + + + + + + + + + + +
void caffe::DataTransformer< Dtype >::Transform (const Datum & datum,
Blob< Dtype > * transformed_blob 
)
+
+ +

Applies the transformation defined in the data layer's transform_param block to the data.

+
Parameters
+ + + +
datumDatum containing the data to be transformed.
transformed_blobThis is destination blob. It can be part of top blob's data if set_cpu_data() is used. See data_layer.cpp for an example.
+
+
+ +
+
+ +

§ Transform() [2/3]

+ +
+
+
+template<typename Dtype >
+ + + + + + + + + + + + + + + + + + +
void caffe::DataTransformer< Dtype >::Transform (const vector< Datum > & datum_vector,
Blob< Dtype > * transformed_blob 
)
+
+ +

Applies the transformation defined in the data layer's transform_param block to a vector of Datum.

+
Parameters
+ + + +
datum_vectorA vector of Datum containing the data to be transformed.
transformed_blobThis is destination blob. It can be part of top blob's data if set_cpu_data() is used. See memory_layer.cpp for an example.
+
+
+ +
+
+ +

§ Transform() [3/3]

+ +
+
+
+template<typename Dtype >
+ + + + + + + + + + + + + + + + + + +
void caffe::DataTransformer< Dtype >::Transform (Blob< Dtype > * input_blob,
Blob< Dtype > * transformed_blob 
)
+
+ +

Applies the same transformation defined in the data layer's transform_param block to all the num images in a input_blob.

+
Parameters
+ + + +
input_blobA Blob containing the data to be transformed. It applies the same transformation to all the num images in the blob.
transformed_blobThis is destination blob, it will contain as many images as the input blob. It can be part of top blob's data.
+
+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1DeconvolutionLayer-members.html b/doxygen/classcaffe_1_1DeconvolutionLayer-members.html new file mode 100644 index 00000000000..545f4400268 --- /dev/null +++ b/doxygen/classcaffe_1_1DeconvolutionLayer-members.html @@ -0,0 +1,154 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::DeconvolutionLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::DeconvolutionLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::DeconvolutionLayer< Dtype >protectedvirtual
backward_cpu_bias(Dtype *bias, const Dtype *input) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
backward_cpu_gemm(const Dtype *input, const Dtype *weights, Dtype *output) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::DeconvolutionLayer< Dtype >protectedvirtual
backward_gpu_bias(Dtype *bias, const Dtype *input) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
backward_gpu_gemm(const Dtype *input, const Dtype *weights, Dtype *col_output) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
BaseConvolutionLayer(const LayerParameter &param) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >inlineexplicit
bias_term_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
bottom_dim_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
bottom_shape_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
channel_axis_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
channels_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
col_buffer_shape_caffe::BaseConvolutionLayer< Dtype >protected
compute_output_shape() (defined in caffe::DeconvolutionLayer< Dtype >)caffe::DeconvolutionLayer< Dtype >protectedvirtual
conv_input_shape_caffe::BaseConvolutionLayer< Dtype >protected
DeconvolutionLayer(const LayerParameter &param) (defined in caffe::DeconvolutionLayer< Dtype >)caffe::DeconvolutionLayer< Dtype >inlineexplicit
dilation_caffe::BaseConvolutionLayer< Dtype >protected
EqualNumBottomTopBlobs() constcaffe::BaseConvolutionLayer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
force_nd_im2col_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::DeconvolutionLayer< Dtype >protectedvirtual
forward_cpu_bias(Dtype *output, const Dtype *bias) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
forward_cpu_gemm(const Dtype *input, const Dtype *weights, Dtype *output, bool skip_im2col=false) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::DeconvolutionLayer< Dtype >protectedvirtual
forward_gpu_bias(Dtype *output, const Dtype *bias) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
forward_gpu_gemm(const Dtype *col_input, const Dtype *weights, Dtype *output, bool skip_im2col=false) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
group_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
input_shape(int i)caffe::BaseConvolutionLayer< Dtype >inlineprotected
is_1x1_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
IsShared() constcaffe::Layer< Dtype >inline
kernel_shape_caffe::BaseConvolutionLayer< Dtype >protected
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BaseConvolutionLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::BaseConvolutionLayer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::BaseConvolutionLayer< Dtype >inlinevirtual
num_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
num_output_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
num_spatial_axes_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
out_spatial_dim_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
output_shape_caffe::BaseConvolutionLayer< Dtype >protected
pad_caffe::BaseConvolutionLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BaseConvolutionLayer< Dtype >virtual
reverse_dimensions() (defined in caffe::DeconvolutionLayer< Dtype >)caffe::DeconvolutionLayer< Dtype >inlineprotectedvirtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
stride_caffe::BaseConvolutionLayer< Dtype >protected
top_dim_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::DeconvolutionLayer< Dtype >inlinevirtual
weight_cpu_gemm(const Dtype *input, const Dtype *output, Dtype *weights) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
weight_gpu_gemm(const Dtype *col_input, const Dtype *output, Dtype *weights) (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
weight_offset_ (defined in caffe::BaseConvolutionLayer< Dtype >)caffe::BaseConvolutionLayer< Dtype >protected
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1DeconvolutionLayer.html b/doxygen/classcaffe_1_1DeconvolutionLayer.html new file mode 100644 index 00000000000..852dfadf54d --- /dev/null +++ b/doxygen/classcaffe_1_1DeconvolutionLayer.html @@ -0,0 +1,355 @@ + + + + + + + +Caffe: caffe::DeconvolutionLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::DeconvolutionLayer< Dtype > Class Template Reference
+
+
+ +

Convolve the input with a bank of learned filters, and (optionally) add biases, treating filters and convolution parameters in the opposite sense as ConvolutionLayer. + More...

+ +

#include <deconv_layer.hpp>

+
+Inheritance diagram for caffe::DeconvolutionLayer< Dtype >:
+
+
+ + +caffe::BaseConvolutionLayer< Dtype > +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

DeconvolutionLayer (const LayerParameter &param)
 
+virtual const char * type () const
 Returns the layer type.
 
- Public Member Functions inherited from caffe::BaseConvolutionLayer< Dtype >
BaseConvolutionLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
+virtual bool reverse_dimensions ()
 
+virtual void compute_output_shape ()
 
- Protected Member Functions inherited from caffe::BaseConvolutionLayer< Dtype >
+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)
 
+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)
 
+int input_shape (int i)
 The spatial dimensions of the input.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::BaseConvolutionLayer< Dtype >
+Blob< int > kernel_shape_
 The spatial dimensions of a filter kernel.
 
+Blob< int > stride_
 The spatial dimensions of the stride.
 
+Blob< int > pad_
 The spatial dimensions of the padding.
 
+Blob< int > dilation_
 The spatial dimensions of the dilation.
 
+Blob< int > conv_input_shape_
 The spatial dimensions of the convolution input.
 
+vector< int > col_buffer_shape_
 The spatial dimensions of the col_buffer.
 
+vector< int > output_shape_
 The spatial dimensions of the output.
 
+const vector< int > * 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_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::DeconvolutionLayer< Dtype >

+ +

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).

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1DeconvolutionLayer.png b/doxygen/classcaffe_1_1DeconvolutionLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..622a2841670b57ec0d79d62e74a5a86f12823b07 GIT binary patch literal 1183 zcmeAS@N?(olHy`uVBq!ia0vp^FMzm%gBeKPY7Q3wQW60^A+G=b{|Cvv`C8h4XabN0 z#s>}@VC}pk59D%`1o;Is02P72)l(rx3=AxKo-U3d6^w7^-Y!~gz~d@Dd*+}2>hqUK z=={9&$YgnLi}f2J>Bvi;Tr~ZY@3w|@@Wba&3_NsKj%hT&>AKF~JcI%GHW%t7_la}Pa zh`gXI`P=C1m7CjrQjX`m`QN)TyRz6*>TXb@#J>Ro>V6EB3eMBUyi0D+;r6VGvuC$D^>f{V!*lX?FPikF z8{sv+UF%*~F*5$yk;f2zA=Dv%d-sGm)-UHOc`u!AIJb&hz*|^EVUn7LgNkoJgU74| z3=>Tp8I>}dm|QNguy!orZMS!x;LBapl#wmz-!479i1~`@q{A|2Yd2d;+aLJ3a^E!B zWr=sng*|~GJwx~c&&#vi0rd@QRvA~RTw{K_r)u&O{@m(gx%YGf>=!w#bugFMT)3%x zcWHm5pP1~0El=AV_}k4IH<^hoF!Kl$4PMNW>zl$k%l-%Ncc}|iDSdb2E^2x7R(|U- zb6mYMCr=?-?y@mg)}#;VTMTT=L9sA7^K|OI-P?kmchC77(RAxv?F#K<*Y;{I+4joI zsQ;v@yH#kZ>dXAh2XVHAo&RGm1fDBrm3>xoTXgCY@vJ7VAYdSSb}g}f0gMw?mJg42 zF~&HCGw!{s=Ts$n!TPzWhd#5_YCQ)XVxs~USAX<%Pj8BG)M5B&3X44P1>cjtE?niq zJSW_&{s;3N<0o%A?B*OwXO_EvtFpJXZ~=o~@`Ag27=EpC`2O?OwNL+kF3!DP@H@5Y z?rXzCOE#4+>-%fBI%h5O`#l~7{dE;qcXp^S&WWn)+fsC4ab?clQyKNC%HLPTRNSt6 zA@Xhpukc>UOS9{_UiD876@9hZWji5wbJx94cXo4pJ#pucE#X_ZE*+JzS=_tp`hACMI<|`!sI9SI z-1^cu{mQfe!a;eg7CU|Hs}6@-lr0EKL|ZUHx3vIVCg!0JtbAMgRZ+ literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1DevicePair-members.html b/doxygen/classcaffe_1_1DevicePair-members.html new file mode 100644 index 00000000000..20cfe914bbe --- /dev/null +++ b/doxygen/classcaffe_1_1DevicePair-members.html @@ -0,0 +1,86 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::DevicePair Member List
+
+
+ +

This is the complete list of members for caffe::DevicePair, including all inherited members.

+ + + + + + + +
compute(const vector< int > devices, vector< DevicePair > *pairs) (defined in caffe::DevicePair)caffe::DevicePairstatic
device() (defined in caffe::DevicePair)caffe::DevicePairinline
device_ (defined in caffe::DevicePair)caffe::DevicePairprotected
DevicePair(int parent, int device) (defined in caffe::DevicePair)caffe::DevicePairinline
parent() (defined in caffe::DevicePair)caffe::DevicePairinline
parent_ (defined in caffe::DevicePair)caffe::DevicePairprotected
+ + + + diff --git a/doxygen/classcaffe_1_1DevicePair.html b/doxygen/classcaffe_1_1DevicePair.html new file mode 100644 index 00000000000..713c58a0b68 --- /dev/null +++ b/doxygen/classcaffe_1_1DevicePair.html @@ -0,0 +1,114 @@ + + + + + + + +Caffe: caffe::DevicePair Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ + + + + + + + +

+Public Member Functions

DevicePair (int parent, int device)
 
+int parent ()
 
+int device ()
 
+ + + +

+Static Public Member Functions

+static void compute (const vector< int > devices, vector< DevicePair > *pairs)
 
+ + + + + +

+Protected Attributes

+int parent_
 
+int device_
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1DropoutLayer-members.html b/doxygen/classcaffe_1_1DropoutLayer-members.html new file mode 100644 index 00000000000..f8c0e9150a6 --- /dev/null +++ b/doxygen/classcaffe_1_1DropoutLayer-members.html @@ -0,0 +1,124 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::DropoutLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::DropoutLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::DropoutLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::DropoutLayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
DropoutLayer(const LayerParameter &param)caffe::DropoutLayer< Dtype >inlineexplicit
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::NeuronLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::NeuronLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::DropoutLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::DropoutLayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::DropoutLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
NeuronLayer(const LayerParameter &param) (defined in caffe::NeuronLayer< Dtype >)caffe::NeuronLayer< Dtype >inlineexplicit
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
rand_vec_caffe::DropoutLayer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::DropoutLayer< Dtype >virtual
scale_caffe::DropoutLayer< Dtype >protected
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
threshold_caffe::DropoutLayer< Dtype >protected
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::DropoutLayer< Dtype >inlinevirtual
uint_thres_ (defined in caffe::DropoutLayer< Dtype >)caffe::DropoutLayer< Dtype >protected
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1DropoutLayer.html b/doxygen/classcaffe_1_1DropoutLayer.html new file mode 100644 index 00000000000..2589945e16b --- /dev/null +++ b/doxygen/classcaffe_1_1DropoutLayer.html @@ -0,0 +1,460 @@ + + + + + + + +Caffe: caffe::DropoutLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::DropoutLayer< Dtype > Class Template Reference
+
+
+ +

During training only, sets a random portion of $x$ to 0, adjusting the rest of the vector magnitude accordingly. + More...

+ +

#include <dropout_layer.hpp>

+
+Inheritance diagram for caffe::DropoutLayer< Dtype >:
+
+
+ + +caffe::NeuronLayer< Dtype > +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 DropoutLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
- Public Member Functions inherited from caffe::NeuronLayer< Dtype >
NeuronLayer (const LayerParameter &param)
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+Blob< unsigned int > rand_vec_
 when divided by UINT_MAX, the randomly generated values $u\sim U(0,1)$
 
+Dtype threshold_
 the probability $ p $ of dropping any input
 
+Dtype scale_
 the scale for undropped inputs at train time $ 1 / (1 - p) $
 
+unsigned int uint_thres_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::DropoutLayer< Dtype >

+ +

During training only, sets a random portion of $x$ to 0, adjusting the rest of the vector magnitude accordingly.

+
Parameters
+ + + +
bottominput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the inputs $ x $
  2. +
+
topoutput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the computed outputs $ y = |x| $
  2. +
+
+
+
+

Constructor & Destructor Documentation

+ +

§ DropoutLayer()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + +
caffe::DropoutLayer< Dtype >::DropoutLayer (const LayerParameter & param)
+
+inlineexplicit
+
+
Parameters
+ + +
paramprovides DropoutParameter dropout_param, with DropoutLayer options:
    +
  • dropout_ratio (optional, default 0.5). Sets the probability $ p $ that any given unit is dropped.
  • +
+
+
+
+ +
+
+

Member Function Documentation

+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::DropoutLayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+
Parameters
+ + + +
bottominput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the inputs $ x $
  2. +
+
topoutput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the computed outputs. At training time, we have $ y_{\mbox{train}} = \left\{ \begin{array}{ll} \frac{x}{1 - p} & \mbox{if } u > p \\ 0 & \mbox{otherwise} \end{array} \right. $, where $ u \sim U(0, 1)$ is generated independently for each input at each iteration. At test time, we simply have $ y_{\mbox{test}} = \mathbb{E}[y_{\mbox{train}}] = x $.
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::DropoutLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::DropoutLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Reimplemented from caffe::NeuronLayer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1DropoutLayer.png b/doxygen/classcaffe_1_1DropoutLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..79dc5cd42e31746573f29fa637bc0e3916a8cb2a GIT binary patch literal 1073 zcmeAS@N?(olHy`uVBq!ia0vp^+km)(gBeKH#yxxuq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ04|uvbhEy=Vo%`_8D+L}G|LKzV|4&@+ z70smUwRgVc%+ANFE^LrtIAo|kgCay&l;C3sJozAjPUJM5~u=i(^2^`{rB zth}cB=6Fo|&vl9Axhk14?>B6J^2A0zyZY_g4cFCYZ(DM$X6Mx0YZu%PpHcCA|COzJ z`?mOHJIlT)ho7s>y}g`sZB*$FmAP3AyZ_{Dh;IoAY+t)_<7>g>2hBHrs?8J*sNq*M zTeSBO@3y;EuYZcw@chbGGh3UG_a^|3S0BuQ&6Y_7`l+RW+>C zQ9m%JJxC@;bz;iBrFr7(^+SX_cdg)_T>tO*=jS)VSJpHCHu~D15-zTopGY&FY5gc$5u%^IdNNgwcTvd>&+`=j;wsh#U{f7@);lzfpieLnBDx9``jtt>KF{b!Z0P11E` zz6b7aYV6PKo0d_nuxf$cH@Wn^w@%+nh&H$0&1#=8KlNEh?ETw%Wu-q(N5!SwzBm6{ zU)kon_y1Sf6+hBXlHUI-$9&=8^xI)Vljm+)zb)_mM)k(Ba^J!YQ(Y!iPTv)KrcJw3 zrPf#c)sGAH&HUd&U)?{j&*!i5&1p;QLqVy8DSFbLlH-1wOJA~l(7ns>?DCu&+iy>~ zQ=D{vW%`qOBGy`*4fBZ(QBZ(~L`_Sb>94~83{^FS{#9`MEanek{RbHq-U+wD;Y`gCzt#;mK?ZE!#*7{90 zw~xDhVz#`+243};P#z8C$@3g-g)ym zr~G_bwCAdlEqn4e^rqHsn|)#9=3MPgPv4s%yA!W2es%15&;;&_ab2hG%>5Mes%&P( znn?^bi#~dB8!T!3&#wPw^_BgNwKIR+zQOPhmd>vIZ%vJyw(<+VuDq8b--O9}!2HeN M>FVdQ&MBb@0Nu6}z5oCK literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1DummyDataLayer-members.html b/doxygen/classcaffe_1_1DummyDataLayer-members.html new file mode 100644 index 00000000000..86fa527087a --- /dev/null +++ b/doxygen/classcaffe_1_1DummyDataLayer-members.html @@ -0,0 +1,121 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::DummyDataLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::DummyDataLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::DummyDataLayer< Dtype >inlineprotectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::DummyDataLayer< Dtype >inlineprotectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
DummyDataLayer(const LayerParameter &param) (defined in caffe::DummyDataLayer< Dtype >)caffe::DummyDataLayer< Dtype >inlineexplicit
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::DummyDataLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
fillers_ (defined in caffe::DummyDataLayer< Dtype >)caffe::DummyDataLayer< Dtype >protected
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::DummyDataLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::DummyDataLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::DummyDataLayer< Dtype >inlinevirtual
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
refill_ (defined in caffe::DummyDataLayer< Dtype >)caffe::DummyDataLayer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::DummyDataLayer< Dtype >inlinevirtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::DummyDataLayer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::DummyDataLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1DummyDataLayer.html b/doxygen/classcaffe_1_1DummyDataLayer.html new file mode 100644 index 00000000000..a6bc7ae123f --- /dev/null +++ b/doxygen/classcaffe_1_1DummyDataLayer.html @@ -0,0 +1,410 @@ + + + + + + + +Caffe: caffe::DummyDataLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::DummyDataLayer< Dtype > Class Template Reference
+
+
+ +

Provides data to the Net generated by a Filler. + More...

+ +

#include <dummy_data_layer.hpp>

+
+Inheritance diagram for caffe::DummyDataLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

DummyDataLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual bool ShareInParallel () const
 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 void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + +

+Protected Attributes

+vector< shared_ptr< Filler< Dtype > > > fillers_
 
+vector< bool > refill_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::DummyDataLayer< Dtype >

+ +

Provides data to the Net generated by a Filler.

+

TODO(dox): thorough documentation for Forward and proto params.

+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::DummyDataLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::DummyDataLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ MinTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::DummyDataLayer< Dtype >::MinTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some minimum number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void caffe::DummyDataLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+inlinevirtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1DummyDataLayer.png b/doxygen/classcaffe_1_1DummyDataLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..b02d852328abc165aeebdac5ccb63b37ad4a9486 GIT binary patch literal 768 zcmeAS@N?(olHy`uVBq!ia0vp^XMi|>gBeIBMP&T|QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;SZyxmj|K#gt z0y#pr0=7yz`RvqIIrc2UV7<=iO+89to>I=jZj-96v`kzg_tnscWAzrs{$7Rd3hkEqb{)S;;eK^0~t~ zjBop29-Cfz+TwSw#b5Jf>z@hsM`|I_YE9cELH#l}`{>(#PHW??co*DUh zPy3m^Q>>@Lj6I*7{OnBDtxOaAQ%3`GI zxPs?$9%wZ3iE1@f|Ni~_zSu`wzy6q0x2>#h=B$mA_o$ZZ-B>n-!T$9VwOEDh6E@xq z%g;8>Y@aXL_@`p=^6cvx33opHSt_Q}ce|r^w#=ozf@iEgWkCn77&$MfsY&x{Ijo@< zkg6{8Slq&T#@7ooc_-|h-*mF@(vM9~7u`@uJ*%1U#!plG%r<4&GZ&NQws*cemuH;* z&&v4N74;pnX1JF)I;QEnQ;KYv&NioV|{ d;3VNtpYc$;UO;n}4KTSfc)I$ztaD0e0sx@gTZRAt literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1ELULayer-members.html b/doxygen/classcaffe_1_1ELULayer-members.html new file mode 100644 index 00000000000..6d7a451638f --- /dev/null +++ b/doxygen/classcaffe_1_1ELULayer-members.html @@ -0,0 +1,120 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::ELULayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::ELULayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::ELULayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::ELULayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
ELULayer(const LayerParameter &param)caffe::ELULayer< Dtype >inlineexplicit
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::NeuronLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::NeuronLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ELULayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ELULayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlinevirtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
NeuronLayer(const LayerParameter &param) (defined in caffe::NeuronLayer< Dtype >)caffe::NeuronLayer< Dtype >inlineexplicit
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::NeuronLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::ELULayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1ELULayer.html b/doxygen/classcaffe_1_1ELULayer.html new file mode 100644 index 00000000000..78cf6e844a5 --- /dev/null +++ b/doxygen/classcaffe_1_1ELULayer.html @@ -0,0 +1,392 @@ + + + + + + + +Caffe: caffe::ELULayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::ELULayer< Dtype > Class Template Reference
+
+
+ +

Exponential Linear Unit non-linearity $ y = \left\{ \begin{array}{lr} x & \mathrm{if} \; x > 0 \\ \alpha (\exp(x)-1) & \mathrm{if} \; x \le 0 \end{array} \right. $. + More...

+ +

#include <elu_layer.hpp>

+
+Inheritance diagram for caffe::ELULayer< Dtype >:
+
+
+ + +caffe::NeuronLayer< Dtype > +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ELULayer (const LayerParameter &param)
 
+virtual const char * type () const
 Returns the layer type.
 
- Public Member Functions inherited from caffe::NeuronLayer< Dtype >
NeuronLayer (const LayerParameter &param)
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Computes the error gradient w.r.t. the ELU inputs. More...
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::ELULayer< Dtype >

+ +

Exponential Linear Unit non-linearity $ y = \left\{ \begin{array}{lr} x & \mathrm{if} \; x > 0 \\ \alpha (\exp(x)-1) & \mathrm{if} \; x \le 0 \end{array} \right. $.

+

Constructor & Destructor Documentation

+ +

§ ELULayer()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + +
caffe::ELULayer< Dtype >::ELULayer (const LayerParameter & param)
+
+inlineexplicit
+
+
Parameters
+ + +
paramprovides ELUParameter elu_param, with ELULayer options:
    +
  • alpha (optional, default 1). the value $ \alpha $ by which controls saturation for negative inputs.
  • +
+
+
+
+ +
+
+

Member Function Documentation

+ +

§ Backward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void caffe::ELULayer< Dtype >::Backward_cpu (const vector< Blob< Dtype > *> & top,
const vector< bool > & propagate_down,
const vector< Blob< Dtype > *> & bottom 
)
+
+protectedvirtual
+
+ +

Computes the error gradient w.r.t. the ELU inputs.

+
Parameters
+ + + + +
topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
    +
  1. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
  2. +
+
propagate_downsee Layer::Backward.
bottominput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \frac{\partial E}{\partial x} = \left\{ \begin{array}{lr} 1 & \mathrm{if} \; x > 0 \\ y + \alpha & \mathrm{if} \; x \le 0 \end{array} \right. $ if propagate_down[0].
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::ELULayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+
Parameters
+ + + +
bottominput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the inputs $ x $
  2. +
+
topoutput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the computed outputs $ y = \left\{ \begin{array}{lr} x & \mathrm{if} \; x > 0 \\ \alpha (\exp(x)-1) & \mathrm{if} \; x \le 0 \end{array} \right. $.
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/caffe/layers/elu_layer.hpp
  • +
  • src/caffe/layers/elu_layer.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1ELULayer.png b/doxygen/classcaffe_1_1ELULayer.png new file mode 100644 index 0000000000000000000000000000000000000000..7700467437a3710ea99ee229deb9f6200066a2aa GIT binary patch literal 1044 zcmeAS@N?(olHy`uVBq!ia0vp^n}N84gBeK9F4tNQq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ07kj!mhEy=VoqKW9D+M0caC75-|JCDd zmkMcQSYDqqai+yxtr;z@93Q7n35xPj@r?31sN?yME6wxMb&=28-mZG4@^aO-}we6?J>3I)z`#cCt*PuaccdhycF#MP!=eHoDT?ABwhucpubzM9dj@93{~ zZPDJ%yqj%Jq(Ae1Recus?U&llrqxjrPj1ebCiFXCUi;TSZ8syXe!VlJZr8lr`v#Ia z?D?k_Y+<@>t}=7^m*+ySFV{LxQZv0+S^xX}r_5)OPxKS!x&3Ri@t(B3DRR;u(KC~t zthX-q(p;;`Ab*!Z>~hnY?YFBga2ws9IK4S;qUA5P1MwO&7=h{-fZk`QXEkov-z0e; z{vgkT^$Bbr!VQ>zXro96%)_9*p~cT)Cmq|Blss+M{PQGkac5m*wm~AJb%VrmSwq#%I%mH)zF`)}%kXwRoYO;d}8zGU=UpuNN3e z8QH(hS@W&T{EXSG*u4SU&+MHuXXfi}tCV$I`*NPR&U-sIQ$N-I{Nv>H;>MwNCvzTw z0yJ)Q`fYQcxKo9<{{7kVR^pbk>DmL|cs-wK{@uy4`o2Po6FaPwCso_(7bg z;Dm+tl=R!%at${!>MVtZ`fJ_Kf2aL>aVJaeoaM29W?O&DBwczf^!f4i$wv)8#-BO- zfdc>#2kK@lY<+FS&y;fF z*7hT(RWod~K7T*+H2ZMP)_K2YZ{x6ib}QM#Hcc<$XG{0@-?t2OZf@Lr3YZ$bcZc*> zow(zD+4R|?pt+yAZKN+>4&68Bd7|zAzMB@;fr0lAoEleZspq`bP0 Hl+XkK<8%z8 literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1EltwiseLayer-members.html b/doxygen/classcaffe_1_1EltwiseLayer-members.html new file mode 100644 index 00000000000..c7049d09379 --- /dev/null +++ b/doxygen/classcaffe_1_1EltwiseLayer-members.html @@ -0,0 +1,123 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::EltwiseLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::EltwiseLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::EltwiseLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::EltwiseLayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
coeffs_ (defined in caffe::EltwiseLayer< Dtype >)caffe::EltwiseLayer< Dtype >protected
EltwiseLayer(const LayerParameter &param) (defined in caffe::EltwiseLayer< Dtype >)caffe::EltwiseLayer< Dtype >inlineexplicit
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::EltwiseLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::EltwiseLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::EltwiseLayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::EltwiseLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
max_idx_ (defined in caffe::EltwiseLayer< Dtype >)caffe::EltwiseLayer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::EltwiseLayer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
op_ (defined in caffe::EltwiseLayer< Dtype >)caffe::EltwiseLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::EltwiseLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
stable_prod_grad_ (defined in caffe::EltwiseLayer< Dtype >)caffe::EltwiseLayer< Dtype >protected
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::EltwiseLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1EltwiseLayer.html b/doxygen/classcaffe_1_1EltwiseLayer.html new file mode 100644 index 00000000000..d48810d2232 --- /dev/null +++ b/doxygen/classcaffe_1_1EltwiseLayer.html @@ -0,0 +1,416 @@ + + + + + + + +Caffe: caffe::EltwiseLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::EltwiseLayer< Dtype > Class Template Reference
+
+
+ +

Compute elementwise operations, such as product and sum, along multiple input Blobs. + More...

+ +

#include <eltwise_layer.hpp>

+
+Inheritance diagram for caffe::EltwiseLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

EltwiseLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+EltwiseParameter_EltwiseOp op_
 
+vector< Dtype > coeffs_
 
+Blob< int > max_idx_
 
+bool stable_prod_grad_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::EltwiseLayer< Dtype >

+ +

Compute elementwise operations, such as product and sum, along multiple input Blobs.

+

TODO(dox): thorough documentation for Forward, Backward, and proto params.

+

Member Function Documentation

+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::EltwiseLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::EltwiseLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ MinBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::EltwiseLayer< Dtype >::MinBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some minimum number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::EltwiseLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1EltwiseLayer.png b/doxygen/classcaffe_1_1EltwiseLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..274b9c3244ff67d1979c90c57e631a76e7c3e9d3 GIT binary patch literal 738 zcmeAS@N?(olHy`uVBq!ia0vp^8-O@~gBeKn>GHn=QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;v<`7>0jeN zQ&g_Ir%; z{oWq+IsIsFs-n&PS3mN7?w*!Q@Q*h5Fw zJ-eN;m3-vwX4Uer_cY?gYl;r~zJPmvD-@8vV|f3CAVG)ZI)$S+_|iGSFZ zd)tMH<0Ah7pIN*=o~Ii_kZ4W zi(&ePl+?|y4q4ljvRs<{H1gis8SjLdS#A_sS*!&HpKrwGVD6ar;hUw~TQB_B6#Xae z&Y9Wf2kf4PiJQ(jz}J7Hvgq8dHKqD@7+QV&))++lofzdil^$q;|rl + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::EmbedLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::EmbedLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::EmbedLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::EmbedLayer< Dtype >protectedvirtual
bias_multiplier_ (defined in caffe::EmbedLayer< Dtype >)caffe::EmbedLayer< Dtype >protected
bias_term_ (defined in caffe::EmbedLayer< Dtype >)caffe::EmbedLayer< Dtype >protected
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EmbedLayer(const LayerParameter &param) (defined in caffe::EmbedLayer< Dtype >)caffe::EmbedLayer< Dtype >inlineexplicit
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::EmbedLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::EmbedLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::EmbedLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::EmbedLayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
K_ (defined in caffe::EmbedLayer< Dtype >)caffe::EmbedLayer< Dtype >protected
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::EmbedLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
M_ (defined in caffe::EmbedLayer< Dtype >)caffe::EmbedLayer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
N_ (defined in caffe::EmbedLayer< Dtype >)caffe::EmbedLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::EmbedLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::EmbedLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1EmbedLayer.html b/doxygen/classcaffe_1_1EmbedLayer.html new file mode 100644 index 00000000000..22e7c7ee6b1 --- /dev/null +++ b/doxygen/classcaffe_1_1EmbedLayer.html @@ -0,0 +1,419 @@ + + + + + + + +Caffe: caffe::EmbedLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::EmbedLayer< Dtype > Class Template Reference
+
+
+ +

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. + More...

+ +

#include <embed_layer.hpp>

+
+Inheritance diagram for caffe::EmbedLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

EmbedLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+int M_
 
+int K_
 
+int N_
 
+bool bias_term_
 
+Blob< Dtype > bias_multiplier_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::EmbedLayer< Dtype >

+ +

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.

+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::EmbedLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::EmbedLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::EmbedLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::EmbedLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1EmbedLayer.png b/doxygen/classcaffe_1_1EmbedLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..e1f7813dfb761fde936ee6bec96b517c64a5b786 GIT binary patch literal 722 zcmeAS@N?(olHy`uVBq!ia0vp^>w!3cgBeIhbX@HQQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;Se?8^@fA#&J z1(&dv{z^ORbm-AsW^c=FOMjo*q;uLKY2uPZlS)-hzscc~9(`#rU+SCZH|d?$+WE&< ztIT|D_kNe>_KU{%g3TwD_)p)XDifU&EcZO}`0V*2Qw^#%d^|YW*YMx768xkkXFd-}}=1_4RM;!aHZ> zO#W5%B)5J-%DP+itJmj$WB06D!9Mrv|9_VIPX8A9etb`VVZCg;XV=vyQpG?#tM5L(8>+tNb;|b#pN|yZyL^^`FQoExcizO>^Z$Eu z9m-EPZI#-&bej2keXYbV3AZzD>&!OuW2}D5SC(CE?Cc(N;Z@DQ(6xSlQV;xkWvYGj zO7EV^!>=c2J$-e3?}3MFi=Wh#YVQ7UO{jd2b&zNB*Sw}nE=ShAl!>%|tC?4k>venc z-syeKmR-l)@8zvL-FNzpD=;L>bNU}wN9|AFGynB<=QsSe`_1=;@84!WW5yK|xohtO z>or!ccfa?I{Xopt|JP*Se`RkFu>DZ~c)s$S@0#!WE9D>mv)acHf8_~l$7K+{H8 + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::EuclideanLossLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::EuclideanLossLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::EuclideanLossLayer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::LossLayer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::EuclideanLossLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::EuclideanLossLayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
diff_ (defined in caffe::EuclideanLossLayer< Dtype >)caffe::EuclideanLossLayer< Dtype >protected
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
EuclideanLossLayer(const LayerParameter &param) (defined in caffe::EuclideanLossLayer< Dtype >)caffe::EuclideanLossLayer< Dtype >inlineexplicit
ExactNumBottomBlobs() constcaffe::LossLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::LossLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::EuclideanLossLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::EuclideanLossLayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::LossLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
LossLayer(const LayerParameter &param) (defined in caffe::LossLayer< Dtype >)caffe::LossLayer< Dtype >inlineexplicit
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::EuclideanLossLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::EuclideanLossLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1EuclideanLossLayer.html b/doxygen/classcaffe_1_1EuclideanLossLayer.html new file mode 100644 index 00000000000..d8aab6be767 --- /dev/null +++ b/doxygen/classcaffe_1_1EuclideanLossLayer.html @@ -0,0 +1,464 @@ + + + + + + + +Caffe: caffe::EuclideanLossLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::EuclideanLossLayer< Dtype > Class Template Reference
+
+
+ +

Computes the Euclidean (L2) loss $ E = \frac{1}{2N} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $ for real-valued regression tasks. + More...

+ +

#include <euclidean_loss_layer.hpp>

+
+Inheritance diagram for caffe::EuclideanLossLayer< Dtype >:
+
+
+ + +caffe::LossLayer< Dtype > +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

EuclideanLossLayer (const LayerParameter &param)
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual bool AllowForceBackward (const int bottom_index) const
 
- Public Member Functions inherited from caffe::LossLayer< Dtype >
LossLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
+virtual bool AutoTopBlobs () const
 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 int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Computes the Euclidean (L2) loss $ E = \frac{1}{2N} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $ for real-valued regression tasks. More...
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Computes the Euclidean error gradient w.r.t. the inputs. More...
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + +

+Protected Attributes

+Blob< Dtype > diff_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::EuclideanLossLayer< Dtype >

+ +

Computes the Euclidean (L2) loss $ E = \frac{1}{2N} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $ for real-valued regression tasks.

+
Parameters
+ + + +
bottominput Blob vector (length 2)
    +
  1. $ (N \times C \times H \times W) $ the predictions $ \hat{y} \in [-\infty, +\infty]$
  2. +
  3. $ (N \times C \times H \times W) $ the targets $ y \in [-\infty, +\infty]$
  4. +
+
topoutput Blob vector (length 1)
    +
  1. $ (1 \times 1 \times 1 \times 1) $ the computed Euclidean loss: $ E = \frac{1}{2n} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $
  2. +
+
+
+
+

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 not the best way to solve linear least squares problems! We use it only as an instructive example.)

+

Member Function Documentation

+ +

§ AllowForceBackward()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + +
virtual bool caffe::EuclideanLossLayer< Dtype >::AllowForceBackward (const int bottom_index) const
+
+inlinevirtual
+
+

Unlike most loss layers, in the EuclideanLossLayer we can backpropagate to both inputs – override to return true and always allow force_backward.

+ +

Reimplemented from caffe::LossLayer< Dtype >.

+ +
+
+ +

§ Backward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void caffe::EuclideanLossLayer< Dtype >::Backward_cpu (const vector< Blob< Dtype > *> & top,
const vector< bool > & propagate_down,
const vector< Blob< Dtype > *> & bottom 
)
+
+protectedvirtual
+
+ +

Computes the Euclidean error gradient w.r.t. the inputs.

+

Unlike other children of LossLayer, EuclideanLossLayer 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.

+
Parameters
+ + + + +
topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
    +
  1. $ (1 \times 1 \times 1 \times 1) $ This Blob's diff will simply contain the loss_weight* $ \lambda $, as $ \lambda $ is the coefficient of this layer's output $\ell_i$ in the overall Net loss $ E = \lambda_i \ell_i + \mbox{other loss terms}$; hence $ \frac{\partial E}{\partial \ell_i} = \lambda_i $. (*Assuming that this top Blob is not used as a bottom (input) by any other layer of the Net.)
  2. +
+
propagate_downsee Layer::Backward.
bottominput Blob vector (length 2)
    +
  1. $ (N \times C \times H \times W) $ the predictions $\hat{y}$; Backward fills their diff with gradients $ \frac{\partial E}{\partial \hat{y}} = \frac{1}{n} \sum\limits_{n=1}^N (\hat{y}_n - y_n) $ if propagate_down[0]
  2. +
  3. $ (N \times C \times H \times W) $ the targets $y$; Backward fills their diff with gradients $ \frac{\partial E}{\partial y} = \frac{1}{n} \sum\limits_{n=1}^N (y_n - \hat{y}_n) $ if propagate_down[1]
  4. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::EuclideanLossLayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+ +

Computes the Euclidean (L2) loss $ E = \frac{1}{2N} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $ for real-valued regression tasks.

+
Parameters
+ + + +
bottominput Blob vector (length 2)
    +
  1. $ (N \times C \times H \times W) $ the predictions $ \hat{y} \in [-\infty, +\infty]$
  2. +
  3. $ (N \times C \times H \times W) $ the targets $ y \in [-\infty, +\infty]$
  4. +
+
topoutput Blob vector (length 1)
    +
  1. $ (1 \times 1 \times 1 \times 1) $ the computed Euclidean loss: $ E = \frac{1}{2n} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $
  2. +
+
+
+
+

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 not the best way to solve linear least squares problems! We use it only as an instructive example.)

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::EuclideanLossLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Reimplemented from caffe::LossLayer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1EuclideanLossLayer.png b/doxygen/classcaffe_1_1EuclideanLossLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4d7167fbc2d5aff4484139680f75c4df93c169 GIT binary patch literal 1122 zcmeAS@N?(olHy`uVBq!ia0vp^w}H5WgBeIhy60&FDTx4|5ZC|z{{xvX-h3_XKQsZz z0^uvfzbFM0$n0K~+hj;n>Tunx` zhpRp}cW%9LeV*)WUncA4yt{7aq+hf!kMy5$`k>pLo=o4j{KwZ;-urhjZOxy`+cW=N ztK3|A$z_S!9MAnxzjEeINtsu*|LV@V)qY+<%dNtGoQwV=oU=Eh@y4!;N=JPs)j5NF zGzH`}|814?o*S}$u(V}hyLup}|M-pq=FPSj+ghb(>b_QSa8Z?Zupu5Fh&DO@*=EHI z)l3i7*(yhaH+crx+)bRl%ypgrB)_Zwlsv6{*YAH9IH_cjbdLUZ_UrGHvaKd8@rzBq zZC2cQW6QSdaqa;+r*GG5-a7PHaoV*<38uBCXUrZwkXTD9v#PVXF(?6~9aR$uBnyR7|d zS?{{`w>jsfbLyt{-AcbMUTD0mbe4Q)^yfXMAEck3)!$L`WzD@W>E~y!ot$<*J8Gti z^)=7WM_a!Bky`yd`s=67r9qSKE$b7l`z-d~B3eI6VO!o7kHX1I_%&~;XwIADJL%EO zlV-p$SjJ$toc+K8sTprSN{HtrY*W9rp+I?a>RgtN6)DUe%ZbMo-ODm(v55*FnBZmB zPyxbO8*RJK#LH@HJ(xE=@h59RK=t=s-?molw_0`Z+bf&J3^!JO`)3keoXDWQD(Chx z9l`2v|8s9Uh@STCK6=fd_UYxchqhC;|9|w{Hs|-HD6ue^=<~{O8=~W;?!L8&27z_v+C0#qQBK9#XYlJa(1Tm{1s`& zWjT32zy6u`JneE;_~UII?{A#@wyu5c)Ra8C-Cpi* zH^1)QAsJj8v9Ajl?6Nm%LS{W*%Xr5kzwY4E#pz#{T|YN_Z9&@q99^C7vsZVXwTfIF z>3gMiu1UO4#QF6bfeHI+?CQx3``7htjoESZzxKAcEe<(%GbTP_```vks(bVHXU + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::ExpLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::ExpLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::ExpLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::ExpLayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::NeuronLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::NeuronLayer< Dtype >inlinevirtual
ExpLayer(const LayerParameter &param)caffe::ExpLayer< Dtype >inlineexplicit
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ExpLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ExpLayer< Dtype >protectedvirtual
inner_scale_ (defined in caffe::ExpLayer< Dtype >)caffe::ExpLayer< Dtype >protected
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ExpLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
NeuronLayer(const LayerParameter &param) (defined in caffe::NeuronLayer< Dtype >)caffe::NeuronLayer< Dtype >inlineexplicit
outer_scale_ (defined in caffe::ExpLayer< Dtype >)caffe::ExpLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::NeuronLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::ExpLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1ExpLayer.html b/doxygen/classcaffe_1_1ExpLayer.html new file mode 100644 index 00000000000..d2bd7294afd --- /dev/null +++ b/doxygen/classcaffe_1_1ExpLayer.html @@ -0,0 +1,451 @@ + + + + + + + +Caffe: caffe::ExpLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::ExpLayer< Dtype > Class Template Reference
+
+
+ +

Computes $ y = \gamma ^ {\alpha x + \beta} $, as specified by the scale $ \alpha $, shift $ \beta $, and base $ \gamma $. + More...

+ +

#include <exp_layer.hpp>

+
+Inheritance diagram for caffe::ExpLayer< Dtype >:
+
+
+ + +caffe::NeuronLayer< Dtype > +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ExpLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual const char * type () const
 Returns the layer type.
 
- Public Member Functions inherited from caffe::NeuronLayer< Dtype >
NeuronLayer (const LayerParameter &param)
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Computes the error gradient w.r.t. the exp inputs. More...
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + +

+Protected Attributes

+Dtype inner_scale_
 
+Dtype outer_scale_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::ExpLayer< Dtype >

+ +

Computes $ y = \gamma ^ {\alpha x + \beta} $, as specified by the scale $ \alpha $, shift $ \beta $, and base $ \gamma $.

+

Constructor & Destructor Documentation

+ +

§ ExpLayer()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + +
caffe::ExpLayer< Dtype >::ExpLayer (const LayerParameter & param)
+
+inlineexplicit
+
+
Parameters
+ + +
paramprovides ExpParameter exp_param, with ExpLayer options:
    +
  • scale (optional, default 1) the scale $ \alpha $
  • +
  • shift (optional, default 0) the shift $ \beta $
  • +
  • base (optional, default -1 for a value of $ e \approx 2.718 $) the base $ \gamma $
  • +
+
+
+
+ +
+
+

Member Function Documentation

+ +

§ Backward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void caffe::ExpLayer< Dtype >::Backward_cpu (const vector< Blob< Dtype > *> & top,
const vector< bool > & propagate_down,
const vector< Blob< Dtype > *> & bottom 
)
+
+protectedvirtual
+
+ +

Computes the error gradient w.r.t. the exp inputs.

+
Parameters
+ + + + +
topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
    +
  1. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
  2. +
+
propagate_downsee Layer::Backward.
bottominput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \frac{\partial E}{\partial x} = \frac{\partial E}{\partial y} y \alpha \log_e(gamma) $ if propagate_down[0]
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::ExpLayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+
Parameters
+ + + +
bottominput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the inputs $ x $
  2. +
+
topoutput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the computed outputs $ y = \gamma ^ {\alpha x + \beta} $
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::ExpLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/caffe/layers/exp_layer.hpp
  • +
  • src/caffe/layers/exp_layer.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1ExpLayer.png b/doxygen/classcaffe_1_1ExpLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..3fee55966c4bd03260819d2d18060a7d6d385e25 GIT binary patch literal 1064 zcmeAS@N?(olHy`uVBq!ia0vp^n}N84gBeK9F4tNQq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0w|lxchEy=VoqKW9D+M0c@bdIO|NZx6 zWpavaxsxn2^W@CD{tE(Po*nDgyx!%f7Unt2>!6P3Kdv;-PuB%LZ_3enrt)&twBz?b zXn7trKJ@3ti!C=Lim&&o#9oztW~&q3GTp>)Gi!0x=4}3S&h5Qs<|n@x8d!T?vfi6! z_vco9+6=Yd(>Om_-1wL2(;b+p=gGS_{an2EGjX-ntD2gs#XBEyeKmdd_SK9d>C4rH zvjgwn?7FFT_E(K_ZRbwWz1uujJy;}WRcN+s=Mg)R=XtjK6V1X>ZNrz%UzdK{+=r$3 zk+0;Fu!P@jDxaVHn^Rl6E8pYN0yeAn|Nrf(nN=zBlYK_}#CpYZlb)@Dt z>vMb7y|$XpP*cJ@!$;WYe%@zC{}VOt^Z2UVp1qJ}xF2A^{6l*N;~&v848R~@sAn~9 z*xw|1ApRiFgY^k)AHq?j73^Q{S~s~fbkedQ1Mf-un<6Luxtbg|&G+b>pHr6XTX$o| z+IRKJtF6xTKUEjMZrg8IZa!s6o6+aG8@h+QrIz1(QuBSzJy|dBdGT-GO}$(9LMYGw ze(~kpId?>Mo6q3S{(YXu+&@>@xKv{QhnWif&2Q)Xn*aQf`|Qno#U!^ z{dMll)2^;xNA|>WOg{JK?ls56E2(yG)~x?k7Jla1?7OzX*Uzk-F=yuK?pvvPTz2wL zT<5%Z`rO|w(`V1rl20-FcdBZg&-$yI-%6|LS%uHs=GgHG`+CpUXO@geCyZstch2 literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1Filler-members.html b/doxygen/classcaffe_1_1Filler-members.html new file mode 100644 index 00000000000..28f2d1e011f --- /dev/null +++ b/doxygen/classcaffe_1_1Filler-members.html @@ -0,0 +1,84 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::Filler< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::Filler< Dtype >, including all inherited members.

+ + + + + +
Fill(Blob< Dtype > *blob)=0 (defined in caffe::Filler< Dtype >)caffe::Filler< Dtype >pure virtual
Filler(const FillerParameter &param) (defined in caffe::Filler< Dtype >)caffe::Filler< Dtype >inlineexplicit
filler_param_ (defined in caffe::Filler< Dtype >)caffe::Filler< Dtype >protected
~Filler() (defined in caffe::Filler< Dtype >)caffe::Filler< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1Filler.html b/doxygen/classcaffe_1_1Filler.html new file mode 100644 index 00000000000..1544e87c2ec --- /dev/null +++ b/doxygen/classcaffe_1_1Filler.html @@ -0,0 +1,125 @@ + + + + + + + +Caffe: caffe::Filler< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::Filler< Dtype > Class Template Referenceabstract
+
+
+ +

Fills a Blob with constant or randomly-generated data. + More...

+ +

#include <filler.hpp>

+
+Inheritance diagram for caffe::Filler< Dtype >:
+
+
+ + +caffe::BilinearFiller< Dtype > +caffe::ConstantFiller< Dtype > +caffe::GaussianFiller< Dtype > +caffe::MSRAFiller< Dtype > +caffe::PositiveUnitballFiller< Dtype > +caffe::UniformFiller< Dtype > +caffe::XavierFiller< Dtype > + +
+ + + + + + +

+Public Member Functions

Filler (const FillerParameter &param)
 
+virtual void Fill (Blob< Dtype > *blob)=0
 
+ + + +

+Protected Attributes

+FillerParameter filler_param_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::Filler< Dtype >

+ +

Fills a Blob with constant or randomly-generated data.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classcaffe_1_1Filler.png b/doxygen/classcaffe_1_1Filler.png new file mode 100644 index 0000000000000000000000000000000000000000..249a5acc01c1b0b6aedf56ff191a524a01270fee GIT binary patch literal 2433 zcmaJ@do)}57G}6=v`VK{LdXotZIvOOjc0q2X4GS;7^5Cj!jxMf;#oysqf{yl^(e*k zcBbk?qol+mlD68QZs=``wjL>3uLvR`Lqz5v)%(xAXRWh;zi*#?_TJ~)=X~qr_;?{z zRkT&)rrO5M!x$$ENb+=JslE%EW)A(!6ZkD2s(j~jJ z7bYj5KlLAbFp~M5%LQ5_ZII`*S6TgAmkV;qi*@DJBzgI-6qOg0b9QYxEx&0^T-4M@T9lDJuZsC2(Uc#)h3 z$)a4e{&G9ZFbS9aD_#qFG7RzYyfx$%BW^#$v;M?HtBKX;#^Pd4oEnz-%$?P*BA=|N zd5U5U#&d1p<{^U$1~Oi>lHFJ(8ZnsLRe=OTb#K4m)R z1!vIhm&GW|?aHHR>BCN*HcFj#jzgaM3LwMkANGvgr<&bU8FJgkRa8Cyd>MN?NA6Me zG`EpcBh_e&f4%RvT2cSmee1?=9}~7XaJc~4o?24t@SNqvjX5a4R7l$zr98WEE4i|H z1k*cGHpCmBeV(YeJEy5i86wFKe}j~vmIH%3Bzw1zA^f*fW6Cl_ z!-#*&lp$B81P|yP87evp+h}bA6?9&}ZnUzu(12Us_T0m8MI>o=sss$4KPzFy&B$F3jim-cwF7lXxi_tV3=_p8ZFt|0RZbL zj2}AD1Nzxl(0L!2DY|(Ejg~&E1AxrUo6GdWY4+xAqNRDUAOVdw6<7)#=8ErB9m%Yu z05i68Zy5)kw8sO${wAn6kj>63Q>{&9crDI_Hw94GlhyG^aeGHDH=%Gm7Fi3hxG(? zw6zx;#-xeyazyDVU7C(R+H~PqS1WNe{>^pdqu@1u$68s6TR8t^df)!k>x;) zgXcOWJ?LOYqG~J$kA-%ZkyF#_MzRSf&2@bjxW^@H;OF!c3UA#@fK>_Xs@W4nkCjyc z>$O6`Gyq`hqQ(9yHsKwGR>X2_rT^L?wnm;vtD-0!TR(2lp~3KpZ?^~%<%*e@3i`6=<@i1C;sM+G1 z=!}-pwB_3kMUxa}!eJ>;O}R$s$~VjFOFmW(kFzi_N^5oy?)yXYVpGrxyD3!C@6IxP z!fhSWwh8^HINF3q*eiL;4 z-tjVHu&&@n6?T@@88Cpyy0bQGR_UHSH$|tdqw2uNOr_Gb>dDcyk+nsO_$cRErLjNV z8obxY&q7U_%%`Hmn7;T#%#aP;r}@*$p)NKF*S@q55;G1N5R9qPH6Z^ygukO-wX>x^ zqWA|<>f)e&ctr0zJxJyVzCW;^63zNFD!v@nrVA;4fYBG7!UUy89-KDHb!5ML?^ziz z-e?2IDx2*)!;6l8kWDa-0%@?$>aeXWqLW+bST`2lkmkm^79XSGk7NmEgy%3dN6zhZ ztj7i3)J3wBm#Y_b^uyD8n@!;Bjgx2Xi+IDgM4?uFWhB0JyG0FyV__zloU5KSVp@}< zVZn{|#A;v}!A@1T+YPBA1A$KfUaM(JK+ngy6|vL#X&!aQU~v>BE+{G`Wa{r0r-t4L z67#tR;hxQ2Ne_cxe^25MA=<{8dLj@BftQhY1P;`URm*vyu6JQ*E73${+4o-h!a!%r z10C8a3vn6joJo+qU zo65MUgJ0w=2TX-U<@lqQytj2wpaE$&-vvWa(>E9B)zey_Xo7o*ATw@F&FT-NI*GNm Q@oOcAa`SSf9Q*mwU*pT1cK`qY literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1FilterLayer-members.html b/doxygen/classcaffe_1_1FilterLayer-members.html new file mode 100644 index 00000000000..c79fd100c92 --- /dev/null +++ b/doxygen/classcaffe_1_1FilterLayer-members.html @@ -0,0 +1,121 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::FilterLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::FilterLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::FilterLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::FilterLayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
FilterLayer(const LayerParameter &param) (defined in caffe::FilterLayer< Dtype >)caffe::FilterLayer< Dtype >inlineexplicit
first_reshape_ (defined in caffe::FilterLayer< Dtype >)caffe::FilterLayer< Dtype >protected
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::FilterLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::FilterLayer< Dtype >protectedvirtual
indices_to_forward_ (defined in caffe::FilterLayer< Dtype >)caffe::FilterLayer< Dtype >protected
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::FilterLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::FilterLayer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::FilterLayer< Dtype >inlinevirtual
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::FilterLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::FilterLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1FilterLayer.html b/doxygen/classcaffe_1_1FilterLayer.html new file mode 100644 index 00000000000..7dcb9d11569 --- /dev/null +++ b/doxygen/classcaffe_1_1FilterLayer.html @@ -0,0 +1,518 @@ + + + + + + + +Caffe: caffe::FilterLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::FilterLayer< Dtype > Class Template Reference
+
+
+ +

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). + More...

+ +

#include <filter_layer.hpp>

+
+Inheritance diagram for caffe::FilterLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

FilterLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Computes the error gradient w.r.t. the forwarded inputs. More...
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + +

+Protected Attributes

+bool first_reshape_
 
+vector< int > indices_to_forward_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::FilterLayer< Dtype >

+ +

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).

+

Member Function Documentation

+ +

§ Backward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void caffe::FilterLayer< Dtype >::Backward_cpu (const vector< Blob< Dtype > *> & top,
const vector< bool > & propagate_down,
const vector< Blob< Dtype > *> & bottom 
)
+
+protectedvirtual
+
+ +

Computes the error gradient w.r.t. the forwarded inputs.

+
Parameters
+ + + + +
topoutput Blob vector (length 1+), providing the error gradient with respect to the outputs
propagate_downsee Layer::Backward.
bottominput Blob vector (length 2+), into which the top error gradient is copied
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::FilterLayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+
Parameters
+ + + +
bottominput Blob vector (length 2+)
    +
  1. $ (N \times C \times H \times W) $ the inputs to be filtered $ x_1 $
  2. +
  3. ...
  4. +
  5. $ (N \times C \times H \times W) $ the inputs to be filtered $ x_K $
  6. +
  7. $ (N \times 1 \times 1 \times 1) $ the selector blob
  8. +
+
topoutput Blob vector (length 1+)
    +
  1. $ (S \times C \times H \times W) $ () the filtered output $ x_1 $ where S is the number of items that haven't been filtered $ (S \times C \times H \times W) $ the filtered output $ x_K $ where S is the number of items that haven't been filtered
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::FilterLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ MinBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::FilterLayer< Dtype >::MinBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some minimum number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ MinTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::FilterLayer< Dtype >::MinTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some minimum number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::FilterLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1FilterLayer.png b/doxygen/classcaffe_1_1FilterLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..3980de2064a64f9deede23e54b2b557359f844f1 GIT binary patch literal 707 zcmeAS@N?(olHy`uVBq!ia0vp^%YZn5gBeIJnfuQXNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~1$nwShEy=Votrp$v4Vh$eD2kM|L4~j zE;{32P-Gr$SekRQ@L*caIfI(C$Z1diB~4tiJ3GlMXo}i071x(iXFGwvEp`Vwb*=I`U}Hp^_zZRRt!zqwWY?B|@tx<1?1F@IL`e6_l{vSpLG z@tMiB>Cde8rT#Y!GyhcPS!8uk=YQA?b+PAJLGKO!b`@VRpK<$~xu|ZTRCnnW-SEU) zmu}36y-<86+_Eb7sCL1zxn3f+4%;&r{AAFCAGmkclm6asa>;vO?$R= zuHMO*r+0KVGFin=VlypJ>XZMHIAigY`3Gf|{RuErefizQP*u}QIC#>cF9%|#rS9Cz zu;?puL47Uzv-9V}3+mXPHGh(}*w0d2X5}zPP0e8nvG`x|nJGcL_IogtUq8aqaS4cn z_&;Ba_TQR*XqQ^NoxlOtrw-S{OAW4{eAYPgNBEg{)(mkg65ie4{`8~af0^fz?w?X@ zYAieWi&se8%D>f=^4iKkqG4|zL;LM}XD&QB@0(+A{IK7QGpR~9EY8p7fB8mq+4>bz zZwKn8x7PdfEkE`%q36zi zT9iGPPhe%^264V$_YcV|{loLj;A#6NPJtDjoB~Th_-lx-=F;7-`Gu}1C!0PIum+|$ N22WQ%mvv4FO#sSWPMrV% literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1FlattenLayer-members.html b/doxygen/classcaffe_1_1FlattenLayer-members.html new file mode 100644 index 00000000000..b25108f95d9 --- /dev/null +++ b/doxygen/classcaffe_1_1FlattenLayer-members.html @@ -0,0 +1,119 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::FlattenLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::FlattenLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::FlattenLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inlineprotectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::FlattenLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::FlattenLayer< Dtype >inlinevirtual
FlattenLayer(const LayerParameter &param) (defined in caffe::FlattenLayer< Dtype >)caffe::FlattenLayer< Dtype >inlineexplicit
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::FlattenLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlinevirtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::FlattenLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::FlattenLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1FlattenLayer.html b/doxygen/classcaffe_1_1FlattenLayer.html new file mode 100644 index 00000000000..122c74d827e --- /dev/null +++ b/doxygen/classcaffe_1_1FlattenLayer.html @@ -0,0 +1,459 @@ + + + + + + + +Caffe: caffe::FlattenLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::FlattenLayer< Dtype > Class Template Reference
+
+
+ +

Reshapes the input Blob into flat vectors. + More...

+ +

#include <flatten_layer.hpp>

+
+Inheritance diagram for caffe::FlattenLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

FlattenLayer (const LayerParameter &param)
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Computes the error gradient w.r.t. the concatenate inputs. More...
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::FlattenLayer< Dtype >

+ +

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).

+

Member Function Documentation

+ +

§ Backward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void caffe::FlattenLayer< Dtype >::Backward_cpu (const vector< Blob< Dtype > *> & top,
const vector< bool > & propagate_down,
const vector< Blob< Dtype > *> & bottom 
)
+
+protectedvirtual
+
+ +

Computes the error gradient w.r.t. the concatenate inputs.

+
Parameters
+ + + + +
topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
propagate_downsee Layer::Backward.
bottominput Blob vector (length K), into which the top error gradient is (virtually) copied
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::FlattenLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::FlattenLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::FlattenLayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+
Parameters
+ + + +
bottominput Blob vector (length 2+)
    +
  1. $ (N \times C \times H \times W) $ the inputs
  2. +
+
topoutput Blob vector (length 1)
    +
  1. $ (N \times CHW \times 1 \times 1) $ the outputs – i.e., the (virtually) copied, flattened inputs
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::FlattenLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1FlattenLayer.png b/doxygen/classcaffe_1_1FlattenLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..e0e28aecb4076db9d2ff9b95cdc22aee0bb0eab0 GIT binary patch literal 721 zcmeAS@N?(olHy`uVBq!ia0vp^>w!3cgBeIhbX@HQQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;0IvizjBXW^>{zL}G6PhPUy>-Fm2 zQ&c|hJHMN4CDYfBW_LX<*~Wf)_wt6(>`zwjt?vDqA6qSDdt=+JJ1Lh-6O}wKZCzJk zZ}+x6^4ZyKsce62uKc?`W7kyk=}WxsSDe1i{Jynw^Qx|gm47?mA1SZco}JVcD-))6 z?NNn2|DJ6T*Pg3>k4M)$*s8j9qHikSp7fs<4{cuy zpO3cLaVicNiecY>*nmRuT=diJ&$h08@^kOYz5lj;KKNwGl#TQF-_Oo@-mJZ3=ch6| zhG((Q@;fW??HF2C9RA-M-&b%i?vDKDvd90d_A~Iq18MF#&7~$i{}?4IRYUBqy?6yo Oe+-_kelF{r5}E+1S9uWt literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1GPUParams-members.html b/doxygen/classcaffe_1_1GPUParams-members.html new file mode 100644 index 00000000000..aad49b1c853 --- /dev/null +++ b/doxygen/classcaffe_1_1GPUParams-members.html @@ -0,0 +1,92 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::GPUParams< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::GPUParams< Dtype >, including all inherited members.

+ + + + + + + + + + + + + +
configure(Solver< Dtype > *solver) const (defined in caffe::GPUParams< Dtype >)caffe::GPUParams< Dtype >
data() const (defined in caffe::Params< Dtype >)caffe::Params< Dtype >inline
data_ (defined in caffe::Params< Dtype >)caffe::Params< Dtype >protected
diff() const (defined in caffe::Params< Dtype >)caffe::Params< Dtype >inline
diff_ (defined in caffe::Params< Dtype >)caffe::Params< Dtype >protected
DISABLE_COPY_AND_ASSIGN(Params) (defined in caffe::Params< Dtype >)caffe::Params< Dtype >protected
GPUParams(shared_ptr< Solver< Dtype > > root_solver, int device) (defined in caffe::GPUParams< Dtype >)caffe::GPUParams< Dtype >
Params(shared_ptr< Solver< Dtype > > root_solver) (defined in caffe::Params< Dtype >)caffe::Params< Dtype >explicit
size() const (defined in caffe::Params< Dtype >)caffe::Params< Dtype >inline
size_ (defined in caffe::Params< Dtype >)caffe::Params< Dtype >protected
~GPUParams() (defined in caffe::GPUParams< Dtype >)caffe::GPUParams< Dtype >virtual
~Params() (defined in caffe::Params< Dtype >)caffe::Params< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1GPUParams.html b/doxygen/classcaffe_1_1GPUParams.html new file mode 100644 index 00000000000..7ce2d11c57c --- /dev/null +++ b/doxygen/classcaffe_1_1GPUParams.html @@ -0,0 +1,134 @@ + + + + + + + +Caffe: caffe::GPUParams< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::GPUParams< Dtype > Class Template Reference
+
+
+
+Inheritance diagram for caffe::GPUParams< Dtype >:
+
+
+ + +caffe::Params< Dtype > +caffe::P2PSync< Dtype > + +
+ + + + + + + + + + + + + + + +

+Public Member Functions

GPUParams (shared_ptr< Solver< Dtype > > root_solver, int device)
 
+void configure (Solver< Dtype > *solver) const
 
- Public Member Functions inherited from caffe::Params< Dtype >
Params (shared_ptr< Solver< Dtype > > root_solver)
 
+size_t size () const
 
+Dtype * data () const
 
+Dtype * diff () const
 
+ + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from caffe::Params< Dtype >
DISABLE_COPY_AND_ASSIGN (Params)
 
- Protected Attributes inherited from caffe::Params< Dtype >
+const size_t size_
 
+Dtype * data_
 
+Dtype * diff_
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1GPUParams.png b/doxygen/classcaffe_1_1GPUParams.png new file mode 100644 index 0000000000000000000000000000000000000000..3f8a811f79b50c55947bff4f1256dda3653218a1 GIT binary patch literal 1066 zcmeAS@N?(olHy`uVBq!ia0vp^tAV(KgBeJ!=X<>wNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~@APzW45?szJNMzFPYOJ){L>}x|DR~T zRhK1WYw70sr+sAJZOicBQ%w0ksrcOF4js>6jR@6~@dvd$|5+WLb!pMJ-M`%@>8)I| zYu^`{*N5Lf_`SI!b*l2~ZNF6)XU@Itb8SWRqOi+vORWVwOLaaUz2Eg`#*7J*N|wZ4 zdvwh1%$5x^8nh{#~~g?>`Zx9W}}CMfI9z zOx~9`Yd5p0yzFWUo%Ba^&7>#mt+UTro>ye3zssO@(Pho{+cq17H{J_e-Z;0@^cTZ{ ze2oZ3pgM+sTwx6LtlACxn?w)9ALM$lK7sW^_y(pQ+9=YROHDdG7=XbC(PNdgH-6W0 z2IG0t3v*@9A3Z%km#-i$_3F)~>}y(CRxI8iYr}YM^_pGhcI6hGeDU|UZtL35;b)E> zpY`U`uDK!s$Bp8d)}H9^Ok{kcvF7M4yE7%+KlS!=7sdYM$-ge%(|ffoH*Ia@@u;~a zYtpQS&4SwJdeQI!#{nF;Iw?q!6uVMch<=gwY{A<>4hr1~|&z6>zJp23p=){$b z3xHwj`*!{-W`_G$I_3U`M`XJ)zj@uip|4kX!R7fY85_)DAtZO#eCd>B0uB4~7$#>Z zUAvttccU}n{ff&6&K;4eWq4pNLTqRP1AFS6;AVnX?Z}nwx6h+n%+jF5f)4_N`?9)bayS@z&SY-3vPtwfwYT zkLabgd&#+nWiQBW)MHTHw%7cw_v4Lc{S$K!m94q9WA{ASw~Vj-czbT&oT+z=`E_F4 z_g?)cUpK_rr`%nAJ!{j{Utg=X)-GVXyUTI9v2!Jn2ht?5o-0 z|Fr)wy)M17eq&w3uf2P`F0F^>yIq@~&G{_zi~S9w>k*k(%<905&EV + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::GaussianFiller< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::GaussianFiller< Dtype >, including all inherited members.

+ + + + + + + +
Fill(Blob< Dtype > *blob) (defined in caffe::GaussianFiller< Dtype >)caffe::GaussianFiller< Dtype >inlinevirtual
Filler(const FillerParameter &param) (defined in caffe::Filler< Dtype >)caffe::Filler< Dtype >inlineexplicit
filler_param_ (defined in caffe::Filler< Dtype >)caffe::Filler< Dtype >protected
GaussianFiller(const FillerParameter &param) (defined in caffe::GaussianFiller< Dtype >)caffe::GaussianFiller< Dtype >inlineexplicit
rand_vec_ (defined in caffe::GaussianFiller< Dtype >)caffe::GaussianFiller< Dtype >protected
~Filler() (defined in caffe::Filler< Dtype >)caffe::Filler< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1GaussianFiller.html b/doxygen/classcaffe_1_1GaussianFiller.html new file mode 100644 index 00000000000..2b029ee10cc --- /dev/null +++ b/doxygen/classcaffe_1_1GaussianFiller.html @@ -0,0 +1,127 @@ + + + + + + + +Caffe: caffe::GaussianFiller< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::GaussianFiller< Dtype > Class Template Reference
+
+
+ +

Fills a Blob with Gaussian-distributed values $ x = a $. + More...

+ +

#include <filler.hpp>

+
+Inheritance diagram for caffe::GaussianFiller< Dtype >:
+
+
+ + +caffe::Filler< Dtype > + +
+ + + + + + + + + +

+Public Member Functions

GaussianFiller (const FillerParameter &param)
 
+virtual void Fill (Blob< Dtype > *blob)
 
- Public Member Functions inherited from caffe::Filler< Dtype >
Filler (const FillerParameter &param)
 
+ + + + + + +

+Protected Attributes

+shared_ptr< SyncedMemoryrand_vec_
 
- Protected Attributes inherited from caffe::Filler< Dtype >
+FillerParameter filler_param_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::GaussianFiller< Dtype >

+ +

Fills a Blob with Gaussian-distributed values $ x = a $.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classcaffe_1_1GaussianFiller.png b/doxygen/classcaffe_1_1GaussianFiller.png new file mode 100644 index 0000000000000000000000000000000000000000..1ec8d42ef4ada6fd6a52609a49c3014cd929c7d6 GIT binary patch literal 760 zcmeAS@N?(olHy`uVBq!ia0vp^JApWWgBeH`S*WN0DTx4|5ZC|z{{xvX-h3_XKQsZz z0^CwgBx7)QUksIp5B&wdrH#eC7fGNsAjGa+o{rfwe*uf+0T8)pT{j%^0Yl# zssG&L5@)Phea_9CY^!?{my}vN}n8kesil_Vg6gSM~rg3o4Zx! zUgG?;r+KZ<<%*l7Z`e-=K0C42asMIT=}VO7s(fFV@bu7j)%6ZlPwu_T{Koy{r{J;z zjc3vGXD^QE=(-a(Z)+UDdo_b#jtu>8OdAT3q zwYfF7x8=Gq*7%q=XqxK&d~2rtYs-`J51tpFtH$qSP1qu4c_2c!s9|H&6NcoiCm4@q zO=Rx5s>Cj_+Lg~BtXn2w4Vr?eR)IrPlo)(gz~uW*y!ZdEd0@)($!r!udsG`67y}h;X>$k0)e0F`Uj;7w3vwy?iY1}xL^mfzU zt@+a8Zo+*Fo#&a+uKf!BmA}1u z-~6sUjF~5Gy^r3T@SJ_BL-$vvaQ{_{m)cEJHFw|W7%=fR_xevxyViE?5!Q`;d{1({ z>@|g{;y1rnE?MQX=hM%`IlBuA8RZt}zCY0$D*rt7Le5vcbGdn%?s}0&c%E5ppLHkc z)8WKCMjy?ed*0OQZD;t?=l7@hkJ?V}5C+-5DwVTWFlznH*ut>qA}qA}bL5>kgkQg^=sWeU@~R!boFyt=akR{06*AgsQ>@~ literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1HDF5DataLayer-members.html b/doxygen/classcaffe_1_1HDF5DataLayer-members.html new file mode 100644 index 00000000000..2c6b13af16c --- /dev/null +++ b/doxygen/classcaffe_1_1HDF5DataLayer-members.html @@ -0,0 +1,128 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::HDF5DataLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::HDF5DataLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::HDF5DataLayer< Dtype >inlineprotectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::HDF5DataLayer< Dtype >inlineprotectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
current_file_ (defined in caffe::HDF5DataLayer< Dtype >)caffe::HDF5DataLayer< Dtype >protected
current_row_ (defined in caffe::HDF5DataLayer< Dtype >)caffe::HDF5DataLayer< Dtype >protected
data_permutation_ (defined in caffe::HDF5DataLayer< Dtype >)caffe::HDF5DataLayer< Dtype >protected
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::HDF5DataLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
file_permutation_ (defined in caffe::HDF5DataLayer< Dtype >)caffe::HDF5DataLayer< Dtype >protected
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::HDF5DataLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::HDF5DataLayer< Dtype >protectedvirtual
HDF5DataLayer(const LayerParameter &param) (defined in caffe::HDF5DataLayer< Dtype >)caffe::HDF5DataLayer< Dtype >inlineexplicit
hdf_blobs_ (defined in caffe::HDF5DataLayer< Dtype >)caffe::HDF5DataLayer< Dtype >protected
hdf_filenames_ (defined in caffe::HDF5DataLayer< Dtype >)caffe::HDF5DataLayer< Dtype >protected
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::HDF5DataLayer< Dtype >virtual
LoadHDF5FileData(const char *filename) (defined in caffe::HDF5DataLayer< Dtype >)caffe::HDF5DataLayer< Dtype >protectedvirtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::HDF5DataLayer< Dtype >inlinevirtual
num_files_ (defined in caffe::HDF5DataLayer< Dtype >)caffe::HDF5DataLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::HDF5DataLayer< Dtype >inlinevirtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::HDF5DataLayer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::HDF5DataLayer< Dtype >inlinevirtual
~HDF5DataLayer() (defined in caffe::HDF5DataLayer< Dtype >)caffe::HDF5DataLayer< Dtype >virtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1HDF5DataLayer.html b/doxygen/classcaffe_1_1HDF5DataLayer.html new file mode 100644 index 00000000000..da740a21ceb --- /dev/null +++ b/doxygen/classcaffe_1_1HDF5DataLayer.html @@ -0,0 +1,428 @@ + + + + + + + +Caffe: caffe::HDF5DataLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::HDF5DataLayer< Dtype > Class Template Reference
+
+
+ +

Provides data to the Net from HDF5 files. + More...

+ +

#include <hdf5_data_layer.hpp>

+
+Inheritance diagram for caffe::HDF5DataLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

HDF5DataLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual bool ShareInParallel () const
 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 void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
+virtual void LoadHDF5FileData (const char *filename)
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+std::vector< std::string > hdf_filenames_
 
+unsigned int num_files_
 
+unsigned int current_file_
 
+hsize_t current_row_
 
+std::vector< shared_ptr< Blob< Dtype > > > hdf_blobs_
 
+std::vector< unsigned int > data_permutation_
 
+std::vector< unsigned int > file_permutation_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::HDF5DataLayer< Dtype >

+ +

Provides data to the Net from HDF5 files.

+

TODO(dox): thorough documentation for Forward and proto params.

+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::HDF5DataLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::HDF5DataLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ MinTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::HDF5DataLayer< Dtype >::MinTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some minimum number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void caffe::HDF5DataLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+inlinevirtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1HDF5DataLayer.png b/doxygen/classcaffe_1_1HDF5DataLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..864cf98852e0cea03fa125b600ce83801b12fd8a GIT binary patch literal 760 zcmeAS@N?(olHy`uVBq!ia0vp^M}RnhgBeH`_G|F~DTx4|5ZC|z{{xvX-h3_XKQsZz z0^3GAD>?H-#u>c zQq_g72V>taArFbaJ-Sc)vnsGP2t?P?{`$v8@cBn^OU$OG~=N=dA@MH5x^?*tJMQjlcqFaxj_3OFA6y-ga~YB{oETg#v@mom;A9kV6lPLr zQe$xdYHi?{CBOg-6$T|V1rN3cdA)q4#26C|Q@mB-o#cPz{MqxfU2kaLzPIuFZpMG& z2e?JQGstE+*jVw`i*(#l+5dXx{nm_i3=dpb7v;SB6>+;P+t%ghL&a+^&GlzXo1a_< z3QlwL+pHgqCq~LPTz;3ZeVhJen{{`cZY;IZKNep-$>v;sr~LbspRHnc+t}EVwl8J8Ld2 cN&L$wbw%^s-1?oaz+}qc>FVdQ&MBb@0K&pgdjJ3c literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1HDF5OutputLayer-members.html b/doxygen/classcaffe_1_1HDF5OutputLayer-members.html new file mode 100644 index 00000000000..e374759c794 --- /dev/null +++ b/doxygen/classcaffe_1_1HDF5OutputLayer-members.html @@ -0,0 +1,127 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::HDF5OutputLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::HDF5OutputLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::HDF5OutputLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::HDF5OutputLayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
data_blob_ (defined in caffe::HDF5OutputLayer< Dtype >)caffe::HDF5OutputLayer< Dtype >protected
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::HDF5OutputLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::HDF5OutputLayer< Dtype >inlinevirtual
file_id_ (defined in caffe::HDF5OutputLayer< Dtype >)caffe::HDF5OutputLayer< Dtype >protected
file_name() const (defined in caffe::HDF5OutputLayer< Dtype >)caffe::HDF5OutputLayer< Dtype >inline
file_name_ (defined in caffe::HDF5OutputLayer< Dtype >)caffe::HDF5OutputLayer< Dtype >protected
file_opened_ (defined in caffe::HDF5OutputLayer< Dtype >)caffe::HDF5OutputLayer< Dtype >protected
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::HDF5OutputLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::HDF5OutputLayer< Dtype >protectedvirtual
HDF5OutputLayer(const LayerParameter &param) (defined in caffe::HDF5OutputLayer< Dtype >)caffe::HDF5OutputLayer< Dtype >inlineexplicit
IsShared() constcaffe::Layer< Dtype >inline
label_blob_ (defined in caffe::HDF5OutputLayer< Dtype >)caffe::HDF5OutputLayer< Dtype >protected
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::HDF5OutputLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::HDF5OutputLayer< Dtype >inlinevirtual
SaveBlobs() (defined in caffe::HDF5OutputLayer< Dtype >)caffe::HDF5OutputLayer< Dtype >protectedvirtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::HDF5OutputLayer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::HDF5OutputLayer< Dtype >inlinevirtual
~HDF5OutputLayer() (defined in caffe::HDF5OutputLayer< Dtype >)caffe::HDF5OutputLayer< Dtype >virtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1HDF5OutputLayer.html b/doxygen/classcaffe_1_1HDF5OutputLayer.html new file mode 100644 index 00000000000..46993185618 --- /dev/null +++ b/doxygen/classcaffe_1_1HDF5OutputLayer.html @@ -0,0 +1,425 @@ + + + + + + + +Caffe: caffe::HDF5OutputLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::HDF5OutputLayer< Dtype > Class Template Reference
+
+
+ +

Write blobs to disk as HDF5 files. + More...

+ +

#include <hdf5_output_layer.hpp>

+
+Inheritance diagram for caffe::HDF5OutputLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

HDF5OutputLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual bool ShareInParallel () const
 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 void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
+std::string file_name () const
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
+virtual void SaveBlobs ()
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+bool file_opened_
 
+std::string file_name_
 
+hid_t file_id_
 
+Blob< Dtype > data_blob_
 
+Blob< Dtype > label_blob_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::HDF5OutputLayer< Dtype >

+ +

Write blobs to disk as HDF5 files.

+

TODO(dox): thorough documentation for Forward and proto params.

+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::HDF5OutputLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::HDF5OutputLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::HDF5OutputLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void caffe::HDF5OutputLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+inlinevirtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1HDF5OutputLayer.png b/doxygen/classcaffe_1_1HDF5OutputLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..4e12033def8be6b6f997b66fc24b3ace90d18d12 GIT binary patch literal 774 zcmeAS@N?(olHy`uVBq!ia0vp^=YcqYgBeJ6=3o2`q$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0rh2+KhEy=VoqMt9u>y}P|8?WP|NZZ& zBzQMu_U!hRY?~Xid&8y+jGlWo<=!@%cta&qN>|QPD!ki$(y^=j6;2(eo~gWCb?9^a z_wY$quGP*<7YJ3TwedBdRN^0N^SkWWWX{YvX~y%u*zf+9e1f@u@e8$?cIv?mvnW3dKEdBqv+Fz8N7jaB)X3oJ= zN1~_vUHsr<``g+w!MhJEZ+|VG9AX$*XL|1V%&1#+4{Bz8{oHmu^6A&$8FicLYU+!v z^G`krIvq9beg337=ikYH{(ADCn&;eC9k2f1S+oE2`>391Wls9|c#)&d}H_lkG?}YlUZ|7y0V*;9=TULto zaG#u=lK=hg`N~-b8Rnd*$Z3D9-1oQcxsBbnFWbU-6yw-0_Rs$CTJ~1IB7aSM=Kl{* zZ?SSscv(;o@q4=THHmr0o3!ul*|xmk%h{@vrTYSRb^`-e+@><9BGO2`+*L8PBJ@YP z&D4c!uX=QTmeuIclIylu+E|%C|GezHWX1h{H(R;n<{PEHwhY>=)mXHD-Bo|}e(hDO z7Mgfn^I5&EsLt-}ubr3f>%@Mt*?zY6@MG-_Su@UkiTeBF-?MLLEBHHb z9SLtU=HCbg2Y2c3T!-l2$*OYJYD@<);T3K0RX97e!l + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::HingeLossLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::HingeLossLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::LossLayer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::LossLayer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::HingeLossLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inlineprotectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::LossLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::LossLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::HingeLossLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
HingeLossLayer(const LayerParameter &param) (defined in caffe::HingeLossLayer< Dtype >)caffe::HingeLossLayer< Dtype >inlineexplicit
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::LossLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
LossLayer(const LayerParameter &param) (defined in caffe::LossLayer< Dtype >)caffe::LossLayer< Dtype >inlineexplicit
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::LossLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::HingeLossLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1HingeLossLayer.html b/doxygen/classcaffe_1_1HingeLossLayer.html new file mode 100644 index 00000000000..3fa9ba71a95 --- /dev/null +++ b/doxygen/classcaffe_1_1HingeLossLayer.html @@ -0,0 +1,377 @@ + + + + + + + +Caffe: caffe::HingeLossLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::HingeLossLayer< Dtype > Class Template Reference
+
+
+ +

Computes the hinge loss for a one-of-many classification task. + More...

+ +

#include <hinge_loss_layer.hpp>

+
+Inheritance diagram for caffe::HingeLossLayer< Dtype >:
+
+
+ + +caffe::LossLayer< Dtype > +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

HingeLossLayer (const LayerParameter &param)
 
+virtual const char * type () const
 Returns the layer type.
 
- Public Member Functions inherited from caffe::LossLayer< Dtype >
LossLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
+virtual bool AutoTopBlobs () const
 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 int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Computes the hinge loss for a one-of-many classification task. More...
 
virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Computes the hinge loss error gradient w.r.t. the predictions. More...
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::HingeLossLayer< Dtype >

+ +

Computes the hinge loss for a one-of-many classification task.

+
Parameters
+ + + +
bottominput Blob vector (length 2)
    +
  1. $ (N \times C \times H \times W) $ the predictions $ t $, a Blob with values in $ [-\infty, +\infty] $ indicating the predicted score for each of the $ K = CHW $ classes. In an SVM, $ t $ is the result of taking the inner product $ X^T W $ of the D-dimensional features $ X \in \mathcal{R}^{D \times N} $ and the learned hyperplane parameters $ W \in \mathcal{R}^{D \times K} $, 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.
  2. +
  3. $ (N \times 1 \times 1 \times 1) $ the labels $ l $, an integer-valued Blob with values $ l_n \in [0, 1, 2, ..., K - 1] $ indicating the correct class label among the $ K $ classes
  4. +
+
topoutput Blob vector (length 1)
    +
  1. $ (1 \times 1 \times 1 \times 1) $ the computed hinge loss: $ E = \frac{1}{N} \sum\limits_{n=1}^N \sum\limits_{k=1}^K [\max(0, 1 - \delta\{l_n = k\} t_{nk})] ^ p $, for the $ L^p $ norm (defaults to $ p = 1 $, the L1 norm; L2 norm, as in L2-SVM, is also available), and $ \delta\{\mathrm{condition}\} = \left\{ \begin{array}{lr} 1 & \mbox{if condition} \\ -1 & \mbox{otherwise} \end{array} \right. $
  2. +
+
+
+
+

In an SVM, $ t \in \mathcal{R}^{N \times K} $ is the result of taking the inner product $ X^T W $ of the features $ X \in \mathcal{R}^{D \times N} $ and the learned hyperplane parameters $ W \in \mathcal{R}^{D \times K} $. So, a Net with just an InnerProductLayer (with num_output = $k$) 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).

+

Member Function Documentation

+ +

§ Backward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void caffe::HingeLossLayer< Dtype >::Backward_cpu (const vector< Blob< Dtype > *> & top,
const vector< bool > & propagate_down,
const vector< Blob< Dtype > *> & bottom 
)
+
+protectedvirtual
+
+ +

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.

+
Parameters
+ + + + +
topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
    +
  1. $ (1 \times 1 \times 1 \times 1) $ This Blob's diff will simply contain the loss_weight* $ \lambda $, as $ \lambda $ is the coefficient of this layer's output $\ell_i$ in the overall Net loss $ E = \lambda_i \ell_i + \mbox{other loss terms}$; hence $ \frac{\partial E}{\partial \ell_i} = \lambda_i $. (*Assuming that this top Blob is not used as a bottom (input) by any other layer of the Net.)
  2. +
+
propagate_downsee Layer::Backward. propagate_down[1] must be false as we can't compute gradients with respect to the labels.
bottominput Blob vector (length 2)
    +
  1. $ (N \times C \times H \times W) $ the predictions $t$; Backward computes diff $ \frac{\partial E}{\partial t} $
  2. +
  3. $ (N \times 1 \times 1 \times 1) $ the labels – ignored as we can't compute their error gradients
  4. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::HingeLossLayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+ +

Computes the hinge loss for a one-of-many classification task.

+
Parameters
+ + + +
bottominput Blob vector (length 2)
    +
  1. $ (N \times C \times H \times W) $ the predictions $ t $, a Blob with values in $ [-\infty, +\infty] $ indicating the predicted score for each of the $ K = CHW $ classes. In an SVM, $ t $ is the result of taking the inner product $ X^T W $ of the D-dimensional features $ X \in \mathcal{R}^{D \times N} $ and the learned hyperplane parameters $ W \in \mathcal{R}^{D \times K} $, 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.
  2. +
  3. $ (N \times 1 \times 1 \times 1) $ the labels $ l $, an integer-valued Blob with values $ l_n \in [0, 1, 2, ..., K - 1] $ indicating the correct class label among the $ K $ classes
  4. +
+
topoutput Blob vector (length 1)
    +
  1. $ (1 \times 1 \times 1 \times 1) $ the computed hinge loss: $ E = \frac{1}{N} \sum\limits_{n=1}^N \sum\limits_{k=1}^K [\max(0, 1 - \delta\{l_n = k\} t_{nk})] ^ p $, for the $ L^p $ norm (defaults to $ p = 1 $, the L1 norm; L2 norm, as in L2-SVM, is also available), and $ \delta\{\mathrm{condition}\} = \left\{ \begin{array}{lr} 1 & \mbox{if condition} \\ -1 & \mbox{otherwise} \end{array} \right. $
  2. +
+
+
+
+

In an SVM, $ t \in \mathcal{R}^{N \times K} $ is the result of taking the inner product $ X^T W $ of the features $ X \in \mathcal{R}^{D \times N} $ and the learned hyperplane parameters $ W \in \mathcal{R}^{D \times K} $. So, a Net with just an InnerProductLayer (with num_output = $k$) 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).

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1HingeLossLayer.png b/doxygen/classcaffe_1_1HingeLossLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..8d2c6369a22610b27bc9548d995eba9e0c487dfb GIT binary patch literal 1098 zcmeAS@N?(olHy`uVBq!ia0vp^M}WA4gBeKnKic94q$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0Z+f~ohEy=VoqKW8V=W%m+s8wH{`cQ^ zQbPJ<+mRHt>Zen-eY0TZSm>q@H}iSrzFjj^U*7WK@a$U9GGPfv6?f7sv7L6FR;yor z%&(ZHV)~WuNb=LeuaX5~%_o_xnJn=7n6Bjvuiam)I*c}D-7S!RdnxLU$YuA#Yg9a! zm+~b=pZGT;?d6;3X)DYxea-fXJw4m|lJVU374`2F=FPBJ?R?9oWxipHA=}0~?!{rR zwAh8SH|n!kbIcBV{aNRjfJ=7$ZMCOjJ04#?*1jxhcRbgZ|KRFa3~CSSAhBH zx3AsJ)=Ixy92<3->FAe>2J=*3&fFz1+xmC%tfiYTUY9Dg^SUDa@|Wqdbx+T#W-ebY z@b$cGi?N~MulISIX4iYHX#Zdwm$;`TB5$sx;MM8vFJ#n(V`lEw7X*f6!R}kaJ>ddt zW8XOZD3FQ-~+T0d02&1O5r{O@Ax#MP5;o~%+j^V1?s-8f0; zY8~Gz>%j1zi(jdD)-P)me=s-w{d|WWBbOG5G>(~^p1+m|IZaa1P*l-udMEJN=DfK0 zf%a179lQ21J}Udo)CCMz{7mV#VW76%p({;KfK z{Ga>1Z8g<*{{EG?wQ}hLo-?l;Y^?a1rCA)j>sc@MGAvlgwega^<&N+Fw|Ku-6z=~x zX=7Gd!PeTpCzh2SuHEw5>NWF&Y1xgrd}i6eV7;xWRewFsezoCB(??>Oeda;iBX>VN zQ@2HN)nwV0>f6$VUlgL!H|!0zTc+GHf8${bhn&Q9oa^t+w^+aVPG+X8y77LC``0Jj zwfg3Aqriu+TwtxQ)plog`QECqyH=ajXBsSP-*n@g%XdGU=8DIDKTd3Oh%K5N y-=Hp)_QQbX!2fkE3>^zV__(%_@8y!*zwGQs0~ms~g + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::Im2colLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::Im2colLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Im2colLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Im2colLayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
bottom_dim_ (defined in caffe::Im2colLayer< Dtype >)caffe::Im2colLayer< Dtype >protected
channel_axis_ (defined in caffe::Im2colLayer< Dtype >)caffe::Im2colLayer< Dtype >protected
channels_ (defined in caffe::Im2colLayer< Dtype >)caffe::Im2colLayer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
dilation_caffe::Im2colLayer< Dtype >protected
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::Im2colLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::Im2colLayer< Dtype >inlinevirtual
force_nd_im2col_ (defined in caffe::Im2colLayer< Dtype >)caffe::Im2colLayer< Dtype >protected
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Im2colLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Im2colLayer< Dtype >protectedvirtual
Im2colLayer(const LayerParameter &param) (defined in caffe::Im2colLayer< Dtype >)caffe::Im2colLayer< Dtype >inlineexplicit
IsShared() constcaffe::Layer< Dtype >inline
kernel_shape_caffe::Im2colLayer< Dtype >protected
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Im2colLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
num_ (defined in caffe::Im2colLayer< Dtype >)caffe::Im2colLayer< Dtype >protected
num_spatial_axes_ (defined in caffe::Im2colLayer< Dtype >)caffe::Im2colLayer< Dtype >protected
pad_caffe::Im2colLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Im2colLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
stride_caffe::Im2colLayer< Dtype >protected
top_dim_ (defined in caffe::Im2colLayer< Dtype >)caffe::Im2colLayer< Dtype >protected
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::Im2colLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1Im2colLayer.html b/doxygen/classcaffe_1_1Im2colLayer.html new file mode 100644 index 00000000000..8e29a5c32da --- /dev/null +++ b/doxygen/classcaffe_1_1Im2colLayer.html @@ -0,0 +1,441 @@ + + + + + + + +Caffe: caffe::Im2colLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::Im2colLayer< Dtype > Class Template Reference
+
+
+ +

A helper for image operations that rearranges image regions into column vectors. Used by ConvolutionLayer to perform convolution by matrix multiplication. + More...

+ +

#include <im2col_layer.hpp>

+
+Inheritance diagram for caffe::Im2colLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Im2colLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+Blob< int > kernel_shape_
 The spatial dimensions of a filter kernel.
 
+Blob< int > stride_
 The spatial dimensions of the stride.
 
+Blob< int > pad_
 The spatial dimensions of the padding.
 
+Blob< int > dilation_
 The spatial dimensions of the dilation.
 
+int num_spatial_axes_
 
+int bottom_dim_
 
+int top_dim_
 
+int channel_axis_
 
+int num_
 
+int channels_
 
+bool force_nd_im2col_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::Im2colLayer< Dtype >

+ +

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.

+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::Im2colLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::Im2colLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::Im2colLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::Im2colLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1Im2colLayer.png b/doxygen/classcaffe_1_1Im2colLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..c35d4cb50666f635a26d55c35d0fd7d054e99aba GIT binary patch literal 727 zcmeAS@N?(olHy`uVBq!ia0vp^Yk@d`gBeK1)Us{^QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;+}eI2Id}6}U$a>CXDXh%uCTs+ zc(HC~X55?Tv^|ffe%pWS%Go_TRj&SWi2k=WL*Hl4RZYQp*WUj)QQcg&TSo2d(Yq&) zL|xgwY0=isO?K-m>@ROqx@LBA>MNuBoofwsS-;5@_$`0`QPRDN5V7bANn`to8g=MWNpudv$jkUS?sCp zX;^hp@ARe~r3Qw-j691MX8ix>c1X7C8>_XzyNE5D)frqeFEJg-AR4cmKP5=YO{Kxn zB$F`-gs&{FjorU}&)R%d2EW&G4ZClxt9&cDU@_m@T@_Uc;#F+tGj`8okkZ=nJ3BA1 zcJ2P>W-a*=&MEWKlRxLg7leskGrQeq^)0%+LAsr}IO?a-Wt)5Vz6DF|UbpvY@3+#o z$6{*J+Kty|)H4 zZtEynUG#ch!ZqK6TW)8)-2QY=wJoE91OJ};Kjv~QtL6F~eCzmz{k^&e#7&`I-ct4$ e7zi%^8K0D^++MwoEgqN(89ZJ6T-G@yGywnr{9?BN literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1ImageDataLayer-members.html b/doxygen/classcaffe_1_1ImageDataLayer-members.html new file mode 100644 index 00000000000..71ddd35632f --- /dev/null +++ b/doxygen/classcaffe_1_1ImageDataLayer-members.html @@ -0,0 +1,143 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::ImageDataLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::ImageDataLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::BaseDataLayer< Dtype >inlinevirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::BaseDataLayer< Dtype >inlinevirtual
BaseDataLayer(const LayerParameter &param) (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >explicit
BasePrefetchingDataLayer(const LayerParameter &param) (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >explicit
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
data_transformer_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected
DataLayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top) (defined in caffe::ImageDataLayer< Dtype >)caffe::ImageDataLayer< Dtype >virtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::ImageDataLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::ImageDataLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BasePrefetchingDataLayer< Dtype >virtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BasePrefetchingDataLayer< Dtype >virtual
ImageDataLayer(const LayerParameter &param) (defined in caffe::ImageDataLayer< Dtype >)caffe::ImageDataLayer< Dtype >inlineexplicit
InternalThread() (defined in caffe::InternalThread)caffe::InternalThreadinline
InternalThreadEntry() (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protectedvirtual
is_started() const (defined in caffe::InternalThread)caffe::InternalThread
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BasePrefetchingDataLayer< Dtype >virtual
lines_ (defined in caffe::ImageDataLayer< Dtype >)caffe::ImageDataLayer< Dtype >protected
lines_id_ (defined in caffe::ImageDataLayer< Dtype >)caffe::ImageDataLayer< Dtype >protected
load_batch(Batch< Dtype > *batch) (defined in caffe::ImageDataLayer< Dtype >)caffe::ImageDataLayer< Dtype >protectedvirtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
must_stop() (defined in caffe::InternalThread)caffe::InternalThreadprotected
output_labels_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
prefetch_ (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protected
PREFETCH_COUNT (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >static
prefetch_free_ (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protected
prefetch_full_ (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protected
prefetch_rng_ (defined in caffe::ImageDataLayer< Dtype >)caffe::ImageDataLayer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BaseDataLayer< Dtype >inlinevirtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::BaseDataLayer< Dtype >inlinevirtual
ShuffleImages() (defined in caffe::ImageDataLayer< Dtype >)caffe::ImageDataLayer< Dtype >protectedvirtual
StartInternalThread()caffe::InternalThread
StopInternalThread()caffe::InternalThread
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
transform_param_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected
transformed_data_ (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protected
type() constcaffe::ImageDataLayer< Dtype >inlinevirtual
~ImageDataLayer() (defined in caffe::ImageDataLayer< Dtype >)caffe::ImageDataLayer< Dtype >virtual
~InternalThread() (defined in caffe::InternalThread)caffe::InternalThreadvirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1ImageDataLayer.html b/doxygen/classcaffe_1_1ImageDataLayer.html new file mode 100644 index 00000000000..eac018894c5 --- /dev/null +++ b/doxygen/classcaffe_1_1ImageDataLayer.html @@ -0,0 +1,378 @@ + + + + + + + +Caffe: caffe::ImageDataLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::ImageDataLayer< Dtype > Class Template Reference
+
+
+ +

Provides data to the Net from image files. + More...

+ +

#include <image_data_layer.hpp>

+
+Inheritance diagram for caffe::ImageDataLayer< Dtype >:
+
+
+ + +caffe::BasePrefetchingDataLayer< Dtype > +caffe::BaseDataLayer< Dtype > +caffe::InternalThread +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ImageDataLayer (const LayerParameter &param)
 
+virtual void DataLayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::BasePrefetchingDataLayer< Dtype >
BasePrefetchingDataLayer (const LayerParameter &param)
 
void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
- Public Member Functions inherited from caffe::BaseDataLayer< Dtype >
BaseDataLayer (const LayerParameter &param)
 
+virtual bool ShareInParallel () const
 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 void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
- Public Member Functions inherited from caffe::InternalThread
void StartInternalThread ()
 
void StopInternalThread ()
 
+bool is_started () const
 
+ + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void ShuffleImages ()
 
+virtual void load_batch (Batch< Dtype > *batch)
 
- Protected Member Functions inherited from caffe::BasePrefetchingDataLayer< Dtype >
+virtual void InternalThreadEntry ()
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
- Protected Member Functions inherited from caffe::InternalThread
+bool must_stop ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+shared_ptr< Caffe::RNGprefetch_rng_
 
+vector< std::pair< std::string, int > > lines_
 
+int lines_id_
 
- Protected Attributes inherited from caffe::BasePrefetchingDataLayer< Dtype >
+Batch< Dtype > prefetch_ [PREFETCH_COUNT]
 
+BlockingQueue< Batch< Dtype > * > prefetch_free_
 
+BlockingQueue< Batch< Dtype > * > prefetch_full_
 
+Blob< Dtype > transformed_data_
 
- Protected Attributes inherited from caffe::BaseDataLayer< Dtype >
+TransformationParameter transform_param_
 
+shared_ptr< DataTransformer< Dtype > > data_transformer_
 
+bool output_labels_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+ + + + +

+Additional Inherited Members

- Static Public Attributes inherited from caffe::BasePrefetchingDataLayer< Dtype >
+static const int PREFETCH_COUNT = 3
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::ImageDataLayer< Dtype >

+ +

Provides data to the Net from image files.

+

TODO(dox): thorough documentation for Forward and proto params.

+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::ImageDataLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::ImageDataLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classcaffe_1_1ImageDataLayer.png b/doxygen/classcaffe_1_1ImageDataLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..4f84dfcbaebf212f95ef2b29833c128aa5cbae43 GIT binary patch literal 2285 zcmb`JdpK0<9>}x$HLEls&CnVi@CYqE1RgE@=~z*+w_^>@Gr_ z(I7KJgGM&RG^VtLY(&{^)5RsZZHAG{oMoKzw9j+SpJzSKTI>71zu&XgyWaQnet#>? z#hIW6YJ&g(sKJL05&=MdMe~&vkSlSzCI`7`xj4GpOQljo4u2L$rwcL=B|G_izEWBb z25Bls5uM!tBx&V%-RN$Hbj8C5?c8JK#_o>N%dI!sYi8s6r9Y>?FznUeArTGloYe@? z7%^}48d)ruSXgcZG8+Q+z+KO9o=R*Wg9`%BR}=*THWjg3qqmM&z}*fOi(Al!@EHnZ zQzS4+WLxbo6#QKqw%*JRXMxiO=mk5AyGQD_L4~{iHvR5Zq)qO%lZCA!Y!6I#7T|J< z1!jIzTXURk!wAlibrLh_2FA$lREM?&Pih5eN5C#9H-&khr1Bf?gZlPH&C$l2;X5= zaZlUI+=AAAkP8m6OlHRBw{qs%mg@Z{mAz2Q=FY_Zw?Zk-lN${_++bF4!6KF(++bHB`J}Ryi3YTgMpEo*=xd&W zuzof4HBS$XJo2x314F|LwRL8tLSmXfz0|?oj$V3Q`;tqkS{}v53xTxMk%VW#i zVYN>o9~U~6Vec}gmHAOhlKU%f$XxD5tXx|xQ zcw+J>RH?!vP&MtBZh_Nhb@wJ}`6QGKo?LJA{`vinf%A_ZAF{f#lQoyq-sEun1$}%g zoN5_B^`mO%S>F&%vF82qL58lW^xlia5&=;nQFkuFL^`6mwVtJ?Kju9*s!cJE47PqL zqR%9^lirZ;|JgA`nyyiV1~KF`oj=mCPwMrd{Ej=1eGvmDF4rJe!f^;24V84=Vm`9s2rPRU>9<)8YJpyDZU?*dPz^6{hNGrC+sHVf7?t-S zNfqNJI?s5QUt0Ox_YMzqhz?4CzYwmoTD^HZ@FRX)8n=%Y@$GJL{0d)T#m(1K;Qd6`t5VcG|lwDA{y*Dm0C@bWD5qPP7PB;5cPNkD?(T?slJBQb1PA=9|Zq z;9G2uNg^Ta$R5kdz!ffmA+{bYB_udg?``u`f~_wFxUIlxM{gOJ+oueFIlxIqR-69r zD6}dBh`_rtkew}1guc{H>`~>Df0ffB3zWhQZ_U-cRYDZd7$H8~)8B7gwaGYXm)wnd z14IBaGJV%+@^6OA0h=Hut%Dh^XKJ{jLfzQ&Hl&$#p#6{M0pi@6;}2`TO8D~XP1 z6DQYQu%zrNr*3b#CR~XQ*M20~)W#Xt;*^5`WJe{o9Hxq6a=RjUgfpzxsCz9QDy{M5 zGvU!g-H+{P*>&DjC+PW3wa}^#tFVnPFXtE#T_h#(y(M^bPi(n_($4B9>UV1e6uh87 zmF~et)!x*z`me$rxy#jLs-}*RD<(wdMNv0qWnZb0=V$!`Un4E8#%FP=TaQ@KuHEtP zTppwqg04Ky59^!N^3OKlIPO~7!;9)D|C9BMXV*>L>~7N@I*uy7pX_wp&_$Hy=2Emx zZwZjcNqC{{)*04tM zBRSY23_ca{Mv)D0uLQi&!;U!ot0u@?h)sbw^55sns)tt6gGdDvfZTusGHcdZ)X2DjXdycs)rM1Tw zse9MUeW)=LVKG#bx35!%?!*<~tDc%wkh01ya`w^g8hBFQ^D@0BCe=})Cq=E)pvyYj zj@evUifc5RooRSvXwWni@1Tcv$eQolpf7k2d~U!kdKvY>i4@0nRMHbqs%^1-_xHeT zLEqOrfq|Cs6O($P{?e%Jg4V7N7nvBUE;@^1pb_Ra@O@s#9$ E0v22iaR2}S literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1InfogainLossLayer-members.html b/doxygen/classcaffe_1_1InfogainLossLayer-members.html new file mode 100644 index 00000000000..3ae81969e52 --- /dev/null +++ b/doxygen/classcaffe_1_1InfogainLossLayer-members.html @@ -0,0 +1,121 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::InfogainLossLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::InfogainLossLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::LossLayer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::LossLayer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::InfogainLossLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inlineprotectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::InfogainLossLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::LossLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::InfogainLossLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
infogain_ (defined in caffe::InfogainLossLayer< Dtype >)caffe::InfogainLossLayer< Dtype >protected
InfogainLossLayer(const LayerParameter &param) (defined in caffe::InfogainLossLayer< Dtype >)caffe::InfogainLossLayer< Dtype >inlineexplicit
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::InfogainLossLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
LossLayer(const LayerParameter &param) (defined in caffe::LossLayer< Dtype >)caffe::LossLayer< Dtype >inlineexplicit
MaxBottomBlobs() constcaffe::InfogainLossLayer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::InfogainLossLayer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::InfogainLossLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::InfogainLossLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1InfogainLossLayer.html b/doxygen/classcaffe_1_1InfogainLossLayer.html new file mode 100644 index 00000000000..c3f47a61d76 --- /dev/null +++ b/doxygen/classcaffe_1_1InfogainLossLayer.html @@ -0,0 +1,580 @@ + + + + + + + +Caffe: caffe::InfogainLossLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::InfogainLossLayer< Dtype > Class Template Reference
+
+
+ +

A generalization of MultinomialLogisticLossLayer that takes an "information gain" (infogain) matrix specifying the "value" of all label pairs. + More...

+ +

#include <infogain_loss_layer.hpp>

+
+Inheritance diagram for caffe::InfogainLossLayer< Dtype >:
+
+
+ + +caffe::LossLayer< Dtype > +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

InfogainLossLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
+virtual const char * type () const
 Returns the layer type.
 
- Public Member Functions inherited from caffe::LossLayer< Dtype >
LossLayer (const LayerParameter &param)
 
+virtual bool AutoTopBlobs () const
 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 int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 A generalization of MultinomialLogisticLossLayer that takes an "information gain" (infogain) matrix specifying the "value" of all label pairs. More...
 
virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Computes the infogain loss error gradient w.r.t. the predictions. More...
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + +

+Protected Attributes

+Blob< Dtype > infogain_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::InfogainLossLayer< Dtype >

+ +

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.

+
Parameters
+ + + +
bottominput Blob vector (length 2-3)
    +
  1. $ (N \times C \times H \times W) $ the predictions $ \hat{p} $, a Blob with values in $ [0, 1] $ indicating the predicted probability of each of the $ K = CHW $ classes. Each prediction vector $ \hat{p}_n $ should sum to 1 as in a probability distribution: $ \forall n \sum\limits_{k=1}^K \hat{p}_{nk} = 1 $.
  2. +
  3. $ (N \times 1 \times 1 \times 1) $ the labels $ l $, an integer-valued Blob with values $ l_n \in [0, 1, 2, ..., K - 1] $ indicating the correct class label among the $ K $ classes
  4. +
  5. $ (1 \times 1 \times K \times K) $ (optional) the infogain matrix $ H $. This must be provided as the third bottom blob input if not provided as the infogain_mat in the InfogainLossParameter. If $ H = I $, this layer is equivalent to the MultinomialLogisticLossLayer.
  6. +
+
topoutput Blob vector (length 1)
    +
  1. $ (1 \times 1 \times 1 \times 1) $ the computed infogain multinomial logistic loss: $ 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}) $, where $ H_{l_n} $ denotes row $l_n$ of $H$.
  2. +
+
+
+
+

Member Function Documentation

+ +

§ Backward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void caffe::InfogainLossLayer< Dtype >::Backward_cpu (const vector< Blob< Dtype > *> & top,
const vector< bool > & propagate_down,
const vector< Blob< Dtype > *> & bottom 
)
+
+protectedvirtual
+
+ +

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.)

+
Parameters
+ + + + +
topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
    +
  1. $ (1 \times 1 \times 1 \times 1) $ This Blob's diff will simply contain the loss_weight* $ \lambda $, as $ \lambda $ is the coefficient of this layer's output $\ell_i$ in the overall Net loss $ E = \lambda_i \ell_i + \mbox{other loss terms}$; hence $ \frac{\partial E}{\partial \ell_i} = \lambda_i $. (*Assuming that this top Blob is not used as a bottom (input) by any other layer of the Net.)
  2. +
+
propagate_downsee 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])
bottominput Blob vector (length 2-3)
    +
  1. $ (N \times C \times H \times W) $ the predictions $ \hat{p} $; Backward computes diff $ \frac{\partial E}{\partial \hat{p}} $
  2. +
  3. $ (N \times 1 \times 1 \times 1) $ the labels – ignored as we can't compute their error gradients
  4. +
  5. $ (1 \times 1 \times K \times K) $ (optional) the information gain matrix – ignored as its error gradient computation is not implemented.
  6. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::InfogainLossLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::LossLayer< Dtype >.

+ +
+
+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::InfogainLossLayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+ +

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.

+
Parameters
+ + + +
bottominput Blob vector (length 2-3)
    +
  1. $ (N \times C \times H \times W) $ the predictions $ \hat{p} $, a Blob with values in $ [0, 1] $ indicating the predicted probability of each of the $ K = CHW $ classes. Each prediction vector $ \hat{p}_n $ should sum to 1 as in a probability distribution: $ \forall n \sum\limits_{k=1}^K \hat{p}_{nk} = 1 $.
  2. +
  3. $ (N \times 1 \times 1 \times 1) $ the labels $ l $, an integer-valued Blob with values $ l_n \in [0, 1, 2, ..., K - 1] $ indicating the correct class label among the $ K $ classes
  4. +
  5. $ (1 \times 1 \times K \times K) $ (optional) the infogain matrix $ H $. This must be provided as the third bottom blob input if not provided as the infogain_mat in the InfogainLossParameter. If $ H = I $, this layer is equivalent to the MultinomialLogisticLossLayer.
  6. +
+
topoutput Blob vector (length 1)
    +
  1. $ (1 \times 1 \times 1 \times 1) $ the computed infogain multinomial logistic loss: $ 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}) $, where $ H_{l_n} $ denotes row $l_n$ of $H$.
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::InfogainLossLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::LossLayer< Dtype >.

+ +
+
+ +

§ MaxBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::InfogainLossLayer< Dtype >::MaxBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some maximum number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ MinBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::InfogainLossLayer< Dtype >::MinBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some minimum number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::InfogainLossLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Reimplemented from caffe::LossLayer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1InfogainLossLayer.png b/doxygen/classcaffe_1_1InfogainLossLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..b1799ecc9a4ece199f8920944b2937140bb0e867 GIT binary patch literal 1114 zcmeAS@N?(olHy`uVBq!ia0vp^7l62fgBeIJTt4*4M^&FMbRmyAl_a^PO?eNWk|lVg%b&b`#(3 znE5JmSJ^6gPK5+rWhtZWHLEq>H5WW%np6_IzF}K#bdmAew_C5b?u~xuZ@($qyQRM- zQmKsm)JiYgF-NMntuORk&kUA%`}0m!uUPY` zRZHDdKG;3t{r;qS4x|wMO}h{^@xAPk#3bR)$s!O5!nzBpxBk%2f8EBIHTB&$yVAE0 zf_7M?nKsDHZEw`RSSPbWlJ`I-*M)7u-g)o-{=c35{@I_4drRL5Ph*|F@9dKoW%a)% z#zrgEJn_!%Jf{D^$(r%jT2R8g|98G@(dV9%Gn*$1J}*?gvGR1-yJdE5uh=XUW^=Az zb)Q*M{N9o1pXs-gMenbC&UNCg1M8L;r(%Jw@5>#2?+IRTY@)I8wboZrA&fU$b2HSo zi(a_d7Ry-V{+i`P`?G+*4=X1rCP&?|IUDeq&z61FyMV_hOy5oDFOvV#aPP}4*-fG6 za%O49m2Nq%_5FW*sgmESIg*B)HuZO>d=KD!88wx;BD}u%qT%mD+TYGQ*y`IhG*?yb z + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::InnerProductLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::InnerProductLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::InnerProductLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::InnerProductLayer< Dtype >protectedvirtual
bias_multiplier_ (defined in caffe::InnerProductLayer< Dtype >)caffe::InnerProductLayer< Dtype >protected
bias_term_ (defined in caffe::InnerProductLayer< Dtype >)caffe::InnerProductLayer< Dtype >protected
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::InnerProductLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::InnerProductLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::InnerProductLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::InnerProductLayer< Dtype >protectedvirtual
InnerProductLayer(const LayerParameter &param) (defined in caffe::InnerProductLayer< Dtype >)caffe::InnerProductLayer< Dtype >inlineexplicit
IsShared() constcaffe::Layer< Dtype >inline
K_ (defined in caffe::InnerProductLayer< Dtype >)caffe::InnerProductLayer< Dtype >protected
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::InnerProductLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
M_ (defined in caffe::InnerProductLayer< Dtype >)caffe::InnerProductLayer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
N_ (defined in caffe::InnerProductLayer< Dtype >)caffe::InnerProductLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::InnerProductLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
transpose_caffe::InnerProductLayer< Dtype >protected
type() constcaffe::InnerProductLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1InnerProductLayer.html b/doxygen/classcaffe_1_1InnerProductLayer.html new file mode 100644 index 00000000000..73a989b88e7 --- /dev/null +++ b/doxygen/classcaffe_1_1InnerProductLayer.html @@ -0,0 +1,423 @@ + + + + + + + +Caffe: caffe::InnerProductLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::InnerProductLayer< Dtype > Class Template Reference
+
+
+ +

Also known as a "fully-connected" layer, computes an inner product with a set of learned weights, and (optionally) adds biases. + More...

+ +

#include <inner_product_layer.hpp>

+
+Inheritance diagram for caffe::InnerProductLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

InnerProductLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+int M_
 
+int K_
 
+int N_
 
+bool bias_term_
 
+Blob< Dtype > bias_multiplier_
 
+bool transpose_
 if true, assume transposed weights
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::InnerProductLayer< Dtype >

+ +

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.

+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::InnerProductLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::InnerProductLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::InnerProductLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::InnerProductLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1InnerProductLayer.png b/doxygen/classcaffe_1_1InnerProductLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..2a8ba8953f0c30986df69e85f135b8424c674162 GIT binary patch literal 774 zcmeAS@N?(olHy`uVBq!ia0vp^mw-5cgBeIh+uvRcq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0rh2+KhEy=VoqMtGu>y}Pzj@IA|C6`t zvgA1JS~&NuQAgmrB?8C49el87Q|@iE={Hm|)pS)nrDC}~C%Ii$_fT}%Y3aFZ)rTLi z>%1q$y<}eEF4rFOYl7chk4w8>Io}dDy{5jTa8{|u%aiN&O4xn3=*pY)GC4uXGid#; z2}Kdr#)nNR^JYpIegAiV#;%Fx)0c3+a?`TcULvk`?o~ig|C9R_?5}i}RIEC?PRo#A z?b@O|bJHOuK{K^-U{r0xn%P%{6%YsysqrSZ_UsX~y?O#*Mnm>`NeD>E&%QH~Z92#ys5}Qd7J0v1ib7E1};j``_8Sy;7BuUpf1Qc!=kueQR4)JQrsx zdR}_5OF8%UHec0-_b=ECrayDub$40vEdG~%CeoK%JXSwu>{;K+Vz5h0=)j984+fwP z#-4SA1oo^HaGK%G(lB$&1O~V3PD~Q9=^o$reVnqL)gthXDMMWQ&i3Sn)u;N_?<;Nk zG9yQo`NFlxE9WQreP+y9q3||a@OAP0`o6c9>?e0_UfERnchc-HXDn`WZqomK*F*8m z4135}oyvam*1auFG?v%C+;lUwtFT2`!m`q`%TxZ z`YE>K?kC^PLMtRsw|=gE-08S=l;oQMrSYpKtogl4`R&)W z6QaDoZSrbATrImYVwdihMPA3gTu8kYYGvykZWbqfQhwjF$WN8e+T||Jj!TrT#KL|EIJ4`k~L#z(mX7>FVdQ&MBb@02lyyBme*a literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1InputLayer-members.html b/doxygen/classcaffe_1_1InputLayer-members.html new file mode 100644 index 00000000000..d100666d91b --- /dev/null +++ b/doxygen/classcaffe_1_1InputLayer-members.html @@ -0,0 +1,119 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::InputLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::InputLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::InputLayer< Dtype >inlineprotectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inlineprotectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::InputLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::InputLayer< Dtype >inlineprotectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
InputLayer(const LayerParameter &param) (defined in caffe::InputLayer< Dtype >)caffe::InputLayer< Dtype >inlineexplicit
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::InputLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::InputLayer< Dtype >inlinevirtual
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::InputLayer< Dtype >inlinevirtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::InputLayer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::InputLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1InputLayer.html b/doxygen/classcaffe_1_1InputLayer.html new file mode 100644 index 00000000000..45659ada915 --- /dev/null +++ b/doxygen/classcaffe_1_1InputLayer.html @@ -0,0 +1,403 @@ + + + + + + + +Caffe: caffe::InputLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::InputLayer< Dtype > Class Template Reference
+
+
+ +

Provides data to the Net by assigning tops directly. + More...

+ +

#include <input_layer.hpp>

+
+Inheritance diagram for caffe::InputLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

InputLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual bool ShareInParallel () const
 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 void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::InputLayer< Dtype >

+ +

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.

+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::InputLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::InputLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ MinTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::InputLayer< Dtype >::MinTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some minimum number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void caffe::InputLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+inlinevirtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1InputLayer.png b/doxygen/classcaffe_1_1InputLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..fce2a19c2926347cba68a1ff44e238cb9ab624c9 GIT binary patch literal 704 zcmeAS@N?(olHy`uVBq!ia0vp^OMp0lgBeIJ$k3|+QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;4|mHo>eRPo>YBMZPV=kyr%g~eArsX&nBlc3MczMZ@lR_Y1ggxJ2E$? zOFlcfFLl{1zfJ$lm*qV{py#Wxi72_hy;uBQ>r)p_*Gi&eaSU;2cv%c>%a-&lJ<<1Ge0U%oU&wlCdeBg|GeO|^u1hC%*gVZ zv7o$``N`vttW)kY{7l(n|1{j8?;Tsm#Ris+3&i68Tr-2b%EdV!+>@HXAPB;*9PO-M zx!)68a5aakAk6!)oCV9B%Z+o?XY(gcxGT$07NT(dvaVsxx&J+%a~dPlu3!JOxolG= z?~LV$La$A5d>IN4|G+#^ToO-q&Y;~al|i46UGHoJUl@dM*a z4!=Z2)0lUPZ1s%zSjSWpohyFbHp1~%&&{_!d|D^=D$Hp&Y0WxcE8v-Y>&yK*mEEQ{ z9n4&BHJk9&_=YWeo^`2gJEx214Ew`ba~!vynbx-TF3<&cCa2CWzROz>rGGu9pz2Xn zJ^z!?WBv|tX*Jv`2kfsv!z5r|d$8BbW51Z)WtD!nyIX_;lN*DltDnm{r-UW|Cmct7 literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1InternalThread-members.html b/doxygen/classcaffe_1_1InternalThread-members.html new file mode 100644 index 00000000000..003b0f80de5 --- /dev/null +++ b/doxygen/classcaffe_1_1InternalThread-members.html @@ -0,0 +1,87 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::InternalThread Member List
+
+
+ +

This is the complete list of members for caffe::InternalThread, including all inherited members.

+ + + + + + + + +
InternalThread() (defined in caffe::InternalThread)caffe::InternalThreadinline
InternalThreadEntry() (defined in caffe::InternalThread)caffe::InternalThreadinlineprotectedvirtual
is_started() const (defined in caffe::InternalThread)caffe::InternalThread
must_stop() (defined in caffe::InternalThread)caffe::InternalThreadprotected
StartInternalThread()caffe::InternalThread
StopInternalThread()caffe::InternalThread
~InternalThread() (defined in caffe::InternalThread)caffe::InternalThreadvirtual
+ + + + diff --git a/doxygen/classcaffe_1_1InternalThread.html b/doxygen/classcaffe_1_1InternalThread.html new file mode 100644 index 00000000000..5143248eb73 --- /dev/null +++ b/doxygen/classcaffe_1_1InternalThread.html @@ -0,0 +1,160 @@ + + + + + + + +Caffe: caffe::InternalThread Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::InternalThread Class Reference
+
+
+ +

#include <internal_thread.hpp>

+
+Inheritance diagram for caffe::InternalThread:
+
+
+ + +caffe::BasePrefetchingDataLayer< Dtype > +caffe::DataReader::Body +caffe::P2PSync< Dtype > +caffe::DataLayer< Dtype > +caffe::ImageDataLayer< Dtype > +caffe::WindowDataLayer< Dtype > + +
+ + + + + + + + +

+Public Member Functions

void StartInternalThread ()
 
void StopInternalThread ()
 
+bool is_started () const
 
+ + + + + +

+Protected Member Functions

+virtual void InternalThreadEntry ()
 
+bool must_stop ()
 
+

Detailed Description

+

Virtual class encapsulate boost::thread for use in base class The child class will acquire the ability to run a single thread, by reimplementing the virtual function InternalThreadEntry.

+

Member Function Documentation

+ +

§ StartInternalThread()

+ +
+
+ + + + + + + +
void caffe::InternalThread::StartInternalThread ()
+
+

Caffe's thread local state will be initialized using the current thread values, e.g. device id, solver index etc. The random seed is initialized using caffe_rng_rand.

+ +
+
+ +

§ StopInternalThread()

+ +
+
+ + + + + + + +
void caffe::InternalThread::StopInternalThread ()
+
+

Will not return until the internal thread has exited.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1InternalThread.png b/doxygen/classcaffe_1_1InternalThread.png new file mode 100644 index 0000000000000000000000000000000000000000..ac6886f8e0a8dd101f29d28e6bebed17ad2e3160 GIT binary patch literal 2743 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 + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::LRNLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::LRNLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
alpha_ (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protected
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::LRNLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::LRNLayer< Dtype >protectedvirtual
beta_ (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protected
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
channels_ (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
CrossChannelBackward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom) (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protectedvirtual
CrossChannelBackward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom) (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protectedvirtual
CrossChannelForward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top) (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protectedvirtual
CrossChannelForward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top) (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::LRNLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::LRNLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::LRNLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::LRNLayer< Dtype >protectedvirtual
height_ (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protected
IsShared() constcaffe::Layer< Dtype >inline
k_ (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protected
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::LRNLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
LRNLayer(const LayerParameter &param) (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >inlineexplicit
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
num_ (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
pool_layer_ (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protected
pool_output_ (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protected
pool_top_vec_ (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protected
power_layer_ (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protected
power_output_ (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protected
power_top_vec_ (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protected
pre_pad_ (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protected
product_bottom_vec_ (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protected
product_input_ (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protected
product_layer_ (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::LRNLayer< Dtype >virtual
scale_ (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protected
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
size_ (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protected
split_layer_ (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protected
split_top_vec_ (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protected
square_bottom_vec_ (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protected
square_input_ (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protected
square_layer_ (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protected
square_output_ (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protected
square_top_vec_ (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protected
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::LRNLayer< Dtype >inlinevirtual
width_ (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protected
WithinChannelBackward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom) (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protectedvirtual
WithinChannelForward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top) (defined in caffe::LRNLayer< Dtype >)caffe::LRNLayer< Dtype >protectedvirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1LRNLayer.html b/doxygen/classcaffe_1_1LRNLayer.html new file mode 100644 index 00000000000..647e9c798cb --- /dev/null +++ b/doxygen/classcaffe_1_1LRNLayer.html @@ -0,0 +1,500 @@ + + + + + + + +Caffe: caffe::LRNLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::LRNLayer< Dtype > Class Template Reference
+
+
+ +

Normalize the input in a local region across or within feature maps. + More...

+ +

#include <lrn_layer.hpp>

+
+Inheritance diagram for caffe::LRNLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

LRNLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
+virtual void CrossChannelForward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual void CrossChannelForward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual void WithinChannelForward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual void CrossChannelBackward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 
+virtual void CrossChannelBackward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 
+virtual void WithinChannelBackward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+int size_
 
+int pre_pad_
 
+Dtype alpha_
 
+Dtype beta_
 
+Dtype k_
 
+int num_
 
+int channels_
 
+int height_
 
+int width_
 
+Blob< Dtype > scale_
 
+shared_ptr< SplitLayer< Dtype > > split_layer_
 
+vector< Blob< Dtype > * > split_top_vec_
 
+shared_ptr< PowerLayer< Dtype > > square_layer_
 
+Blob< Dtype > square_input_
 
+Blob< Dtype > square_output_
 
+vector< Blob< Dtype > * > square_bottom_vec_
 
+vector< Blob< Dtype > * > square_top_vec_
 
+shared_ptr< PoolingLayer< Dtype > > pool_layer_
 
+Blob< Dtype > pool_output_
 
+vector< Blob< Dtype > * > pool_top_vec_
 
+shared_ptr< PowerLayer< Dtype > > power_layer_
 
+Blob< Dtype > power_output_
 
+vector< Blob< Dtype > * > power_top_vec_
 
+shared_ptr< EltwiseLayer< Dtype > > product_layer_
 
+Blob< Dtype > product_input_
 
+vector< Blob< Dtype > * > product_bottom_vec_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::LRNLayer< Dtype >

+ +

Normalize the input in a local region across or within feature maps.

+

TODO(dox): thorough documentation for Forward, Backward, and proto params.

+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::LRNLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::LRNLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::LRNLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::LRNLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/caffe/layers/lrn_layer.hpp
  • +
  • src/caffe/layers/lrn_layer.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1LRNLayer.png b/doxygen/classcaffe_1_1LRNLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..b5d640f1a49ba44a260117d942ef26446e09e7c4 GIT binary patch literal 702 zcmeAS@N?(olHy`uVBq!ia0vp^3xPO*gBeJ=IX<-jQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;2r6vUal~@J<0T$;f`@=w<%x6%kP_^Ij#QFhRAk%fms^y?V%ZK_;U57%TEc;V%B|| zSsgj4@>Fd^(b1~NNmf@2FPGlCE3fp1^^aAe`GfDaQg}_zc_>{_aO5Lrx<0duDJNsntQH1CU#Er{YKjg%lLZu(d2$F`R$=ML z6kpQ`8u1`ju9Ms9L6_3GCx?! zx2x{Zo~>v1e*b+|BRR!)hWIB*zNfMkQ{L3Uw`|8lqNZHQNY!}e!iJA?ccsQ + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::LSTMLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::LSTMLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::RecurrentLayer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::RecurrentLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inlineprotectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
cont_input_blob_ (defined in caffe::RecurrentLayer< Dtype >)caffe::RecurrentLayer< Dtype >protected
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::RecurrentLayer< Dtype >inlinevirtual
expose_hidden_caffe::RecurrentLayer< Dtype >protected
FillUnrolledNet(NetParameter *net_param) constcaffe::LSTMLayer< Dtype >protectedvirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::RecurrentLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::RecurrentLayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
last_layer_index_caffe::RecurrentLayer< Dtype >protected
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::RecurrentLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
LSTMLayer(const LayerParameter &param) (defined in caffe::LSTMLayer< Dtype >)caffe::LSTMLayer< Dtype >inlineexplicit
MaxBottomBlobs() constcaffe::RecurrentLayer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::RecurrentLayer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
N_caffe::RecurrentLayer< Dtype >protected
output_blobs_ (defined in caffe::RecurrentLayer< Dtype >)caffe::RecurrentLayer< Dtype >protected
OutputBlobNames(vector< string > *names) constcaffe::LSTMLayer< Dtype >protectedvirtual
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
recur_input_blobs_ (defined in caffe::RecurrentLayer< Dtype >)caffe::RecurrentLayer< Dtype >protected
recur_output_blobs_ (defined in caffe::RecurrentLayer< Dtype >)caffe::RecurrentLayer< Dtype >protected
RecurrentInputBlobNames(vector< string > *names) constcaffe::LSTMLayer< Dtype >protectedvirtual
RecurrentInputShapes(vector< BlobShape > *shapes) constcaffe::LSTMLayer< Dtype >protectedvirtual
RecurrentLayer(const LayerParameter &param) (defined in caffe::RecurrentLayer< Dtype >)caffe::RecurrentLayer< Dtype >inlineexplicit
RecurrentOutputBlobNames(vector< string > *names) constcaffe::LSTMLayer< Dtype >protectedvirtual
Reset() (defined in caffe::RecurrentLayer< Dtype >)caffe::RecurrentLayer< Dtype >virtual
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::RecurrentLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
static_input_caffe::RecurrentLayer< Dtype >protected
T_caffe::RecurrentLayer< Dtype >protected
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::LSTMLayer< Dtype >inlinevirtual
unrolled_net_caffe::RecurrentLayer< Dtype >protected
x_input_blob_ (defined in caffe::RecurrentLayer< Dtype >)caffe::RecurrentLayer< Dtype >protected
x_static_input_blob_ (defined in caffe::RecurrentLayer< Dtype >)caffe::RecurrentLayer< Dtype >protected
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1LSTMLayer.html b/doxygen/classcaffe_1_1LSTMLayer.html new file mode 100644 index 00000000000..ce4d47af03d --- /dev/null +++ b/doxygen/classcaffe_1_1LSTMLayer.html @@ -0,0 +1,312 @@ + + + + + + + +Caffe: caffe::LSTMLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::LSTMLayer< Dtype > Class Template Reference
+
+
+ +

Processes sequential inputs using a "Long Short-Term Memory" (LSTM) [1] style recurrent neural network (RNN). Implemented by unrolling the LSTM computation through time. + More...

+ +

#include <lstm_layer.hpp>

+
+Inheritance diagram for caffe::LSTMLayer< Dtype >:
+
+
+ + +caffe::RecurrentLayer< Dtype > +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

LSTMLayer (const LayerParameter &param)
 
+virtual const char * type () const
 Returns the layer type.
 
- Public Member Functions inherited from caffe::RecurrentLayer< Dtype >
RecurrentLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual void Reset ()
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void FillUnrolledNet (NetParameter *net_param) const
 Fills net_param with the recurrent network architecture. Subclasses should define this – see RNNLayer and LSTMLayer for examples.
 
+virtual void RecurrentInputBlobNames (vector< string > *names) const
 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 RecurrentOutputBlobNames (vector< string > *names) const
 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 RecurrentInputShapes (vector< BlobShape > *shapes) const
 Fills shapes with the shapes of the recurrent input Blob&s. Subclasses should define this – see RNNLayer and LSTMLayer for examples.
 
+virtual void OutputBlobNames (vector< string > *names) const
 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.
 
- Protected Member Functions inherited from caffe::RecurrentLayer< Dtype >
virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::RecurrentLayer< Dtype >
+shared_ptr< Net< Dtype > > unrolled_net_
 A Net to implement the Recurrent functionality.
 
+int N_
 The number of independent streams to process simultaneously.
 
+int T_
 The number of timesteps in the layer's input, and the number of timesteps over which to backpropagate through time.
 
+bool static_input_
 Whether the layer has a "static" input copied across all timesteps.
 
+int last_layer_index_
 The last layer to run in the network. (Any later layers are losses added to force the recurrent net to do backprop.)
 
+bool expose_hidden_
 Whether the layer's hidden state at the first and last timesteps are layer inputs and outputs, respectively.
 
+vector< Blob< Dtype > *> recur_input_blobs_
 
+vector< Blob< Dtype > *> recur_output_blobs_
 
+vector< Blob< Dtype > *> output_blobs_
 
+Blob< Dtype > * x_input_blob_
 
+Blob< Dtype > * x_static_input_blob_
 
+Blob< Dtype > * cont_input_blob_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::LSTMLayer< Dtype >

+ +

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 := [ W_{hi} * h_{t-1} + W_{xi} * x_t + b_i ] f_t := [ W_{hf} * h_{t-1} + W_{xf} * x_t + b_f ] o_t := [ W_{ho} * h_{t-1} + W_{xo} * x_t + b_o ] g_t := [ 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 .* [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).

+

The documentation for this class was generated from the following files:
    +
  • include/caffe/layers/lstm_layer.hpp
  • +
  • src/caffe/layers/lstm_layer.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1LSTMLayer.png b/doxygen/classcaffe_1_1LSTMLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..0862b26ed717af5c71f9670fdc3ba3c7845d298b GIT binary patch literal 1099 zcmeAS@N?(olHy`uVBq!ia0vp^2Z6YQgBeI>o~{Q;NCfzVxc>kDAIN<1=4)yHp$R}1 z7#}!rfVK0EJdn##666=m08|75S5Ji)F)%RS@^oMx$BirhyYD+` zY9{n=Mdoa+Gb<)P7Ew|OWBRH8+2*`+cjP3tFd>hiHIp1BC4H4`%8YvQOy%XeW!K}s zYk68-Fz1L%EMNGW!|$#~(DHYJYc!)b*-tH;S<3QsdT92lzhToaK3XPW8XY#O%!}N%CvlyB@+-G{F_X@f&R+2Ewm{4bi`B6QZ5rb*9=zbXA;zKDC97j@ z=hlq;I_CuLtlE3YFBC0Kz1iq#`SabCIadzMxOVu*G^siFn)Nw)rtW9&eOdj!@vW=c z?yns)n1gS3zjd8-X8At;RqMZhQ}TQja@?-&M_#qCqyB;8f+fr~al9%o`=_u>5?QS> zVM&B7=d;Rr?qUa`zcNTf9Tv8cTdd6E|A9q9Cb6dJjVr@NFQ$eFRYr$3lNc1jJQ)O5 zt1xtg3Nakf;$%pg%EGV_Rk~np<-F$$kLq|bYjdh-hIuM@ZnRRKvCOsZ-A{E-+p3=v zm+ZdPbSJjd=|j}M;)_pz+-6z+Q1zw5)CAXfV8CrWTUDCpvpwUy=$qvE7+rfgtH?os^Ey1mH#%A19z*>zNmMzItNxdK>le%Ir`>`); z*xoXJX?tfA0}R`DQilq8{oWs(cR>B;HO*VX5pn)ceBa+?zMbGREozxuXC=I^hy33Kkfa-H}fs=HO#Pt3w}H{2LAm9#cON$0D#6Z^)tt{PkJOGNqz?7=Qr{iHKc} zANIWc|8)9Qw{2TDTSfCS?7On*)(+MktJibJ?SG$h%7u5g&9s;Q0~pG;R{k(;GF4XH zpBj@^&XOiv-L$FX>Z~mJEjrOjYfVk687!^}9(;DBZsx+<3;Z7^h4A{tga)}M_})D+ zoB3I>+XMeCp|k(!{t;~a{_xHltyi3Xy13i4n~Hp2bFPqkqf{<=?d|)T2=UzP433{}^*Q{p?(f!Xtn=pTX1B&t;ucLK6VVY4_Lw literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1LSTMUnitLayer-members.html b/doxygen/classcaffe_1_1LSTMUnitLayer-members.html new file mode 100644 index 00000000000..76d2fb4abe5 --- /dev/null +++ b/doxygen/classcaffe_1_1LSTMUnitLayer-members.html @@ -0,0 +1,121 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::LSTMUnitLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::LSTMUnitLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::LSTMUnitLayer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::LSTMUnitLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::LSTMUnitLayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::LSTMUnitLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::LSTMUnitLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::LSTMUnitLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::LSTMUnitLayer< Dtype >protectedvirtual
hidden_dim_caffe::LSTMUnitLayer< Dtype >protected
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlinevirtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
LSTMUnitLayer(const LayerParameter &param) (defined in caffe::LSTMUnitLayer< Dtype >)caffe::LSTMUnitLayer< Dtype >inlineexplicit
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::LSTMUnitLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::LSTMUnitLayer< Dtype >inlinevirtual
X_acts_ (defined in caffe::LSTMUnitLayer< Dtype >)caffe::LSTMUnitLayer< Dtype >protected
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1LSTMUnitLayer.html b/doxygen/classcaffe_1_1LSTMUnitLayer.html new file mode 100644 index 00000000000..439474d1053 --- /dev/null +++ b/doxygen/classcaffe_1_1LSTMUnitLayer.html @@ -0,0 +1,511 @@ + + + + + + + +Caffe: caffe::LSTMUnitLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::LSTMUnitLayer< Dtype > Class Template Reference
+
+
+ +

A helper for LSTMLayer: computes a single timestep of the non-linearity of the LSTM, producing the updated cell and hidden states. + More...

+ +

#include <lstm_layer.hpp>

+
+Inheritance diagram for caffe::LSTMUnitLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

LSTMUnitLayer (const LayerParameter &param)
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Computes the error gradient w.r.t. the LSTMUnit inputs. More...
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + +

+Protected Attributes

+int hidden_dim_
 The hidden and output dimension.
 
+Blob< Dtype > X_acts_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::LSTMUnitLayer< Dtype >

+ +

A helper for LSTMLayer: computes a single timestep of the non-linearity of the LSTM, producing the updated cell and hidden states.

+

Member Function Documentation

+ +

§ AllowForceBackward()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + +
virtual bool caffe::LSTMUnitLayer< Dtype >::AllowForceBackward (const int bottom_index) const
+
+inlinevirtual
+
+ +

Return whether to allow force_backward for a given bottom blob index.

+

If AllowForceBackward(i) == false, we will ignore the force_backward setting and backpropagate to blob i only if it needs gradient information (as is done when force_backward == false).

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Backward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void caffe::LSTMUnitLayer< Dtype >::Backward_cpu (const vector< Blob< Dtype > *> & top,
const vector< bool > & propagate_down,
const vector< Blob< Dtype > *> & bottom 
)
+
+protectedvirtual
+
+ +

Computes the error gradient w.r.t. the LSTMUnit inputs.

+
Parameters
+ + + + +
topoutput Blob vector (length 2), providing the error gradient with respect to the outputs
    +
  1. $ (1 \times N \times D) $: containing error gradients $ \frac{\partial E}{\partial c_t} $ with respect to the updated cell state $ c_t $
  2. +
  3. $ (1 \times N \times D) $: containing error gradients $ \frac{\partial E}{\partial h_t} $ with respect to the updated cell state $ h_t $
  4. +
+
propagate_downsee Layer::Backward.
bottominput Blob vector (length 3), into which the error gradients with respect to the LSTMUnit inputs $ c_{t-1} $ and the gate inputs are computed. Computatation of the error gradients w.r.t. the sequence indicators is not implemented.
    +
  1. $ (1 \times N \times D) $ the error gradient w.r.t. the previous timestep cell state $ c_{t-1} $
  2. +
  3. $ (1 \times N \times 4D) $ the error gradient w.r.t. the "gate inputs" $ [ \frac{\partial E}{\partial i_t} \frac{\partial E}{\partial f_t} \frac{\partial E}{\partial o_t} \frac{\partial E}{\partial g_t} ] $
  4. +
  5. $ (1 \times 1 \times N) $ the gradient w.r.t. the sequence continuation indicators $ \delta_t $ is currently not computed.
  6. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::LSTMUnitLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::LSTMUnitLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::LSTMUnitLayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+
Parameters
+ + + +
bottominput Blob vector (length 3)
    +
  1. $ (1 \times N \times D) $ the previous timestep cell state $ c_{t-1} $
  2. +
  3. $ (1 \times N \times 4D) $ the "gate inputs" $ [i_t', f_t', o_t', g_t'] $
  4. +
  5. $ (1 \times N) $ the sequence continuation indicators $ \delta_t $
  6. +
+
topoutput Blob vector (length 2)
    +
  1. $ (1 \times N \times D) $ the updated cell state $ c_t $, computed as: i_t := [i_t'] f_t := [f_t'] o_t := [o_t'] g_t := [g_t'] c_t := cont_t * (f_t .* c_{t-1}) + (i_t .* g_t)
  2. +
  3. $ (1 \times N \times D) $ the updated hidden state $ h_t $, computed as: h_t := o_t .* [c_t]
  4. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::LSTMUnitLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/caffe/layers/lstm_layer.hpp
  • +
  • src/caffe/layers/lstm_unit_layer.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1LSTMUnitLayer.png b/doxygen/classcaffe_1_1LSTMUnitLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..48b5a8b8bd4656b2fb95ff697af0fe1e102fd893 GIT binary patch literal 749 zcmeAS@N?(olHy`uVBq!ia0vp^`++!sgBeKHtA!*3DTx4|5ZC|z{{xvX-h3_XKQsZz z0^3GAD>?H-#u>Y z7L@>zvhazL?|xk6ZhIo&^lN(V?QNY$)jTg}ee}L$p16CCoc(WJs$sE z%Tw#>`TrbIEbkt#-!*ZGo#{vUm$!`NA6cBU`uF4XLglk^CGv0c7QIYPQ1T3#9rfe9 z#JAHtk5ld%G0mTCGw;}y-aR{2La&~h|L^RN_!$Do{Od1N&6jUq}aGDXp(vZ0oswuelf8ECUpSG<`o?EMZ)~$I<#{8G3 z&cC}<$+%+mq5m^<>N?&%8dKL!T=@v2U0!{_pZL+5M)a%K7s?{&wDe zO1S>m&S(2?m73biEr0S|yGtbP&&Q%=$$t0V{@m$ZaA5xvd)esymD5lB$mNU>n(cJH ze(HSl@7sIrD@&$+Q2KvtO9u1xpX;yvm#!0EJoEmKbNN$@b63~juJ`G?WH{T|-p}Z{ zeceXyH(JbrnV(nwS8v+(kNJaW>5=S;$+dI$i~m3VWB12;-Tw^#17SgR^t(5Q;+d89 Y+n6-AGVKZ9227g_p00i_>zopr0E;z%QUCw| literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1Layer-members.html b/doxygen/classcaffe_1_1Layer-members.html new file mode 100644 index 00000000000..3592e5f4b16 --- /dev/null +++ b/doxygen/classcaffe_1_1Layer-members.html @@ -0,0 +1,118 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::Layer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::Layer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)=0caffe::Layer< Dtype >protectedpure virtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inlineprotectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)=0caffe::Layer< Dtype >protectedpure virtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlinevirtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)=0caffe::Layer< Dtype >pure virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::Layer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1Layer.html b/doxygen/classcaffe_1_1Layer.html new file mode 100644 index 00000000000..fce2b75557e --- /dev/null +++ b/doxygen/classcaffe_1_1Layer.html @@ -0,0 +1,1068 @@ + + + + + + + +Caffe: caffe::Layer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::Layer< Dtype > Class Template Referenceabstract
+
+
+ +

An interface for the units of computation which can be composed into a Net. + More...

+ +

#include <layer.hpp>

+
+Inheritance diagram for caffe::Layer< Dtype >:
+
+
+ + +caffe::AccuracyLayer< Dtype > +caffe::ArgMaxLayer< Dtype > +caffe::BaseConvolutionLayer< Dtype > +caffe::BaseDataLayer< Dtype > +caffe::BatchNormLayer< Dtype > +caffe::BatchReindexLayer< Dtype > +caffe::BiasLayer< Dtype > +caffe::ConcatLayer< Dtype > +caffe::CropLayer< Dtype > +caffe::DummyDataLayer< Dtype > +caffe::EltwiseLayer< Dtype > +caffe::EmbedLayer< Dtype > +caffe::FilterLayer< Dtype > +caffe::FlattenLayer< Dtype > +caffe::HDF5DataLayer< Dtype > +caffe::HDF5OutputLayer< Dtype > +caffe::Im2colLayer< Dtype > +caffe::InnerProductLayer< Dtype > +caffe::InputLayer< Dtype > +caffe::LossLayer< Dtype > +caffe::LRNLayer< Dtype > +caffe::LSTMUnitLayer< Dtype > +caffe::MVNLayer< Dtype > +caffe::NeuronLayer< Dtype > +caffe::ParameterLayer< Dtype > +caffe::PoolingLayer< Dtype > +caffe::PythonLayer< Dtype > +caffe::RecurrentLayer< Dtype > +caffe::ReductionLayer< Dtype > +caffe::ReshapeLayer< Dtype > +caffe::ScaleLayer< Dtype > +caffe::SilenceLayer< Dtype > +caffe::SliceLayer< Dtype > +caffe::SoftmaxLayer< Dtype > +caffe::SplitLayer< Dtype > +caffe::SPPLayer< Dtype > +caffe::TileLayer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)=0
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)=0
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)=0
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + +

+Protected Attributes

LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::Layer< Dtype >

+ +

An interface for the units of computation which can be composed into a Net.

+

Layers must implement a Forward function, in which they take their input (bottom) Blobs (if any) and compute their output Blobs (if any). They may also implement a Backward function, in which they compute the error gradients with respect to their input Blobs, given the error gradients with their output Blobs.

+

Constructor & Destructor Documentation

+ +

§ Layer()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + +
caffe::Layer< Dtype >::Layer (const LayerParameter & param)
+
+inlineexplicit
+
+

You should not implement your own constructor. Any set up code should go to SetUp(), where the dimensions of the bottom blobs are provided to the layer.

+ +
+
+

Member Function Documentation

+ +

§ AllowForceBackward()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + +
virtual bool caffe::Layer< Dtype >::AllowForceBackward (const int bottom_index) const
+
+inlinevirtual
+
+ +

Return whether to allow force_backward for a given bottom blob index.

+

If AllowForceBackward(i) == false, we will ignore the force_backward setting and backpropagate to blob i only if it needs gradient information (as is done when force_backward == false).

+ +

Reimplemented in caffe::LSTMUnitLayer< Dtype >, caffe::RecurrentLayer< Dtype >, caffe::EuclideanLossLayer< Dtype >, caffe::ContrastiveLossLayer< Dtype >, and caffe::LossLayer< Dtype >.

+ +
+
+ +

§ AutoTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual bool caffe::Layer< Dtype >::AutoTopBlobs () const
+
+inlinevirtual
+
+ +

Return whether "anonymous" top blobs are created automatically by the layer.

+

If this method returns true, Net::Init will create enough "anonymous" top blobs to fulfill the requirement specified by ExactNumTopBlobs() or MinTopBlobs().

+ +

Reimplemented in caffe::LossLayer< Dtype >.

+ +
+
+ +

§ Backward()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void caffe::Layer< Dtype >::Backward (const vector< Blob< Dtype > *> & top,
const vector< bool > & propagate_down,
const vector< Blob< Dtype > *> & bottom 
)
+
+inline
+
+ +

Given the top blob error gradients, compute the bottom blob error gradients.

+
Parameters
+ + + + +
topthe output blobs, whose diff fields store the gradient of the error with respect to themselves
propagate_downa vector with equal length to bottom, with each index indicating whether to propagate the error gradients down to the bottom blob at the corresponding index
bottomthe input blobs, whose diff fields will store the gradient of the error with respect to themselves after Backward is run
+
+
+

The Backward wrapper calls the relevant device wrapper function (Backward_cpu or Backward_gpu) to compute the bottom blob diffs given the top blob diffs.

+

Your layer should implement Backward_cpu and (optionally) Backward_gpu.

+ +
+
+ +

§ CheckBlobCounts()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void caffe::Layer< Dtype >::CheckBlobCounts (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+inlineprotectedvirtual
+
+

Called by the parent Layer's SetUp to check that the number of bottom and top Blobs provided as input match the expected numbers specified by the {ExactNum,Min,Max}{Bottom,Top}Blobs() functions.

+ +
+
+ +

§ EqualNumBottomTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual bool caffe::Layer< Dtype >::EqualNumBottomTopBlobs () const
+
+inlinevirtual
+
+ +

Returns true if the layer requires an equal number of bottom and top blobs.

+

This method should be overridden to return true if your layer expects an equal number of bottom and top blobs.

+ +

Reimplemented in caffe::BaseConvolutionLayer< Dtype >.

+ +
+
+ +

§ ExactNumBottomBlobs()

+ + + +

§ ExactNumTopBlobs()

+ + + +

§ Forward()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Dtype caffe::Layer< Dtype >::Forward (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+inline
+
+ +

Given the bottom blobs, compute the top blobs and the loss.

+
Parameters
+ + + +
bottomthe input blobs, whose data fields store the input data for this layer
topthe preshaped output blobs, whose data fields will store this layers' outputs
+
+
+
Returns
The total loss from the layer.
+

The Forward wrapper calls the relevant device wrapper function (Forward_cpu or Forward_gpu) to compute the top blob values given the bottom blobs. If the layer has any non-zero loss_weights, the wrapper then computes and returns the loss.

+

Your layer should implement Forward_cpu and (optionally) Forward_gpu.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void caffe::Layer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+inlinevirtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented in caffe::BasePrefetchingDataLayer< Dtype >, caffe::SoftmaxWithLossLayer< Dtype >, caffe::InfogainLossLayer< Dtype >, caffe::SigmoidCrossEntropyLossLayer< Dtype >, caffe::BatchNormLayer< Dtype >, caffe::ContrastiveLossLayer< Dtype >, caffe::ArgMaxLayer< Dtype >, caffe::DropoutLayer< Dtype >, caffe::PReLULayer< Dtype >, caffe::ExpLayer< Dtype >, caffe::LogLayer< Dtype >, caffe::AccuracyLayer< Dtype >, caffe::PowerLayer< Dtype >, caffe::RecurrentLayer< Dtype >, caffe::ScaleLayer< Dtype >, caffe::AbsValLayer< Dtype >, caffe::HDF5OutputLayer< Dtype >, caffe::ThresholdLayer< Dtype >, caffe::HDF5DataLayer< Dtype >, caffe::BaseDataLayer< Dtype >, caffe::LossLayer< Dtype >, caffe::LRNLayer< Dtype >, caffe::BiasLayer< Dtype >, caffe::CropLayer< Dtype >, caffe::EmbedLayer< Dtype >, caffe::Im2colLayer< Dtype >, caffe::ReductionLayer< Dtype >, caffe::DummyDataLayer< Dtype >, caffe::EltwiseLayer< Dtype >, caffe::FilterLayer< Dtype >, caffe::InnerProductLayer< Dtype >, caffe::InputLayer< Dtype >, caffe::ReshapeLayer< Dtype >, caffe::SliceLayer< Dtype >, caffe::SPPLayer< Dtype >, caffe::BaseConvolutionLayer< Dtype >, caffe::PoolingLayer< Dtype >, caffe::ConcatLayer< Dtype >, caffe::PythonLayer< Dtype >, and caffe::ParameterLayer< Dtype >.

+ +
+
+ +

§ MaxBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::Layer< Dtype >::MaxBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some maximum number of bottom blobs.

+ +

Reimplemented in caffe::InfogainLossLayer< Dtype >, caffe::RecurrentLayer< Dtype >, caffe::ScaleLayer< Dtype >, and caffe::BiasLayer< Dtype >.

+ +
+
+ +

§ MaxTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::Layer< Dtype >::MaxTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some maximum number of top blobs.

+ +

Reimplemented in caffe::SoftmaxWithLossLayer< Dtype >, caffe::AccuracyLayer< Dtype >, caffe::PoolingLayer< Dtype >, and caffe::DataLayer< Dtype >.

+ +
+
+ +

§ MinBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::Layer< Dtype >::MinBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some minimum number of bottom blobs.

+ +

Reimplemented in caffe::InfogainLossLayer< Dtype >, caffe::RecurrentLayer< Dtype >, caffe::ScaleLayer< Dtype >, caffe::BiasLayer< Dtype >, caffe::EltwiseLayer< Dtype >, caffe::FilterLayer< Dtype >, caffe::BaseConvolutionLayer< Dtype >, caffe::ConcatLayer< Dtype >, and caffe::SilenceLayer< Dtype >.

+ +
+
+ +

§ MinTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::Layer< Dtype >::MinTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some minimum number of top blobs.

+ +

Reimplemented in caffe::SoftmaxWithLossLayer< Dtype >, caffe::AccuracyLayer< Dtype >, caffe::HDF5DataLayer< Dtype >, caffe::DummyDataLayer< Dtype >, caffe::InputLayer< Dtype >, caffe::FilterLayer< Dtype >, caffe::SliceLayer< Dtype >, caffe::PoolingLayer< Dtype >, caffe::BaseConvolutionLayer< Dtype >, caffe::DataLayer< Dtype >, and caffe::SplitLayer< Dtype >.

+ +
+
+ +

§ param_propagate_down()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + +
bool caffe::Layer< Dtype >::param_propagate_down (const int param_id)
+
+inline
+
+ +

Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.

+

You can safely ignore false values and always compute gradients for all parameters, but possibly with wasteful computation.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void caffe::Layer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+pure virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implemented in caffe::LSTMUnitLayer< Dtype >, caffe::SoftmaxWithLossLayer< Dtype >, caffe::InfogainLossLayer< Dtype >, caffe::SigmoidCrossEntropyLossLayer< Dtype >, caffe::MultinomialLogisticLossLayer< Dtype >, caffe::BatchNormLayer< Dtype >, caffe::EuclideanLossLayer< Dtype >, caffe::ArgMaxLayer< Dtype >, caffe::PReLULayer< Dtype >, caffe::DropoutLayer< Dtype >, caffe::BaseDataLayer< Dtype >, caffe::HDF5OutputLayer< Dtype >, caffe::AccuracyLayer< Dtype >, caffe::HDF5DataLayer< Dtype >, caffe::PythonLayer< Dtype >, caffe::RecurrentLayer< Dtype >, caffe::ScaleLayer< Dtype >, caffe::LossLayer< Dtype >, caffe::LRNLayer< Dtype >, caffe::BiasLayer< Dtype >, caffe::DummyDataLayer< Dtype >, caffe::InputLayer< Dtype >, caffe::CropLayer< Dtype >, caffe::FlattenLayer< Dtype >, caffe::EmbedLayer< Dtype >, caffe::Im2colLayer< Dtype >, caffe::ParameterLayer< Dtype >, caffe::ReductionLayer< Dtype >, caffe::BatchReindexLayer< Dtype >, caffe::EltwiseLayer< Dtype >, caffe::FilterLayer< Dtype >, caffe::InnerProductLayer< Dtype >, caffe::ReshapeLayer< Dtype >, caffe::SliceLayer< Dtype >, caffe::SPPLayer< Dtype >, caffe::BaseConvolutionLayer< Dtype >, caffe::PoolingLayer< Dtype >, caffe::ConcatLayer< Dtype >, caffe::NeuronLayer< Dtype >, caffe::SplitLayer< Dtype >, caffe::MVNLayer< Dtype >, caffe::SoftmaxLayer< Dtype >, caffe::SilenceLayer< Dtype >, and caffe::TileLayer< Dtype >.

+ +
+
+ +

§ SetLossWeights()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + +
void caffe::Layer< Dtype >::SetLossWeights (const vector< Blob< Dtype > *> & top)
+
+inlineprotected
+
+

Called by SetUp to initialize the weights associated with any top blobs in the loss function. Store non-zero loss weights in the diff blob.

+ +
+
+ +

§ SetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::Layer< Dtype >::SetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+inline
+
+ +

Implements common layer setup functionality.

+
Parameters
+ + + +
bottomthe preshaped input blobs
topthe allocated but unshaped output blobs, to be shaped by Reshape
+
+
+

Checks that the number of bottom and top blobs is correct. Calls LayerSetUp to do special layer setup for individual layer types, followed by Reshape to set up sizes of top blobs and internal buffers. Sets up the loss weight multiplier blobs for any non-zero loss weights. This method may not be overridden.

+ +
+
+

Member Data Documentation

+ +

§ blobs_

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + +
vector<shared_ptr<Blob<Dtype> > > caffe::Layer< Dtype >::blobs_
+
+protected
+
+

The vector that stores the learnable parameters as a set of blobs.

+ +
+
+ +

§ layer_param_

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + +
LayerParameter caffe::Layer< Dtype >::layer_param_
+
+protected
+
+

The protobuf that stores the layer parameters

+ +
+
+ +

§ loss_

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + +
vector<Dtype> caffe::Layer< Dtype >::loss_
+
+protected
+
+

The vector that indicates whether each top blob has a non-zero weight in the objective function.

+ +
+
+ +

§ param_propagate_down_

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + +
vector<bool> caffe::Layer< Dtype >::param_propagate_down_
+
+protected
+
+

Vector indicating whether to compute the diff of each param blob.

+ +
+
+ +

§ phase_

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + +
Phase caffe::Layer< Dtype >::phase_
+
+protected
+
+

The phase: TRAIN or TEST

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/caffe/layer.hpp
  • +
  • src/caffe/layer.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1Layer.png b/doxygen/classcaffe_1_1Layer.png new file mode 100644 index 0000000000000000000000000000000000000000..6956c3f820d5611e3aa3d4da8db50c3283bd9068 GIT binary patch literal 18948 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 + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::LayerRegisterer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::LayerRegisterer< Dtype >, including all inherited members.

+ + +
LayerRegisterer(const string &type, shared_ptr< Layer< Dtype > >(*creator)(const LayerParameter &)) (defined in caffe::LayerRegisterer< Dtype >)caffe::LayerRegisterer< Dtype >inline
+ + + + diff --git a/doxygen/classcaffe_1_1LayerRegisterer.html b/doxygen/classcaffe_1_1LayerRegisterer.html new file mode 100644 index 00000000000..2b4c52a79c7 --- /dev/null +++ b/doxygen/classcaffe_1_1LayerRegisterer.html @@ -0,0 +1,90 @@ + + + + + + + +Caffe: caffe::LayerRegisterer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::LayerRegisterer< Dtype > Class Template Reference
+
+
+ + + + +

+Public Member Functions

LayerRegisterer (const string &type, shared_ptr< Layer< Dtype > >(*creator)(const LayerParameter &))
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classcaffe_1_1LayerRegistry-members.html b/doxygen/classcaffe_1_1LayerRegistry-members.html new file mode 100644 index 00000000000..ca276501386 --- /dev/null +++ b/doxygen/classcaffe_1_1LayerRegistry-members.html @@ -0,0 +1,86 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::LayerRegistry< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::LayerRegistry< Dtype >, including all inherited members.

+ + + + + + + +
AddCreator(const string &type, Creator creator) (defined in caffe::LayerRegistry< Dtype >)caffe::LayerRegistry< Dtype >inlinestatic
CreateLayer(const LayerParameter &param) (defined in caffe::LayerRegistry< Dtype >)caffe::LayerRegistry< Dtype >inlinestatic
Creator typedef (defined in caffe::LayerRegistry< Dtype >)caffe::LayerRegistry< Dtype >
CreatorRegistry typedef (defined in caffe::LayerRegistry< Dtype >)caffe::LayerRegistry< Dtype >
LayerTypeList() (defined in caffe::LayerRegistry< Dtype >)caffe::LayerRegistry< Dtype >inlinestatic
Registry() (defined in caffe::LayerRegistry< Dtype >)caffe::LayerRegistry< Dtype >inlinestatic
+ + + + diff --git a/doxygen/classcaffe_1_1LayerRegistry.html b/doxygen/classcaffe_1_1LayerRegistry.html new file mode 100644 index 00000000000..6427448b2f5 --- /dev/null +++ b/doxygen/classcaffe_1_1LayerRegistry.html @@ -0,0 +1,109 @@ + + + + + + + +Caffe: caffe::LayerRegistry< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::LayerRegistry< Dtype > Class Template Reference
+
+
+ + + + + + +

+Public Types

+typedef shared_ptr< Layer< Dtype > >(* Creator) (const LayerParameter &)
 
+typedef std::map< string, Creator > CreatorRegistry
 
+ + + + + + + + + +

+Static Public Member Functions

+static CreatorRegistry & Registry ()
 
+static void AddCreator (const string &type, Creator creator)
 
+static shared_ptr< Layer< Dtype > > CreateLayer (const LayerParameter &param)
 
+static vector< string > LayerTypeList ()
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classcaffe_1_1LogLayer-members.html b/doxygen/classcaffe_1_1LogLayer-members.html new file mode 100644 index 00000000000..f149fb3cd7b --- /dev/null +++ b/doxygen/classcaffe_1_1LogLayer-members.html @@ -0,0 +1,124 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::LogLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::LogLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::LogLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::LogLayer< Dtype >protectedvirtual
backward_num_scale_ (defined in caffe::LogLayer< Dtype >)caffe::LogLayer< Dtype >protected
base_scale_ (defined in caffe::LogLayer< Dtype >)caffe::LogLayer< Dtype >protected
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::NeuronLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::NeuronLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::LogLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::LogLayer< Dtype >protectedvirtual
input_scale_ (defined in caffe::LogLayer< Dtype >)caffe::LogLayer< Dtype >protected
input_shift_ (defined in caffe::LogLayer< Dtype >)caffe::LogLayer< Dtype >protected
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::LogLayer< Dtype >virtual
LogLayer(const LayerParameter &param)caffe::LogLayer< Dtype >inlineexplicit
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
NeuronLayer(const LayerParameter &param) (defined in caffe::NeuronLayer< Dtype >)caffe::NeuronLayer< Dtype >inlineexplicit
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::NeuronLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::LogLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1LogLayer.html b/doxygen/classcaffe_1_1LogLayer.html new file mode 100644 index 00000000000..ab80557406a --- /dev/null +++ b/doxygen/classcaffe_1_1LogLayer.html @@ -0,0 +1,457 @@ + + + + + + + +Caffe: caffe::LogLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::LogLayer< Dtype > Class Template Reference
+
+
+ +

Computes $ y = log_{\gamma}(\alpha x + \beta) $, as specified by the scale $ \alpha $, shift $ \beta $, and base $ \gamma $. + More...

+ +

#include <log_layer.hpp>

+
+Inheritance diagram for caffe::LogLayer< Dtype >:
+
+
+ + +caffe::NeuronLayer< Dtype > +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 LogLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual const char * type () const
 Returns the layer type.
 
- Public Member Functions inherited from caffe::NeuronLayer< Dtype >
NeuronLayer (const LayerParameter &param)
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Computes the error gradient w.r.t. the exp inputs. More...
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+Dtype base_scale_
 
+Dtype input_scale_
 
+Dtype input_shift_
 
+Dtype backward_num_scale_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::LogLayer< Dtype >

+ +

Computes $ y = log_{\gamma}(\alpha x + \beta) $, as specified by the scale $ \alpha $, shift $ \beta $, and base $ \gamma $.

+

Constructor & Destructor Documentation

+ +

§ LogLayer()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + +
caffe::LogLayer< Dtype >::LogLayer (const LayerParameter & param)
+
+inlineexplicit
+
+
Parameters
+ + +
paramprovides LogParameter log_param, with LogLayer options:
    +
  • scale (optional, default 1) the scale $ \alpha $
  • +
  • shift (optional, default 0) the shift $ \beta $
  • +
  • base (optional, default -1 for a value of $ e \approx 2.718 $) the base $ \gamma $
  • +
+
+
+
+ +
+
+

Member Function Documentation

+ +

§ Backward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void caffe::LogLayer< Dtype >::Backward_cpu (const vector< Blob< Dtype > *> & top,
const vector< bool > & propagate_down,
const vector< Blob< Dtype > *> & bottom 
)
+
+protectedvirtual
+
+ +

Computes the error gradient w.r.t. the exp inputs.

+
Parameters
+ + + + +
topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
    +
  1. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
  2. +
+
propagate_downsee Layer::Backward.
bottominput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \frac{\partial E}{\partial x} = \frac{\partial E}{\partial y} y \alpha \log_e(gamma) $ if propagate_down[0]
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::LogLayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+
Parameters
+ + + +
bottominput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the inputs $ x $
  2. +
+
topoutput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the computed outputs $ y = log_{\gamma}(\alpha x + \beta) $
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::LogLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/caffe/layers/log_layer.hpp
  • +
  • src/caffe/layers/log_layer.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1LogLayer.png b/doxygen/classcaffe_1_1LogLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..38893c21ad5f67fc781e277248e599e733b5cbe6 GIT binary patch literal 1059 zcmeAS@N?(olHy`uVBq!ia0vp^n}N84gBeK9F4tNQq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0H+i}^hEy=Vo%_1)vlfqQxLMHs{}cVK zcP6M`;C#M%wc{s^-N7BXVrDz)HJ45~=`wN2$|+|iiL6hVwxojBQ2(@+xw>ch);<5) z_NwemZ~3|PLh44tXL%ByyH>}~_`YS0WZbroX0K;#H{boOq-sa$mbRNd@yweisr+5` z{fv9e@AEv{PwsolR+*FY-(*?dle4NT7v7)w`nvFEY2oxz&93xsa^)-D8?FyOF0zkp z?~I7<&vR`JZ!fwzV}HQ?q`cJixtr!Dl#5wanl1aT)X{xjv*%g;H# z+fF9v?y+RsDtcp|;z^sW_SYlkzmuM1vZC?a@A~>!yR$Z3f7oZVPyFvRPgOJOq>krD zuQboD>yvj*33?{v&?Cn%In(Lc@npLfoHOU2xa@fT#GG2@2hv_?4Hc@!4tpj^D#V@S z5m=wX))8*Rd_;RD#=d*qW8I$Uy$5R|Zr7*naLbaOx$^K2-!r_QZru2HlP7rl{j_zCerL+|?cR8K zwzq-!`Kj+uy|MMXBL3{F(~P2PFTTlGEY|y+n4Ua0|9j_6x6P}=Ul|u`tB0r62kt)e z?!filJtsHsHGb}W^IY-%H+6=^r`Tuu+SJeUU-tdn=C{&n`djC0vzOn->l__&nJef1 zgp_%==4WrHu63St$mGKM{6B0pt(77_`3?A$|F_zBUt*sMODeWAy){$y7>~SQG?=ND zQfKq5dESJdoi?&xdd}Q5XV|w8Z!n^TvP12()JQd9?gJsP(5_3bi@PjesoyZU&20a@ z|AFggpILuhd@{d5c{1~!@b1d<2WCB7e)N3B?9z(%r`gB+^sdLE-c_0ySqi~aw$ zRqjo^`^@OhU58_2W2WAJa&yM7qTZ)FtLIstx&HZ$ zW8d^T{(E2K!C@G=_1LmU>+)xu+*Pog_xisW@gME`7!B5>aWdv*zPbKX_{`h+ZGlhT w8=0@R?D>FVdQ&MBb@01pQdfdBvi literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1LossLayer-members.html b/doxygen/classcaffe_1_1LossLayer-members.html new file mode 100644 index 00000000000..e31b2750faf --- /dev/null +++ b/doxygen/classcaffe_1_1LossLayer-members.html @@ -0,0 +1,119 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::LossLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::LossLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::LossLayer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::LossLayer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)=0caffe::Layer< Dtype >protectedpure virtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inlineprotectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::LossLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::LossLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)=0caffe::Layer< Dtype >protectedpure virtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::LossLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
LossLayer(const LayerParameter &param) (defined in caffe::LossLayer< Dtype >)caffe::LossLayer< Dtype >inlineexplicit
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::LossLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::Layer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1LossLayer.html b/doxygen/classcaffe_1_1LossLayer.html new file mode 100644 index 00000000000..1b9c0cc309e --- /dev/null +++ b/doxygen/classcaffe_1_1LossLayer.html @@ -0,0 +1,447 @@ + + + + + + + +Caffe: caffe::LossLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::LossLayer< Dtype > Class Template Reference
+
+
+ +

An interface for Layers that take two Blobs as input – usually (1) predictions and (2) ground-truth labels – and output a singleton Blob representing the loss. + More...

+ +

#include <loss_layer.hpp>

+
+Inheritance diagram for caffe::LossLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > +caffe::ContrastiveLossLayer< Dtype > +caffe::EuclideanLossLayer< Dtype > +caffe::HingeLossLayer< Dtype > +caffe::InfogainLossLayer< Dtype > +caffe::MultinomialLogisticLossLayer< Dtype > +caffe::SigmoidCrossEntropyLossLayer< Dtype > +caffe::SoftmaxWithLossLayer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

LossLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
+virtual bool AutoTopBlobs () const
 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 int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from caffe::Layer< Dtype >
+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)=0
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)=0
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::LossLayer< Dtype >

+ +

An interface for Layers that take two Blobs 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.

+

Member Function Documentation

+ +

§ AllowForceBackward()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + +
virtual bool caffe::LossLayer< Dtype >::AllowForceBackward (const int bottom_index) const
+
+inlinevirtual
+
+

We usually cannot backpropagate to the labels; ignore force_backward for these inputs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +

Reimplemented in caffe::EuclideanLossLayer< Dtype >, and caffe::ContrastiveLossLayer< Dtype >.

+ +
+
+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::LossLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +

Reimplemented in caffe::InfogainLossLayer< Dtype >, and caffe::ContrastiveLossLayer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::LossLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +

Reimplemented in caffe::SoftmaxWithLossLayer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::LossLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +

Reimplemented in caffe::SoftmaxWithLossLayer< Dtype >, caffe::InfogainLossLayer< Dtype >, caffe::SigmoidCrossEntropyLossLayer< Dtype >, and caffe::ContrastiveLossLayer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::LossLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +

Reimplemented in caffe::SoftmaxWithLossLayer< Dtype >, caffe::InfogainLossLayer< Dtype >, caffe::SigmoidCrossEntropyLossLayer< Dtype >, caffe::MultinomialLogisticLossLayer< Dtype >, and caffe::EuclideanLossLayer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/caffe/layers/loss_layer.hpp
  • +
  • src/caffe/layers/loss_layer.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1LossLayer.png b/doxygen/classcaffe_1_1LossLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..15bb9ea6f27a037e7320b78d6b4fd697d154ea80 GIT binary patch literal 4169 zcmdT{X;f257RFHl%hnBWYPi!FjNuJIF*23iz$B);*jy5O*SL)Lh8O(bG`WXZ<`OilJR9NMkq!6oM zLjOB@KT3;=P_5>zSzAYRi!_H zl;)k|P*Q1Oqi~sPofP^Yu{KnXDUJ3+O>ztA2y*~vy|W+fVqg#E88}9|IIw?+u~d*U zBQ*^x8|Rh|z^cUHjoVhlt;Z58Z(1ZKL`ocAC}E>b##pG%_==xV83(WM?Z_5LI(M^|{bS!Lu=S)Nj=e*vxfC|K6xUIj2E+c&CiX-DY)vka53x#_P5$ zSa--JhqkXyS7mrQ%U=2EVDlkOn9OlIuG{hvDQ#_KK3h{p;J}A9-5T0b$@j-sq(-y` zB{}pf5PFX+rM?Y^t?h~1EJNEiK>z=MOMKBg6;=kcwfZb;tjRyKafMkT(NWR(sEVv` zqKkrG{M@=iNX>-rYw-TdixSrYJ%C+a5S^1>ZI5{)3b z>lO~;(g?KY6vRDW8&Rfw&%Hrd6WwHLY z{NnnUy0EX>=g2CI!O)Svq$UWquB}0ztD20o%Ad2|uD1eIPmtC@r)zJoEtIJM#KHL3 zjWVn?)hEQS6yyQ;->3jYT@}U8RRH2eBQ*g2bMK11|3@7LpF=*>&wgjnpbXE^ex%=U z-d@H1VOqXXgR-FwFmo-vP1(K4C{MrPi9R+LJJJ`qP0LD)`Z_-uWN4#pbuIk@7MKO4 zA+4~*vi&5yBk+k1+_B1LcxN(EWVhXh^?Hq z#_D0rV@O!x(Ym4~SZ1a19RB=A)^>lxmxPkh?wp7yYX%SEW{V9$;BipGWqaY39pD*Z zhI2@_ft9T~Jllvrwga#2Kiv|Cw~?o4wsi)eLwAX$wu>EHFfWJDsmy}rj-R4NqcU$L zy^+Z8WtL;0J=v#wHwq;MLiv&rpeIM-4 z@NOjs&^UgXm$#aWjD*qFCiOvX{lq$+?@V=9%;CG;TB$g%U$_Q&szVTq<%#12wZkS) ziFgEt?%ON2&kd!=S0170h9E<%%|%11WWTe7?8Czl-&c}tgv%y-+ONssDRd3=oVX)n zd3gh#XKIC>S+)_SyaBXkMN3B;C>1{Up zlS<@son`Idz?Ws1EXtTwF)WGY39!iPZVeoUWP$dEa(!D;GrHJ)BGx|CiZew!5{c!S zODrbuNcDAE*o{N13F*89RBp*_yrt+5#}5{ywtHK+yHe;#1^(pBq#pgbvox;g?9Gs4 zO94G7P^doG>1XwJ)5{+4)D~tk3A(E{a|Uh}fh~k#(%bw6uG7jBDU7A3UbJx^YjVSj zA6iLa)b_nquOOP2Gn=Z3HR4OLsoMQt(nr7PIp+3;xVM~N+Mm|-xJZly!?6n-xP65ljz(iF4sqVExb+<&sGBVgaqgqHn<6EfcvA*> zmoK&+%6`B>_zmC{NMu1XL%LWx?RL zWFFjm1T#BbIWk!y5UQG+!9USb5&xc?_UKEr`HY`8b$TeI=ug?_s}_7QD3_(ea?xC+ zL8@Yo>6?Xape~Wno++q^?;^oZ(=}*VEP+nW(GAG5m(n$$U+R^fD&<^vZhv~eXd;oR_Q4xc-fE!_k{Fd?b+P<^0X`vJ|UVZ`0-u-!t=@{lOxr$KCHfs zCT7z-Bl83^tp%P!f+;Ve&hqYROa6EQmf6u>SWZcpL0sdLwarJ_SdU&WCdy*C2Ki=m zTGIa@uCl(Z4 + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::MSRAFiller< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::MSRAFiller< Dtype >, including all inherited members.

+ + + + + + +
Fill(Blob< Dtype > *blob) (defined in caffe::MSRAFiller< Dtype >)caffe::MSRAFiller< Dtype >inlinevirtual
Filler(const FillerParameter &param) (defined in caffe::Filler< Dtype >)caffe::Filler< Dtype >inlineexplicit
filler_param_ (defined in caffe::Filler< Dtype >)caffe::Filler< Dtype >protected
MSRAFiller(const FillerParameter &param) (defined in caffe::MSRAFiller< Dtype >)caffe::MSRAFiller< Dtype >inlineexplicit
~Filler() (defined in caffe::Filler< Dtype >)caffe::Filler< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1MSRAFiller.html b/doxygen/classcaffe_1_1MSRAFiller.html new file mode 100644 index 00000000000..07c0c740588 --- /dev/null +++ b/doxygen/classcaffe_1_1MSRAFiller.html @@ -0,0 +1,126 @@ + + + + + + + +Caffe: caffe::MSRAFiller< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::MSRAFiller< Dtype > Class Template Reference
+
+
+ +

Fills a Blob with values $ x \sim N(0, \sigma^2) $ where $ \sigma^2 $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average. + More...

+ +

#include <filler.hpp>

+
+Inheritance diagram for caffe::MSRAFiller< Dtype >:
+
+
+ + +caffe::Filler< Dtype > + +
+ + + + + + + + + +

+Public Member Functions

MSRAFiller (const FillerParameter &param)
 
+virtual void Fill (Blob< Dtype > *blob)
 
- Public Member Functions inherited from caffe::Filler< Dtype >
Filler (const FillerParameter &param)
 
+ + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::Filler< Dtype >
+FillerParameter filler_param_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::MSRAFiller< Dtype >

+ +

Fills a Blob with values $ x \sim N(0, \sigma^2) $ where $ \sigma^2 $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average.

+

A Filler based on the paper [He, Zhang, Ren and Sun 2015]: Specifically accounts for ReLU nonlinearities.

+

Aside: for another perspective on the scaling factor, see the derivation of [Saxe, McClelland, and Ganguli 2013 (v3)].

+

It fills the incoming matrix by randomly sampling Gaussian data with std = sqrt(2 / n) where n is the fan_in, fan_out, or their average, depending on the variance_norm option. You should make sure the input blob has shape (num, a, b, c) where a * b * c = fan_in and num * b * c = fan_out. Note that this is currently not the case for inner product layers.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classcaffe_1_1MSRAFiller.png b/doxygen/classcaffe_1_1MSRAFiller.png new file mode 100644 index 0000000000000000000000000000000000000000..e3665d8761bf2666247637dd71f4fb15b9d324e4 GIT binary patch literal 741 zcmeAS@N?(olHy`uVBq!ia0vp^D}gwGgBeJMPFs2gNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~m3X>1hEy=Vo%^=$wE_=oyYR~Q|4(es z<+#D=d1LDOs4Z)X#2gRI`_cR_HF8=i$3~A!46~L@5?Sr3<+<^dx^L#x`0Bs5$KOs| zGVRm8)3%dJ7Uo@=-rX#{xxl$9%W2ZC64za=iM?s3KJR(uk?rIC!se1yv~S9T>qjak zF7b|?Al6-G5G?GveFM|mRKLx4a)yMZEN!ule5$A zWxbOKZqA$g&Lg*I&0g(m)tB79oqv5L^|#8hogKY*`Oe+H{*ra&&4;hI?7QP-xxz2^ z{dI#JbBEoFv)+3f`S0~#J$J{w=}Z1Ej{nP6)3ilotxD-@<|WI5Rab_~pWLVNH)3+g zq$E>MRn0K}OF*v*vIwkWKOi90_T{4lYpKK~^%n{&9#1%TkGujW!k z7bXdZ$s!72Ae_GBd|37A_iG>Tmi&A)@%}Tj+OyZ#7c4E>WFDlxB%kYm?M%()kSTxi z-+yoWa)sByd1}e;Bc`*?f7Q)czU12dd0UQcX*s8y8ohe;+XhF50xh;vdDb&tX04oa zV?}OCPD>2q4d!>!f9FM+s@3EM&EK}S*nL*-j;zhx?w6V$E3f>%H`#W=w6=o2)sge7 z4hL|Q8=Af_TWK9M+u`-)W#=cGZF--aJFCiGZvUfzi*IL4%Q3yRLH6=xtFPjR`aOF^ z#QnUB7k^gXlRGe27?n)jyUtKEU;S3XLAkX`cZ6m!NaZI6C& v)dPO + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::MVNLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::MVNLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::MVNLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::MVNLayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
eps_ (defined in caffe::MVNLayer< Dtype >)caffe::MVNLayer< Dtype >protected
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::MVNLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::MVNLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::MVNLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::MVNLayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlinevirtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
mean_ (defined in caffe::MVNLayer< Dtype >)caffe::MVNLayer< Dtype >protected
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MVNLayer(const LayerParameter &param) (defined in caffe::MVNLayer< Dtype >)caffe::MVNLayer< Dtype >inlineexplicit
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::MVNLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
sum_multiplier_caffe::MVNLayer< Dtype >protected
temp_ (defined in caffe::MVNLayer< Dtype >)caffe::MVNLayer< Dtype >protected
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::MVNLayer< Dtype >inlinevirtual
variance_ (defined in caffe::MVNLayer< Dtype >)caffe::MVNLayer< Dtype >protected
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1MVNLayer.html b/doxygen/classcaffe_1_1MVNLayer.html new file mode 100644 index 00000000000..282728d5837 --- /dev/null +++ b/doxygen/classcaffe_1_1MVNLayer.html @@ -0,0 +1,370 @@ + + + + + + + +Caffe: caffe::MVNLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::MVNLayer< Dtype > Class Template Reference
+
+
+ +

Normalizes the input to have 0-mean and/or unit (1) variance. + More...

+ +

#include <mvn_layer.hpp>

+
+Inheritance diagram for caffe::MVNLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

MVNLayer (const LayerParameter &param)
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+Blob< Dtype > mean_
 
+Blob< Dtype > variance_
 
+Blob< Dtype > temp_
 
+Blob< Dtype > sum_multiplier_
 sum_multiplier is used to carry out sum using BLAS
 
+Dtype eps_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::MVNLayer< Dtype >

+ +

Normalizes the input to have 0-mean and/or unit (1) variance.

+

TODO(dox): thorough documentation for Forward, Backward, and proto params.

+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::MVNLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::MVNLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::MVNLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/caffe/layers/mvn_layer.hpp
  • +
  • src/caffe/layers/mvn_layer.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1MVNLayer.png b/doxygen/classcaffe_1_1MVNLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..e708a7a2b92f99a22fc22ab8e8033da46f6cf809 GIT binary patch literal 716 zcmeAS@N?(olHy`uVBq!ia0vp^%YZn5gBeIJnfuQXNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~MSHq9hEy=Vo%^=$wE_=oyKv_H{}c10 zoi=!S9G)8PyLC;KnX2ix2mE!Lbxs%6Z}hly*VIr|(@Qvb(xMVx4wC z+qv&e^tzbak*DgDUxnR^nKZ}G;PrL3&qt0#z72YB__we4g87V{pM70d&!5}5HN$<~ z!7WQS+U;KOe1^NFm09HOi=sOx`zA+KKmWh^=G(L8Gmf45o|Y_iVRqRi-+5WCzO}DE z-13~BV)ymlnte=av6I+L3zYlfza-9BJZ1htnPqV=D&rjdAi~cTc>Rsm|efZ5W28)2BI?qp6*6gWYdwsj^ zGco1&<}+SzTU5kzKG-i(@5uE!Vfh1@#R-e9wnwJv6g`}w9?Vq0UE_-jQ zoqRiKR>tnX=UTgW9sgo2bwM^QFE4n@tGy~$t`#!hf4lwm?aCa3w=;7cg4@|XYw#-1 z*qvseTs+4&e%`Wneo#1y9cmt%`KVS6}3g!CtBBdPuV5L&nv&D z@s{LXVpKAH@a>T6|7b*TGBTMOGA=R!;xBtbgS}q9`^7GhsGQVQYhMXWdJLYfelF{r G5}E*?oKL&} literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1MemoryDataLayer-members.html b/doxygen/classcaffe_1_1MemoryDataLayer-members.html new file mode 100644 index 00000000000..948f1806016 --- /dev/null +++ b/doxygen/classcaffe_1_1MemoryDataLayer-members.html @@ -0,0 +1,143 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::MemoryDataLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::MemoryDataLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddDatumVector(const vector< Datum > &datum_vector) (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >virtual
added_data_ (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >protected
added_label_ (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >protected
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::BaseDataLayer< Dtype >inlinevirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::BaseDataLayer< Dtype >inlinevirtual
BaseDataLayer(const LayerParameter &param) (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >explicit
batch_size() (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >inline
batch_size_ (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >protected
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
channels() (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >inline
channels_ (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
data_ (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >protected
data_transformer_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected
DataLayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top) (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >virtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::MemoryDataLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::MemoryDataLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::MemoryDataLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
has_new_data_ (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >protected
height() (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >inline
height_ (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >protected
IsShared() constcaffe::Layer< Dtype >inline
labels_ (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >protected
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BaseDataLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MemoryDataLayer(const LayerParameter &param) (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >inlineexplicit
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
n_ (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >protected
output_labels_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
pos_ (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >protected
Reset(Dtype *data, Dtype *label, int n) (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BaseDataLayer< Dtype >inlinevirtual
set_batch_size(int new_size) (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::BaseDataLayer< Dtype >inlinevirtual
size_ (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >protected
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
transform_param_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected
type() constcaffe::MemoryDataLayer< Dtype >inlinevirtual
width() (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >inline
width_ (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >protected
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1MemoryDataLayer.html b/doxygen/classcaffe_1_1MemoryDataLayer.html new file mode 100644 index 00000000000..6ad0189ab0a --- /dev/null +++ b/doxygen/classcaffe_1_1MemoryDataLayer.html @@ -0,0 +1,379 @@ + + + + + + + +Caffe: caffe::MemoryDataLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::MemoryDataLayer< Dtype > Class Template Reference
+
+
+ +

Provides data to the Net from memory. + More...

+ +

#include <memory_data_layer.hpp>

+
+Inheritance diagram for caffe::MemoryDataLayer< Dtype >:
+
+
+ + +caffe::BaseDataLayer< Dtype > +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

MemoryDataLayer (const LayerParameter &param)
 
+virtual void DataLayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
+virtual void AddDatumVector (const vector< Datum > &datum_vector)
 
+void Reset (Dtype *data, Dtype *label, int n)
 
+void set_batch_size (int new_size)
 
+int batch_size ()
 
+int channels ()
 
+int height ()
 
+int width ()
 
- Public Member Functions inherited from caffe::BaseDataLayer< Dtype >
BaseDataLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual bool ShareInParallel () const
 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 void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+int batch_size_
 
+int channels_
 
+int height_
 
+int width_
 
+int size_
 
+Dtype * data_
 
+Dtype * labels_
 
+int n_
 
+size_t pos_
 
+Blob< Dtype > added_data_
 
+Blob< Dtype > added_label_
 
+bool has_new_data_
 
- Protected Attributes inherited from caffe::BaseDataLayer< Dtype >
+TransformationParameter transform_param_
 
+shared_ptr< DataTransformer< Dtype > > data_transformer_
 
+bool output_labels_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::MemoryDataLayer< Dtype >

+ +

Provides data to the Net from memory.

+

TODO(dox): thorough documentation for Forward and proto params.

+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::MemoryDataLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::MemoryDataLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1MemoryDataLayer.png b/doxygen/classcaffe_1_1MemoryDataLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..86e71c4200ad9c9be235cf64136ea783e3083420 GIT binary patch literal 1170 zcmeAS@N?(olHy`uVBq!ia0vp^7lF8ggBeKrrT%*aq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IYL6g^!WLn;{G&V4xPlLC*ce|~z+fA@bS znchy(Q|ngGPJHwxwpC4$-Ral#%6ZQh9?|h+*6dW#+&0N$Qqt@Cj%6!Pob|l4dzRe% zJbllqMgJA5mTdH1+W*3&Mj zs_T}uS^Liv%(U4aBVhLC>wd#h<$OKQ^;dmE>djpIedb(!=U_YW`;G%8ohxE8f`dv= z&h6ZqVeRRh!hh%3o8(Ijuya@Aqxln6Y9l>WJU32t znIsZjz6j{ii7X#P?=rMqDsb6;JHz9!;N3e9T7&)ehEcKB3Dzu!g^P25pL%)cdHu1n`MMWB zeR&vr_tcS1f0A;X^Ww^m`kEfvXW(TOoibUg;j-9)CxQFVY;f5mvQ+Q1lc}!wBF>ld z=B<(!?7azE#fmuEip$C5oH2^{t3peY5q|8wLcv zE2sG1U3u8}Yv}fKx%=+~l`Y+-Z0b@raog7%)>j>UWp6r8 + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::MultinomialLogisticLossLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::MultinomialLogisticLossLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::LossLayer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::LossLayer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::MultinomialLogisticLossLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inlineprotectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::LossLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::LossLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::MultinomialLogisticLossLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::LossLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
LossLayer(const LayerParameter &param) (defined in caffe::LossLayer< Dtype >)caffe::LossLayer< Dtype >inlineexplicit
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MultinomialLogisticLossLayer(const LayerParameter &param) (defined in caffe::MultinomialLogisticLossLayer< Dtype >)caffe::MultinomialLogisticLossLayer< Dtype >inlineexplicit
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::MultinomialLogisticLossLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::MultinomialLogisticLossLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1MultinomialLogisticLossLayer.html b/doxygen/classcaffe_1_1MultinomialLogisticLossLayer.html new file mode 100644 index 00000000000..dc08724950a --- /dev/null +++ b/doxygen/classcaffe_1_1MultinomialLogisticLossLayer.html @@ -0,0 +1,427 @@ + + + + + + + +Caffe: caffe::MultinomialLogisticLossLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::MultinomialLogisticLossLayer< Dtype > Class Template Reference
+
+
+ +

Computes the multinomial logistic loss for a one-of-many classification task, directly taking a predicted probability distribution as input. + More...

+ +

#include <multinomial_logistic_loss_layer.hpp>

+
+Inheritance diagram for caffe::MultinomialLogisticLossLayer< Dtype >:
+
+
+ + +caffe::LossLayer< Dtype > +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

MultinomialLogisticLossLayer (const LayerParameter &param)
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
- Public Member Functions inherited from caffe::LossLayer< Dtype >
LossLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
+virtual bool AutoTopBlobs () const
 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 int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Computes the multinomial logistic loss for a one-of-many classification task, directly taking a predicted probability distribution as input. More...
 
virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Computes the multinomial logistic loss error gradient w.r.t. the predictions. More...
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::MultinomialLogisticLossLayer< Dtype >

+ +

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.

+
Parameters
+ + + +
bottominput Blob vector (length 2)
    +
  1. $ (N \times C \times H \times W) $ the predictions $ \hat{p} $, a Blob with values in $ [0, 1] $ indicating the predicted probability of each of the $ K = CHW $ classes. Each prediction vector $ \hat{p}_n $ should sum to 1 as in a probability distribution: $ \forall n \sum\limits_{k=1}^K \hat{p}_{nk} = 1 $.
  2. +
  3. $ (N \times 1 \times 1 \times 1) $ the labels $ l $, an integer-valued Blob with values $ l_n \in [0, 1, 2, ..., K - 1] $ indicating the correct class label among the $ K $ classes
  4. +
+
topoutput Blob vector (length 1)
    +
  1. $ (1 \times 1 \times 1 \times 1) $ the computed multinomial logistic loss: $ E = \frac{-1}{N} \sum\limits_{n=1}^N \log(\hat{p}_{n,l_n}) $
  2. +
+
+
+
+

Member Function Documentation

+ +

§ Backward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void caffe::MultinomialLogisticLossLayer< Dtype >::Backward_cpu (const vector< Blob< Dtype > *> & top,
const vector< bool > & propagate_down,
const vector< Blob< Dtype > *> & bottom 
)
+
+protectedvirtual
+
+ +

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.

+
Parameters
+ + + + +
topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
    +
  1. $ (1 \times 1 \times 1 \times 1) $ This Blob's diff will simply contain the loss_weight* $ \lambda $, as $ \lambda $ is the coefficient of this layer's output $\ell_i$ in the overall Net loss $ E = \lambda_i \ell_i + \mbox{other loss terms}$; hence $ \frac{\partial E}{\partial \ell_i} = \lambda_i $. (*Assuming that this top Blob is not used as a bottom (input) by any other layer of the Net.)
  2. +
+
propagate_downsee Layer::Backward. propagate_down[1] must be false as we can't compute gradients with respect to the labels.
bottominput Blob vector (length 2)
    +
  1. $ (N \times C \times H \times W) $ the predictions $ \hat{p} $; Backward computes diff $ \frac{\partial E}{\partial \hat{p}} $
  2. +
  3. $ (N \times 1 \times 1 \times 1) $ the labels – ignored as we can't compute their error gradients
  4. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::MultinomialLogisticLossLayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+ +

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.

+
Parameters
+ + + +
bottominput Blob vector (length 2)
    +
  1. $ (N \times C \times H \times W) $ the predictions $ \hat{p} $, a Blob with values in $ [0, 1] $ indicating the predicted probability of each of the $ K = CHW $ classes. Each prediction vector $ \hat{p}_n $ should sum to 1 as in a probability distribution: $ \forall n \sum\limits_{k=1}^K \hat{p}_{nk} = 1 $.
  2. +
  3. $ (N \times 1 \times 1 \times 1) $ the labels $ l $, an integer-valued Blob with values $ l_n \in [0, 1, 2, ..., K - 1] $ indicating the correct class label among the $ K $ classes
  4. +
+
topoutput Blob vector (length 1)
    +
  1. $ (1 \times 1 \times 1 \times 1) $ the computed multinomial logistic loss: $ E = \frac{-1}{N} \sum\limits_{n=1}^N \log(\hat{p}_{n,l_n}) $
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::MultinomialLogisticLossLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Reimplemented from caffe::LossLayer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1MultinomialLogisticLossLayer.png b/doxygen/classcaffe_1_1MultinomialLogisticLossLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..a91cc09539869d0f01292b56213025bba8f37421 GIT binary patch literal 1261 zcmeAS@N?(olHy`uVBq!ia0y~yVB`g|J2;qu4r{cN1Xi@Ld;~&*UqMz2KNdH@uv#;$!$f<{uzG$l7eo-H87T2<5g|AYo^v}-A zwSO9VGe2@)UQk{xETnvG^}ADUK3i@)n`w7$dtmKHt0ikiGSl8XapQO^{O;4vjl1(| z5|v$^mL`k-dcQ`x(4RAYuYa?F<}WkB?;@TLW1bz}#Q4{{x=Tg&$$=SOiIYmy_Gdj_ z(PN+cctg+rxzdwLG;z&!LLYcEA3^5JT4I6nI&b&>N-Nv}#q26Ju z9OeZF^ne6V9eKpMjAU$~YH{_LfzJ{vPpzB#l|8i~A!~JLrkR}V-I8xQ(!2F1EZO|y z!m&RGm#vYA+Ie-Eq5j0vruQRf1S{}YYx(MDEbMp6h@52i)L7bk|092mZKoEk+co)C z#^LxWXRiy)^0JJXwC~_^vtRe8_KFCx&0fE{{qpD8BB#wh38(+CIDTx)k=B&=b5EI- zrFluDR+sISTc2}8q$mIPh2xrLtKRQQR_@oXJZ1S`$=oR;|Ctgftlx0ljx_%yFn#t- zKfb-Ub_sr;@*%f+Q~Q7F5QA$qV3?8X2t_PGZUq^F$N@nh>huw_wBJex$)=spZQjdT-PQt%v@^3 zy63Xe0db$(M;e!x<=AMMo6nl7@Ny~Fg8A`o%XX*Vydlfw;JDo|d(NguasPF;-`d*y ztxI#&-T-aq;NM$N5j_wW7Kwb;RGI-Aq<#{rK@X3X|U zeEX(2O-nb~cj8aizY8m_E!^Fk^3k#~U3zEs$4=jM?ca*S+?{fAlke^>y&un$a`*Ya zQ%}_5!teUno)xZ4R<_^xY2!viT^mK#>et0pGMhJ=?D!vf`j4mZ!daR>MIYXNf3xGH z+;P!OS^tZ3rp?d4Sz#F5b!0{ElMPQapa1E;!?AF-=-zX^cT1D+wq{+E-~RFEu8HkC z?wlzrdQtt_?M`sh#~sQ~Lig}zrZd0Hyc3jl?s=Af=FxqV*E&^4>=zD7zZcw4p!a#9 z|0eVAA`Sm%3&+(i=nRq&I2XTpW8_o@zT%K$p}B9KXdU=1Gp#UEnj!o!JeNGmO9sY) b&++;l;koCoe(cNxmQ4(vu6{1-oD!M<)vRm? literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1NesterovSolver-members.html b/doxygen/classcaffe_1_1NesterovSolver-members.html new file mode 100644 index 00000000000..3e3d3df7c19 --- /dev/null +++ b/doxygen/classcaffe_1_1NesterovSolver-members.html @@ -0,0 +1,142 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::NesterovSolver< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::NesterovSolver< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
action_request_function_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
add_callback(Callback *value) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
ApplyUpdate() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
callbacks() const (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
callbacks_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
CheckSnapshotWritePermissions() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
ClipGradients() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
ComputeUpdateValue(int param_id, Dtype rate) (defined in caffe::NesterovSolver< Dtype >)caffe::NesterovSolver< Dtype >protectedvirtual
current_step_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
DISABLE_COPY_AND_ASSIGN(NesterovSolver) (defined in caffe::NesterovSolver< Dtype >)caffe::NesterovSolver< Dtype >protected
DISABLE_COPY_AND_ASSIGN(SGDSolver) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
DISABLE_COPY_AND_ASSIGN(Solver) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
DisplayOutputBlobs(const int net_id) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
GetLearningRate() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
GetRequestedAction() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
history() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >inline
history_ (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
Init(const SolverParameter &param) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
InitTestNets() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
InitTrainNet() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
iter() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
iter_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
losses_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
NesterovSolver(const SolverParameter &param) (defined in caffe::NesterovSolver< Dtype >)caffe::NesterovSolver< Dtype >inlineexplicit
NesterovSolver(const string &param_file) (defined in caffe::NesterovSolver< Dtype >)caffe::NesterovSolver< Dtype >inlineexplicit
net() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
net_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Normalize(int param_id) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
param() const (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
param_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
PreSolve() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
Regularize(int param_id) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
requested_early_exit_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Restore(const char *resume_file) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
RestoreSolverStateFromBinaryProto(const string &state_file) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
RestoreSolverStateFromHDF5(const string &state_file) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
root_solver_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
SetActionFunction(ActionCallback func) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
SGDSolver(const SolverParameter &param) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >inlineexplicit
SGDSolver(const string &param_file) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >inlineexplicit
smoothed_loss_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Snapshot() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
SnapshotFilename(const string extension) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
SnapshotSolverState(const string &model_filename) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
SnapshotSolverStateToBinaryProto(const string &model_filename) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
SnapshotSolverStateToHDF5(const string &model_filename) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
SnapshotToBinaryProto() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
SnapshotToHDF5() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Solve(const char *resume_file=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >virtual
Solve(const string resume_file) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
Solver(const SolverParameter &param, const Solver *root_solver=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >explicit
Solver(const string &param_file, const Solver *root_solver=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >explicit
Step(int iters) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
temp_ (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
Test(const int test_net_id=0) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
test_nets() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
test_nets_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
TestAll() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
type() constcaffe::NesterovSolver< Dtype >inlinevirtual
update_ (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
UpdateSmoothedLoss(Dtype loss, int start_iter, int average_loss) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
~Solver() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1NesterovSolver.html b/doxygen/classcaffe_1_1NesterovSolver.html new file mode 100644 index 00000000000..3cf9f680e6d --- /dev/null +++ b/doxygen/classcaffe_1_1NesterovSolver.html @@ -0,0 +1,295 @@ + + + + + + + +Caffe: caffe::NesterovSolver< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::NesterovSolver< Dtype > Class Template Reference
+
+
+
+Inheritance diagram for caffe::NesterovSolver< Dtype >:
+
+
+ + +caffe::SGDSolver< Dtype > +caffe::Solver< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

NesterovSolver (const SolverParameter &param)
 
NesterovSolver (const string &param_file)
 
+virtual const char * type () const
 Returns the solver type.
 
- Public Member Functions inherited from caffe::SGDSolver< Dtype >
SGDSolver (const SolverParameter &param)
 
SGDSolver (const string &param_file)
 
+const vector< shared_ptr< Blob< Dtype > > > & history ()
 
- Public Member Functions inherited from caffe::Solver< Dtype >
Solver (const SolverParameter &param, const Solver *root_solver=NULL)
 
Solver (const string &param_file, const Solver *root_solver=NULL)
 
+void Init (const SolverParameter &param)
 
+void InitTrainNet ()
 
+void InitTestNets ()
 
+void SetActionFunction (ActionCallback func)
 
+SolverAction::Enum GetRequestedAction ()
 
+virtual void Solve (const char *resume_file=NULL)
 
+void Solve (const string resume_file)
 
+void Step (int iters)
 
+void Restore (const char *resume_file)
 
+void Snapshot ()
 
+const SolverParameter & param () const
 
+shared_ptr< Net< Dtype > > net ()
 
+const vector< shared_ptr< Net< Dtype > > > & test_nets ()
 
+int iter ()
 
+const vector< Callback * > & callbacks () const
 
+void add_callback (Callback *value)
 
+void CheckSnapshotWritePermissions ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void ComputeUpdateValue (int param_id, Dtype rate)
 
DISABLE_COPY_AND_ASSIGN (NesterovSolver)
 
- Protected Member Functions inherited from caffe::SGDSolver< Dtype >
+void PreSolve ()
 
+Dtype GetLearningRate ()
 
+virtual void ApplyUpdate ()
 
+virtual void Normalize (int param_id)
 
+virtual void Regularize (int param_id)
 
+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)
 
DISABLE_COPY_AND_ASSIGN (SGDSolver)
 
- Protected Member Functions inherited from caffe::Solver< Dtype >
+string SnapshotFilename (const string extension)
 
+string SnapshotToBinaryProto ()
 
+string SnapshotToHDF5 ()
 
+void TestAll ()
 
+void Test (const int test_net_id=0)
 
+void DisplayOutputBlobs (const int net_id)
 
+void UpdateSmoothedLoss (Dtype loss, int start_iter, int average_loss)
 
DISABLE_COPY_AND_ASSIGN (Solver)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::SGDSolver< Dtype >
+vector< shared_ptr< Blob< Dtype > > > history_
 
+vector< shared_ptr< Blob< Dtype > > > update_
 
+vector< shared_ptr< Blob< Dtype > > > temp_
 
- Protected Attributes inherited from caffe::Solver< Dtype >
+SolverParameter param_
 
+int iter_
 
+int current_step_
 
+shared_ptr< Net< Dtype > > net_
 
+vector< shared_ptr< Net< Dtype > > > test_nets_
 
+vector< Callback * > callbacks_
 
+vector< Dtype > losses_
 
+Dtype smoothed_loss_
 
+const Solver *const root_solver_
 
+ActionCallback action_request_function_
 
+bool requested_early_exit_
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1NesterovSolver.png b/doxygen/classcaffe_1_1NesterovSolver.png new file mode 100644 index 0000000000000000000000000000000000000000..28ee7e1d91af544879ece5a5f5b337a6d6ad05a0 GIT binary patch literal 1149 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|SPgBeJ+af+A#DTx4|5ZC|z{{xvX-h3_XKQsZz z0^gW-E1~I!ezr`LJ9fx4J^Lt9l|?*6sj{}w;P7a<+b`C9S^L^wTv zh3qc?N}ShX@H`d5=n=H+9m8jv^UT~2R_|i$S#yywZ~H+`H})OB?adB;U?Q;>vj6G`(87&&-S=v{g!!+Vq}v2 z-dkpyUPr&KbiMygXY#IM-3#|Fmp&_AT-sLXFsW}V_XG31-`k%(I?LD~Yxr#1;@C61 zzp`FM-HVx2%f|=~(TmF2mA_5|Dy*@uW~e(Rc}VlXq}XHUH?)1dE$>ls=v=?5B16QF z4UgpxNgjxMlJqQ>@l6MNLGX9~12b-w{5s7k^X!1%%ZzZ1X{xv7uYa(-z<#!={v2a; ztIwC3NW;|o^5xpEbw#7H-c0-bPuAeu|L|57P4D@2m+E*GMAAL2uJ<#}_@wA5{-rqF zW0GAUJRsO-Jg=0CV2HoUn~>7WSFoGc&%o-y-Txao+t^oVu}oNvGgPq!ditzonNpEH z43A-vV8yf}{d@4eZU2wOHQ3s|KH_>iOnCjwc}zA|=FGpf=f4w4i(#<1Bb(qZo1hw> zRR6wyTP}lm^yS^NwtY+fV45E|`%cwkp@WydPPxwXe@>zeb3qpOkFUM_>z{23GRZoB zdgWWDzxOO}TiiRe#z$R^77RL`DSW%u z?<>*U{-kvOHHn?omwA&Nel^T|l;_5<;ln<;FPpzIR5RXUYB{{=`FqA|bM7$hSaR2% zadwH}>hJy!4A>8)wOc-T*ZOy(-wvnE@7^`m2&{YBu-3_}YFX8cnm3^ + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::Net< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::Net< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AppendBottom(const NetParameter &param, const int layer_id, const int bottom_id, set< string > *available_blobs, map< string, int > *blob_name_to_idx)caffe::Net< Dtype >protected
AppendParam(const NetParameter &param, const int layer_id, const int param_id)caffe::Net< Dtype >protected
AppendTop(const NetParameter &param, const int layer_id, const int top_id, set< string > *available_blobs, map< string, int > *blob_name_to_idx)caffe::Net< Dtype >protected
Backward()caffe::Net< Dtype >
BackwardDebugInfo(const int layer_id)caffe::Net< Dtype >protected
BackwardFrom(int start) (defined in caffe::Net< Dtype >)caffe::Net< Dtype >
BackwardFromTo(int start, int end) (defined in caffe::Net< Dtype >)caffe::Net< Dtype >
BackwardTo(int end) (defined in caffe::Net< Dtype >)caffe::Net< Dtype >
blob_by_name(const string &blob_name) const (defined in caffe::Net< Dtype >)caffe::Net< Dtype >
blob_loss_weights() const (defined in caffe::Net< Dtype >)caffe::Net< Dtype >inline
blob_loss_weights_caffe::Net< Dtype >protected
blob_names() constcaffe::Net< Dtype >inline
blob_names_ (defined in caffe::Net< Dtype >)caffe::Net< Dtype >protected
blob_names_index_ (defined in caffe::Net< Dtype >)caffe::Net< Dtype >protected
blob_need_backward_ (defined in caffe::Net< Dtype >)caffe::Net< Dtype >protected
blobs() constcaffe::Net< Dtype >inline
blobs_caffe::Net< Dtype >protected
bottom_id_vecs_ (defined in caffe::Net< Dtype >)caffe::Net< Dtype >protected
bottom_ids(int i) constcaffe::Net< Dtype >inline
bottom_need_backward() const (defined in caffe::Net< Dtype >)caffe::Net< Dtype >inline
bottom_need_backward_ (defined in caffe::Net< Dtype >)caffe::Net< Dtype >protected
bottom_vecs() constcaffe::Net< Dtype >inline
bottom_vecs_caffe::Net< Dtype >protected
ClearParamDiffs()caffe::Net< Dtype >
CopyTrainedLayersFrom(const NetParameter &param)caffe::Net< Dtype >
CopyTrainedLayersFrom(const string trained_filename) (defined in caffe::Net< Dtype >)caffe::Net< Dtype >
CopyTrainedLayersFromBinaryProto(const string trained_filename) (defined in caffe::Net< Dtype >)caffe::Net< Dtype >
CopyTrainedLayersFromHDF5(const string trained_filename) (defined in caffe::Net< Dtype >)caffe::Net< Dtype >
debug_info_caffe::Net< Dtype >protected
DISABLE_COPY_AND_ASSIGN(Net) (defined in caffe::Net< Dtype >)caffe::Net< Dtype >protected
FilterNet(const NetParameter &param, NetParameter *param_filtered)caffe::Net< Dtype >static
Forward(Dtype *loss=NULL)caffe::Net< Dtype >
Forward(const vector< Blob< Dtype > * > &bottom, Dtype *loss=NULL)caffe::Net< Dtype >
ForwardBackward() (defined in caffe::Net< Dtype >)caffe::Net< Dtype >inline
ForwardDebugInfo(const int layer_id)caffe::Net< Dtype >protected
ForwardFrom(int start) (defined in caffe::Net< Dtype >)caffe::Net< Dtype >
ForwardFromTo(int start, int end)caffe::Net< Dtype >
ForwardPrefilled(Dtype *loss=NULL)caffe::Net< Dtype >inline
ForwardTo(int end) (defined in caffe::Net< Dtype >)caffe::Net< Dtype >
has_blob(const string &blob_name) const (defined in caffe::Net< Dtype >)caffe::Net< Dtype >
has_layer(const string &layer_name) const (defined in caffe::Net< Dtype >)caffe::Net< Dtype >
has_params_decay() const (defined in caffe::Net< Dtype >)caffe::Net< Dtype >inline
has_params_decay_ (defined in caffe::Net< Dtype >)caffe::Net< Dtype >protected
has_params_lr() const (defined in caffe::Net< Dtype >)caffe::Net< Dtype >inline
has_params_lr_ (defined in caffe::Net< Dtype >)caffe::Net< Dtype >protected
Init(const NetParameter &param)caffe::Net< Dtype >
input_blob_indices() const (defined in caffe::Net< Dtype >)caffe::Net< Dtype >inline
input_blobs() const (defined in caffe::Net< Dtype >)caffe::Net< Dtype >inline
layer_by_name(const string &layer_name) const (defined in caffe::Net< Dtype >)caffe::Net< Dtype >
layer_names() constcaffe::Net< Dtype >inline
layer_names_ (defined in caffe::Net< Dtype >)caffe::Net< Dtype >protected
layer_names_index_ (defined in caffe::Net< Dtype >)caffe::Net< Dtype >protected
layer_need_backward() const (defined in caffe::Net< Dtype >)caffe::Net< Dtype >inline
layer_need_backward_ (defined in caffe::Net< Dtype >)caffe::Net< Dtype >protected
layers() constcaffe::Net< Dtype >inline
layers_caffe::Net< Dtype >protected
learnable_param_ids_caffe::Net< Dtype >protected
learnable_params() const (defined in caffe::Net< Dtype >)caffe::Net< Dtype >inline
learnable_params_ (defined in caffe::Net< Dtype >)caffe::Net< Dtype >protected
memory_used_caffe::Net< Dtype >protected
name() constcaffe::Net< Dtype >inline
name_caffe::Net< Dtype >protected
Net(const NetParameter &param, const Net *root_net=NULL) (defined in caffe::Net< Dtype >)caffe::Net< Dtype >explicit
Net(const string &param_file, Phase phase, const int level=0, const vector< string > *stages=NULL, const Net *root_net=NULL) (defined in caffe::Net< Dtype >)caffe::Net< Dtype >explicit
net_input_blob_indices_caffe::Net< Dtype >protected
net_input_blobs_ (defined in caffe::Net< Dtype >)caffe::Net< Dtype >protected
net_output_blob_indices_ (defined in caffe::Net< Dtype >)caffe::Net< Dtype >protected
net_output_blobs_ (defined in caffe::Net< Dtype >)caffe::Net< Dtype >protected
num_inputs() constcaffe::Net< Dtype >inline
num_outputs() const (defined in caffe::Net< Dtype >)caffe::Net< Dtype >inline
output_blob_indices() const (defined in caffe::Net< Dtype >)caffe::Net< Dtype >inline
output_blobs() const (defined in caffe::Net< Dtype >)caffe::Net< Dtype >inline
param_display_names() const (defined in caffe::Net< Dtype >)caffe::Net< Dtype >inline
param_display_names_ (defined in caffe::Net< Dtype >)caffe::Net< Dtype >protected
param_id_vecs_ (defined in caffe::Net< Dtype >)caffe::Net< Dtype >protected
param_layer_indices_ (defined in caffe::Net< Dtype >)caffe::Net< Dtype >protected
param_names_index() const (defined in caffe::Net< Dtype >)caffe::Net< Dtype >inline
param_names_index_ (defined in caffe::Net< Dtype >)caffe::Net< Dtype >protected
param_owners() const (defined in caffe::Net< Dtype >)caffe::Net< Dtype >inline
param_owners_ (defined in caffe::Net< Dtype >)caffe::Net< Dtype >protected
params() constcaffe::Net< Dtype >inline
params_caffe::Net< Dtype >protected
params_lr() constcaffe::Net< Dtype >inline
params_lr_caffe::Net< Dtype >protected
params_weight_decay() constcaffe::Net< Dtype >inline
params_weight_decay_caffe::Net< Dtype >protected
phase() constcaffe::Net< Dtype >inline
phase_caffe::Net< Dtype >protected
Reshape()caffe::Net< Dtype >
root_net_caffe::Net< Dtype >protected
set_debug_info(const bool value) (defined in caffe::Net< Dtype >)caffe::Net< Dtype >inline
ShareTrainedLayersWith(const Net *other)caffe::Net< Dtype >
ShareWeights()caffe::Net< Dtype >
StateMeetsRule(const NetState &state, const NetStateRule &rule, const string &layer_name)caffe::Net< Dtype >static
ToHDF5(const string &filename, bool write_diff=false) constcaffe::Net< Dtype >
top_id_vecs_ (defined in caffe::Net< Dtype >)caffe::Net< Dtype >protected
top_ids(int i) constcaffe::Net< Dtype >inline
top_vecs() constcaffe::Net< Dtype >inline
top_vecs_caffe::Net< Dtype >protected
ToProto(NetParameter *param, bool write_diff=false) constcaffe::Net< Dtype >
Update()caffe::Net< Dtype >
UpdateDebugInfo(const int param_id)caffe::Net< Dtype >protected
~Net() (defined in caffe::Net< Dtype >)caffe::Net< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1Net.html b/doxygen/classcaffe_1_1Net.html new file mode 100644 index 00000000000..62bfd95ef33 --- /dev/null +++ b/doxygen/classcaffe_1_1Net.html @@ -0,0 +1,628 @@ + + + + + + + +Caffe: caffe::Net< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Connects Layers together into a directed acyclic graph (DAG) specified by a NetParameter. + More...

+ +

#include <net.hpp>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Net (const NetParameter &param, const Net *root_net=NULL)
 
Net (const string &param_file, Phase phase, const int level=0, const vector< string > *stages=NULL, const Net *root_net=NULL)
 
+void Init (const NetParameter &param)
 Initialize a network with a NetParameter.
 
+const vector< Blob< Dtype > * > & Forward (Dtype *loss=NULL)
 Run Forward and return the result.
 
+const vector< Blob< Dtype > * > & ForwardPrefilled (Dtype *loss=NULL)
 DEPRECATED; use Forward() instead.
 
Dtype ForwardFromTo (int start, int end)
 
+Dtype ForwardFrom (int start)
 
+Dtype ForwardTo (int end)
 
+const vector< Blob< Dtype > * > & Forward (const vector< Blob< Dtype > * > &bottom, Dtype *loss=NULL)
 DEPRECATED; set input blobs then use Forward() instead.
 
+void ClearParamDiffs ()
 Zeroes out the diffs of all net parameters. Should be run before Backward.
 
void Backward ()
 
+void BackwardFromTo (int start, int end)
 
+void BackwardFrom (int start)
 
+void BackwardTo (int end)
 
void Reshape ()
 Reshape all layers from bottom to top. More...
 
+Dtype ForwardBackward ()
 
+void Update ()
 Updates the network weights based on the diff values computed.
 
void ShareWeights ()
 Shares weight data of owner blobs with shared blobs. More...
 
+void ShareTrainedLayersWith (const Net *other)
 For an already initialized net, implicitly copies (i.e., using no additional memory) the pre-trained layers from another Net.
 
+void CopyTrainedLayersFrom (const NetParameter &param)
 For an already initialized net, copies the pre-trained layers from another Net.
 
+void CopyTrainedLayersFrom (const string trained_filename)
 
+void CopyTrainedLayersFromBinaryProto (const string trained_filename)
 
+void CopyTrainedLayersFromHDF5 (const string trained_filename)
 
+void ToProto (NetParameter *param, bool write_diff=false) const
 Writes the net to a proto.
 
+void ToHDF5 (const string &filename, bool write_diff=false) const
 Writes the net to an HDF5 file.
 
+const string & name () const
 returns the network name.
 
+const vector< string > & layer_names () const
 returns the layer names
 
+const vector< string > & blob_names () const
 returns the blob names
 
+const vector< shared_ptr< Blob< Dtype > > > & blobs () const
 returns the blobs
 
+const vector< shared_ptr< Layer< Dtype > > > & layers () const
 returns the layers
 
+Phase phase () const
 returns the phase: TRAIN or TEST
 
+const vector< vector< Blob< Dtype > * > > & bottom_vecs () const
 returns the bottom vecs for each layer – usually you won't need this unless you do per-layer checks such as gradients.
 
+const vector< vector< Blob< Dtype > * > > & top_vecs () const
 returns the top vecs for each layer – usually you won't need this unless you do per-layer checks such as gradients.
 
+const vector< int > & top_ids (int i) const
 returns the ids of the top blobs of layer i
 
+const vector< int > & bottom_ids (int i) const
 returns the ids of the bottom blobs of layer i
 
+const vector< vector< bool > > & bottom_need_backward () const
 
+const vector< Dtype > & blob_loss_weights () const
 
+const vector< bool > & layer_need_backward () const
 
+const vector< shared_ptr< Blob< Dtype > > > & params () const
 returns the parameters
 
+const vector< Blob< Dtype > * > & learnable_params () const
 
+const vector< float > & params_lr () const
 returns the learnable parameter learning rate multipliers
 
+const vector< bool > & has_params_lr () const
 
+const vector< float > & params_weight_decay () const
 returns the learnable parameter decay multipliers
 
+const vector< bool > & has_params_decay () const
 
+const map< string, int > & param_names_index () const
 
+const vector< int > & param_owners () const
 
+const vector< string > & param_display_names () const
 
+int num_inputs () const
 Input and output blob numbers.
 
+int num_outputs () const
 
+const vector< Blob< Dtype > * > & input_blobs () const
 
+const vector< Blob< Dtype > * > & output_blobs () const
 
+const vector< int > & input_blob_indices () const
 
+const vector< int > & output_blob_indices () const
 
+bool has_blob (const string &blob_name) const
 
+const shared_ptr< Blob< Dtype > > blob_by_name (const string &blob_name) const
 
+bool has_layer (const string &layer_name) const
 
+const shared_ptr< Layer< Dtype > > layer_by_name (const string &layer_name) const
 
+void set_debug_info (const bool value)
 
+ + + + + + + +

+Static Public Member Functions

+static void FilterNet (const NetParameter &param, NetParameter *param_filtered)
 Remove layers that the user specified should be excluded given the current phase, level, and stage.
 
+static bool StateMeetsRule (const NetState &state, const NetStateRule &rule, const string &layer_name)
 return whether NetState state meets NetStateRule rule
 
+ + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+void AppendTop (const NetParameter &param, const int layer_id, const int top_id, set< string > *available_blobs, map< string, int > *blob_name_to_idx)
 Append a new top blob to the net.
 
+int AppendBottom (const NetParameter &param, const int layer_id, const int bottom_id, set< string > *available_blobs, map< string, int > *blob_name_to_idx)
 Append a new bottom blob to the net.
 
+void AppendParam (const NetParameter &param, const int layer_id, const int param_id)
 Append a new parameter blob to the net.
 
+void ForwardDebugInfo (const int layer_id)
 Helper for displaying debug info in Forward.
 
+void BackwardDebugInfo (const int layer_id)
 Helper for displaying debug info in Backward.
 
+void UpdateDebugInfo (const int param_id)
 Helper for displaying debug info in Update.
 
DISABLE_COPY_AND_ASSIGN (Net)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+string name_
 The network name.
 
+Phase phase_
 The phase: TRAIN or TEST.
 
+vector< shared_ptr< Layer< Dtype > > > layers_
 Individual layers in the net.
 
+vector< string > layer_names_
 
+map< string, int > layer_names_index_
 
+vector< bool > layer_need_backward_
 
+vector< shared_ptr< Blob< Dtype > > > blobs_
 the blobs storing intermediate results between the layer.
 
+vector< string > blob_names_
 
+map< string, int > blob_names_index_
 
+vector< bool > blob_need_backward_
 
vector< vector< Blob< Dtype > * > > bottom_vecs_
 
+vector< vector< int > > bottom_id_vecs_
 
+vector< vector< bool > > bottom_need_backward_
 
+vector< vector< Blob< Dtype > * > > top_vecs_
 top_vecs stores the vectors containing the output for each layer
 
+vector< vector< int > > top_id_vecs_
 
vector< Dtype > blob_loss_weights_
 
+vector< vector< int > > param_id_vecs_
 
+vector< int > param_owners_
 
+vector< string > param_display_names_
 
+vector< pair< int, int > > param_layer_indices_
 
+map< string, int > param_names_index_
 
+vector< int > net_input_blob_indices_
 blob indices for the input and the output of the net
 
+vector< int > net_output_blob_indices_
 
+vector< Blob< Dtype > * > net_input_blobs_
 
+vector< Blob< Dtype > * > net_output_blobs_
 
+vector< shared_ptr< Blob< Dtype > > > params_
 The parameters in the network.
 
+vector< Blob< Dtype > * > learnable_params_
 
vector< int > learnable_param_ids_
 
+vector< float > params_lr_
 the learning rate multipliers for learnable_params_
 
+vector< bool > has_params_lr_
 
+vector< float > params_weight_decay_
 the weight decay multipliers for learnable_params_
 
+vector< bool > has_params_decay_
 
+size_t memory_used_
 The bytes of memory used by this net.
 
+bool debug_info_
 Whether to compute and display debug info for the net.
 
+const Net *const root_net_
 The root net that actually holds the shared layers in data parallelism.
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::Net< Dtype >

+ +

Connects Layers together into a directed acyclic graph (DAG) specified by a NetParameter.

+

TODO(dox): more thorough description.

+

Member Function Documentation

+ +

§ Backward()

+ +
+
+
+template<typename Dtype >
+ + + + + + + +
void caffe::Net< Dtype >::Backward ()
+
+

The network backward should take no input and output, since it solely computes the gradient w.r.t the parameters, and the data has already been provided during the forward pass.

+ +
+
+ +

§ ForwardFromTo()

+ +
+
+
+template<typename Dtype >
+ + + + + + + + + + + + + + + + + + +
Dtype caffe::Net< Dtype >::ForwardFromTo (int start,
int end 
)
+
+

The From and To variants of Forward and Backward operate on the (topological) ordering by which the net is specified. For general DAG networks, note that (1) computing from one layer to another might entail extra computation on unrelated branches, and (2) computation starting in the middle may be incorrect if all of the layers of a fan-in are not included.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + + + +
void caffe::Net< Dtype >::Reshape ()
+
+ +

Reshape all layers from bottom to top.

+

This is useful to propagate changes to layer sizes without running a forward pass, e.g. to compute output feature size.

+ +
+
+ +

§ ShareWeights()

+ +
+
+
+template<typename Dtype >
+ + + + + + + +
void caffe::Net< Dtype >::ShareWeights ()
+
+ +

Shares weight data of owner blobs with shared blobs.

+

Note: this is called by Net::Init, and thus should normally not be called manually.

+ +
+
+

Member Data Documentation

+ +

§ blob_loss_weights_

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + +
vector<Dtype> caffe::Net< Dtype >::blob_loss_weights_
+
+protected
+
+

Vector of weight in the loss (or objective) function of each net blob, indexed by blob_id.

+ +
+
+ +

§ bottom_vecs_

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + +
vector<vector<Blob<Dtype>*> > caffe::Net< Dtype >::bottom_vecs_
+
+protected
+
+

bottom_vecs stores the vectors containing the input for each layer. They don't actually host the blobs (blobs_ does), so we simply store pointers.

+ +
+
+ +

§ learnable_param_ids_

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + +
vector<int> caffe::Net< Dtype >::learnable_param_ids_
+
+protected
+
+

The mapping from params_ -> learnable_params_: we have learnable_param_ids_.size() == params_.size(), and learnable_params_[learnable_param_ids_[i]] == params_[i].get() if and only if params_[i] is an "owner"; otherwise, params_[i] is a sharer and learnable_params_[learnable_param_ids_[i]] gives its owner.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/caffe/net.hpp
  • +
  • src/caffe/net.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1NeuronLayer-members.html b/doxygen/classcaffe_1_1NeuronLayer-members.html new file mode 100644 index 00000000000..e178cac0115 --- /dev/null +++ b/doxygen/classcaffe_1_1NeuronLayer-members.html @@ -0,0 +1,119 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::NeuronLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::NeuronLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)=0caffe::Layer< Dtype >protectedpure virtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inlineprotectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::NeuronLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::NeuronLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)=0caffe::Layer< Dtype >protectedpure virtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlinevirtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
NeuronLayer(const LayerParameter &param) (defined in caffe::NeuronLayer< Dtype >)caffe::NeuronLayer< Dtype >inlineexplicit
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::NeuronLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::Layer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1NeuronLayer.html b/doxygen/classcaffe_1_1NeuronLayer.html new file mode 100644 index 00000000000..08b8e4977e5 --- /dev/null +++ b/doxygen/classcaffe_1_1NeuronLayer.html @@ -0,0 +1,366 @@ + + + + + + + +Caffe: caffe::NeuronLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::NeuronLayer< Dtype > Class Template Reference
+
+
+ +

An interface for layers that take one blob as input ( $ x $) and produce one equally-sized blob as output ( $ y $), where each element of the output depends only on the corresponding input element. + More...

+ +

#include <neuron_layer.hpp>

+
+Inheritance diagram for caffe::NeuronLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > +caffe::AbsValLayer< Dtype > +caffe::BNLLLayer< Dtype > +caffe::DropoutLayer< Dtype > +caffe::ELULayer< Dtype > +caffe::ExpLayer< Dtype > +caffe::LogLayer< Dtype > +caffe::PowerLayer< Dtype > +caffe::PReLULayer< Dtype > +caffe::ReLULayer< Dtype > +caffe::SigmoidLayer< Dtype > +caffe::TanHLayer< Dtype > +caffe::ThresholdLayer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

NeuronLayer (const LayerParameter &param)
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from caffe::Layer< Dtype >
+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)=0
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)=0
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::NeuronLayer< Dtype >

+ +

An interface for layers that take one blob as input ( $ x $) and produce one equally-sized blob as output ( $ y $), where each element of the output depends only on the corresponding input element.

+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::NeuronLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +

Reimplemented in caffe::AbsValLayer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::NeuronLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +

Reimplemented in caffe::AbsValLayer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::NeuronLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +

Reimplemented in caffe::PReLULayer< Dtype >, and caffe::DropoutLayer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1NeuronLayer.png b/doxygen/classcaffe_1_1NeuronLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..59039e0dda94bbfe1c6d504b58bc57a9e0f63d17 GIT binary patch literal 6517 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 ect0Gt>LpqI##8re=zk + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::P2PSync< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::P2PSync< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
children_ (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >protected
configure(Solver< Dtype > *solver) const (defined in caffe::GPUParams< Dtype >)caffe::GPUParams< Dtype >
data() const (defined in caffe::Params< Dtype >)caffe::Params< Dtype >inline
data_ (defined in caffe::Params< Dtype >)caffe::Params< Dtype >protected
diff() const (defined in caffe::Params< Dtype >)caffe::Params< Dtype >inline
diff_ (defined in caffe::Params< Dtype >)caffe::Params< Dtype >protected
DISABLE_COPY_AND_ASSIGN(Params) (defined in caffe::Params< Dtype >)caffe::Params< Dtype >protected
GPUParams(shared_ptr< Solver< Dtype > > root_solver, int device) (defined in caffe::GPUParams< Dtype >)caffe::GPUParams< Dtype >
initial_iter() const (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >inline
initial_iter_ (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >protected
InternalThread() (defined in caffe::InternalThread)caffe::InternalThreadinline
InternalThreadEntry() (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >protectedvirtual
is_started() const (defined in caffe::InternalThread)caffe::InternalThread
must_stop() (defined in caffe::InternalThread)caffe::InternalThreadprotected
on_gradients_ready() (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >protectedvirtual
on_start() (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >protectedvirtual
P2PSync(shared_ptr< Solver< Dtype > > root_solver, P2PSync< Dtype > *parent, const SolverParameter &param) (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >explicit
Params(shared_ptr< Solver< Dtype > > root_solver) (defined in caffe::Params< Dtype >)caffe::Params< Dtype >explicit
parent_ (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >protected
parent_grads_ (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >protected
Prepare(const vector< int > &gpus, vector< shared_ptr< P2PSync< Dtype > > > *syncs) (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >
queue_ (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >protected
Run(const vector< int > &gpus) (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >
size() const (defined in caffe::Params< Dtype >)caffe::Params< Dtype >inline
size_ (defined in caffe::Params< Dtype >)caffe::Params< Dtype >protected
solver() const (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >inline
solver_ (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >protected
StartInternalThread()caffe::InternalThread
StopInternalThread()caffe::InternalThread
~GPUParams() (defined in caffe::GPUParams< Dtype >)caffe::GPUParams< Dtype >virtual
~InternalThread() (defined in caffe::InternalThread)caffe::InternalThreadvirtual
~P2PSync() (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >virtual
~Params() (defined in caffe::Params< Dtype >)caffe::Params< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1P2PSync.html b/doxygen/classcaffe_1_1P2PSync.html new file mode 100644 index 00000000000..ebb212f150d --- /dev/null +++ b/doxygen/classcaffe_1_1P2PSync.html @@ -0,0 +1,196 @@ + + + + + + + +Caffe: caffe::P2PSync< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::P2PSync< Dtype > Class Template Reference
+
+
+
+Inheritance diagram for caffe::P2PSync< Dtype >:
+
+
+ + +caffe::GPUParams< Dtype > +caffe::Solver< Dtype >::Callback +caffe::InternalThread +caffe::Params< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

P2PSync (shared_ptr< Solver< Dtype > > root_solver, P2PSync< Dtype > *parent, const SolverParameter &param)
 
+const shared_ptr< Solver< Dtype > > & solver () const
 
+void Run (const vector< int > &gpus)
 
+void Prepare (const vector< int > &gpus, vector< shared_ptr< P2PSync< Dtype > > > *syncs)
 
+const int initial_iter () const
 
- Public Member Functions inherited from caffe::GPUParams< Dtype >
GPUParams (shared_ptr< Solver< Dtype > > root_solver, int device)
 
+void configure (Solver< Dtype > *solver) const
 
- Public Member Functions inherited from caffe::Params< Dtype >
Params (shared_ptr< Solver< Dtype > > root_solver)
 
+size_t size () const
 
+Dtype * data () const
 
+Dtype * diff () const
 
- Public Member Functions inherited from caffe::InternalThread
void StartInternalThread ()
 
void StopInternalThread ()
 
+bool is_started () const
 
+ + + + + + + + + + + + + +

+Protected Member Functions

+void on_start ()
 
+void on_gradients_ready ()
 
+void InternalThreadEntry ()
 
- Protected Member Functions inherited from caffe::Params< Dtype >
DISABLE_COPY_AND_ASSIGN (Params)
 
- Protected Member Functions inherited from caffe::InternalThread
+bool must_stop ()
 
+ + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+P2PSync< Dtype > * parent_
 
+vector< P2PSync< Dtype > * > children_
 
+BlockingQueue< P2PSync< Dtype > * > queue_
 
+const int initial_iter_
 
+Dtype * parent_grads_
 
+shared_ptr< Solver< Dtype > > solver_
 
- Protected Attributes inherited from caffe::Params< Dtype >
+const size_t size_
 
+Dtype * data_
 
+Dtype * diff_
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1P2PSync.png b/doxygen/classcaffe_1_1P2PSync.png new file mode 100644 index 0000000000000000000000000000000000000000..956f8b17de0361564d3e7b571c3c03c960f72547 GIT binary patch literal 2025 zcmb`IdsI@{9>+1E6t#zGkk{7|P}A$9hdOH5L(PsUKBrVP>1O7n=^aW@BdwEDsV$u- z%}~ZHi^@RFoA^$eY0L~s$wU#;(LfV)jU);>au40^ANQ_%|C_zm+53C;{_S(t{_XGn z?EFwdfDzIR34_6mfP;SFFxVOrq_67fLNx`?#6k@^G$_(vqtQTeO16+*{NhJQeR(=N zI}!OKR?w^7*>FMx3<}bgf!C2cV6b(WfZx8zOdYv+hWuNb@qzIxw;qpZaB~STqR&Rd zt@5y??AOWH%o)S&BkCEdPi3xmXy=8B8ko)i^DReI?(AEBq0S;~Q_6K7_3Gad~f=NTIw_;{TZF)JbpD&VJ9-+tCi1PM-Wk=sUjFW-G8 z`w2_2=aM3e^xQSE`tAcwKe+Se?&lfAE8#?Ea%8=B_CpdXUt%+0e%wIt0Hb)XasL!k zHLL&r{mYDb-GUO5tHU~k$kT?i-qzD8+PrAdQE1n*FJ$UlklSRwDdk+YQ}HWZkVk*k zUe1mvAzCzSSa9HyVlDNR=_GOL8Ah|uY2I!18;exdw{kjPkj#(fWU;WG2ldz9n-8tS zPV*!Av`Ij_{_XHq%SvE=Hx7O6^+qs`=fEA~p(n2f(T;3`R`8!W+^@eDad!M`vU6!0 z?C)H79t`z;9-FvlcxjDSD7a4tzx25V(yKn&%;)zTAg8{}s)Aoy)1n=Zv*+Hq;QT)} z=uZ#RME6P+Do#XS1z)Nt`^K(&?m;j>TS*;tq6Y#rLqGjetZx{I>n^)V0(O|-qG*Qx zP}gy?U!7ojKTYCwezkRUbwsnfTm+CSzI&(eEv`=R06!kEa#`uO^eBvFW21NMS!pJn z8}H?%adKPoRG#W(`wh=8>4L#(?Co0Mq4y%zvv=3yLQ?DITKDX|btq+1+@!`@_{ZOi z^%}+Lv?r=65+`I~e%nfYc1}y|7@H)J<}fCd3S~a-cI~0%r*9Yjpt{l9vEBHL@cAG( z2T45?)T*eI*GIFW6WmVKuNHz9$i=6#@1$nGkv&+Xa(FMt3fV{<7o1Dm!@UCXhUfvS zLub5mvUNC<&w89=dS-#)qTE`nxS z`19{M=}jNAa56_z*)e!4=;XDMR7@#)#d{&h+p}4=uc-&w7}&48I>I`dTMLTu{iu_Z z$bjmL};?`eY%9U%x2A%vX_WjLWbALQ`3d z$!IF?2)@!>VYOKN%fbg{J{_~8n;JaO=6Sfb{XH{=_CyGDU(}P}%H2fu!0^l?y!-XJ zwu{Q>hSd`^6x@4b>O|K+Bx-b9NuQk3Sf)w7Y=tbvYJL>2*mheS1t3%Aom?!#b}ga$ zuz=M86Io0EZ4#}q#)Zsn2Z|t%0s-vkzr@r@wL$h=T7vzk6HaSbt%r|?Lmm$Ow}-C* zT3i2~0Wu)dyD))n71c*W9(6ODdaFF= znDcw58)i^FCo47VJ%@R|oB6t9{#wNSJfy;G+%gzkG-D-_RNZD4;m~cE4=0!`LcAvU z#3{#DMWhC=cucvo%S$pdoQ + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::PReLULayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::PReLULayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
backward_buff_ (defined in caffe::PReLULayer< Dtype >)caffe::PReLULayer< Dtype >protected
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::PReLULayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::PReLULayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
bottom_memory_ (defined in caffe::PReLULayer< Dtype >)caffe::PReLULayer< Dtype >protected
channel_shared_ (defined in caffe::PReLULayer< Dtype >)caffe::PReLULayer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::NeuronLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::NeuronLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::PReLULayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::PReLULayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::PReLULayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
multiplier_ (defined in caffe::PReLULayer< Dtype >)caffe::PReLULayer< Dtype >protected
NeuronLayer(const LayerParameter &param) (defined in caffe::NeuronLayer< Dtype >)caffe::NeuronLayer< Dtype >inlineexplicit
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
PReLULayer(const LayerParameter &param)caffe::PReLULayer< Dtype >inlineexplicit
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::PReLULayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::PReLULayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1PReLULayer.html b/doxygen/classcaffe_1_1PReLULayer.html new file mode 100644 index 00000000000..09226e444ea --- /dev/null +++ b/doxygen/classcaffe_1_1PReLULayer.html @@ -0,0 +1,506 @@ + + + + + + + +Caffe: caffe::PReLULayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::PReLULayer< Dtype > Class Template Reference
+
+
+ +

Parameterized Rectified Linear Unit non-linearity $ y_i = \max(0, x_i) + a_i \min(0, x_i) $. 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. + More...

+ +

#include <prelu_layer.hpp>

+
+Inheritance diagram for caffe::PReLULayer< Dtype >:
+
+
+ + +caffe::NeuronLayer< Dtype > +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PReLULayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
- Public Member Functions inherited from caffe::NeuronLayer< Dtype >
NeuronLayer (const LayerParameter &param)
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Computes the error gradient w.r.t. the PReLU inputs. More...
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+bool channel_shared_
 
+Blob< Dtype > multiplier_
 
+Blob< Dtype > backward_buff_
 
+Blob< Dtype > bottom_memory_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::PReLULayer< Dtype >

+ +

Parameterized Rectified Linear Unit non-linearity $ y_i = \max(0, x_i) + a_i \min(0, x_i) $. 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.

+

Constructor & Destructor Documentation

+ +

§ PReLULayer()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + +
caffe::PReLULayer< Dtype >::PReLULayer (const LayerParameter & param)
+
+inlineexplicit
+
+
Parameters
+ + +
paramprovides PReLUParameter prelu_param, with PReLULayer options:
    +
  • filler (optional, FillerParameter, default {'type': constant 'value':0.25}).
  • +
  • channel_shared (optional, default false). negative slopes are shared across channels.
  • +
+
+
+
+ +
+
+

Member Function Documentation

+ +

§ Backward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void caffe::PReLULayer< Dtype >::Backward_cpu (const vector< Blob< Dtype > *> & top,
const vector< bool > & propagate_down,
const vector< Blob< Dtype > *> & bottom 
)
+
+protectedvirtual
+
+ +

Computes the error gradient w.r.t. the PReLU inputs.

+
Parameters
+ + + + +
topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
    +
  1. $ (N \times C \times ...) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
  2. +
+
propagate_downsee Layer::Backward.
bottominput Blob vector (length 1)
    +
  1. $ (N \times C \times ...) $ the inputs $ x $; For each channel $i$, backward fills their diff with gradients $ \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. $. If param_propagate_down_[0] is true, it fills the diff with gradients $ \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. $.
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::PReLULayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+
Parameters
+ + + +
bottominput Blob vector (length 1)
    +
  1. $ (N \times C \times ...) $ the inputs $ x $
  2. +
+
topoutput Blob vector (length 1)
    +
  1. $ (N \times C \times ...) $ the computed outputs for each channel $i$ $ y_i = \max(0, x_i) + a_i \min(0, x_i) $.
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::PReLULayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::PReLULayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Reimplemented from caffe::NeuronLayer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1PReLULayer.png b/doxygen/classcaffe_1_1PReLULayer.png new file mode 100644 index 0000000000000000000000000000000000000000..4b1446e86c0a1cc3614bf05a22713b20b5d15642 GIT binary patch literal 1066 zcmeAS@N?(olHy`uVBq!ia0vp^n}N84gBeK9F4tNQq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0cY3-whEy=Vo%^uwvlb7lI{V7^|4(ec zJ0XE1=kVWGp%Y`Cny4CnOX&GMeM(T2kBVoM*Fhc6e_UyvpRS91-u8CYJkLw9x$Dn= z(eb=$diW1l38&d{n-XQu@~>?_Jxo}KecYKF(8FMj)t z=hwYG%k%m0#?&?&@v<7}%UL0_y@TA}&pds;?Wg$UQ?E8@niktW=KE^VgSc@N~Ba0Bm2 z`{$j}T)Jf%L(Lb42p?`Ed%4$+`X~Ol#PL>np4AqnI%Fl9dhuRw7pJZ}PR$BPg z&zUn#6Y6~T@7VFavaeDiV3L*And3>{dGagg%ujpX{`}9oka?dzUv|rX)8~4<;P|({ zEO(FJ^cCHExF+iMY{_@?ez`rnnE9vsJWr+Gn;-9XX`X&>EUwPGxz;Ww;`6gdYd(eN z-k-X2-o=3U8Q+-`w{5Q2UK$|DJJa9#^=jL@yqmwKEf#+@ZRhmK+Qqd2?Po#{PH+7) zDZM)Fmh;W?pDS*^PFQwIeP-|eUGtnERJtlRx zRNgMOjWDa_<>7Zwef(%nVt!gi#M`|NW@nh|B|pX7_?YXnIxzQMqMp66YV?1$S@YcR^X{s3j_0PY)y}Tk4@#mtHKVIi_0~S!bKP0E;zFBuy`JFv z@4O7+zAihyzW>C2X7h>o12(;Xcq`d{tbnDl@c;L= + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::ParameterLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::ParameterLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::ParameterLayer< Dtype >inlineprotectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inlineprotectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::ParameterLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::ParameterLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ParameterLayer< Dtype >inlineprotectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ParameterLayer< Dtype >inlinevirtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
ParameterLayer(const LayerParameter &param) (defined in caffe::ParameterLayer< Dtype >)caffe::ParameterLayer< Dtype >inlineexplicit
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ParameterLayer< Dtype >inlinevirtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::ParameterLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1ParameterLayer.html b/doxygen/classcaffe_1_1ParameterLayer.html new file mode 100644 index 00000000000..585e06095f1 --- /dev/null +++ b/doxygen/classcaffe_1_1ParameterLayer.html @@ -0,0 +1,391 @@ + + + + + + + +Caffe: caffe::ParameterLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::ParameterLayer< Dtype > Class Template Reference
+
+
+
+Inheritance diagram for caffe::ParameterLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ParameterLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::ParameterLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::ParameterLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void caffe::ParameterLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+inlinevirtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void caffe::ParameterLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+inlinevirtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classcaffe_1_1ParameterLayer.png b/doxygen/classcaffe_1_1ParameterLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..a4994f712561996b5bd6d0c9b432d999c1859bad GIT binary patch literal 756 zcmeAS@N?(olHy`uVBq!ia0vp^hk-bNgBeIp4mKw+)YG`}}=GCa0H)^&5>DFyZJ z(krG5k~Vm5HMG`jlX$oGUG3>QraSjCpB#)hJ*_5CZr1aMoXv$lKLudgaD0m6I_~{{|%O-KFPwX#rc>r`y}_u9k2Uyf-0H;-Tzk1<(4W2@{t5B`U`0%x~wu3)mhhmJ}BVma}dW?ITn-~-J5sx3N4Dx#UNQp5f z>L7zbJP7Ny-A?>}ZDkXqP552m1>wgH_U@J9d42YBbK`;iNf~|&5Bj*A+wL0`?EZgu zn|6HD^U_;uf3AO>A6wVstagU8V)lW&Sn0IBhP{0Z?YIBUcxLEs-JbMA?&#O`v2P8( zdCD*NdAoJH?VP)o*P)bE977OmG~{4bP0 Hl+XkKzJO*< literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1Params-members.html b/doxygen/classcaffe_1_1Params-members.html new file mode 100644 index 00000000000..a7bcd1410cc --- /dev/null +++ b/doxygen/classcaffe_1_1Params-members.html @@ -0,0 +1,89 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::Params< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::Params< Dtype >, including all inherited members.

+ + + + + + + + + + +
data() const (defined in caffe::Params< Dtype >)caffe::Params< Dtype >inline
data_ (defined in caffe::Params< Dtype >)caffe::Params< Dtype >protected
diff() const (defined in caffe::Params< Dtype >)caffe::Params< Dtype >inline
diff_ (defined in caffe::Params< Dtype >)caffe::Params< Dtype >protected
DISABLE_COPY_AND_ASSIGN(Params) (defined in caffe::Params< Dtype >)caffe::Params< Dtype >protected
Params(shared_ptr< Solver< Dtype > > root_solver) (defined in caffe::Params< Dtype >)caffe::Params< Dtype >explicit
size() const (defined in caffe::Params< Dtype >)caffe::Params< Dtype >inline
size_ (defined in caffe::Params< Dtype >)caffe::Params< Dtype >protected
~Params() (defined in caffe::Params< Dtype >)caffe::Params< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1Params.html b/doxygen/classcaffe_1_1Params.html new file mode 100644 index 00000000000..ae109b17611 --- /dev/null +++ b/doxygen/classcaffe_1_1Params.html @@ -0,0 +1,130 @@ + + + + + + + +Caffe: caffe::Params< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::Params< Dtype > Class Template Reference
+
+
+
+Inheritance diagram for caffe::Params< Dtype >:
+
+
+ + +caffe::GPUParams< Dtype > +caffe::P2PSync< Dtype > + +
+ + + + + + + + + + +

+Public Member Functions

Params (shared_ptr< Solver< Dtype > > root_solver)
 
+size_t size () const
 
+Dtype * data () const
 
+Dtype * diff () const
 
+ + + +

+Protected Member Functions

DISABLE_COPY_AND_ASSIGN (Params)
 
+ + + + + + + +

+Protected Attributes

+const size_t size_
 
+Dtype * data_
 
+Dtype * diff_
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1Params.png b/doxygen/classcaffe_1_1Params.png new file mode 100644 index 0000000000000000000000000000000000000000..e263d2cb32f118809afea4abfded6e480426f9fd GIT binary patch literal 1072 zcmeAS@N?(olHy`uVBq!ia0vp^tAV(KgBeJ!=X<>wNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~@Aq_Z45?szJNMzFPYOJ){L>}x|DR~T zRhK1dOX=qMr+sAJZM*2erh^}aG5X(bE$BW^3K&xqfoXJcCW zY>w26AmQ2n%~tQ9BD>ml?Ynhy7xyLEu4w#Q)^KH&<=?`%>lf5cWMA@s_0{I}g1FVI zHNW(~zWS|k*YBdUvu)Od@A_(P%5Wv{cXsTT_F9Gq_Aj#f|0!j!&1ew*CAWI#0S5Ii zXQdc+EJ|Sg5Wa!w$Lot-!CskMj6Ytp8FZ>8?Y;Y~ac;-gJ}cfgK5H(rGt@bQ!T_pP zJA(0#=o*H9Twx6LtlACxVL=3!K53a=ez)k{&Da#rSxyJFJb@}bKV9!IUFtgNjK}x$ zzbfqJ-w%zRbZ+$-E9=q&Q64H+18=bTds?kGdTsT3+ey{MnOk!Yow_|?t4daEa`jz5 zuOQj(y)01^<=YY`rno2S-usq#M)%3?KYAxhpBe9&8*gA1CcSNA)c3xvdY3lNdb=i5 z{#v%MyB8!tU)-G{`&wvQ+6kHV*qZtA)!%2eZhQLc_N|S#lHa_0mGxx}yJ^9WABx$N zuB-$F>hxXPE|xDzf4x<+>3jtH*QnUDkKVrm1?$P8*{e;hKL7i^X~IfI&(bUZva>zuF~@;;^9D~7 z!Pjri_}{p!DZi4Lke<|Q$M8WKXE`u^OPlfU$J=ZT5x@hznJIQ8;{o5M|}?Y@#sf#*zC>6=TF*GyN3Ci*T)%| z*Iq}?-+%w>xu2q|J;Q1xHv1-=Jhy3nTI;Jlb@}GW*R6`~h2Lw~y02_a?B2CAw)#z1 zz7g&r{i|auulWMmjd~2K+xD8@_1>H`d;XzYEpH>%7MI&v-(r02$opn{af04C>uZT| z{d4u7lt!$V-z0Z6yY!~l->SX0>;jte?k?~ST`3%FW<8@;eg*GNtNKgqDleDsx?-;X zC;SKNwbv`+lm9Y&t*)H9Bt8)2yQa`de@fHOT0Xb@!ryQ1>iOcDVJk3uGkCiCxvX + + + + + + +Caffe: Member List + + + + + + + + + + +
+
+
caffe::PoolingLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::PoolingLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::PoolingLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::PoolingLayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
channels_ (defined in caffe::PoolingLayer< Dtype >)caffe::PoolingLayer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::PoolingLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::PoolingLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::PoolingLayer< Dtype >protectedvirtual
global_pooling_ (defined in caffe::PoolingLayer< Dtype >)caffe::PoolingLayer< Dtype >protected
height_ (defined in caffe::PoolingLayer< Dtype >)caffe::PoolingLayer< Dtype >protected
IsShared() constcaffe::Layer< Dtype >inline
kernel_h_ (defined in caffe::PoolingLayer< Dtype >)caffe::PoolingLayer< Dtype >protected
kernel_w_ (defined in caffe::PoolingLayer< Dtype >)caffe::PoolingLayer< Dtype >protected
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::PoolingLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
max_idx_ (defined in caffe::PoolingLayer< Dtype >)caffe::PoolingLayer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::PoolingLayer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::PoolingLayer< Dtype >inlinevirtual
pad_h_ (defined in caffe::PoolingLayer< Dtype >)caffe::PoolingLayer< Dtype >protected
pad_w_ (defined in caffe::PoolingLayer< Dtype >)caffe::PoolingLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
pooled_height_ (defined in caffe::PoolingLayer< Dtype >)caffe::PoolingLayer< Dtype >protected
pooled_width_ (defined in caffe::PoolingLayer< Dtype >)caffe::PoolingLayer< Dtype >protected
PoolingLayer(const LayerParameter &param) (defined in caffe::PoolingLayer< Dtype >)caffe::PoolingLayer< Dtype >inlineexplicit
rand_idx_ (defined in caffe::PoolingLayer< Dtype >)caffe::PoolingLayer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::PoolingLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
stride_h_ (defined in caffe::PoolingLayer< Dtype >)caffe::PoolingLayer< Dtype >protected
stride_w_ (defined in caffe::PoolingLayer< Dtype >)caffe::PoolingLayer< Dtype >protected
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::PoolingLayer< Dtype >inlinevirtual
width_ (defined in caffe::PoolingLayer< Dtype >)caffe::PoolingLayer< Dtype >protected
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1PoolingLayer.html b/doxygen/classcaffe_1_1PoolingLayer.html new file mode 100644 index 00000000000..ff59a2048b1 --- /dev/null +++ b/doxygen/classcaffe_1_1PoolingLayer.html @@ -0,0 +1,478 @@ + + + + + + + +Caffe: caffe::PoolingLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::PoolingLayer< Dtype > Class Template Reference
+
+
+ +

Pools the input image by taking the max, average, etc. within regions. + More...

+ +

#include <pooling_layer.hpp>

+
+Inheritance diagram for caffe::PoolingLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

PoolingLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+int kernel_h_
 
+int kernel_w_
 
+int stride_h_
 
+int stride_w_
 
+int pad_h_
 
+int pad_w_
 
+int channels_
 
+int height_
 
+int width_
 
+int pooled_height_
 
+int pooled_width_
 
+bool global_pooling_
 
+Blob< Dtype > rand_idx_
 
+Blob< int > max_idx_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::PoolingLayer< Dtype >

+ +

Pools the input image by taking the max, average, etc. within regions.

+

TODO(dox): thorough documentation for Forward, Backward, and proto params.

+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::PoolingLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::PoolingLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ MaxTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::PoolingLayer< Dtype >::MaxTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some maximum number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ MinTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::PoolingLayer< Dtype >::MinTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some minimum number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::PoolingLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1PoolingLayer.png b/doxygen/classcaffe_1_1PoolingLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..4141cfcd01ee9a5900e418871397f528af8ba9ea GIT binary patch literal 732 zcmeAS@N?(olHy`uVBq!ia0vp^n}IlhgBeJsN^N-yq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0vOQfKLn;{G&b`>ztRUdZe|^dS|0kov zr$`>*lFppg!do8wrqqJx@sCrRbWSHEObWX3;{UAo zlb*P7f8KQ=bEDa_(*~15R!cv#)s1d*o^yP4pXI+z+5XGhZ>L4i$cR->Q}x_+IsKXP zy1xdOD?Z+mRP674`@i?<**&q7xOS!c#T!547kh3c+m-&U{7S%e!~Fg}%O4_NQa1Me znR#}`+l4o0m|qD!v-HhW-HlDLx-m~~Mg(`-PI-R1YG0z6Ui|r)Utd;jt38}zAiGDi z`3hIg{Rt^1 zO-q&ZW~lwbB;mtsv_I~#Bmap%ZgPB8F3)b7GwfS~~?D=VMdG3=Zoyz~eDWHIyaW|0GuHR*xHhb!uh4=k6lJ%ZGIe$j8%lavQrP;M$d#&d`H_eNl zasKNY$3FSLa(lL}o0n^BQ2BB1!V5{Cgzx@37RR>(yTo3>N literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1PositiveUnitballFiller-members.html b/doxygen/classcaffe_1_1PositiveUnitballFiller-members.html new file mode 100644 index 00000000000..60bafad5b6c --- /dev/null +++ b/doxygen/classcaffe_1_1PositiveUnitballFiller-members.html @@ -0,0 +1,85 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::PositiveUnitballFiller< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::PositiveUnitballFiller< Dtype >, including all inherited members.

+ + + + + + +
Fill(Blob< Dtype > *blob) (defined in caffe::PositiveUnitballFiller< Dtype >)caffe::PositiveUnitballFiller< Dtype >inlinevirtual
Filler(const FillerParameter &param) (defined in caffe::Filler< Dtype >)caffe::Filler< Dtype >inlineexplicit
filler_param_ (defined in caffe::Filler< Dtype >)caffe::Filler< Dtype >protected
PositiveUnitballFiller(const FillerParameter &param) (defined in caffe::PositiveUnitballFiller< Dtype >)caffe::PositiveUnitballFiller< Dtype >inlineexplicit
~Filler() (defined in caffe::Filler< Dtype >)caffe::Filler< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1PositiveUnitballFiller.html b/doxygen/classcaffe_1_1PositiveUnitballFiller.html new file mode 100644 index 00000000000..62b655acbde --- /dev/null +++ b/doxygen/classcaffe_1_1PositiveUnitballFiller.html @@ -0,0 +1,123 @@ + + + + + + + +Caffe: caffe::PositiveUnitballFiller< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::PositiveUnitballFiller< Dtype > Class Template Reference
+
+
+ +

Fills a Blob with values $ x \in [0, 1] $ such that $ \forall i \sum_j x_{ij} = 1 $. + More...

+ +

#include <filler.hpp>

+
+Inheritance diagram for caffe::PositiveUnitballFiller< Dtype >:
+
+
+ + +caffe::Filler< Dtype > + +
+ + + + + + + + + +

+Public Member Functions

PositiveUnitballFiller (const FillerParameter &param)
 
+virtual void Fill (Blob< Dtype > *blob)
 
- Public Member Functions inherited from caffe::Filler< Dtype >
Filler (const FillerParameter &param)
 
+ + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::Filler< Dtype >
+FillerParameter filler_param_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::PositiveUnitballFiller< Dtype >

+ +

Fills a Blob with values $ x \in [0, 1] $ such that $ \forall i \sum_j x_{ij} = 1 $.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classcaffe_1_1PositiveUnitballFiller.png b/doxygen/classcaffe_1_1PositiveUnitballFiller.png new file mode 100644 index 0000000000000000000000000000000000000000..2fd334e3fbd4b5ebb8b75419669cc0994f4dd2b3 GIT binary patch literal 802 zcmeAS@N?(olHy`uVBq!ia0vp^w}3c+gBeJAyqFyhq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0HhQ`^hEy=VoqN0QwE~Z;xOLF~|C9YM z$82caGIvS(GPjT%*M&za9&)euxoq-PQ_b^LAhYkJMVSjcgG^%Gy)!4ypI!g`xtYq! zrKNW-n@%cmn|?8EzSjOTN4U2*3r{NXO~0_MIquQaYu`(+EquD-?ZJ;cr*9`Esm_T% zqc^F@kn@HDXzZbbvxy8*%?)oh61I;Vewr0GEWBgsS*4EKjyJqcE`|U-4 zR!41?HIn~wP5pMRO1Xz;+LLPC+dmKUX?p&5pTBp{e$HHd8_!+q^qq{~dQQ@Ny;>+} zlHKw~HP4GC7gRK7z00_4;v38L;Cl)4i{QVD?&jUy^tHQ8{q@wf$y+WeGCs;&!02+> zfw^N@Bb$IPGq1udHYo=aUXz9lsSF072@Jq6LQ(L5*-LY&oh#FeK$v3Lg?E3Sb`I5N zy))ywEnC8|WTo@l!qyhAzRGOfd-s0tQN~*~KTpNl^WO+uZ|hXOiRnc0_8-Mt-ug_d zxcglGy_w(5AKOX{H{4OUz3z4S?)7<7Z!UH?onKwBYVwBLl8?`wWQ)3Y=4Yn)*>_G^ zy^l6NnH?LnE@$CW6o13fkCXY&0CYiHqDVy^doK}PjMMi~vYsM{1GP&A+Zhf^qmdKI;Vst038c@ + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::PowerLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::PowerLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::PowerLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::PowerLayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
diff_scale_caffe::PowerLayer< Dtype >protected
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::NeuronLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::NeuronLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::PowerLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::PowerLayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::PowerLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
NeuronLayer(const LayerParameter &param) (defined in caffe::NeuronLayer< Dtype >)caffe::NeuronLayer< Dtype >inlineexplicit
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
power_caffe::PowerLayer< Dtype >protected
PowerLayer(const LayerParameter &param)caffe::PowerLayer< Dtype >inlineexplicit
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::NeuronLayer< Dtype >virtual
scale_caffe::PowerLayer< Dtype >protected
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
shift_caffe::PowerLayer< Dtype >protected
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::PowerLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1PowerLayer.html b/doxygen/classcaffe_1_1PowerLayer.html new file mode 100644 index 00000000000..df57df31e6c --- /dev/null +++ b/doxygen/classcaffe_1_1PowerLayer.html @@ -0,0 +1,461 @@ + + + + + + + +Caffe: caffe::PowerLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::PowerLayer< Dtype > Class Template Reference
+
+
+ +

Computes $ y = (\alpha x + \beta) ^ \gamma $, as specified by the scale $ \alpha $, shift $ \beta $, and power $ \gamma $. + More...

+ +

#include <power_layer.hpp>

+
+Inheritance diagram for caffe::PowerLayer< Dtype >:
+
+
+ + +caffe::NeuronLayer< Dtype > +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PowerLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual const char * type () const
 Returns the layer type.
 
- Public Member Functions inherited from caffe::NeuronLayer< Dtype >
NeuronLayer (const LayerParameter &param)
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Computes the error gradient w.r.t. the power inputs. More...
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+Dtype power_
 $ \gamma $ from layer_param_.power_param()
 
+Dtype scale_
 $ \alpha $ from layer_param_.power_param()
 
+Dtype shift_
 $ \beta $ from layer_param_.power_param()
 
+Dtype diff_scale_
 Result of $ \alpha \gamma $.
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::PowerLayer< Dtype >

+ +

Computes $ y = (\alpha x + \beta) ^ \gamma $, as specified by the scale $ \alpha $, shift $ \beta $, and power $ \gamma $.

+

Constructor & Destructor Documentation

+ +

§ PowerLayer()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + +
caffe::PowerLayer< Dtype >::PowerLayer (const LayerParameter & param)
+
+inlineexplicit
+
+
Parameters
+ + +
paramprovides PowerParameter power_param, with PowerLayer options:
    +
  • scale (optional, default 1) the scale $ \alpha $
  • +
  • shift (optional, default 0) the shift $ \beta $
  • +
  • power (optional, default 1) the power $ \gamma $
  • +
+
+
+
+ +
+
+

Member Function Documentation

+ +

§ Backward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void caffe::PowerLayer< Dtype >::Backward_cpu (const vector< Blob< Dtype > *> & top,
const vector< bool > & propagate_down,
const vector< Blob< Dtype > *> & bottom 
)
+
+protectedvirtual
+
+ +

Computes the error gradient w.r.t. the power inputs.

+
Parameters
+ + + + +
topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
    +
  1. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
  2. +
+
propagate_downsee Layer::Backward.
bottominput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \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} $ if propagate_down[0]
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::PowerLayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+
Parameters
+ + + +
bottominput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the inputs $ x $
  2. +
+
topoutput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the computed outputs $ y = (\alpha x + \beta) ^ \gamma $
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::PowerLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1PowerLayer.png b/doxygen/classcaffe_1_1PowerLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..ed1ee01d6070adecaac707dde2bf5f753952c74a GIT binary patch literal 1068 zcmeAS@N?(olHy`uVBq!ia0vp^n}N84gBeK9F4tNQq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0cYC@xhEy=VoqMtGwE~X|zwpZc|4(ke zJ0XFi!6P3Kdv;-PuE3?y>_p%^W3%i%dgq< zR99A|&4}lY6`P$bw`<~(-M?CYa-5cXIOX=v?Mdg9+xrTx6;x-JPxg)H-8@O<@3QY_ zmdF22p0%?$XQtx$UfKNQsI6JWp08e%Kl^mkV87wYHG1tq#@CJC1>8@*x4zHv$D=Pv zNxHYJZyVfp-fUODaNp58-EsF-(hH_?H(N+wo|Git_1R#4eWF=dsh#<<`RCH3&3#x- zADnHXvGl+-Ue9NmUw8iaRdRR25>MZdd;kBw|CISG@`--JJhy*s7T%M#H$_hRBYI}i zllAJKx8>fBV)}5AIl)l(#Gi^a?0XeH3s+jc5S_U=kKs>iljMQ;gFFw`C$N18H(>su zJ%bUbj{z7Q4E3zW4f|20pWfV-8|{-bY0DJ2`GVje`#f#Q#&%jzo5B`^OpWxoIJs^s#VU2WEV@6#{toqIQAb@>ec zY+&H+UcPVQORL`dKh8{eeyp$jy6?@p`8zE#XXO4bNIrYwXynuNR{OMzZ5J=xXYgM9 zkWBi=yw3}aq>Sd5T??Tc&T4fBtdf z_3oKE^Ha?Jy{gIcdH;0tT4^=Crxv-jcDdGV-vWF!HL^m%aNw z+CT80kv?&ML#5PD=|?)A@*xJ^llFtW{x#(uFeJPg?5Y@ama)#1@Bg|$Jf%)apM9@V z@fF^N{Q(4n5-Fq?*k~@@GQ)$xTN4`iRfqrVnQy;KM6$tr7T2Md1xeRt{JdH(x%+Wl zU*!%Fhj`J?8=u-9I=^uKw%(k`N5_|~DR*0Kac1+|mh7Hy*Y;g`s5SrH2bZ<|#eIJb z&)$h-J6)h?t!(yT8a!Ek)+_#*GvoD_Z1YQ|a;^uIzRY+n8U9M{^SM;Mtv(wbdIrp^ z(%&lmdgy`HyVQJl8Yk-1W-n z_Q5LttuKA-ZtqH56wJ5P?~T^FZM91rHCeYh?za;UH!fv9;21phd*5FB&pMyP4g8hs qo#!yxt%jz$*P#c3y)rfbGJosyxDXcij1QQ#89ZJ6T-G@yGywo$fDUf} literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1PythonLayer-members.html b/doxygen/classcaffe_1_1PythonLayer-members.html new file mode 100644 index 00000000000..c89a3b9354a --- /dev/null +++ b/doxygen/classcaffe_1_1PythonLayer-members.html @@ -0,0 +1,119 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::PythonLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::PythonLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::PythonLayer< Dtype >inlineprotectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inlineprotectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::PythonLayer< Dtype >inlineprotectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::PythonLayer< Dtype >inlinevirtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
PythonLayer(PyObject *self, const LayerParameter &param) (defined in caffe::PythonLayer< Dtype >)caffe::PythonLayer< Dtype >inline
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::PythonLayer< Dtype >inlinevirtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::PythonLayer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::PythonLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1PythonLayer.html b/doxygen/classcaffe_1_1PythonLayer.html new file mode 100644 index 00000000000..062c7dbb485 --- /dev/null +++ b/doxygen/classcaffe_1_1PythonLayer.html @@ -0,0 +1,327 @@ + + + + + + + +Caffe: caffe::PythonLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::PythonLayer< Dtype > Class Template Reference
+
+
+
+Inheritance diagram for caffe::PythonLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

PythonLayer (PyObject *self, const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual bool ShareInParallel () const
 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 const char * type () const
 Returns the layer type.
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Member Function Documentation

+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void caffe::PythonLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+inlinevirtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void caffe::PythonLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+inlinevirtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classcaffe_1_1PythonLayer.png b/doxygen/classcaffe_1_1PythonLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..6e5c18b5915c38944c3d7f8e23c3bc16cff0fbb0 GIT binary patch literal 723 zcmeAS@N?(olHy`uVBq!ia0vp^8-O@~gBeKn>GHn=QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;&xbGxlxLIc+p4LM2niH^KAM6_#l#{&yMp5`(|_OsW#ScK&VT zq&HXj_v~9*b=mg8vR;+aS3(wQDW`L99RGcpr{cewmYR|JZMWHH<#zF%nXU4&dtC#6 zaJBK_zlqjG>Na7b|7TsunbPhZv^M|1%lk|}lvKJ`otnt}+}LVDb;I_}Nw4P0tQL?C zl)J=qW7_GeIOTGN`A^^4q}<* zJH%eL=C-QJOzp1^pM1@jK4Ho1T^AGo{}leD^C9+LJoEi$e=FNmPeuwyOtLX;R6QA- z{~$GTS|iJYMdAlMqcmf^LmUAR&(+^SV=UNu~%#{n8d;GID?6~ zA`6IDvHr2^l@I-U#LsqqwKj8m`ujC(AAW84waB23ZO2cu24U3)J1*&NfB$^`#WPWMQL-;S^O%4CV0_@1&i%u#8TUZ}siG>n=|zV8^gXO1TTR&S zmvJ75S;@aV{97q!L*Cu|tqk|CeiZ(spAa6$o)90`&%^x3OIYGSFbHQ)=TmGc{KD=p XqT0OXv4RFL1u}TL`njxgN@xNA*1JqH literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1RMSPropSolver-members.html b/doxygen/classcaffe_1_1RMSPropSolver-members.html new file mode 100644 index 00000000000..d468c510d2c --- /dev/null +++ b/doxygen/classcaffe_1_1RMSPropSolver-members.html @@ -0,0 +1,143 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::RMSPropSolver< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::RMSPropSolver< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
action_request_function_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
add_callback(Callback *value) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
ApplyUpdate() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
callbacks() const (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
callbacks_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
CheckSnapshotWritePermissions() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
ClipGradients() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
ComputeUpdateValue(int param_id, Dtype rate) (defined in caffe::RMSPropSolver< Dtype >)caffe::RMSPropSolver< Dtype >protectedvirtual
constructor_sanity_check() (defined in caffe::RMSPropSolver< Dtype >)caffe::RMSPropSolver< Dtype >inlineprotected
current_step_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
DISABLE_COPY_AND_ASSIGN(RMSPropSolver) (defined in caffe::RMSPropSolver< Dtype >)caffe::RMSPropSolver< Dtype >protected
DISABLE_COPY_AND_ASSIGN(SGDSolver) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
DISABLE_COPY_AND_ASSIGN(Solver) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
DisplayOutputBlobs(const int net_id) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
GetLearningRate() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
GetRequestedAction() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
history() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >inline
history_ (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
Init(const SolverParameter &param) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
InitTestNets() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
InitTrainNet() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
iter() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
iter_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
losses_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
net() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
net_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Normalize(int param_id) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
param() const (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
param_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
PreSolve() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
Regularize(int param_id) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
requested_early_exit_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Restore(const char *resume_file) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
RestoreSolverStateFromBinaryProto(const string &state_file) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
RestoreSolverStateFromHDF5(const string &state_file) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
RMSPropSolver(const SolverParameter &param) (defined in caffe::RMSPropSolver< Dtype >)caffe::RMSPropSolver< Dtype >inlineexplicit
RMSPropSolver(const string &param_file) (defined in caffe::RMSPropSolver< Dtype >)caffe::RMSPropSolver< Dtype >inlineexplicit
root_solver_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
SetActionFunction(ActionCallback func) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
SGDSolver(const SolverParameter &param) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >inlineexplicit
SGDSolver(const string &param_file) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >inlineexplicit
smoothed_loss_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Snapshot() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
SnapshotFilename(const string extension) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
SnapshotSolverState(const string &model_filename) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
SnapshotSolverStateToBinaryProto(const string &model_filename) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
SnapshotSolverStateToHDF5(const string &model_filename) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
SnapshotToBinaryProto() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
SnapshotToHDF5() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Solve(const char *resume_file=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >virtual
Solve(const string resume_file) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
Solver(const SolverParameter &param, const Solver *root_solver=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >explicit
Solver(const string &param_file, const Solver *root_solver=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >explicit
Step(int iters) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
temp_ (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
Test(const int test_net_id=0) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
test_nets() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
test_nets_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
TestAll() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
type() constcaffe::RMSPropSolver< Dtype >inlinevirtual
update_ (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
UpdateSmoothedLoss(Dtype loss, int start_iter, int average_loss) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
~Solver() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1RMSPropSolver.html b/doxygen/classcaffe_1_1RMSPropSolver.html new file mode 100644 index 00000000000..c5e72e9033d --- /dev/null +++ b/doxygen/classcaffe_1_1RMSPropSolver.html @@ -0,0 +1,298 @@ + + + + + + + +Caffe: caffe::RMSPropSolver< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::RMSPropSolver< Dtype > Class Template Reference
+
+
+
+Inheritance diagram for caffe::RMSPropSolver< Dtype >:
+
+
+ + +caffe::SGDSolver< Dtype > +caffe::Solver< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

RMSPropSolver (const SolverParameter &param)
 
RMSPropSolver (const string &param_file)
 
+virtual const char * type () const
 Returns the solver type.
 
- Public Member Functions inherited from caffe::SGDSolver< Dtype >
SGDSolver (const SolverParameter &param)
 
SGDSolver (const string &param_file)
 
+const vector< shared_ptr< Blob< Dtype > > > & history ()
 
- Public Member Functions inherited from caffe::Solver< Dtype >
Solver (const SolverParameter &param, const Solver *root_solver=NULL)
 
Solver (const string &param_file, const Solver *root_solver=NULL)
 
+void Init (const SolverParameter &param)
 
+void InitTrainNet ()
 
+void InitTestNets ()
 
+void SetActionFunction (ActionCallback func)
 
+SolverAction::Enum GetRequestedAction ()
 
+virtual void Solve (const char *resume_file=NULL)
 
+void Solve (const string resume_file)
 
+void Step (int iters)
 
+void Restore (const char *resume_file)
 
+void Snapshot ()
 
+const SolverParameter & param () const
 
+shared_ptr< Net< Dtype > > net ()
 
+const vector< shared_ptr< Net< Dtype > > > & test_nets ()
 
+int iter ()
 
+const vector< Callback * > & callbacks () const
 
+void add_callback (Callback *value)
 
+void CheckSnapshotWritePermissions ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void ComputeUpdateValue (int param_id, Dtype rate)
 
+void constructor_sanity_check ()
 
DISABLE_COPY_AND_ASSIGN (RMSPropSolver)
 
- Protected Member Functions inherited from caffe::SGDSolver< Dtype >
+void PreSolve ()
 
+Dtype GetLearningRate ()
 
+virtual void ApplyUpdate ()
 
+virtual void Normalize (int param_id)
 
+virtual void Regularize (int param_id)
 
+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)
 
DISABLE_COPY_AND_ASSIGN (SGDSolver)
 
- Protected Member Functions inherited from caffe::Solver< Dtype >
+string SnapshotFilename (const string extension)
 
+string SnapshotToBinaryProto ()
 
+string SnapshotToHDF5 ()
 
+void TestAll ()
 
+void Test (const int test_net_id=0)
 
+void DisplayOutputBlobs (const int net_id)
 
+void UpdateSmoothedLoss (Dtype loss, int start_iter, int average_loss)
 
DISABLE_COPY_AND_ASSIGN (Solver)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::SGDSolver< Dtype >
+vector< shared_ptr< Blob< Dtype > > > history_
 
+vector< shared_ptr< Blob< Dtype > > > update_
 
+vector< shared_ptr< Blob< Dtype > > > temp_
 
- Protected Attributes inherited from caffe::Solver< Dtype >
+SolverParameter param_
 
+int iter_
 
+int current_step_
 
+shared_ptr< Net< Dtype > > net_
 
+vector< shared_ptr< Net< Dtype > > > test_nets_
 
+vector< Callback * > callbacks_
 
+vector< Dtype > losses_
 
+Dtype smoothed_loss_
 
+const Solver *const root_solver_
 
+ActionCallback action_request_function_
 
+bool requested_early_exit_
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1RMSPropSolver.png b/doxygen/classcaffe_1_1RMSPropSolver.png new file mode 100644 index 0000000000000000000000000000000000000000..d7f8b0e2de57ac255b7d74640b9adf3d696893db GIT binary patch literal 1154 zcmeAS@N?(olHy`uVBq!ia0vp^hk>|*gBeKX+O0PSQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;|gWES2Z*Exn!MLY|fpQ;)cYlQ&r|(R&1NI=_kvw?>Ex++3bzK`on8i?S{`8 zWuaj+a#dcg=rj1S!mA+FqW#tky?|5YFC^Bil&&oHjJg`w_Uneh4x^h18BVVZe~2E} zJZEqwHN$RFTC*8n_SJ8VZ3jP@*L~OYGx%b3d)kXh2PMCpKR9Eb`Z<9=j<#!zeq5XU z`N7PtqLVdi@2A6$WQ3l$5Oz`%6y=L z1iTI-5KDU!XQg?r+W+!rx_sTgV&R*9lgvWH-p%$3TJ6lUo{oojIAc-z6Lo@dv)uFAhwl;{i!+1Vo2JjEMl21uKmmDKCx%9PdK zR+M5pegDmkr8m-EJYBDQM76p0vE-dg|12efqoe*;@U8xOAye&Xbe8ngx%ss}s#fUt z9=?C2`K`BF`@V}aULTlWo%wyKj@QhR_29sc|E}sOwe<4#yI&<{_33(A?~-YLsWz#^ zMf}e+m6ubR948&qmQcyuGml4eX-Pg~O&EW}?AP29a{a%ZYZwm;Kl~Pi%gAZ*^-iBYj%P6uuPBTyH|HzAK5S2clOYdKk2pG?=DWuT69DZF~0Qtn!-{?N_TJ48AbM80Z+rvS0^fhz%o2%H ze;-)p#%q0V-gqYUQtrvE+j{;k+{f}^`!DI^?0LIa8_&4Ld*SL)$!Wdv3of!tGW-*V jrQW}HrH>gTe~DWM4f@E{@u literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1RNNLayer-members.html b/doxygen/classcaffe_1_1RNNLayer-members.html new file mode 100644 index 00000000000..0d5862d9132 --- /dev/null +++ b/doxygen/classcaffe_1_1RNNLayer-members.html @@ -0,0 +1,138 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::RNNLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::RNNLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::RecurrentLayer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::RecurrentLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inlineprotectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
cont_input_blob_ (defined in caffe::RecurrentLayer< Dtype >)caffe::RecurrentLayer< Dtype >protected
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::RecurrentLayer< Dtype >inlinevirtual
expose_hidden_caffe::RecurrentLayer< Dtype >protected
FillUnrolledNet(NetParameter *net_param) constcaffe::RNNLayer< Dtype >protectedvirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::RecurrentLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::RecurrentLayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
last_layer_index_caffe::RecurrentLayer< Dtype >protected
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::RecurrentLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::RecurrentLayer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::RecurrentLayer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
N_caffe::RecurrentLayer< Dtype >protected
output_blobs_ (defined in caffe::RecurrentLayer< Dtype >)caffe::RecurrentLayer< Dtype >protected
OutputBlobNames(vector< string > *names) constcaffe::RNNLayer< Dtype >protectedvirtual
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
recur_input_blobs_ (defined in caffe::RecurrentLayer< Dtype >)caffe::RecurrentLayer< Dtype >protected
recur_output_blobs_ (defined in caffe::RecurrentLayer< Dtype >)caffe::RecurrentLayer< Dtype >protected
RecurrentInputBlobNames(vector< string > *names) constcaffe::RNNLayer< Dtype >protectedvirtual
RecurrentInputShapes(vector< BlobShape > *shapes) constcaffe::RNNLayer< Dtype >protectedvirtual
RecurrentLayer(const LayerParameter &param) (defined in caffe::RecurrentLayer< Dtype >)caffe::RecurrentLayer< Dtype >inlineexplicit
RecurrentOutputBlobNames(vector< string > *names) constcaffe::RNNLayer< Dtype >protectedvirtual
Reset() (defined in caffe::RecurrentLayer< Dtype >)caffe::RecurrentLayer< Dtype >virtual
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::RecurrentLayer< Dtype >virtual
RNNLayer(const LayerParameter &param) (defined in caffe::RNNLayer< Dtype >)caffe::RNNLayer< Dtype >inlineexplicit
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
static_input_caffe::RecurrentLayer< Dtype >protected
T_caffe::RecurrentLayer< Dtype >protected
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::RNNLayer< Dtype >inlinevirtual
unrolled_net_caffe::RecurrentLayer< Dtype >protected
x_input_blob_ (defined in caffe::RecurrentLayer< Dtype >)caffe::RecurrentLayer< Dtype >protected
x_static_input_blob_ (defined in caffe::RecurrentLayer< Dtype >)caffe::RecurrentLayer< Dtype >protected
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1RNNLayer.html b/doxygen/classcaffe_1_1RNNLayer.html new file mode 100644 index 00000000000..13a5aa32862 --- /dev/null +++ b/doxygen/classcaffe_1_1RNNLayer.html @@ -0,0 +1,308 @@ + + + + + + + +Caffe: caffe::RNNLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::RNNLayer< Dtype > Class Template Reference
+
+
+ +

Processes time-varying inputs using a simple recurrent neural network (RNN). Implemented as a network unrolling the RNN computation in time. + More...

+ +

#include <rnn_layer.hpp>

+
+Inheritance diagram for caffe::RNNLayer< Dtype >:
+
+
+ + +caffe::RecurrentLayer< Dtype > +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

RNNLayer (const LayerParameter &param)
 
+virtual const char * type () const
 Returns the layer type.
 
- Public Member Functions inherited from caffe::RecurrentLayer< Dtype >
RecurrentLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual void Reset ()
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void FillUnrolledNet (NetParameter *net_param) const
 Fills net_param with the recurrent network architecture. Subclasses should define this – see RNNLayer and LSTMLayer for examples.
 
+virtual void RecurrentInputBlobNames (vector< string > *names) const
 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 RecurrentOutputBlobNames (vector< string > *names) const
 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 RecurrentInputShapes (vector< BlobShape > *shapes) const
 Fills shapes with the shapes of the recurrent input Blob&s. Subclasses should define this – see RNNLayer and LSTMLayer for examples.
 
+virtual void OutputBlobNames (vector< string > *names) const
 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.
 
- Protected Member Functions inherited from caffe::RecurrentLayer< Dtype >
virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::RecurrentLayer< Dtype >
+shared_ptr< Net< Dtype > > unrolled_net_
 A Net to implement the Recurrent functionality.
 
+int N_
 The number of independent streams to process simultaneously.
 
+int T_
 The number of timesteps in the layer's input, and the number of timesteps over which to backpropagate through time.
 
+bool static_input_
 Whether the layer has a "static" input copied across all timesteps.
 
+int last_layer_index_
 The last layer to run in the network. (Any later layers are losses added to force the recurrent net to do backprop.)
 
+bool expose_hidden_
 Whether the layer's hidden state at the first and last timesteps are layer inputs and outputs, respectively.
 
+vector< Blob< Dtype > *> recur_input_blobs_
 
+vector< Blob< Dtype > *> recur_output_blobs_
 
+vector< Blob< Dtype > *> output_blobs_
 
+Blob< Dtype > * x_input_blob_
 
+Blob< Dtype > * x_static_input_blob_
 
+Blob< Dtype > * cont_input_blob_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::RNNLayer< Dtype >

+ +

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 $ x_t $, computes hidden state $ h_t := \tanh[ W_{hh} h_{t_1} + W_{xh} x_t + b_h ] $, and outputs $ o_t := \tanh[ W_{ho} h_t + b_o ] $.

+

The documentation for this class was generated from the following files:
    +
  • include/caffe/layers/rnn_layer.hpp
  • +
  • src/caffe/layers/rnn_layer.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1RNNLayer.png b/doxygen/classcaffe_1_1RNNLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..030b98c4de9272a9e559a60eafce34f82ffae1ae GIT binary patch literal 1093 zcmeAS@N?(olHy`uVBq!ia0vp^2Z6YQgBeI>o~{Q;NCfzVxc>kDAIN<1=4)yHp$R}1 z7#}!rfVK0EJdn##666=m08|75S5Ji)F)%P+@pN$vsbG9N_jS={EgskD+tWY&>#vz~ zOM)}r?(*c2M7No5js+-gQJL`H==^7!Ei+Uz6I2^jj%snLXol@qoUzO`&u`MZtg6~w z;hvWo>l{DaD%)Nve{iL==c_BWO_MgM{=RG#mo9to*Zf73vgBVGMcrAmY<=TR&q;Z& z#13xj{%d%+^wXUp-pa!|^}Q>lD~mm?uID!Wx*-rV!(w&pL7T?-iw7^bZisOxc6lXc zEu4Mv-k-JuVpo3cIex*pV9L$p$zPxB4lWL2PLAS#?4DIn#sAMSVa*@g3?KVy{v3Uy zn`_;V$jrDEm!m%^W#8A@fZEz^;+{dvtsecD|9%_4;1{MESx55&->*7M`sd-P;JML@ z$+PR~$66otb2^VUoinp!!K7tBsp7qn{;^}^s zyH~fJyc?>{vi_;Hcx+$2Z^5p;DzYntM81GRZd>H~bG_MTWnx$Xw`OFit5N}JEy?x&8zKa4krkM1m$ZlbAm&|(K zXlT3Iv6^A;LTi3;Q-fu@+X`ZuFIR6+|KPc=wCfwowClo^m#e=YFq4?PH0ssnxG$fc zanziT+;!{P^(+bX-2MCbdoD-s^#BH{?E7}<^$Qr9;u_W~zhL{ZPs-zxG&m4cCM=1t z<$P8-&t2?*`&R~usKdfGa*LID{6DZr$RyS@y>Vr@h(Bb}0={5v=B#B4kFpqSfJMY? zmh;m87sm?!F5GC5CC`wzV#m*1t@nag9A=-KU-6xvp?s_B|GcJ2GgN>3Z&tm(Ou+PB zY5nJf+8nKxy5m7RFWnS(FD-7+o+~&b;#I%oG>i2del=?p^JhGJBN}Y}=^2AxILp_K ziZ|{ybIy8Sw=w$uv`xUkT_^d^b%RSLpHu0Rjb_^QT|OynH{RV8xDj;wuAk&T$AT&Q z|Jqt87F3A7Uc`2+ + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::ReLULayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::ReLULayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::ReLULayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::ReLULayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::NeuronLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::NeuronLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ReLULayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ReLULayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlinevirtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
NeuronLayer(const LayerParameter &param) (defined in caffe::NeuronLayer< Dtype >)caffe::NeuronLayer< Dtype >inlineexplicit
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
ReLULayer(const LayerParameter &param)caffe::ReLULayer< Dtype >inlineexplicit
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::NeuronLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::ReLULayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1ReLULayer.html b/doxygen/classcaffe_1_1ReLULayer.html new file mode 100644 index 00000000000..654776a9ff2 --- /dev/null +++ b/doxygen/classcaffe_1_1ReLULayer.html @@ -0,0 +1,392 @@ + + + + + + + +Caffe: caffe::ReLULayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::ReLULayer< Dtype > Class Template Reference
+
+
+ +

Rectified Linear Unit non-linearity $ y = \max(0, x) $. The simple max is fast to compute, and the function does not saturate. + More...

+ +

#include <relu_layer.hpp>

+
+Inheritance diagram for caffe::ReLULayer< Dtype >:
+
+
+ + +caffe::NeuronLayer< Dtype > +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ReLULayer (const LayerParameter &param)
 
+virtual const char * type () const
 Returns the layer type.
 
- Public Member Functions inherited from caffe::NeuronLayer< Dtype >
NeuronLayer (const LayerParameter &param)
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Computes the error gradient w.r.t. the ReLU inputs. More...
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::ReLULayer< Dtype >

+ +

Rectified Linear Unit non-linearity $ y = \max(0, x) $. The simple max is fast to compute, and the function does not saturate.

+

Constructor & Destructor Documentation

+ +

§ ReLULayer()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + +
caffe::ReLULayer< Dtype >::ReLULayer (const LayerParameter & param)
+
+inlineexplicit
+
+
Parameters
+ + +
paramprovides ReLUParameter relu_param, with ReLULayer options:
    +
  • negative_slope (optional, default 0). the value $ \nu $ by which negative values are multiplied.
  • +
+
+
+
+ +
+
+

Member Function Documentation

+ +

§ Backward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void caffe::ReLULayer< Dtype >::Backward_cpu (const vector< Blob< Dtype > *> & top,
const vector< bool > & propagate_down,
const vector< Blob< Dtype > *> & bottom 
)
+
+protectedvirtual
+
+ +

Computes the error gradient w.r.t. the ReLU inputs.

+
Parameters
+ + + + +
topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
    +
  1. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
  2. +
+
propagate_downsee Layer::Backward.
bottominput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \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. $ if propagate_down[0], by default. If a non-zero negative_slope $ \nu $ is provided, the computed gradients are $ \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. $.
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::ReLULayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+
Parameters
+ + + +
bottominput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the inputs $ x $
  2. +
+
topoutput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the computed outputs $ y = \max(0, x) $ by default. If a non-zero negative_slope $ \nu $ is provided, the computed outputs are $ y = \max(0, x) + \nu \min(0, x) $.
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/caffe/layers/relu_layer.hpp
  • +
  • src/caffe/layers/relu_layer.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1ReLULayer.png b/doxygen/classcaffe_1_1ReLULayer.png new file mode 100644 index 0000000000000000000000000000000000000000..cd9e80aa1ce1d7eaf5d80a3cfc69b023d730e6e1 GIT binary patch literal 1060 zcmeAS@N?(olHy`uVBq!ia0vp^n}N84gBeK9F4tNQq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0H+#A`hEy=VoqO@pCoLY=aC75*|CQyp zZefYavfTgEE$vZBbfbWn;*sbeuS}zfDw$fWn^k^l&rm%X?|kO;rd6*dFWDUxH~(Se zq*duHKet{;+-Uf0owVn!)%<6oBd&4i@0?q${mf=lCU-jT_HAM2H@{pp(DuBf9&7x* z?(J!l;`IAQ&hMme@9WLHy6UXzOPBdGPoHo5d1%QdD;ck|G3R$U*Y;QLwR-lT`*L&V z){OT#hjaMP{`%uk+x=6g>baU_^XixvM{drTCh|LI&hDRo8gE8i{ds3bo%Q_Oy9R}#Oks*PSDCr|%JWCBZ{QrLc>FqP!C)PJqO8gXmq~m#yE6wv$xPkYi z{qxRfE;X6XQ1gXhhL5n3z1(L<{}X>)=J8dzJzF8oP`@yN?L)W$^AGJAjDJMWF#O|6 zW2k2}ZrI->c_98E&x7?S(hijvA!hq5H8S+;%zV#Rulsro-;pRnG-(m)4$B{{5RWtuNU0@xK}*(_D$cdzc@eV<;E}D zS!HEz6ubLl>v^7?`8mJsN`tr6pNpAea%S89-5b-MJXrH7T=xFNo%1dR$j`XWo!Gaz zVtZwPWa-Ru>({II-sRo=H7#8Kitgt~pT09+UEdmobHOHX>Ttg)*0vHb)8 z8AzcT9|8)|rpQTuzNYwTF5SuUU@`lFlvxvgew@Ky<@8MbQ^^HmBlo)uKe%xQA+``c zwOQx1(aZ>jWkJx0C_VdU&!T+US3RWxar)T}yKlwz9(_CMr)h~qp4d6@D_Se2ZMVLSWhaFVo>-p=nbvhiPxftm zdwWLM+FO5`cK*qk@mgh1iru^H?-%7F567IhSo+Rjeay3r(_5Bpo-f_DG-q?vzQk=4 zSLjz+zwP;{W0z|eeIqU}<$I`J$)g+}{_vm0z@%BTCXb6$S26T{cE*gu8D;vt?R4X^iOZ{ cS^A%0O_#?B^L + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::RecurrentLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::RecurrentLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::RecurrentLayer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::RecurrentLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inlineprotectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
cont_input_blob_ (defined in caffe::RecurrentLayer< Dtype >)caffe::RecurrentLayer< Dtype >protected
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::RecurrentLayer< Dtype >inlinevirtual
expose_hidden_caffe::RecurrentLayer< Dtype >protected
FillUnrolledNet(NetParameter *net_param) const =0caffe::RecurrentLayer< Dtype >protectedpure virtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::RecurrentLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::RecurrentLayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
last_layer_index_caffe::RecurrentLayer< Dtype >protected
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::RecurrentLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::RecurrentLayer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::RecurrentLayer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
N_caffe::RecurrentLayer< Dtype >protected
output_blobs_ (defined in caffe::RecurrentLayer< Dtype >)caffe::RecurrentLayer< Dtype >protected
OutputBlobNames(vector< string > *names) const =0caffe::RecurrentLayer< Dtype >protectedpure virtual
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
recur_input_blobs_ (defined in caffe::RecurrentLayer< Dtype >)caffe::RecurrentLayer< Dtype >protected
recur_output_blobs_ (defined in caffe::RecurrentLayer< Dtype >)caffe::RecurrentLayer< Dtype >protected
RecurrentInputBlobNames(vector< string > *names) const =0caffe::RecurrentLayer< Dtype >protectedpure virtual
RecurrentInputShapes(vector< BlobShape > *shapes) const =0caffe::RecurrentLayer< Dtype >protectedpure virtual
RecurrentLayer(const LayerParameter &param) (defined in caffe::RecurrentLayer< Dtype >)caffe::RecurrentLayer< Dtype >inlineexplicit
RecurrentOutputBlobNames(vector< string > *names) const =0caffe::RecurrentLayer< Dtype >protectedpure virtual
Reset() (defined in caffe::RecurrentLayer< Dtype >)caffe::RecurrentLayer< Dtype >virtual
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::RecurrentLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
static_input_caffe::RecurrentLayer< Dtype >protected
T_caffe::RecurrentLayer< Dtype >protected
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::RecurrentLayer< Dtype >inlinevirtual
unrolled_net_caffe::RecurrentLayer< Dtype >protected
x_input_blob_ (defined in caffe::RecurrentLayer< Dtype >)caffe::RecurrentLayer< Dtype >protected
x_static_input_blob_ (defined in caffe::RecurrentLayer< Dtype >)caffe::RecurrentLayer< Dtype >protected
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1RecurrentLayer.html b/doxygen/classcaffe_1_1RecurrentLayer.html new file mode 100644 index 00000000000..c9e1454ff08 --- /dev/null +++ b/doxygen/classcaffe_1_1RecurrentLayer.html @@ -0,0 +1,594 @@ + + + + + + + +Caffe: caffe::RecurrentLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::RecurrentLayer< Dtype > Class Template Referenceabstract
+
+
+ +

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. + More...

+ +

#include <recurrent_layer.hpp>

+
+Inheritance diagram for caffe::RecurrentLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > +caffe::LSTMLayer< Dtype > +caffe::RNNLayer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

RecurrentLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual void Reset ()
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void FillUnrolledNet (NetParameter *net_param) const =0
 Fills net_param with the recurrent network architecture. Subclasses should define this – see RNNLayer and LSTMLayer for examples.
 
+virtual void RecurrentInputBlobNames (vector< string > *names) const =0
 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 RecurrentInputShapes (vector< BlobShape > *shapes) const =0
 Fills shapes with the shapes of the recurrent input Blob&s. Subclasses should define this – see RNNLayer and LSTMLayer for examples.
 
+virtual void RecurrentOutputBlobNames (vector< string > *names) const =0
 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 OutputBlobNames (vector< string > *names) const =0
 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 Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+shared_ptr< Net< Dtype > > unrolled_net_
 A Net to implement the Recurrent functionality.
 
+int N_
 The number of independent streams to process simultaneously.
 
+int T_
 The number of timesteps in the layer's input, and the number of timesteps over which to backpropagate through time.
 
+bool static_input_
 Whether the layer has a "static" input copied across all timesteps.
 
+int last_layer_index_
 The last layer to run in the network. (Any later layers are losses added to force the recurrent net to do backprop.)
 
+bool expose_hidden_
 Whether the layer's hidden state at the first and last timesteps are layer inputs and outputs, respectively.
 
+vector< Blob< Dtype > *> recur_input_blobs_
 
+vector< Blob< Dtype > *> recur_output_blobs_
 
+vector< Blob< Dtype > *> output_blobs_
 
+Blob< Dtype > * x_input_blob_
 
+Blob< Dtype > * x_static_input_blob_
 
+Blob< Dtype > * cont_input_blob_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::RecurrentLayer< Dtype >

+ +

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.

+

Member Function Documentation

+ +

§ AllowForceBackward()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + +
virtual bool caffe::RecurrentLayer< Dtype >::AllowForceBackward (const int bottom_index) const
+
+inlinevirtual
+
+ +

Return whether to allow force_backward for a given bottom blob index.

+

If AllowForceBackward(i) == false, we will ignore the force_backward setting and backpropagate to blob i only if it needs gradient information (as is done when force_backward == false).

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::RecurrentLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::RecurrentLayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+
Parameters
+ + +
bottominput Blob vector (length 2-3)
+
+
+
    +
  1. $ (T \times N \times ...) $ the time-varying input $ x $. After the first two axes, whose dimensions must correspond to the number of timesteps $ T $ and the number of independent streams $ N $, respectively, its dimensions may be arbitrary. Note that the ordering of dimensions – $ (T \times N \times ...) $, rather than $ (N \times T \times ...) $ – means that the $ N $ independent input streams must be "interleaved".
  2. +
  3. $ (T \times N) $ the sequence continuation indicators $ \delta $. These inputs should be binary (0 or 1) indicators, where $ \delta_{t,n} = 0 $ means that timestep $ t $ of stream $ n $ is the beginning of a new sequence, and hence the previous hidden state $ h_{t-1} $ is multiplied by $ \delta_t = 0 $ and has no effect on the cell's output at timestep $ t $, and a value of $ \delta_{t,n} = 1 $ means that timestep $ t $ of stream $ n $ is a continuation from the previous timestep $ t-1 $, and the previous hidden state $ h_{t-1} $ affects the updated hidden state and output.
  4. +
  5. $ (N \times ...) $ (optional) the static (non-time-varying) input $ x_{static} $. 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 $ x'_t = [x_t; x_{static}] $ – i.e., tiling the static input across the $ T $ 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 $ N $ 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.
  6. +
+
Parameters
+ + +
topoutput Blob vector (length 1)
    +
  1. $ (T \times N \times D) $ the time-varying output $ y $, where $ D $ is recurrent_param.num_output(). Refer to documentation for particular RecurrentLayer implementations (such as RNNLayer and LSTMLayer) for the definition of $ y $.
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::RecurrentLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ MaxBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::RecurrentLayer< Dtype >::MaxBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some maximum number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ MinBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::RecurrentLayer< Dtype >::MinBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some minimum number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::RecurrentLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1RecurrentLayer.png b/doxygen/classcaffe_1_1RecurrentLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..9d9dad3ce026eb83720298bf3ce5aa669b90312c GIT binary patch literal 1518 zcmeAS@N?(olHy`uVBq!ia0y~yVC(_1J2;quh+YIB+@cP(bLfb#`sYr>3jL% zDV0q9v%lXL=z2yy*qyp3y}+#dc*+_xWl#2>R+5LE-hFeqy#M=BKezv<4{Tukv!*;h z*0}b?@1tK-JgtA4Nj`45$^ZG5_&WD*o9(5f|IH5g{_L=7=G^=#f&2YZYB&l5H|IV{ z{UOC(QnR|}-96LvfVpcUJ9=lt{ScNcn|;&l`^z6elHRXtEtl+9y|Z!4CS#ur+qXsO z9+!;d-}mrJs-3zoIr+jKk}0q0Jjt%`it8y0|6_^bnvc&UdrexWnCcNE5Y(o^3THfwH1g7X zdX7Pb;r12=&IA9|QyGpd$i2+wz!Ajez!Rr;iOqop$dU+Rbr1m3G{y(~W-ZIi<2?|( zquNN5S%Cu?$15zZ6y5(Zb-jIq@}Ap_H%{L;c`xex^pART{uX5P)#)a0t!`kI(@c(- zaCctDukzjEuWV*sD0~!W+E!ot^Twpti77W2>dba;U-#Q?OZLhBr#Fp`9eLYcDI4}f zXPMu-f?Z#q?z?w9>zRj4$_-Hb&DTCWUq`Hb&g_?S+I;KEjKo5}U0qiE8W@ejvi{R9 z`tGpwe&yoJ6`s07t*2+>oo#p4|1p)kwobPDW-x>Q!P5~@+b>%uZ#?$q+1!%_)4ff< zB&N>@*ne zytB<>xu+O7oXEh3ey*GnbZX|7rBjO3{JoX}v*Jc0m6yks@OW}Lotm&j0nT_c;i8G` zx|~02e}8?xe%dt#&s$4Y=gykCWUtKBjWhi08`f3G{99W2W>O%#<@CVncmKXx%J?O1 zmG`{$U_sB<5;xCx-70UNuKyG<+3?5P@Y?_Prk_ihQFtcxifH<*71bxqE`Pn;zAyev zfJ$a-uB7$lmsN9XcWU*EN~XztJ-la^;jfZi3#2w&3Yq$B(uRfa&bE6SonO|o_hrqb zLPt6IlpmMx8{HLp%rPzHhgppA=GteIKbYDr+30;N%Lug#Yale=DqOuBYs%0_ir?Zfpub^1*uCw=L^X*lJl ztcvICoYNDQ)E}*^j8T7_!55f1XU6eVBfjSXA;)G`##H!tUb2j-29lZZ_<%F^qyQsu ft|7R%_`@ilUlFtauG~am;mqLa>gTe~DWM4f-I9_X literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1ReductionLayer-members.html b/doxygen/classcaffe_1_1ReductionLayer-members.html new file mode 100644 index 00000000000..d57b7104632 --- /dev/null +++ b/doxygen/classcaffe_1_1ReductionLayer-members.html @@ -0,0 +1,125 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::ReductionLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::ReductionLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
axis_caffe::ReductionLayer< Dtype >protected
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::ReductionLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::ReductionLayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
coeff_caffe::ReductionLayer< Dtype >protected
dim_caffe::ReductionLayer< Dtype >protected
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::ReductionLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::ReductionLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ReductionLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ReductionLayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ReductionLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
num_caffe::ReductionLayer< Dtype >protected
op_caffe::ReductionLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
ReductionLayer(const LayerParameter &param) (defined in caffe::ReductionLayer< Dtype >)caffe::ReductionLayer< Dtype >inlineexplicit
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ReductionLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
sum_multiplier_caffe::ReductionLayer< Dtype >protected
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::ReductionLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1ReductionLayer.html b/doxygen/classcaffe_1_1ReductionLayer.html new file mode 100644 index 00000000000..446c7b29aa0 --- /dev/null +++ b/doxygen/classcaffe_1_1ReductionLayer.html @@ -0,0 +1,428 @@ + + + + + + + +Caffe: caffe::ReductionLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::ReductionLayer< Dtype > Class Template Reference
+
+
+ +

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. + More...

+ +

#include <reduction_layer.hpp>

+
+Inheritance diagram for caffe::ReductionLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ReductionLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+ReductionParameter_ReductionOp op_
 the reduction operation performed by the layer
 
+Dtype coeff_
 a scalar coefficient applied to all outputs
 
+int axis_
 the index of the first input axis to reduce
 
+int num_
 the number of reductions performed
 
+int dim_
 the input size of each reduction
 
+Blob< Dtype > sum_multiplier_
 a helper Blob used for summation (op_ == SUM)
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::ReductionLayer< Dtype >

+ +

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.

+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::ReductionLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::ReductionLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::ReductionLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::ReductionLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1ReductionLayer.png b/doxygen/classcaffe_1_1ReductionLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..efdf662a2e121897aaa533b93ea19f1b735d8f1c GIT binary patch literal 748 zcmeAS@N?(olHy`uVBq!ia0vp^2Z1<%gBeIpU-r-gNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~ReQQPhEy=VoqMt9u>y}P|8?V^|NZY- z9CKru-1=@=i=@@Q(uGb1DvJ9z<=!^idP5~MNtek}YPG9^XYyC!CIP;kmY!LmH|lqV zdtU0TbJ&m{opaYcpj6p&ZkDozbD4|%k-|BpEFbNcp9}cCSZ?uQUz5A+Y3iO?A;Jf@ zcGu2KoUrxxoFQl;tkN{prk}zf=)kQn|4$cXlL$ z{8i?JEMNZ*6=(VkY!3=26t(>14AWBBeo@WuKpYm5xPt0?#Lkjc@AU7iPbsDId+^VI9hH;t3NZ{u0(Kh0C$ z_3GFS)h9gLdZ10UYmKo}`{Ffwe zRS6!@UzvQoE&nz{Q(VJ(mdK II;Vst0LU~>Hvj+t literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1ReshapeLayer-members.html b/doxygen/classcaffe_1_1ReshapeLayer-members.html new file mode 100644 index 00000000000..cddcd8a8bd8 --- /dev/null +++ b/doxygen/classcaffe_1_1ReshapeLayer-members.html @@ -0,0 +1,122 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::ReshapeLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::ReshapeLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::ReshapeLayer< Dtype >inlineprotectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::ReshapeLayer< Dtype >inlineprotectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
constant_count_caffe::ReshapeLayer< Dtype >protected
copy_axes_caffe::ReshapeLayer< Dtype >protected
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::ReshapeLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::ReshapeLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ReshapeLayer< Dtype >inlineprotectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ReshapeLayer< Dtype >inlineprotectedvirtual
inferred_axis_caffe::ReshapeLayer< Dtype >protected
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ReshapeLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ReshapeLayer< Dtype >virtual
ReshapeLayer(const LayerParameter &param) (defined in caffe::ReshapeLayer< Dtype >)caffe::ReshapeLayer< Dtype >inlineexplicit
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::ReshapeLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1ReshapeLayer.html b/doxygen/classcaffe_1_1ReshapeLayer.html new file mode 100644 index 00000000000..a099c4baf23 --- /dev/null +++ b/doxygen/classcaffe_1_1ReshapeLayer.html @@ -0,0 +1,405 @@ + + + + + + + +Caffe: caffe::ReshapeLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::ReshapeLayer< Dtype > Class Template Reference
+
+
+
+Inheritance diagram for caffe::ReshapeLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ReshapeLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+vector< int > copy_axes_
 vector of axes indices whose dimensions we'll copy from the bottom
 
+int inferred_axis_
 the index of the axis whose dimension we infer, or -1 if none
 
+int constant_count_
 the product of the "constant" output dimensions
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::ReshapeLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::ReshapeLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::ReshapeLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::ReshapeLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1ReshapeLayer.png b/doxygen/classcaffe_1_1ReshapeLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..1fd5cc49ae37b3a2ef2a2b496fe933b29895e2b8 GIT binary patch literal 735 zcmeAS@N?(olHy`uVBq!ia0vp^yMQ==gBeK9= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0@;qG}Ln;{G&b^p-Sb@it-~7_Q|C6ul zsoYR0S+F*2;*Fx)PQ8{pE#7J0-j-Y3{ErMDA%<}a1< z$(^z+(Yi;ac{v2@Ba5zYiR-I4}i zfHh=ny&!-7eZSsbj)Lo}t>ufJp1HSsRpY-odzP-Ie+8V zohtTD-&s=crlthXw>tB+=Xb_^^Y&jk4ZF{=q;IJ;K5X+cxhQm|rG3>*D{u&I+w}7T z*It#C7ivwd41^00?mqkS(zW!cg}+5b|FG5`H*SyKbbWHEWW?@s6HmVk3$I<^v|TRr z?L&+8Tz}8a+I4Mi@OHMl&(2iuWXjx;=k)iXX>9(rU!r@!e4JY zEKz;xp_#SM%-=t^pFVeLQ=9p%@|UkuKkwsX{!qTx&ul~J@%~_yUm8E3FW{eid=axt lCN#)i-~1ZvmFZT?>|v|EYW~)V>w&3}!PC{xWt~$(697flWj6o- literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1SGDSolver-members.html b/doxygen/classcaffe_1_1SGDSolver-members.html new file mode 100644 index 00000000000..fdc9837a323 --- /dev/null +++ b/doxygen/classcaffe_1_1SGDSolver-members.html @@ -0,0 +1,139 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::SGDSolver< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::SGDSolver< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
action_request_function_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
add_callback(Callback *value) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
ApplyUpdate() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
callbacks() const (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
callbacks_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
CheckSnapshotWritePermissions() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
ClipGradients() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
ComputeUpdateValue(int param_id, Dtype rate) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
current_step_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
DISABLE_COPY_AND_ASSIGN(SGDSolver) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
DISABLE_COPY_AND_ASSIGN(Solver) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
DisplayOutputBlobs(const int net_id) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
GetLearningRate() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
GetRequestedAction() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
history() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >inline
history_ (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
Init(const SolverParameter &param) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
InitTestNets() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
InitTrainNet() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
iter() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
iter_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
losses_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
net() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
net_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Normalize(int param_id) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
param() const (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
param_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
PreSolve() (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
Regularize(int param_id) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
requested_early_exit_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Restore(const char *resume_file) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
RestoreSolverStateFromBinaryProto(const string &state_file) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
RestoreSolverStateFromHDF5(const string &state_file) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
root_solver_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
SetActionFunction(ActionCallback func) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
SGDSolver(const SolverParameter &param) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >inlineexplicit
SGDSolver(const string &param_file) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >inlineexplicit
smoothed_loss_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Snapshot() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
SnapshotFilename(const string extension) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
SnapshotSolverState(const string &model_filename) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
SnapshotSolverStateToBinaryProto(const string &model_filename) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
SnapshotSolverStateToHDF5(const string &model_filename) (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protectedvirtual
SnapshotToBinaryProto() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
SnapshotToHDF5() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Solve(const char *resume_file=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >virtual
Solve(const string resume_file) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
Solver(const SolverParameter &param, const Solver *root_solver=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >explicit
Solver(const string &param_file, const Solver *root_solver=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >explicit
Step(int iters) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
temp_ (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
Test(const int test_net_id=0) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
test_nets() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
test_nets_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
TestAll() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
type() constcaffe::SGDSolver< Dtype >inlinevirtual
update_ (defined in caffe::SGDSolver< Dtype >)caffe::SGDSolver< Dtype >protected
UpdateSmoothedLoss(Dtype loss, int start_iter, int average_loss) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
~Solver() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1SGDSolver.html b/doxygen/classcaffe_1_1SGDSolver.html new file mode 100644 index 00000000000..ddce89e5eff --- /dev/null +++ b/doxygen/classcaffe_1_1SGDSolver.html @@ -0,0 +1,298 @@ + + + + + + + +Caffe: caffe::SGDSolver< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::SGDSolver< Dtype > Class Template Reference
+
+
+ +

Optimizes the parameters of a Net using stochastic gradient descent (SGD) with momentum. + More...

+ +

#include <sgd_solvers.hpp>

+
+Inheritance diagram for caffe::SGDSolver< Dtype >:
+
+
+ + +caffe::Solver< Dtype > +caffe::AdaDeltaSolver< Dtype > +caffe::AdaGradSolver< Dtype > +caffe::AdamSolver< Dtype > +caffe::NesterovSolver< Dtype > +caffe::RMSPropSolver< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SGDSolver (const SolverParameter &param)
 
SGDSolver (const string &param_file)
 
+virtual const char * type () const
 Returns the solver type.
 
+const vector< shared_ptr< Blob< Dtype > > > & history ()
 
- Public Member Functions inherited from caffe::Solver< Dtype >
Solver (const SolverParameter &param, const Solver *root_solver=NULL)
 
Solver (const string &param_file, const Solver *root_solver=NULL)
 
+void Init (const SolverParameter &param)
 
+void InitTrainNet ()
 
+void InitTestNets ()
 
+void SetActionFunction (ActionCallback func)
 
+SolverAction::Enum GetRequestedAction ()
 
+virtual void Solve (const char *resume_file=NULL)
 
+void Solve (const string resume_file)
 
+void Step (int iters)
 
+void Restore (const char *resume_file)
 
+void Snapshot ()
 
+const SolverParameter & param () const
 
+shared_ptr< Net< Dtype > > net ()
 
+const vector< shared_ptr< Net< Dtype > > > & test_nets ()
 
+int iter ()
 
+const vector< Callback * > & callbacks () const
 
+void add_callback (Callback *value)
 
+void CheckSnapshotWritePermissions ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+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)
 
DISABLE_COPY_AND_ASSIGN (SGDSolver)
 
- Protected Member Functions inherited from caffe::Solver< Dtype >
+string SnapshotFilename (const string extension)
 
+string SnapshotToBinaryProto ()
 
+string SnapshotToHDF5 ()
 
+void TestAll ()
 
+void Test (const int test_net_id=0)
 
+void DisplayOutputBlobs (const int net_id)
 
+void UpdateSmoothedLoss (Dtype loss, int start_iter, int average_loss)
 
DISABLE_COPY_AND_ASSIGN (Solver)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+vector< shared_ptr< Blob< Dtype > > > history_
 
+vector< shared_ptr< Blob< Dtype > > > update_
 
+vector< shared_ptr< Blob< Dtype > > > temp_
 
- Protected Attributes inherited from caffe::Solver< Dtype >
+SolverParameter param_
 
+int iter_
 
+int current_step_
 
+shared_ptr< Net< Dtype > > net_
 
+vector< shared_ptr< Net< Dtype > > > test_nets_
 
+vector< Callback * > callbacks_
 
+vector< Dtype > losses_
 
+Dtype smoothed_loss_
 
+const Solver *const root_solver_
 
+ActionCallback action_request_function_
 
+bool requested_early_exit_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::SGDSolver< Dtype >

+ +

Optimizes the parameters of a Net using stochastic gradient descent (SGD) with momentum.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1SGDSolver.png b/doxygen/classcaffe_1_1SGDSolver.png new file mode 100644 index 0000000000000000000000000000000000000000..c339d83987fa94808623701b45578304794b1ad9 GIT binary patch literal 2486 zcmd5;X;4#H77j!)3bKu|6$S)atGmHOi3$S27ErJSEa0(8K%j#iKo|s(BoIVVpp~sH zK!eCkJA(a?MbZ$KEVQ7sY!TB48b|~r$QmIeF@%tL$<)lBu9>R&*RSe*_uPBFd+)jD zp6}HwIO}(6=MIYn;F0 zka-pUslkBcK;x1i+$|{_vR07VTRu)c2Wlq|@=_Ml!|5l6@jrui?3qEbG z*Ako)7#(uym3E0N+)5o47D-n9Bp`NDcBe^K(w3oEp68_fo#)0Q=Q!heK189Fk-4s?{Ncl=wsXdi2u2k zgddgcAYDl}Z{xSqDZf}G z6WN(lxPMhtcPF2XV2;(QOD>$i+aI#r%Bhx#$$Waki}}Jzp{BUbCi7bZa(59ekvEo!Rgl$)L> zc@!vJ0iIkv;$rPtKd+un@49B(uA9+Vma^+8_> zwPx;Ty8(xa;1z76k0{coqZ{dNUe9i~NBG z5H#|+3qgSl0H7@Z06Ih+sAEH`1LHl7Yam!AWjoz}3`*M~2`nb1{34Y*Gsr{M#itA~ z-ICtnN(^$t3^Im4$iuLhPVBCQ+4+@`zWaWojbxR?HYm=qU+z}XKWHDGAbyy#OcWGd zP9d_|sJQ-UKJ%^7WYsA2#awN(wnC)diL07#55rC=^J0|e-B{uGmdrPn7fwAMNH6dI z-5C`(Xiw_p&h`=*>?dZm_yxQ)BKT3EvxG!u5pmV1*;K2+<3eu#2=PXEk>oXxXL!IL z<535OHv=W8oA;7AO8a2iES`w&WEs|(FVP$`pB@sEsZs2zfQxvl9{cRQ2lhNZ3U_g8 zqXZKosz7~D;fm+h`L-#+&anGo0!Oyudi3Dg7R2n;(AT9c5FMwz*);^3OE`x7TGdvz8`_6^M}(5CH~Yzpp1s7XDOG^&Vms=Sjr z%pu(vPwcSh-;fL~u4mqz8DeLMX*5^qCiiJW87ckdDZYDtlQh$f9h|O=#FLsCl!h0m z7bKSC>y#v>d!ewS>HaqQ=@cf9m4;>W8Mwa)f#l_cgZN-06JCf*`9iE{paGTJzR`Md z8;A3HR#_W^tC+rU;p56?6+(PhxVJvC?Yox9jq~^pS_FLq*qX%KI9r;;5QK-elGt=) zvV#lH=$)U)9_P!I=FRg(Y~#3xmhL5w`W2k#@xNzZx~VU+@(T5CewtX%P*wGHlgEZR-w_v; zwFzmXie%2GJ!S1jrIq_lvMH^HCc=`&Sqn=4-E;HG{t>ak=K8qg0@JB!To;waZpl(& za1k%EADD#mVw;1^E5CLt5MV@4gDpgO0?Y>U?jgs0fITdErOs$Y3|PuWJCdn4YvmZ zhiz6^V7&FAPDr_S8u>m~K)Po829{`=XJ@#W!r!uY3$5T^NDBqIq1U0GESQg%pJ&5~ H^Vj|fqTa-G literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1SPPLayer-members.html b/doxygen/classcaffe_1_1SPPLayer-members.html new file mode 100644 index 00000000000..a37a9a1c8f5 --- /dev/null +++ b/doxygen/classcaffe_1_1SPPLayer-members.html @@ -0,0 +1,141 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::SPPLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::SPPLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::SPPLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inlineprotectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
bottom_h_ (defined in caffe::SPPLayer< Dtype >)caffe::SPPLayer< Dtype >protected
bottom_w_ (defined in caffe::SPPLayer< Dtype >)caffe::SPPLayer< Dtype >protected
channels_ (defined in caffe::SPPLayer< Dtype >)caffe::SPPLayer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
concat_bottom_vec_caffe::SPPLayer< Dtype >protected
concat_layer_caffe::SPPLayer< Dtype >protected
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::SPPLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::SPPLayer< Dtype >inlinevirtual
flatten_layers_caffe::SPPLayer< Dtype >protected
flatten_outputs_caffe::SPPLayer< Dtype >protected
flatten_top_vecs_caffe::SPPLayer< Dtype >protected
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::SPPLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
GetPoolingParam(const int pyramid_level, const int bottom_h, const int bottom_w, const SPPParameter spp_param) (defined in caffe::SPPLayer< Dtype >)caffe::SPPLayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
kernel_h_ (defined in caffe::SPPLayer< Dtype >)caffe::SPPLayer< Dtype >protected
kernel_w_ (defined in caffe::SPPLayer< Dtype >)caffe::SPPLayer< Dtype >protected
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::SPPLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
num_ (defined in caffe::SPPLayer< Dtype >)caffe::SPPLayer< Dtype >protected
pad_h_ (defined in caffe::SPPLayer< Dtype >)caffe::SPPLayer< Dtype >protected
pad_w_ (defined in caffe::SPPLayer< Dtype >)caffe::SPPLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
pooling_bottom_vecs_caffe::SPPLayer< Dtype >protected
pooling_layers_caffe::SPPLayer< Dtype >protected
pooling_outputs_caffe::SPPLayer< Dtype >protected
pooling_top_vecs_caffe::SPPLayer< Dtype >protected
pyramid_height_ (defined in caffe::SPPLayer< Dtype >)caffe::SPPLayer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::SPPLayer< Dtype >virtual
reshaped_first_time_ (defined in caffe::SPPLayer< Dtype >)caffe::SPPLayer< Dtype >protected
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
split_layer_caffe::SPPLayer< Dtype >protected
split_top_vec_caffe::SPPLayer< Dtype >protected
SPPLayer(const LayerParameter &param) (defined in caffe::SPPLayer< Dtype >)caffe::SPPLayer< Dtype >inlineexplicit
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::SPPLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1SPPLayer.html b/doxygen/classcaffe_1_1SPPLayer.html new file mode 100644 index 00000000000..a47a9443141 --- /dev/null +++ b/doxygen/classcaffe_1_1SPPLayer.html @@ -0,0 +1,480 @@ + + + + + + + +Caffe: caffe::SPPLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::SPPLayer< Dtype > Class Template Reference
+
+
+ +

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. + More...

+ +

#include <spp_layer.hpp>

+
+Inheritance diagram for caffe::SPPLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SPPLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual LayerParameter GetPoolingParam (const int pyramid_level, const int bottom_h, const int bottom_w, const SPPParameter spp_param)
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+int pyramid_height_
 
+int bottom_h_
 
+int bottom_w_
 
+int num_
 
+int channels_
 
+int kernel_h_
 
+int kernel_w_
 
+int pad_h_
 
+int pad_w_
 
+bool reshaped_first_time_
 
+shared_ptr< SplitLayer< Dtype > > split_layer_
 the internal Split layer that feeds the pooling layers
 
+vector< Blob< Dtype > * > split_top_vec_
 top vector holder used in call to the underlying SplitLayer::Forward
 
+vector< vector< Blob< Dtype > * > * > pooling_bottom_vecs_
 bottom vector holder used in call to the underlying PoolingLayer::Forward
 
+vector< shared_ptr< PoolingLayer< Dtype > > > pooling_layers_
 the internal Pooling layers of different kernel sizes
 
+vector< vector< Blob< Dtype > * > * > pooling_top_vecs_
 top vector holders used in call to the underlying PoolingLayer::Forward
 
+vector< Blob< Dtype > * > pooling_outputs_
 pooling_outputs stores the outputs of the PoolingLayers
 
+vector< FlattenLayer< Dtype > * > flatten_layers_
 the internal Flatten layers that the Pooling layers feed into
 
+vector< vector< Blob< Dtype > * > * > flatten_top_vecs_
 top vector holders used in call to the underlying FlattenLayer::Forward
 
+vector< Blob< Dtype > * > flatten_outputs_
 flatten_outputs stores the outputs of the FlattenLayers
 
+vector< Blob< Dtype > * > concat_bottom_vec_
 bottom vector holder used in call to the underlying ConcatLayer::Forward
 
+shared_ptr< ConcatLayer< Dtype > > concat_layer_
 the internal Concat layers that the Flatten layers feed into
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::SPPLayer< Dtype >

+ +

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.

+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::SPPLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::SPPLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::SPPLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::SPPLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/caffe/layers/spp_layer.hpp
  • +
  • src/caffe/layers/spp_layer.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1SPPLayer.png b/doxygen/classcaffe_1_1SPPLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..264a6896b3565b9178ea4fc56849fd92ec2e0d2b GIT binary patch literal 695 zcmeAS@N?(olHy`uVBq!ia0vp^3xPO*gBeJ=IX<-jQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;e ze4k!>TK1)d+dtD~dC$(O&Rp&t@oz1MzR#Sinh)k(Sid7-kIEgcJ4-g~u$URqy=$|U z(`ji)4pxl zt8>!ksh!Tgq`f+x{9hj|tF9>D-}yoF!EsJ`<~qB!NnhM&wM-JZtTJWEjJTH5n{<@9 zAFTbwBoTF3xUROh&%)**cR|6CkDTfH%r2&!j7hUv7=Zq6n4zZV;4@i3VVNg~z-1Md zj!Yq@BPK}F|J)Bv36hFZX=sFL`pOZn`$czw&HcGs%lFGNzSGj*wRe^CjXM_Bd3_A! zB^PYf&$!=S^u22S<0o^!d+^_OwhWO=ot^ux{Bmg$2g7d}KE7=0885fJ6iqySc;7ME z^S|zBpJKmu^ym+LKP{*5dEuou>=xhu;PWCpq(}WwZusO?T3^gof1NQs?8iB0*9_s% zx1}j(gtsYOcr(Q~G4k=JQbFhBs;nJlJiAMOcsp&rbv-e)YCS02G^T{i{Jmk~-8*}q zRzJU`{XOyK<2ZfhJ)ZnF_jc_5-+%}?hWsl~k8im*O>?QqhJTE&rz!<{>Py-IQyGJ& LtDnm{r-UW|6E{02 literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1ScaleLayer-members.html b/doxygen/classcaffe_1_1ScaleLayer-members.html new file mode 100644 index 00000000000..89c27d61778 --- /dev/null +++ b/doxygen/classcaffe_1_1ScaleLayer-members.html @@ -0,0 +1,130 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::ScaleLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::ScaleLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
axis_ (defined in caffe::ScaleLayer< Dtype >)caffe::ScaleLayer< Dtype >protected
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::ScaleLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::ScaleLayer< Dtype >protectedvirtual
bias_bottom_vec_ (defined in caffe::ScaleLayer< Dtype >)caffe::ScaleLayer< Dtype >protected
bias_layer_ (defined in caffe::ScaleLayer< Dtype >)caffe::ScaleLayer< Dtype >protected
bias_param_id_ (defined in caffe::ScaleLayer< Dtype >)caffe::ScaleLayer< Dtype >protected
bias_propagate_down_ (defined in caffe::ScaleLayer< Dtype >)caffe::ScaleLayer< Dtype >protected
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::ScaleLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ScaleLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ScaleLayer< Dtype >protectedvirtual
inner_dim_ (defined in caffe::ScaleLayer< Dtype >)caffe::ScaleLayer< Dtype >protected
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ScaleLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::ScaleLayer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::ScaleLayer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
outer_dim_ (defined in caffe::ScaleLayer< Dtype >)caffe::ScaleLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ScaleLayer< Dtype >virtual
scale_dim_ (defined in caffe::ScaleLayer< Dtype >)caffe::ScaleLayer< Dtype >protected
ScaleLayer(const LayerParameter &param) (defined in caffe::ScaleLayer< Dtype >)caffe::ScaleLayer< Dtype >inlineexplicit
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
sum_multiplier_ (defined in caffe::ScaleLayer< Dtype >)caffe::ScaleLayer< Dtype >protected
sum_result_ (defined in caffe::ScaleLayer< Dtype >)caffe::ScaleLayer< Dtype >protected
temp_ (defined in caffe::ScaleLayer< Dtype >)caffe::ScaleLayer< Dtype >protected
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::ScaleLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1ScaleLayer.html b/doxygen/classcaffe_1_1ScaleLayer.html new file mode 100644 index 00000000000..af05d9212ee --- /dev/null +++ b/doxygen/classcaffe_1_1ScaleLayer.html @@ -0,0 +1,522 @@ + + + + + + + +Caffe: caffe::ScaleLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::ScaleLayer< Dtype > Class Template Reference
+
+
+ +

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. Note: for efficiency and convenience, this layer can additionally perform a "broadcast" sum too when bias_term: true is set. + More...

+ +

#include <scale_layer.hpp>

+
+Inheritance diagram for caffe::ScaleLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ScaleLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+shared_ptr< Layer< Dtype > > bias_layer_
 
+vector< Blob< Dtype > * > bias_bottom_vec_
 
+vector< bool > bias_propagate_down_
 
+int bias_param_id_
 
+Blob< Dtype > sum_multiplier_
 
+Blob< Dtype > sum_result_
 
+Blob< Dtype > temp_
 
+int axis_
 
+int outer_dim_
 
+int scale_dim_
 
+int inner_dim_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::ScaleLayer< Dtype >

+ +

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. Note: for efficiency and convenience, this layer can additionally perform a "broadcast" sum too when bias_term: true is set.

+

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).

+

Member Function Documentation

+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::ScaleLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::ScaleLayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+

In the below shape specifications, $ i $ 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).

+
Parameters
+ + + +
bottominput Blob vector (length 2)
    +
  1. $ (d_0 \times ... \times d_i \times ... \times d_j \times ... \times d_n) $ the first factor $ x $
  2. +
  3. $ (d_i \times ... \times d_j) $ the second factor $ y $
  4. +
+
topoutput Blob vector (length 1)
    +
  1. $ (d_0 \times ... \times d_i \times ... \times d_j \times ... \times d_n) $ the product $ z = x y $ computed after "broadcasting" y. Equivalent to tiling $ y $ to have the same shape as $ x $, then computing the elementwise product.
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::ScaleLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ MaxBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::ScaleLayer< Dtype >::MaxBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some maximum number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ MinBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::ScaleLayer< Dtype >::MinBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some minimum number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::ScaleLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1ScaleLayer.png b/doxygen/classcaffe_1_1ScaleLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..1909f36f5dc54fbe0d9c432a077d10b6c71c5029 GIT binary patch literal 716 zcmeAS@N?(olHy`uVBq!ia0vp^D}gwGgBeJMPFs2gNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~MSHq9hEy=VoqMtGwE~X|zwpZc|4(k$ z^xWW?aX4EtS*kFPd?77vCALNnhN2FDcLZ zo8ERi<@U~nvgs+rckeJuGm{Q zzwJ{gp89#qk*=4up07fVd;V;`-{5d5?!x+sWzBW^%O`#5p0#9>$ZAh5&y7`+^iFT; zQD`WzWoWx#u%!RE#)`ue>>Sx0W!p=>**R=c({xxvEdFPe>7~i5D0F~f))Iz|Ae=SP zF8ZzNf|&JuEO$cFcHOhwUVJ>5_fqMnlE+pb{5@x%W{6oa;obTfn}5!!@68qK&%ZV+ z+i1v`RhHrCv;uO zy}$YD21ra&FG@^w)KMGS6Kj z*A?bW`@CgM>H6=CO;-hf9?L(VKj~XjUGEm@FV&W;99L9WJFbFo)vaYyE;0OKzih3- VT=^uv7?|`JJYD@<);T3K0RTVAQ3(J5 literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer-members.html b/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer-members.html new file mode 100644 index 00000000000..dbd8e7adc77 --- /dev/null +++ b/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer-members.html @@ -0,0 +1,131 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::SigmoidCrossEntropyLossLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::SigmoidCrossEntropyLossLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::LossLayer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::LossLayer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::SigmoidCrossEntropyLossLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::SigmoidCrossEntropyLossLayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::LossLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::LossLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::SigmoidCrossEntropyLossLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::SigmoidCrossEntropyLossLayer< Dtype >protectedvirtual
get_normalizer(LossParameter_NormalizationMode normalization_mode, int valid_count)caffe::SigmoidCrossEntropyLossLayer< Dtype >protectedvirtual
has_ignore_label_caffe::SigmoidCrossEntropyLossLayer< Dtype >protected
ignore_label_caffe::SigmoidCrossEntropyLossLayer< Dtype >protected
inner_num_ (defined in caffe::SigmoidCrossEntropyLossLayer< Dtype >)caffe::SigmoidCrossEntropyLossLayer< Dtype >protected
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::SigmoidCrossEntropyLossLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
LossLayer(const LayerParameter &param) (defined in caffe::LossLayer< Dtype >)caffe::LossLayer< Dtype >inlineexplicit
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
normalization_caffe::SigmoidCrossEntropyLossLayer< Dtype >protected
normalizer_ (defined in caffe::SigmoidCrossEntropyLossLayer< Dtype >)caffe::SigmoidCrossEntropyLossLayer< Dtype >protected
outer_num_ (defined in caffe::SigmoidCrossEntropyLossLayer< Dtype >)caffe::SigmoidCrossEntropyLossLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::SigmoidCrossEntropyLossLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
sigmoid_bottom_vec_caffe::SigmoidCrossEntropyLossLayer< Dtype >protected
sigmoid_layer_caffe::SigmoidCrossEntropyLossLayer< Dtype >protected
sigmoid_output_caffe::SigmoidCrossEntropyLossLayer< Dtype >protected
sigmoid_top_vec_caffe::SigmoidCrossEntropyLossLayer< Dtype >protected
SigmoidCrossEntropyLossLayer(const LayerParameter &param) (defined in caffe::SigmoidCrossEntropyLossLayer< Dtype >)caffe::SigmoidCrossEntropyLossLayer< Dtype >inlineexplicit
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::SigmoidCrossEntropyLossLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer.html b/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer.html new file mode 100644 index 00000000000..4637913aa37 --- /dev/null +++ b/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer.html @@ -0,0 +1,556 @@ + + + + + + + +Caffe: caffe::SigmoidCrossEntropyLossLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::SigmoidCrossEntropyLossLayer< Dtype > Class Template Reference
+
+
+ +

Computes the cross-entropy (logistic) loss $ 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] $, often used for predicting targets interpreted as probabilities. + More...

+ +

#include <sigmoid_cross_entropy_loss_layer.hpp>

+
+Inheritance diagram for caffe::SigmoidCrossEntropyLossLayer< Dtype >:
+
+
+ + +caffe::LossLayer< Dtype > +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SigmoidCrossEntropyLossLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
- Public Member Functions inherited from caffe::LossLayer< Dtype >
LossLayer (const LayerParameter &param)
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
+virtual bool AutoTopBlobs () const
 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 int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Computes the cross-entropy (logistic) loss $ 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] $, often used for predicting targets interpreted as probabilities. More...
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Computes the sigmoid cross-entropy loss error gradient w.r.t. the predictions. More...
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
virtual Dtype get_normalizer (LossParameter_NormalizationMode normalization_mode, int valid_count)
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+shared_ptr< SigmoidLayer< Dtype > > sigmoid_layer_
 The internal SigmoidLayer used to map predictions to probabilities.
 
+shared_ptr< Blob< Dtype > > sigmoid_output_
 sigmoid_output stores the output of the SigmoidLayer.
 
+vector< Blob< Dtype > * > sigmoid_bottom_vec_
 bottom vector holder to call the underlying SigmoidLayer::Forward
 
+vector< Blob< Dtype > * > sigmoid_top_vec_
 top vector holder to call the underlying SigmoidLayer::Forward
 
+bool has_ignore_label_
 Whether to ignore instances with a certain label.
 
+int ignore_label_
 The label indicating that an instance should be ignored.
 
+LossParameter_NormalizationMode normalization_
 How to normalize the loss.
 
+Dtype normalizer_
 
+int outer_num_
 
+int inner_num_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::SigmoidCrossEntropyLossLayer< Dtype >

+ +

Computes the cross-entropy (logistic) loss $ 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] $, 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.

+
Parameters
+ + + +
bottominput Blob vector (length 2)
    +
  1. $ (N \times C \times H \times W) $ the scores $ x \in [-\infty, +\infty]$, which this layer maps to probability predictions $ \hat{p}_n = \sigma(x_n) \in [0, 1] $ using the sigmoid function $ \sigma(.) $ (see SigmoidLayer).
  2. +
  3. $ (N \times C \times H \times W) $ the targets $ y \in [0, 1] $
  4. +
+
topoutput Blob vector (length 1)
    +
  1. $ (1 \times 1 \times 1 \times 1) $ the computed cross-entropy loss: $ 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] $
  2. +
+
+
+
+

Member Function Documentation

+ +

§ Backward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void caffe::SigmoidCrossEntropyLossLayer< Dtype >::Backward_cpu (const vector< Blob< Dtype > *> & top,
const vector< bool > & propagate_down,
const vector< Blob< Dtype > *> & bottom 
)
+
+protectedvirtual
+
+ +

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.

+
Parameters
+ + + + +
topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
    +
  1. $ (1 \times 1 \times 1 \times 1) $ This Blob's diff will simply contain the loss_weight* $ \lambda $, as $ \lambda $ is the coefficient of this layer's output $\ell_i$ in the overall Net loss $ E = \lambda_i \ell_i + \mbox{other loss terms}$; hence $ \frac{\partial E}{\partial \ell_i} = \lambda_i $. (*Assuming that this top Blob is not used as a bottom (input) by any other layer of the Net.)
  2. +
+
propagate_downsee Layer::Backward. propagate_down[1] must be false as gradient computation with respect to the targets is not implemented.
bottominput Blob vector (length 2)
    +
  1. $ (N \times C \times H \times W) $ the predictions $x$; Backward computes diff $ \frac{\partial E}{\partial x} = \frac{1}{n} \sum\limits_{n=1}^N (\hat{p}_n - p_n) $
  2. +
  3. $ (N \times 1 \times 1 \times 1) $ the labels – ignored as we can't compute their error gradients
  4. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::SigmoidCrossEntropyLossLayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+ +

Computes the cross-entropy (logistic) loss $ 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] $, 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.

+
Parameters
+ + + +
bottominput Blob vector (length 2)
    +
  1. $ (N \times C \times H \times W) $ the scores $ x \in [-\infty, +\infty]$, which this layer maps to probability predictions $ \hat{p}_n = \sigma(x_n) \in [0, 1] $ using the sigmoid function $ \sigma(.) $ (see SigmoidLayer).
  2. +
  3. $ (N \times C \times H \times W) $ the targets $ y \in [0, 1] $
  4. +
+
topoutput Blob vector (length 1)
    +
  1. $ (1 \times 1 \times 1 \times 1) $ the computed cross-entropy loss: $ 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] $
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ get_normalizer()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Dtype caffe::SigmoidCrossEntropyLossLayer< Dtype >::get_normalizer (LossParameter_NormalizationMode normalization_mode,
int valid_count 
)
+
+protectedvirtual
+
+

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.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::SigmoidCrossEntropyLossLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::LossLayer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::SigmoidCrossEntropyLossLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Reimplemented from caffe::LossLayer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer.png b/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..00fe191136cc7d46744758439df22cd45611083e GIT binary patch literal 1411 zcmeAS@N?(olHy`uVBq!ia0y~yV3Yx}J2;quB-5%T#z0CUz$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-opK zKInD?)0AVjzmM%*HQ6^y*|8BZ<`%Sj>=ic~Zo z6j?6S*-<^|i{{g>Wvx-3H0#V{r|)-v z-ZoNSV|o9CVc@=JB@6d&dv@dUsV7JFrJv!u#jj8up}G z_FCl-PcM~~>OeO+oSL|#VT!URqo(^Lrgam7Pc`jU_Y8g{=J`rv{r<&x@lZqIg*~n$G zCwPHkt7LK+LmDtTCWKHSIMkrmZ>dcwIQ*$!&I~8vp7?%l9%_2D8ia->KTq`EJ%fVatc77}VYrnXUFd zXY*b^(x`Ix>A%;{|GN4pr@PuodQa{9=3M?Q6HnjGRXr?nJTRxC`?U@*I#1m?k#?1# z&#YnQ@qfvB*Gtzge7)><(Tm-=x^>OFp5-0P`=NX3PU-Hg4&N({f0pk0wshCiFXul# zoI9s>f?r?sOO50SFN~M(-sxMplHuWPU_M({GH2`T9}|8aHnFxmm!^K)w{m^rU70$y z^nGjZoi^O~-tA^uuKL~insa4-@5q~(+g)L4{Ik~a_f8r6gYTcNx%~P`&tjj$_tW|~ zOE>o#tDpHabI#w;vsr!iQunUT**PbXbN&^X{g1A_Nd0-?d{&?B+A~wWvE-h7eSXQ_ zlUuhWSoho(h&}tVfA8KOvulmym!7?KW%EtT`)2*M)$()07>@rabZ^N2aFgqUB>SP| z{}?|1TsUW;9OIl0`&vf3M=NG$KVhllDB!v)$n}A-{cem3`-6Ia)EsK_bV`s{ke4R& ae}>iPiyuXWXl?|Sm<*n-elF{r5}E+P2Yr?R literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1SigmoidLayer-members.html b/doxygen/classcaffe_1_1SigmoidLayer-members.html new file mode 100644 index 00000000000..965b99a9489 --- /dev/null +++ b/doxygen/classcaffe_1_1SigmoidLayer-members.html @@ -0,0 +1,120 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::SigmoidLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::SigmoidLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::SigmoidLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::SigmoidLayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::NeuronLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::NeuronLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::SigmoidLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::SigmoidLayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlinevirtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
NeuronLayer(const LayerParameter &param) (defined in caffe::NeuronLayer< Dtype >)caffe::NeuronLayer< Dtype >inlineexplicit
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::NeuronLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
SigmoidLayer(const LayerParameter &param) (defined in caffe::SigmoidLayer< Dtype >)caffe::SigmoidLayer< Dtype >inlineexplicit
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::SigmoidLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1SigmoidLayer.html b/doxygen/classcaffe_1_1SigmoidLayer.html new file mode 100644 index 00000000000..0407e9273a4 --- /dev/null +++ b/doxygen/classcaffe_1_1SigmoidLayer.html @@ -0,0 +1,356 @@ + + + + + + + +Caffe: caffe::SigmoidLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::SigmoidLayer< Dtype > Class Template Reference
+
+
+ +

Sigmoid function non-linearity $ y = (1 + \exp(-x))^{-1} $, a classic choice in neural networks. + More...

+ +

#include <sigmoid_layer.hpp>

+
+Inheritance diagram for caffe::SigmoidLayer< Dtype >:
+
+
+ + +caffe::NeuronLayer< Dtype > +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SigmoidLayer (const LayerParameter &param)
 
+virtual const char * type () const
 Returns the layer type.
 
- Public Member Functions inherited from caffe::NeuronLayer< Dtype >
NeuronLayer (const LayerParameter &param)
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Computes the error gradient w.r.t. the sigmoid inputs. More...
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::SigmoidLayer< Dtype >

+ +

Sigmoid function non-linearity $ y = (1 + \exp(-x))^{-1} $, 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.

+

Member Function Documentation

+ +

§ Backward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void caffe::SigmoidLayer< Dtype >::Backward_cpu (const vector< Blob< Dtype > *> & top,
const vector< bool > & propagate_down,
const vector< Blob< Dtype > *> & bottom 
)
+
+protectedvirtual
+
+ +

Computes the error gradient w.r.t. the sigmoid inputs.

+
Parameters
+ + + + +
topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
    +
  1. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
  2. +
+
propagate_downsee Layer::Backward.
bottominput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \frac{\partial E}{\partial x} = \frac{\partial E}{\partial y} y (1 - y) $ if propagate_down[0]
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::SigmoidLayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+
Parameters
+ + + +
bottominput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the inputs $ x $
  2. +
+
topoutput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the computed outputs $ y = (1 + \exp(-x))^{-1} $
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1SigmoidLayer.png b/doxygen/classcaffe_1_1SigmoidLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..d16ee5bab4e5b865c84c81100e79d00f6174dfa8 GIT binary patch literal 1099 zcmeAS@N?(olHy`uVBq!ia0vp^TY= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0Z+W^nhEy=Vo%`_8D+L}G|LKzV|4&>W z6~&|*weMog%+AZ9nwb_VihsSmG=0@4srW8iFil0Cb*swHjGn5G5Zm zwYo|=YqrJf&$8c5Uv1`?H~Wd#I;};**~w8{Z<9B^yY^K&D>?LfY4We1ySCXLaoM=! zzKC-s_qKKqqwts4k6wRX-J!ypwLtj)&)Uz0uL57pUm(}^uQ$T`(sj`*lb$RF`Rne= zV6RLw#u`uahLw)$!1f_9fcb~U3dS0dD-3pASq$>5 zrVaf~QU}}}c^@oBk#;CuI^|M{lINuqt}M?_fdSr=`gdJ9y=m31^nI!;*K3=lt^A$- zVx`>I!v_zZEWMw6_vcXhu{+zh)z06g$@n60`hMQ6d+*zAlYLeYbSW0=}H#f*@Gv@>EU5q}U@7{4^hV)a${ppPB zvU0igZJD3F3YdQ=w#>%oZmiG)m)5G=@1&mo{%g8U?ZNJ+v%1x9vqfy$a5iFnsvh&T ziq{#jMzihM+PF4cf0wX*n|<1hMlX$GUeObG-&uaXl>IIFaKPHlzc+BMc$EIjJ->tPBGhq($Fq zdaKy5(`&!p>$um749QaYCmG(CKHU1j{nfA1AO6Eqr0uSs fn{-a6{9^x_=6Qgz{_h-M&S&s+^>bP0l+XkKqxdG{ literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1SignalHandler-members.html b/doxygen/classcaffe_1_1SignalHandler-members.html new file mode 100644 index 00000000000..6c88d8d619c --- /dev/null +++ b/doxygen/classcaffe_1_1SignalHandler-members.html @@ -0,0 +1,83 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::SignalHandler Member List
+
+
+ +

This is the complete list of members for caffe::SignalHandler, including all inherited members.

+ + + + +
GetActionFunction() (defined in caffe::SignalHandler)caffe::SignalHandler
SignalHandler(SolverAction::Enum SIGINT_action, SolverAction::Enum SIGHUP_action) (defined in caffe::SignalHandler)caffe::SignalHandler
~SignalHandler() (defined in caffe::SignalHandler)caffe::SignalHandler
+ + + + diff --git a/doxygen/classcaffe_1_1SignalHandler.html b/doxygen/classcaffe_1_1SignalHandler.html new file mode 100644 index 00000000000..ddb40c42d3b --- /dev/null +++ b/doxygen/classcaffe_1_1SignalHandler.html @@ -0,0 +1,94 @@ + + + + + + + +Caffe: caffe::SignalHandler Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::SignalHandler Class Reference
+
+
+ + + + + + +

+Public Member Functions

SignalHandler (SolverAction::Enum SIGINT_action, SolverAction::Enum SIGHUP_action)
 
+ActionCallback GetActionFunction ()
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1SilenceLayer-members.html b/doxygen/classcaffe_1_1SilenceLayer-members.html new file mode 100644 index 00000000000..625f33841a9 --- /dev/null +++ b/doxygen/classcaffe_1_1SilenceLayer-members.html @@ -0,0 +1,119 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::SilenceLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::SilenceLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::SilenceLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::SilenceLayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::SilenceLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::SilenceLayer< Dtype >inlineprotectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::SilenceLayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlinevirtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::SilenceLayer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::SilenceLayer< Dtype >inlinevirtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
SilenceLayer(const LayerParameter &param) (defined in caffe::SilenceLayer< Dtype >)caffe::SilenceLayer< Dtype >inlineexplicit
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::SilenceLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1SilenceLayer.html b/doxygen/classcaffe_1_1SilenceLayer.html new file mode 100644 index 00000000000..25bd24c04e0 --- /dev/null +++ b/doxygen/classcaffe_1_1SilenceLayer.html @@ -0,0 +1,352 @@ + + + + + + + +Caffe: caffe::SilenceLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::SilenceLayer< Dtype > Class Template Reference
+
+
+ +

Ignores bottom blobs while producing no top blobs. (This is useful to suppress outputs during testing.) + More...

+ +

#include <silence_layer.hpp>

+
+Inheritance diagram for caffe::SilenceLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SilenceLayer (const LayerParameter &param)
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::SilenceLayer< Dtype >

+ +

Ignores bottom blobs while producing no top blobs. (This is useful to suppress outputs during testing.)

+

Member Function Documentation

+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::SilenceLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ MinBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::SilenceLayer< Dtype >::MinBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some minimum number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void caffe::SilenceLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+inlinevirtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1SilenceLayer.png b/doxygen/classcaffe_1_1SilenceLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..c82068f06d8f0d73e2220d3e13a6cd288512ea72 GIT binary patch literal 734 zcmeAS@N?(olHy`uVBq!ia0vp^n}IlhgBeJsN^N-yq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0ay?xfLn;{G&b`?8T7k!fUpVvs|H=8g z6%VQ{3SvEuNuinRYnWM5UEd417PI^Kt0 z(QJ|3X3@=eOHDc z*gIo-YUD8?hn_kHw#yA??Cl>r@}KzQB*$0f^6aKL!#}6Vk_vIeV~ubxOMN4e1CY;M?*xB=O@tL!%jD8_Awoi{W{xd7S zIBU{g_h+g_m(CWaUaER`>(a}I+jMezzhA#Mlj++n-ZRUl&z4-*E%ofJwtdmk%OB3@ zsj<%Yt*tm3^YmlNX&>A8K)Ew>?kE0^TBf#cPs-6favYoIUj6pw-p|!tJAJH-Ux&_r z*L5>5f9tP(=jZ*@QU98#d9VGzopr0D_8S!~g&Q literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1SliceLayer-members.html b/doxygen/classcaffe_1_1SliceLayer-members.html new file mode 100644 index 00000000000..61cd784c2ff --- /dev/null +++ b/doxygen/classcaffe_1_1SliceLayer-members.html @@ -0,0 +1,124 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::SliceLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::SliceLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::SliceLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::SliceLayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
count_ (defined in caffe::SliceLayer< Dtype >)caffe::SliceLayer< Dtype >protected
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::SliceLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::SliceLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::SliceLayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::SliceLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::SliceLayer< Dtype >inlinevirtual
num_slices_ (defined in caffe::SliceLayer< Dtype >)caffe::SliceLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::SliceLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
slice_axis_ (defined in caffe::SliceLayer< Dtype >)caffe::SliceLayer< Dtype >protected
slice_point_ (defined in caffe::SliceLayer< Dtype >)caffe::SliceLayer< Dtype >protected
slice_size_ (defined in caffe::SliceLayer< Dtype >)caffe::SliceLayer< Dtype >protected
SliceLayer(const LayerParameter &param) (defined in caffe::SliceLayer< Dtype >)caffe::SliceLayer< Dtype >inlineexplicit
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::SliceLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1SliceLayer.html b/doxygen/classcaffe_1_1SliceLayer.html new file mode 100644 index 00000000000..a1114803edc --- /dev/null +++ b/doxygen/classcaffe_1_1SliceLayer.html @@ -0,0 +1,419 @@ + + + + + + + +Caffe: caffe::SliceLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::SliceLayer< Dtype > Class Template Reference
+
+
+ +

Takes a Blob and slices it along either the num or channel dimension, outputting multiple sliced Blob results. + More...

+ +

#include <slice_layer.hpp>

+
+Inheritance diagram for caffe::SliceLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SliceLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+int count_
 
+int num_slices_
 
+int slice_size_
 
+int slice_axis_
 
+vector< int > slice_point_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::SliceLayer< Dtype >

+ +

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.

+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::SliceLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::SliceLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ MinTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::SliceLayer< Dtype >::MinTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some minimum number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::SliceLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1SliceLayer.png b/doxygen/classcaffe_1_1SliceLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..536d82f26531c0dd06c697ad4563fed502bb39f6 GIT binary patch literal 716 zcmeAS@N?(olHy`uVBq!ia0vp^OMy6mgBeKruX1$)QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;SZyt32|HSRG z9vc+5q#j?rEXr-?+X=UxJ>aj~oO`>ha--*^qgyppHQl;{CMA85OZAF;H&MuWL zf19d7Ir;e2U zXEyDTi56S)SmXC{!&2>hy_2^78n5^BJ{1;Dzp8pKxT=5o9DR-A%d?BF8O-h6nz4NC z!Y!>E4c+IQ*F0}jk{4ukF|=ZWcXE{U^Yz7+Z%&I(Id!QzlqC{(HMi&9 zUZ>ZPaF;=E{rUxa?(Sp!tgZ2WLVUwd*(uq_7#D5PU`!$wfB7G@Y|5plu1q_2h^adC zfUw(??;C#!2F#zIS^eXSUvT=_Wb22f3v>(`D!&~_mn)ufSeL;sMDzROr#koUKi@O6 zMQ&Ou_u~sLmRpvedHf{w-Xo2^UbY?2ITE}g_n$G!&(f%FFP!oyz3*mgp?3bg0JEJ| zn%yr?&s$wwF1Tw^4`241R~w~H-MO(W#h0`1#_ssif_K+;&ppz1No?)S_bcWtw>f?2 zihd)ovI3coWB~Dt!r4IYAN|Un Yvrbv_byZg|FzGRPy85}Sb4q9e0H!Kmc>n+a literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1SoftmaxLayer-members.html b/doxygen/classcaffe_1_1SoftmaxLayer-members.html new file mode 100644 index 00000000000..965a668edf9 --- /dev/null +++ b/doxygen/classcaffe_1_1SoftmaxLayer-members.html @@ -0,0 +1,124 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::SoftmaxLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::SoftmaxLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::SoftmaxLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::SoftmaxLayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::SoftmaxLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::SoftmaxLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::SoftmaxLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::SoftmaxLayer< Dtype >protectedvirtual
inner_num_ (defined in caffe::SoftmaxLayer< Dtype >)caffe::SoftmaxLayer< Dtype >protected
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlinevirtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
outer_num_ (defined in caffe::SoftmaxLayer< Dtype >)caffe::SoftmaxLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::SoftmaxLayer< Dtype >virtual
scale_caffe::SoftmaxLayer< Dtype >protected
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
softmax_axis_ (defined in caffe::SoftmaxLayer< Dtype >)caffe::SoftmaxLayer< Dtype >protected
SoftmaxLayer(const LayerParameter &param) (defined in caffe::SoftmaxLayer< Dtype >)caffe::SoftmaxLayer< Dtype >inlineexplicit
sum_multiplier_caffe::SoftmaxLayer< Dtype >protected
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::SoftmaxLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1SoftmaxLayer.html b/doxygen/classcaffe_1_1SoftmaxLayer.html new file mode 100644 index 00000000000..571c8e07894 --- /dev/null +++ b/doxygen/classcaffe_1_1SoftmaxLayer.html @@ -0,0 +1,371 @@ + + + + + + + +Caffe: caffe::SoftmaxLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::SoftmaxLayer< Dtype > Class Template Reference
+
+
+ +

Computes the softmax function. + More...

+ +

#include <softmax_layer.hpp>

+
+Inheritance diagram for caffe::SoftmaxLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SoftmaxLayer (const LayerParameter &param)
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+int outer_num_
 
+int inner_num_
 
+int softmax_axis_
 
+Blob< Dtype > sum_multiplier_
 sum_multiplier is used to carry out sum using BLAS
 
+Blob< Dtype > scale_
 scale is an intermediate Blob to hold temporary results.
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::SoftmaxLayer< Dtype >

+ +

Computes the softmax function.

+

TODO(dox): thorough documentation for Forward, Backward, and proto params.

+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::SoftmaxLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::SoftmaxLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::SoftmaxLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1SoftmaxLayer.png b/doxygen/classcaffe_1_1SoftmaxLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..f18e15cf791ad67eaf2481da9b55e049638570f9 GIT binary patch literal 738 zcmeAS@N?(olHy`uVBq!ia0vp^TY)%$gBeI>upC(hq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ03O!vMLn;{G&b`>ztRUdZe|^dS|0i#+ zI>F;K)z{nW(6QUPWjkcr6Khf&m1n?vtY?{aVp$)#CeZp32?Oiod4k zC#ft~dv!f%`O{k~R+~*Ki4MPFXc|53u-(1)R6XjSUFV$aE6PC7I7SLvr;HT)BoxS5tbs^6b)=XaOuuke+#7xqug_WZR=ZL7-Hi%X_0 zv8xKwKfS3(twH}KqrsfEC3QA#N8~2`;lhq{&Epj!Gm=IP7;1B4F_TJfxW*feZm=EM)|MrUTIeptha63 z1%uU_KD>VRvi-~siO=@0ysZz!bz0fIoA&hi-_o4T)iuS2tD9#=71@dezxuc>a7*;@ z^^FUe-jqtnT>Lg)GOv4@({UTJ6J#ka z_sHjMddeO3S8o$$=$_rSBBdthXk3V@_3LT#zx3Qndv=Gx>&ntKPuiC`{axntEj7k9 zq$t;E^4Z(KAl=n?OMbiY*1|8Pb6fAN&c5yJlXhv^th!t&XPfqo&N9A_G{k2=^NRNS zYqhp|eLF) + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::SoftmaxWithLossLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::SoftmaxWithLossLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::LossLayer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::LossLayer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::SoftmaxWithLossLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::SoftmaxWithLossLayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::LossLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::SoftmaxWithLossLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::SoftmaxWithLossLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::SoftmaxWithLossLayer< Dtype >protectedvirtual
get_normalizer(LossParameter_NormalizationMode normalization_mode, int valid_count)caffe::SoftmaxWithLossLayer< Dtype >protectedvirtual
has_ignore_label_caffe::SoftmaxWithLossLayer< Dtype >protected
ignore_label_caffe::SoftmaxWithLossLayer< Dtype >protected
inner_num_ (defined in caffe::SoftmaxWithLossLayer< Dtype >)caffe::SoftmaxWithLossLayer< Dtype >protected
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::SoftmaxWithLossLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
LossLayer(const LayerParameter &param) (defined in caffe::LossLayer< Dtype >)caffe::LossLayer< Dtype >inlineexplicit
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::SoftmaxWithLossLayer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::SoftmaxWithLossLayer< Dtype >inlinevirtual
normalization_caffe::SoftmaxWithLossLayer< Dtype >protected
outer_num_ (defined in caffe::SoftmaxWithLossLayer< Dtype >)caffe::SoftmaxWithLossLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
prob_caffe::SoftmaxWithLossLayer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::SoftmaxWithLossLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
softmax_axis_ (defined in caffe::SoftmaxWithLossLayer< Dtype >)caffe::SoftmaxWithLossLayer< Dtype >protected
softmax_bottom_vec_caffe::SoftmaxWithLossLayer< Dtype >protected
softmax_layer_caffe::SoftmaxWithLossLayer< Dtype >protected
softmax_top_vec_caffe::SoftmaxWithLossLayer< Dtype >protected
SoftmaxWithLossLayer(const LayerParameter &param)caffe::SoftmaxWithLossLayer< Dtype >inlineexplicit
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::SoftmaxWithLossLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1SoftmaxWithLossLayer.html b/doxygen/classcaffe_1_1SoftmaxWithLossLayer.html new file mode 100644 index 00000000000..085a1d4d50e --- /dev/null +++ b/doxygen/classcaffe_1_1SoftmaxWithLossLayer.html @@ -0,0 +1,634 @@ + + + + + + + +Caffe: caffe::SoftmaxWithLossLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::SoftmaxWithLossLayer< Dtype > Class Template Reference
+
+
+ +

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. + More...

+ +

#include <softmax_loss_layer.hpp>

+
+Inheritance diagram for caffe::SoftmaxWithLossLayer< Dtype >:
+
+
+ + +caffe::LossLayer< Dtype > +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 SoftmaxWithLossLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
- Public Member Functions inherited from caffe::LossLayer< Dtype >
LossLayer (const LayerParameter &param)
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
+virtual bool AutoTopBlobs () const
 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 bool AllowForceBackward (const int bottom_index) const
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Computes the softmax loss error gradient w.r.t. the predictions. More...
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
virtual Dtype get_normalizer (LossParameter_NormalizationMode normalization_mode, int valid_count)
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+shared_ptr< Layer< Dtype > > softmax_layer_
 The internal SoftmaxLayer used to map predictions to a distribution.
 
+Blob< Dtype > prob_
 prob stores the output probability predictions from the SoftmaxLayer.
 
+vector< Blob< Dtype > * > softmax_bottom_vec_
 bottom vector holder used in call to the underlying SoftmaxLayer::Forward
 
+vector< Blob< Dtype > * > softmax_top_vec_
 top vector holder used in call to the underlying SoftmaxLayer::Forward
 
+bool has_ignore_label_
 Whether to ignore instances with a certain label.
 
+int ignore_label_
 The label indicating that an instance should be ignored.
 
+LossParameter_NormalizationMode normalization_
 How to normalize the output loss.
 
+int softmax_axis_
 
+int outer_num_
 
+int inner_num_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::SoftmaxWithLossLayer< Dtype >

+ +

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.

+
Parameters
+ + + +
bottominput Blob vector (length 2)
    +
  1. $ (N \times C \times H \times W) $ the predictions $ x $, a Blob with values in $ [-\infty, +\infty] $ indicating the predicted score for each of the $ K = CHW $ classes. This layer maps these scores to a probability distribution over classes using the softmax function $ \hat{p}_{nk} = \exp(x_{nk}) / \left[\sum_{k'} \exp(x_{nk'})\right] $ (see SoftmaxLayer).
  2. +
  3. $ (N \times 1 \times 1 \times 1) $ the labels $ l $, an integer-valued Blob with values $ l_n \in [0, 1, 2, ..., K - 1] $ indicating the correct class label among the $ K $ classes
  4. +
+
topoutput Blob vector (length 1)
    +
  1. $ (1 \times 1 \times 1 \times 1) $ the computed cross-entropy classification loss: $ E = \frac{-1}{N} \sum\limits_{n=1}^N \log(\hat{p}_{n,l_n}) $, for softmax output class probabilites $ \hat{p} $
  2. +
+
+
+
+

Constructor & Destructor Documentation

+ +

§ SoftmaxWithLossLayer()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + +
caffe::SoftmaxWithLossLayer< Dtype >::SoftmaxWithLossLayer (const LayerParameter & param)
+
+inlineexplicit
+
+
Parameters
+ + +
paramprovides 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.
  • +
+
+
+
+ +
+
+

Member Function Documentation

+ +

§ Backward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void caffe::SoftmaxWithLossLayer< Dtype >::Backward_cpu (const vector< Blob< Dtype > *> & top,
const vector< bool > & propagate_down,
const vector< Blob< Dtype > *> & bottom 
)
+
+protectedvirtual
+
+ +

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.

+
Parameters
+ + + + +
topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
    +
  1. $ (1 \times 1 \times 1 \times 1) $ This Blob's diff will simply contain the loss_weight* $ \lambda $, as $ \lambda $ is the coefficient of this layer's output $\ell_i$ in the overall Net loss $ E = \lambda_i \ell_i + \mbox{other loss terms}$; hence $ \frac{\partial E}{\partial \ell_i} = \lambda_i $. (*Assuming that this top Blob is not used as a bottom (input) by any other layer of the Net.)
  2. +
+
propagate_downsee Layer::Backward. propagate_down[1] must be false as we can't compute gradients with respect to the labels.
bottominput Blob vector (length 2)
    +
  1. $ (N \times C \times H \times W) $ the predictions $ x $; Backward computes diff $ \frac{\partial E}{\partial x} $
  2. +
  3. $ (N \times 1 \times 1 \times 1) $ the labels – ignored as we can't compute their error gradients
  4. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::SoftmaxWithLossLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::LossLayer< Dtype >.

+ +
+
+ +

§ get_normalizer()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Dtype caffe::SoftmaxWithLossLayer< Dtype >::get_normalizer (LossParameter_NormalizationMode normalization_mode,
int valid_count 
)
+
+protectedvirtual
+
+

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.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::SoftmaxWithLossLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::LossLayer< Dtype >.

+ +
+
+ +

§ MaxTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::SoftmaxWithLossLayer< Dtype >::MaxTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some maximum number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ MinTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::SoftmaxWithLossLayer< Dtype >::MinTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some minimum number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::SoftmaxWithLossLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Reimplemented from caffe::LossLayer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1SoftmaxWithLossLayer.png b/doxygen/classcaffe_1_1SoftmaxWithLossLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..cd388cc540b64b2ce303c969b1441c3acca304ce GIT binary patch literal 1160 zcmeAS@N?(olHy`uVBq!ia0vp^&w;pugBeI_cks*wQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;TdUmY$xok4m!Do_4TyyZGM;QfPK{9(gjh9Bgo2g>Ey5#rk zd8(f0U)s(we{RP2t?-?mvgi8O2G6DbSx(NB)c2Qt{weM1EHi$S{%5ITmv0|*v|ESo^t&Z*UD`O_X?p@C%hW(@$GE_#dh~YQy>>(!zZ|YsZpJC614Hi;!7z#}+7=hu!bmZa#mX5_}3jQz2oV852!*kN1Y`7(l=V+cSIH>s4aY&L$M0Sd$oAJ=?6wsvE~(}XqU$*4UbMH&>^UL3&C-($&hEG&6CXIW;KeuMvOrUIt9EuV`l*%*!It~^i|q^(@r5C_K>jd)N|2Yj0H?wpSWMh{yvJj zs}T;l&TKzzZn1&SOcDDxJn3ZB&`o4-tToovS2-lwad zS$MNPe{}Cl^ygzscK@BJbKigS+2Fro5BygiUZ1AHQ2aL%k@lJP1i}*Y-F@pcmx{#w aXDA4a^AV_jbp%*!FnGH9xvX + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::Solver< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::Solver< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
action_request_function_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
add_callback(Callback *value) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
ApplyUpdate()=0 (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protectedpure virtual
callbacks() const (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
callbacks_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
CheckSnapshotWritePermissions() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
current_step_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
DISABLE_COPY_AND_ASSIGN(Solver) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
DisplayOutputBlobs(const int net_id) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
GetRequestedAction() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
Init(const SolverParameter &param) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
InitTestNets() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
InitTrainNet() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
iter() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
iter_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
losses_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
net() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
net_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
param() const (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
param_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
requested_early_exit_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Restore(const char *resume_file) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
RestoreSolverStateFromBinaryProto(const string &state_file)=0 (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protectedpure virtual
RestoreSolverStateFromHDF5(const string &state_file)=0 (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protectedpure virtual
root_solver_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
SetActionFunction(ActionCallback func) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
smoothed_loss_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Snapshot() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
SnapshotFilename(const string extension) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
SnapshotSolverState(const string &model_filename)=0 (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protectedpure virtual
SnapshotToBinaryProto() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
SnapshotToHDF5() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Solve(const char *resume_file=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >virtual
Solve(const string resume_file) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
Solver(const SolverParameter &param, const Solver *root_solver=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >explicit
Solver(const string &param_file, const Solver *root_solver=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >explicit
Step(int iters) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
Test(const int test_net_id=0) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
test_nets() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
test_nets_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
TestAll() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
type() constcaffe::Solver< Dtype >inlinevirtual
UpdateSmoothedLoss(Dtype loss, int start_iter, int average_loss) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
~Solver() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1Solver.html b/doxygen/classcaffe_1_1Solver.html new file mode 100644 index 00000000000..a7393611986 --- /dev/null +++ b/doxygen/classcaffe_1_1Solver.html @@ -0,0 +1,258 @@ + + + + + + + +Caffe: caffe::Solver< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::Solver< Dtype > Class Template Referenceabstract
+
+
+ +

An interface for classes that perform optimization on Nets. + More...

+ +

#include <solver.hpp>

+
+Inheritance diagram for caffe::Solver< Dtype >:
+
+
+ + +caffe::SGDSolver< Dtype > +caffe::WorkerSolver< Dtype > +caffe::AdaDeltaSolver< Dtype > +caffe::AdaGradSolver< Dtype > +caffe::AdamSolver< Dtype > +caffe::NesterovSolver< Dtype > +caffe::RMSPropSolver< Dtype > + +
+ + + + +

+Classes

class  Callback
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Solver (const SolverParameter &param, const Solver *root_solver=NULL)
 
Solver (const string &param_file, const Solver *root_solver=NULL)
 
+void Init (const SolverParameter &param)
 
+void InitTrainNet ()
 
+void InitTestNets ()
 
+void SetActionFunction (ActionCallback func)
 
+SolverAction::Enum GetRequestedAction ()
 
+virtual void Solve (const char *resume_file=NULL)
 
+void Solve (const string resume_file)
 
+void Step (int iters)
 
+void Restore (const char *resume_file)
 
+void Snapshot ()
 
+const SolverParameter & param () const
 
+shared_ptr< Net< Dtype > > net ()
 
+const vector< shared_ptr< Net< Dtype > > > & test_nets ()
 
+int iter ()
 
+const vector< Callback * > & callbacks () const
 
+void add_callback (Callback *value)
 
+void CheckSnapshotWritePermissions ()
 
+virtual const char * type () const
 Returns the solver type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void ApplyUpdate ()=0
 
+string SnapshotFilename (const string extension)
 
+string SnapshotToBinaryProto ()
 
+string SnapshotToHDF5 ()
 
+void TestAll ()
 
+void Test (const int test_net_id=0)
 
+virtual void SnapshotSolverState (const string &model_filename)=0
 
+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)
 
DISABLE_COPY_AND_ASSIGN (Solver)
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+SolverParameter param_
 
+int iter_
 
+int current_step_
 
+shared_ptr< Net< Dtype > > net_
 
+vector< shared_ptr< Net< Dtype > > > test_nets_
 
+vector< Callback * > callbacks_
 
+vector< Dtype > losses_
 
+Dtype smoothed_loss_
 
+const Solver *const root_solver_
 
+ActionCallback action_request_function_
 
+bool requested_early_exit_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::Solver< Dtype >

+ +

An interface for classes that perform optimization on Nets.

+

Requires implementation of ApplyUpdate to compute a parameter update given the current state of the Net parameters.

+

The documentation for this class was generated from the following files:
    +
  • include/caffe/solver.hpp
  • +
  • src/caffe/solver.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1Solver.png b/doxygen/classcaffe_1_1Solver.png new file mode 100644 index 0000000000000000000000000000000000000000..a4a07327f98d671c4b7278b07709aaae5abd44b7 GIT binary patch literal 2676 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 G3x5Gp{7ZTO literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1SolverRegisterer-members.html b/doxygen/classcaffe_1_1SolverRegisterer-members.html new file mode 100644 index 00000000000..04a36ab85a0 --- /dev/null +++ b/doxygen/classcaffe_1_1SolverRegisterer-members.html @@ -0,0 +1,81 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::SolverRegisterer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::SolverRegisterer< Dtype >, including all inherited members.

+ + +
SolverRegisterer(const string &type, Solver< Dtype > *(*creator)(const SolverParameter &)) (defined in caffe::SolverRegisterer< Dtype >)caffe::SolverRegisterer< Dtype >inline
+ + + + diff --git a/doxygen/classcaffe_1_1SolverRegisterer.html b/doxygen/classcaffe_1_1SolverRegisterer.html new file mode 100644 index 00000000000..2f5d4d46311 --- /dev/null +++ b/doxygen/classcaffe_1_1SolverRegisterer.html @@ -0,0 +1,90 @@ + + + + + + + +Caffe: caffe::SolverRegisterer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::SolverRegisterer< Dtype > Class Template Reference
+
+
+ + + + +

+Public Member Functions

SolverRegisterer (const string &type, Solver< Dtype > *(*creator)(const SolverParameter &))
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classcaffe_1_1SolverRegistry-members.html b/doxygen/classcaffe_1_1SolverRegistry-members.html new file mode 100644 index 00000000000..827a9e4c5d5 --- /dev/null +++ b/doxygen/classcaffe_1_1SolverRegistry-members.html @@ -0,0 +1,86 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::SolverRegistry< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::SolverRegistry< Dtype >, including all inherited members.

+ + + + + + + +
AddCreator(const string &type, Creator creator) (defined in caffe::SolverRegistry< Dtype >)caffe::SolverRegistry< Dtype >inlinestatic
CreateSolver(const SolverParameter &param) (defined in caffe::SolverRegistry< Dtype >)caffe::SolverRegistry< Dtype >inlinestatic
Creator typedef (defined in caffe::SolverRegistry< Dtype >)caffe::SolverRegistry< Dtype >
CreatorRegistry typedef (defined in caffe::SolverRegistry< Dtype >)caffe::SolverRegistry< Dtype >
Registry() (defined in caffe::SolverRegistry< Dtype >)caffe::SolverRegistry< Dtype >inlinestatic
SolverTypeList() (defined in caffe::SolverRegistry< Dtype >)caffe::SolverRegistry< Dtype >inlinestatic
+ + + + diff --git a/doxygen/classcaffe_1_1SolverRegistry.html b/doxygen/classcaffe_1_1SolverRegistry.html new file mode 100644 index 00000000000..e568c375c01 --- /dev/null +++ b/doxygen/classcaffe_1_1SolverRegistry.html @@ -0,0 +1,109 @@ + + + + + + + +Caffe: caffe::SolverRegistry< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::SolverRegistry< Dtype > Class Template Reference
+
+
+ + + + + + +

+Public Types

+typedef Solver< Dtype > *(* Creator) (const SolverParameter &)
 
+typedef std::map< string, Creator > CreatorRegistry
 
+ + + + + + + + + +

+Static Public Member Functions

+static CreatorRegistry & Registry ()
 
+static void AddCreator (const string &type, Creator creator)
 
+static Solver< Dtype > * CreateSolver (const SolverParameter &param)
 
+static vector< string > SolverTypeList ()
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classcaffe_1_1Solver_1_1Callback-members.html b/doxygen/classcaffe_1_1Solver_1_1Callback-members.html new file mode 100644 index 00000000000..557f1e74dda --- /dev/null +++ b/doxygen/classcaffe_1_1Solver_1_1Callback-members.html @@ -0,0 +1,83 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::Solver< Dtype >::Callback Member List
+
+
+ +

This is the complete list of members for caffe::Solver< Dtype >::Callback, including all inherited members.

+ + + + +
on_gradients_ready()=0 (defined in caffe::Solver< Dtype >::Callback)caffe::Solver< Dtype >::Callbackprotectedpure virtual
on_start()=0 (defined in caffe::Solver< Dtype >::Callback)caffe::Solver< Dtype >::Callbackprotectedpure virtual
Solver (defined in caffe::Solver< Dtype >::Callback)caffe::Solver< Dtype >::Callbackfriend
+ + + + diff --git a/doxygen/classcaffe_1_1Solver_1_1Callback.html b/doxygen/classcaffe_1_1Solver_1_1Callback.html new file mode 100644 index 00000000000..74a5e695da9 --- /dev/null +++ b/doxygen/classcaffe_1_1Solver_1_1Callback.html @@ -0,0 +1,110 @@ + + + + + + + +Caffe: caffe::Solver< Dtype >::Callback Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::Solver< Dtype >::Callback Class Referenceabstract
+
+
+
+Inheritance diagram for caffe::Solver< Dtype >::Callback:
+
+
+ + +caffe::P2PSync< Dtype > + +
+ + + + + + +

+Protected Member Functions

+virtual void on_start ()=0
 
+virtual void on_gradients_ready ()=0
 
+ + + + +

+Friends

+template<typename T >
class Solver
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classcaffe_1_1Solver_1_1Callback.png b/doxygen/classcaffe_1_1Solver_1_1Callback.png new file mode 100644 index 0000000000000000000000000000000000000000..0ac96400656fe731a88b8e4ea897c8dfbb1d3865 GIT binary patch literal 792 zcmeAS@N?(olHy`uVBq!ia0vp^M}RnhgBeH`_G|F~DTx4|5ZC|z{{xvX-h3_XKQsZz z0^#8tTZ`oe9!TES?UxqhWU}U_|yiMU*S3QTu^~HiSRx+&L zQqmW@On;7!ctd#Q4#vXzh`k&i-!$C#BjOOfb+WR+`6as92KMzmxly0){#wN{L-^fZ z-NjFXE87a01yc4%swYnSod5UNhN2QZ$<>cPT-fwv?F)r9E2SepPbhwVjFkaPumw9M@)1-oqu+}O1SM{(4?%X zoRhvR<8!cSn(|~_I>T#k>pP<1W;XnX(tiF^U%s1f5o6$?-RDj2cMJ4?-~7*L+LCE; zPBXqtt516oJn!?)hF$t1kH79*y5)YB}T-d;Ch% zhj(QOZ<->MPCMRQ#A|+T>iLYef{!d5*)mm!xqEB{df$c=o3(WpvTocdl>69!&5<U$CY9`hdo-iXLvv~OYxyTHG`s)o7heWU#tfdWelF{r5}E)PwO^$G literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1SplitLayer-members.html b/doxygen/classcaffe_1_1SplitLayer-members.html new file mode 100644 index 00000000000..0b7d223133a --- /dev/null +++ b/doxygen/classcaffe_1_1SplitLayer-members.html @@ -0,0 +1,120 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::SplitLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::SplitLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::SplitLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::SplitLayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
count_ (defined in caffe::SplitLayer< Dtype >)caffe::SplitLayer< Dtype >protected
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::SplitLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::SplitLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::SplitLayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlinevirtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::SplitLayer< Dtype >inlinevirtual
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::SplitLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
SplitLayer(const LayerParameter &param) (defined in caffe::SplitLayer< Dtype >)caffe::SplitLayer< Dtype >inlineexplicit
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::SplitLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1SplitLayer.html b/doxygen/classcaffe_1_1SplitLayer.html new file mode 100644 index 00000000000..538ff63f59d --- /dev/null +++ b/doxygen/classcaffe_1_1SplitLayer.html @@ -0,0 +1,357 @@ + + + + + + + +Caffe: caffe::SplitLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::SplitLayer< Dtype > Class Template Reference
+
+
+ +

Creates a "split" path in the network by copying the bottom Blob into multiple top Blobs to be used by multiple consuming layers. + More...

+ +

#include <split_layer.hpp>

+
+Inheritance diagram for caffe::SplitLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SplitLayer (const LayerParameter &param)
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + +

+Protected Attributes

+int count_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::SplitLayer< Dtype >

+ +

Creates a "split" path in the network by copying the bottom Blob into multiple top Blobs to be used by multiple consuming layers.

+

TODO(dox): thorough documentation for Forward, Backward, and proto params.

+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::SplitLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ MinTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::SplitLayer< Dtype >::MinTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required.

+

This method should be overridden to return a non-negative value if your layer expects some minimum number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::SplitLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1SplitLayer.png b/doxygen/classcaffe_1_1SplitLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..edac5e1e677ea34c738ba30c0251b025668fb429 GIT binary patch literal 714 zcmeAS@N?(olHy`uVBq!ia0vp^3xPO*gBeJ=IX<-jQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;mJbWH2wx`|wdhwy@%m`hy1@kA=@gvUOw$FCWK5dX!T|Jp!wfY=2cO9T3d=k> z1TL$vbYvn)|Lt$lTxzn#gMm34Dr%)%({~}-A@==AqjjZ>cY@{4zv253sNS-^eYgCq z13#n9A7)lGFozy0+A?SF^UvS!rR8oubF+5y&EHvHHMCZK(s&wkw6HgcgJJhJhS^*H z8r=SK=@#RJGrKwhYRhKoFUxy=R@&)$g5Ne<+imMVeU$vm{k`Sh;>0_G&)m$GW(B=h zsycM`YSlL3>jJlg&EIR?%;)Ggx?uK`Gx2NT*Ig$T8s6o-Q^@E4dxN6Sg*C}ekKg{@ zV7T`>C=|uAR=%puNdNh@R69e~-}-bz|JHg8>AE+sp51JnD7`pUHx3vIVCg!04`2TjsO4v literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1SyncedMemory-members.html b/doxygen/classcaffe_1_1SyncedMemory-members.html new file mode 100644 index 00000000000..d0b733d7dc7 --- /dev/null +++ b/doxygen/classcaffe_1_1SyncedMemory-members.html @@ -0,0 +1,97 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::SyncedMemory Member List
+
+
+ +

This is the complete list of members for caffe::SyncedMemory, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
async_gpu_push(const cudaStream_t &stream) (defined in caffe::SyncedMemory)caffe::SyncedMemory
cpu_data() (defined in caffe::SyncedMemory)caffe::SyncedMemory
gpu_data() (defined in caffe::SyncedMemory)caffe::SyncedMemory
head() (defined in caffe::SyncedMemory)caffe::SyncedMemoryinline
HEAD_AT_CPU enum value (defined in caffe::SyncedMemory)caffe::SyncedMemory
HEAD_AT_GPU enum value (defined in caffe::SyncedMemory)caffe::SyncedMemory
mutable_cpu_data() (defined in caffe::SyncedMemory)caffe::SyncedMemory
mutable_gpu_data() (defined in caffe::SyncedMemory)caffe::SyncedMemory
set_cpu_data(void *data) (defined in caffe::SyncedMemory)caffe::SyncedMemory
set_gpu_data(void *data) (defined in caffe::SyncedMemory)caffe::SyncedMemory
size() (defined in caffe::SyncedMemory)caffe::SyncedMemoryinline
SYNCED enum value (defined in caffe::SyncedMemory)caffe::SyncedMemory
SyncedHead enum name (defined in caffe::SyncedMemory)caffe::SyncedMemory
SyncedMemory() (defined in caffe::SyncedMemory)caffe::SyncedMemoryinline
SyncedMemory(size_t size) (defined in caffe::SyncedMemory)caffe::SyncedMemoryinlineexplicit
UNINITIALIZED enum value (defined in caffe::SyncedMemory)caffe::SyncedMemory
~SyncedMemory() (defined in caffe::SyncedMemory)caffe::SyncedMemory
+ + + + diff --git a/doxygen/classcaffe_1_1SyncedMemory.html b/doxygen/classcaffe_1_1SyncedMemory.html new file mode 100644 index 00000000000..00f8ae2eb19 --- /dev/null +++ b/doxygen/classcaffe_1_1SyncedMemory.html @@ -0,0 +1,136 @@ + + + + + + + +Caffe: caffe::SyncedMemory Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::SyncedMemory Class Reference
+
+
+ +

Manages memory allocation and synchronization between the host (CPU) and device (GPU). + More...

+ +

#include <syncedmem.hpp>

+ + + + +

+Public Types

enum  SyncedHead { UNINITIALIZED, +HEAD_AT_CPU, +HEAD_AT_GPU, +SYNCED + }
 
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SyncedMemory (size_t size)
 
+const void * cpu_data ()
 
+void set_cpu_data (void *data)
 
+const void * gpu_data ()
 
+void set_gpu_data (void *data)
 
+void * mutable_cpu_data ()
 
+void * mutable_gpu_data ()
 
+SyncedHead head ()
 
+size_t size ()
 
+void async_gpu_push (const cudaStream_t &stream)
 
+

Detailed Description

+

Manages memory allocation and synchronization between the host (CPU) and device (GPU).

+

TODO(dox): more thorough description.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1TanHLayer-members.html b/doxygen/classcaffe_1_1TanHLayer-members.html new file mode 100644 index 00000000000..dd48f82e215 --- /dev/null +++ b/doxygen/classcaffe_1_1TanHLayer-members.html @@ -0,0 +1,120 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::TanHLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::TanHLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::TanHLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::TanHLayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::NeuronLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::NeuronLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::TanHLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::TanHLayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlinevirtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
NeuronLayer(const LayerParameter &param) (defined in caffe::NeuronLayer< Dtype >)caffe::NeuronLayer< Dtype >inlineexplicit
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::NeuronLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
TanHLayer(const LayerParameter &param) (defined in caffe::TanHLayer< Dtype >)caffe::TanHLayer< Dtype >inlineexplicit
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::TanHLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1TanHLayer.html b/doxygen/classcaffe_1_1TanHLayer.html new file mode 100644 index 00000000000..a3a4b8529d3 --- /dev/null +++ b/doxygen/classcaffe_1_1TanHLayer.html @@ -0,0 +1,356 @@ + + + + + + + +Caffe: caffe::TanHLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::TanHLayer< Dtype > Class Template Reference
+
+
+ +

TanH hyperbolic tangent non-linearity $ y = \frac{\exp(2x) - 1}{\exp(2x) + 1} $, popular in auto-encoders. + More...

+ +

#include <tanh_layer.hpp>

+
+Inheritance diagram for caffe::TanHLayer< Dtype >:
+
+
+ + +caffe::NeuronLayer< Dtype > +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

TanHLayer (const LayerParameter &param)
 
+virtual const char * type () const
 Returns the layer type.
 
- Public Member Functions inherited from caffe::NeuronLayer< Dtype >
NeuronLayer (const LayerParameter &param)
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Computes the error gradient w.r.t. the sigmoid inputs. More...
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::TanHLayer< Dtype >

+ +

TanH hyperbolic tangent non-linearity $ y = \frac{\exp(2x) - 1}{\exp(2x) + 1} $, 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.

+

Member Function Documentation

+ +

§ Backward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void caffe::TanHLayer< Dtype >::Backward_cpu (const vector< Blob< Dtype > *> & top,
const vector< bool > & propagate_down,
const vector< Blob< Dtype > *> & bottom 
)
+
+protectedvirtual
+
+ +

Computes the error gradient w.r.t. the sigmoid inputs.

+
Parameters
+ + + + +
topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
    +
  1. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
  2. +
+
propagate_downsee Layer::Backward.
bottominput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \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) $ if propagate_down[0]
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::TanHLayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+
Parameters
+ + + +
bottominput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the inputs $ x $
  2. +
+
topoutput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the computed outputs $ y = \frac{\exp(2x) - 1}{\exp(2x) + 1} $
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/caffe/layers/tanh_layer.hpp
  • +
  • src/caffe/layers/tanh_layer.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1TanHLayer.png b/doxygen/classcaffe_1_1TanHLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..2da52ff88364f15433a72643c87f554e59cce43e GIT binary patch literal 1068 zcmeAS@N?(olHy`uVBq!ia0vp^n}N84gBeK9F4tNQq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0cYC@xhEy=Vo%^uwvlb7lI{V7^|4(es z^)P5z^04mfDv!9QCESK-8+w0FpAt07N5ylN*Fhc6e_UyvpRNmh-n3@bGnJR?rd_}P zLCf>1@u5GrUTnB2@p+}R=dRWKXQCsnap+ghN!Nb%C+)J>IjKC^wRxLfW+#+QTH?Pe z?cU#8^=UKI&+8gLsoU`O@{F*>w_+w){W=q~&+Lr2+SIFxnx@5jAMt&)efIU$j3eU9 z*@d$&-n-d$Q|;`pKMu9sJH_|z^IZ2}m6+e793St_TFrCIzy4{w8FBUNof&nz=jGlv z5Y*{3PYsA_d@DWaOz^Mbk6+*JQ}k?>da>vK_v=q@pILmu{(w!-AMV0wD*3FNReoyE zP(2y%{|x9$Zw9+62A^e|Gv)h#E>KUYQ}SoGRWAO*+ps^tfcb~^48}jAXBdD%z);U> z+_1k%@<9ASo(Jm_*gk}#NH4I_Txv4YW0J|#rpQS^Et8(CH-45H8G3f6zo*r8S?SGJ zKj)`h<@}ue^Wf3i^T}tHOM3;mw^mxek$R}w|2d~@U*);?WlvS#uP^(4EYG@xcl*-! zdtX|e%UgBV`poXFf79DmFW)zD=B-}+nzR#t6KztbXf#@jzH56&`YPoKJ9 ztJeKlm8)}YLY#h!XZpvy*9(lSQt!Q8v;JF|`I&38@9quQerE3snVGMxi! zo%42XrhcmZx#yYd&5c9tPUQRn1?aui>9@^&V!W(!>+j`Sx0$V6CVFF^;z^sO_TuT^ zf3>OX%v=zE{|E06;b(zQ)YPE8M$7wtMBQ&HvInR@_sAzGpVUlpLSbF zUp^fAPv-gMs(0cLFmPgg&ebxsLQ E0I8}S + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::ThresholdLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::ThresholdLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::ThresholdLayer< Dtype >inlineprotectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inlineprotectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::NeuronLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::NeuronLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ThresholdLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ThresholdLayer< Dtype >protectedvirtual
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::ThresholdLayer< Dtype >virtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
NeuronLayer(const LayerParameter &param) (defined in caffe::NeuronLayer< Dtype >)caffe::NeuronLayer< Dtype >inlineexplicit
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::NeuronLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
threshold_ (defined in caffe::ThresholdLayer< Dtype >)caffe::ThresholdLayer< Dtype >protected
ThresholdLayer(const LayerParameter &param)caffe::ThresholdLayer< Dtype >inlineexplicit
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::ThresholdLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1ThresholdLayer.html b/doxygen/classcaffe_1_1ThresholdLayer.html new file mode 100644 index 00000000000..1be34f69206 --- /dev/null +++ b/doxygen/classcaffe_1_1ThresholdLayer.html @@ -0,0 +1,385 @@ + + + + + + + +Caffe: caffe::ThresholdLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::ThresholdLayer< Dtype > Class Template Reference
+
+
+ +

Tests whether the input exceeds a threshold: outputs 1 for inputs above threshold; 0 otherwise. + More...

+ +

#include <threshold_layer.hpp>

+
+Inheritance diagram for caffe::ThresholdLayer< Dtype >:
+
+
+ + +caffe::NeuronLayer< Dtype > +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ThresholdLayer (const LayerParameter &param)
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual const char * type () const
 Returns the layer type.
 
- Public Member Functions inherited from caffe::NeuronLayer< Dtype >
NeuronLayer (const LayerParameter &param)
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Not implemented (non-differentiable function)
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + +

+Protected Attributes

+Dtype threshold_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::ThresholdLayer< Dtype >

+ +

Tests whether the input exceeds a threshold: outputs 1 for inputs above threshold; 0 otherwise.

+

Constructor & Destructor Documentation

+ +

§ ThresholdLayer()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + +
caffe::ThresholdLayer< Dtype >::ThresholdLayer (const LayerParameter & param)
+
+inlineexplicit
+
+
Parameters
+ + +
paramprovides ThresholdParameter threshold_param, with ThresholdLayer options:
    +
  • threshold (optional, default 0). the threshold value $ t $ to which the input values are compared.
  • +
+
+
+
+ +
+
+

Member Function Documentation

+ +

§ Forward_cpu()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::ThresholdLayer< Dtype >::Forward_cpu (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+protectedvirtual
+
+
Parameters
+ + + +
bottominput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the inputs $ x $
  2. +
+
topoutput Blob vector (length 1)
    +
  1. $ (N \times C \times H \times W) $ the computed outputs $ y = \left\{ \begin{array}{lr} 0 & \mathrm{if} \; x \le t \\ 1 & \mathrm{if} \; x > t \end{array} \right. $
  2. +
+
+
+
+ +

Implements caffe::Layer< Dtype >.

+ +
+
+ +

§ LayerSetUp()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::ThresholdLayer< Dtype >::LayerSetUp (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Does layer-specific setup: your layer should implement this function as well as Reshape.

+
Parameters
+ + + +
bottomthe preshaped input blobs, whose data fields store the input data for this layer
topthe allocated but unshaped output blobs
+
+
+

This method should do one-time layer specific setup. This includes reading and processing relevent parameters from the layer_param_. Setting up the shapes of top blobs and internal buffers should be done in Reshape, which will be called before the forward pass to adjust the top blob sizes.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1ThresholdLayer.png b/doxygen/classcaffe_1_1ThresholdLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..bb75899f2753b6470e68ed073783d71c4eefc91c GIT binary patch literal 1102 zcmeAS@N?(olHy`uVBq!ia0vp^2Z6YQgBeI>o~{Q;NCfzVxc>kDAIN<1=4)yHp$R}1 z7#}!rfVK0EJdn##666=m08|75S5Ji)F)%RS^>lFzsbG9N_hH{>Egn{N_LcAdpV*%3 zvBC31+ur!;N|jeP>mIq$!+S11$SX5zqDp2GYokhUsDQ_%h`((KkzqS6J$J2s`t|x= zuStGixSPUnIKQxKS|;uJ>WXcXZff?o={Dy!_bJ%l+_LmmeyQx*yiG5&6O=qJ`QBB! zvG|6*@tMiFr}sRSE&iSFbN9q-@1W@IoTturJvekEQkLr(=btXVHoc~=OtX}OoMe2~ zxYmBwW{M7Y{aMbL|6pX=dEZYb%a<<;WKNFad+eTdVGp~#fP{8Ezt-jR_n2>Y`;?s) zG-O}4Mf`TR%1r-Cd6D?}Z(S!{S=m?n=Y09?c8)5>eSHh0AN`keWPoJHs_sn|T*US0!&+E9a!Us>^JoxahMJ>zOhDlehH70l;ne|t- z|8oxC)}trSmpxT|Kfg?W>fLEf`>(Fu@_xZuBpAy-pvqk-wq$y{a z_3PE|1VtOarY)A2kYY*yX(jaI^*xmW@udl|R}S3U`YY@HO2^*~KQ25gD-n{Y|0fr+ zZ2wO7ZQ?WMOg(h_`@y{Gq>R(~x4MCWdS>|^{;tjUzbJYBnqg)2_iy>_c%d&$HL{N8 z2fkl*nDlQi$md$1AehIZxzuDcgWW3j16O9vd+>3FY+_ZD`hh1LpM_oYnIzUKFi5N> z9`CreN$2#HB*qyLjtmB2AgtT;T(ti6jV-rMO#S)q>eR)i#|}y#*eNAl(e z4!uLnG9eshUrc|W|M}hGeAV~pNt;sjA}c4jzt40|c;>q&_=9PU+1EP8?>A-NT>EyK z$NSg)j&IffMNU_}Q*r_Zai-SxnY$*MujlBR-1T6~k$E3-y5D6!y;WH*4Gca}(Zh`i zdp(w2*;eA-^ykjJezk+|ZmnHo<>s33_t)MxS66eKGy3ApD|ORWV2bHGo0uyHX2?k$ zs^p#Z{lPKKECHGKjrXtpyC7V7x%&HoZ%UJw2E7VyS|xr{FS+Vs-IbhQ(z*Nh@O$-C z@8x*Ve?{=)vE8{0j`|0#3zjg~#Pc%zTiC>qum*(V^1D+br*(dnUwPDT#{0t5`M}K2 N;OXk;vd$@?2>_Ko1hD`B literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1TileLayer-members.html b/doxygen/classcaffe_1_1TileLayer-members.html new file mode 100644 index 00000000000..b9334473c5a --- /dev/null +++ b/doxygen/classcaffe_1_1TileLayer-members.html @@ -0,0 +1,123 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::TileLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::TileLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
axis_ (defined in caffe::TileLayer< Dtype >)caffe::TileLayer< Dtype >protected
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::TileLayer< Dtype >protectedvirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::TileLayer< Dtype >protectedvirtual
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::TileLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::TileLayer< Dtype >inlinevirtual
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::TileLayer< Dtype >protectedvirtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::TileLayer< Dtype >protectedvirtual
inner_dim_ (defined in caffe::TileLayer< Dtype >)caffe::TileLayer< Dtype >protected
IsShared() constcaffe::Layer< Dtype >inline
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlinevirtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
outer_dim_ (defined in caffe::TileLayer< Dtype >)caffe::TileLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::TileLayer< Dtype >virtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::Layer< Dtype >inlinevirtual
TileLayer(const LayerParameter &param) (defined in caffe::TileLayer< Dtype >)caffe::TileLayer< Dtype >inlineexplicit
tiles_ (defined in caffe::TileLayer< Dtype >)caffe::TileLayer< Dtype >protected
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
type() constcaffe::TileLayer< Dtype >inlinevirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1TileLayer.html b/doxygen/classcaffe_1_1TileLayer.html new file mode 100644 index 00000000000..17a42c71de1 --- /dev/null +++ b/doxygen/classcaffe_1_1TileLayer.html @@ -0,0 +1,365 @@ + + + + + + + +Caffe: caffe::TileLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::TileLayer< Dtype > Class Template Reference
+
+
+ +

Copy a Blob along specified dimensions. + More...

+ +

#include <tile_layer.hpp>

+
+Inheritance diagram for caffe::TileLayer< Dtype >:
+
+
+ + +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

TileLayer (const LayerParameter &param)
 
virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual bool ShareInParallel () const
 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.
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
+ + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+unsigned int axis_
 
+unsigned int tiles_
 
+unsigned int outer_dim_
 
+unsigned int inner_dim_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::TileLayer< Dtype >

+ +

Copy a Blob along specified dimensions.

+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::TileLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::TileLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ Reshape()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void caffe::TileLayer< Dtype >::Reshape (const vector< Blob< Dtype > *> & bottom,
const vector< Blob< Dtype > *> & top 
)
+
+virtual
+
+ +

Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs.

+
Parameters
+ + + +
bottomthe input blobs, with the requested input shapes
topthe top blobs, which should be reshaped as needed
+
+
+

This method should reshape top blobs as needed according to the shapes of the bottom (input) blobs, as well as reshaping any internal buffers and making any other necessary adjustments so that the layer can accommodate the bottom blobs.

+ +

Implements caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/caffe/layers/tile_layer.hpp
  • +
  • src/caffe/layers/tile_layer.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1TileLayer.png b/doxygen/classcaffe_1_1TileLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..f8c5d1688458eb695018853cf5abbe565bbadf21 GIT binary patch literal 691 zcmeAS@N?(olHy`uVBq!ia0vp^bAdR3gBeJg^tJZ^DTx4|5ZC|z{{xvX-h3_XKQsZz z0^aLzwrnt@cNArE1)0=p-#XO}#Ci_iFnpHAMwHeTZS+{i{l@;@mC==-rAwaP?|RqUx!Fqf*5%56wfoY$*3R_3+4cM6k*F)dAs25t z-Ix(xle=qmPt5Eme#KLBo}8O8jqT;R*v;?lE=X$MFQ1yZ=lz>Av(`-6G*fAs;TB`< zlQpMm!;_AthfT7&S~$7%?&#+u*BFIM;b?+W+F&vyHh0t}bEj$h^dO#N;Id(BBM(zE%x0)MOoeCi5vQ^JEvej3oUl zx}b?&$cr7xi=iX^>0S%N{`6tQs#S%`}}u)FW1hG zyEs)r^sehWo4Mu1^WLRS|0g=v+Rt^n={n7czB`v{x1Bp%b#-#+#hZ_Qe3yw_|6-lr z{WEt@>b65d?U#^A@%1;m`={Domh=aP+snQCHXCOf1$bSVadU4+D$m<9OwWSf?H2lf z?+jCoqwK}JJE!B9!9$MygDWfmUgypT@@jr1zwe1+dFHW{5?~5r@O1TaS?83{1OPk7 BQ-c5i literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1Timer-members.html b/doxygen/classcaffe_1_1Timer-members.html new file mode 100644 index 00000000000..66208fda338 --- /dev/null +++ b/doxygen/classcaffe_1_1Timer-members.html @@ -0,0 +1,100 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::Timer Member List
+
+
+ +

This is the complete list of members for caffe::Timer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
elapsed_microseconds_ (defined in caffe::Timer)caffe::Timerprotected
elapsed_milliseconds_ (defined in caffe::Timer)caffe::Timerprotected
has_run_at_least_once() (defined in caffe::Timer)caffe::Timerinline
has_run_at_least_once_ (defined in caffe::Timer)caffe::Timerprotected
Init() (defined in caffe::Timer)caffe::Timerprotected
initted() (defined in caffe::Timer)caffe::Timerinline
initted_ (defined in caffe::Timer)caffe::Timerprotected
MicroSeconds() (defined in caffe::Timer)caffe::Timervirtual
MilliSeconds() (defined in caffe::Timer)caffe::Timervirtual
running() (defined in caffe::Timer)caffe::Timerinline
running_ (defined in caffe::Timer)caffe::Timerprotected
Seconds() (defined in caffe::Timer)caffe::Timervirtual
Start() (defined in caffe::Timer)caffe::Timervirtual
start_cpu_ (defined in caffe::Timer)caffe::Timerprotected
start_gpu_ (defined in caffe::Timer)caffe::Timerprotected
Stop() (defined in caffe::Timer)caffe::Timervirtual
stop_cpu_ (defined in caffe::Timer)caffe::Timerprotected
stop_gpu_ (defined in caffe::Timer)caffe::Timerprotected
Timer() (defined in caffe::Timer)caffe::Timer
~Timer() (defined in caffe::Timer)caffe::Timervirtual
+ + + + diff --git a/doxygen/classcaffe_1_1Timer.html b/doxygen/classcaffe_1_1Timer.html new file mode 100644 index 00000000000..f9399777433 --- /dev/null +++ b/doxygen/classcaffe_1_1Timer.html @@ -0,0 +1,159 @@ + + + + + + + +Caffe: caffe::Timer Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+
+Inheritance diagram for caffe::Timer:
+
+
+ + +caffe::CPUTimer + +
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

+virtual void Start ()
 
+virtual void Stop ()
 
+virtual float MilliSeconds ()
 
+virtual float MicroSeconds ()
 
+virtual float Seconds ()
 
+bool initted ()
 
+bool running ()
 
+bool has_run_at_least_once ()
 
+ + + +

+Protected Member Functions

+void Init ()
 
+ + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+bool initted_
 
+bool running_
 
+bool has_run_at_least_once_
 
+cudaEvent_t start_gpu_
 
+cudaEvent_t stop_gpu_
 
+boost::posix_time::ptime start_cpu_
 
+boost::posix_time::ptime stop_cpu_
 
+float elapsed_milliseconds_
 
+float elapsed_microseconds_
 
+
The documentation for this class was generated from the following files:
    +
  • include/caffe/util/benchmark.hpp
  • +
  • src/caffe/util/benchmark.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1Timer.png b/doxygen/classcaffe_1_1Timer.png new file mode 100644 index 0000000000000000000000000000000000000000..9e06178f4edacd0112150e20256aca34ae4bd352 GIT binary patch literal 499 zcmeAS@N?(olHy`uVBq!ia0vp^=|CL7!3-pgAI!c7q$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXgn><|{Ln;{G&VAeWT7id^UHR!>`AT8C zF3l&)*5%y@eWI~kBx^=Lfw@7(w$DNlO72Y#6>6JHRta_V`# zLgnRu@}Bv8GF#h!ZrRM@sQLeAnBUE}bohGt0y}TeZ{7#K|NgTjOfP15Q>CEZBJfVU zAyoPRlkTIO+fo;l&hB1IfZLM&fZlV48z7g>VFv3c;%kUKcXPf(vPo9A zq1)mPC8h1BEtQnY{+g+`=m-Yp-+(WkiW9!-TntM|8_B-TGn^Duk!Jp`^(q+`{&L3@~m-k ze@0ozqc;8jk217{&#C0Af8DvSpYQJ)yUn|5W&*vm(=+7u3bj|-VVkWAqW1s%KfB|^ m_M*Oyj#&ODM + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::UniformFiller< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::UniformFiller< Dtype >, including all inherited members.

+ + + + + + +
Fill(Blob< Dtype > *blob) (defined in caffe::UniformFiller< Dtype >)caffe::UniformFiller< Dtype >inlinevirtual
Filler(const FillerParameter &param) (defined in caffe::Filler< Dtype >)caffe::Filler< Dtype >inlineexplicit
filler_param_ (defined in caffe::Filler< Dtype >)caffe::Filler< Dtype >protected
UniformFiller(const FillerParameter &param) (defined in caffe::UniformFiller< Dtype >)caffe::UniformFiller< Dtype >inlineexplicit
~Filler() (defined in caffe::Filler< Dtype >)caffe::Filler< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1UniformFiller.html b/doxygen/classcaffe_1_1UniformFiller.html new file mode 100644 index 00000000000..954789d1db5 --- /dev/null +++ b/doxygen/classcaffe_1_1UniformFiller.html @@ -0,0 +1,123 @@ + + + + + + + +Caffe: caffe::UniformFiller< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::UniformFiller< Dtype > Class Template Reference
+
+
+ +

Fills a Blob with uniformly distributed values $ x\sim U(a, b) $. + More...

+ +

#include <filler.hpp>

+
+Inheritance diagram for caffe::UniformFiller< Dtype >:
+
+
+ + +caffe::Filler< Dtype > + +
+ + + + + + + + + +

+Public Member Functions

UniformFiller (const FillerParameter &param)
 
+virtual void Fill (Blob< Dtype > *blob)
 
- Public Member Functions inherited from caffe::Filler< Dtype >
Filler (const FillerParameter &param)
 
+ + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::Filler< Dtype >
+FillerParameter filler_param_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::UniformFiller< Dtype >

+ +

Fills a Blob with uniformly distributed values $ x\sim U(a, b) $.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classcaffe_1_1UniformFiller.png b/doxygen/classcaffe_1_1UniformFiller.png new file mode 100644 index 0000000000000000000000000000000000000000..af11ba30d9fd29f97336b5ef93739bcdcd8f29d8 GIT binary patch literal 742 zcmeAS@N?(olHy`uVBq!ia0vp^8-O@~gBeKn>GHn=QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;Se?8^@fA#&r zj!{QnezQC4cIePurfc579gV*Rj^+jG}i?gx{mm~PiR|9KVjI>~!NFHc^(`AVtyys)tA zB)zXv6~#IAXRbWCqPyl!w4`Oi>kIoIo>5)7G&`aGUf4R5{sX&z=q9}XF80ax!P~g0 z#_QwyCC#iiY%D+UZN-}X+E1bn^iHx^pBT=hE_seM@6Wv>f7eUZG3Myh@Lq3UdglMO zw%q9}JT><&s(qO?eL{-c+rwAS&oAfn?7DcoUNN5O9#_<)dzZ=^&ZbUVQvPM_qzOy< zO&U}+gP0>GDSc&`w=DCO2ZLf2!!1g2yj@m~>SZ zFxE)%E?CGFQ?~2bx1IaWd|p*-XCEEERc-U~qqBMAjdRxYSx3h{72jMfzKd~BlRSJ%b$)NLw2ex0N`CM?_3rGHZH<2wquv_bVJWNGX)-(d^T+-Ja*6FV4EOZB zEl<4qEBnB??JVCL&-V>$m8EaZIm@>rP^eexAH$8G8R-^>C0dx@-Ie+$o$&a~^@7?R zv2CxVw#6=bx5cC>N}<}M_`l-J!fUDw##!>~6yKL}HmrYrEdGQ)V?HZy!J>F3JF|#} txpk{m81zgU7?n&xxcudmpjYny8Qy!Sc7|W~Ukyx@44$rjF6*2UngGy!SY-eJ literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1WindowDataLayer-members.html b/doxygen/classcaffe_1_1WindowDataLayer-members.html new file mode 100644 index 00000000000..4edbbe2cee0 --- /dev/null +++ b/doxygen/classcaffe_1_1WindowDataLayer-members.html @@ -0,0 +1,159 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::WindowDataLayer< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::WindowDataLayer< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AllowForceBackward(const int bottom_index) constcaffe::Layer< Dtype >inlinevirtual
AutoTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
Backward(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::Layer< Dtype >inline
Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::BaseDataLayer< Dtype >inlinevirtual
Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)caffe::BaseDataLayer< Dtype >inlinevirtual
BaseDataLayer(const LayerParameter &param) (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >explicit
BasePrefetchingDataLayer(const LayerParameter &param) (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >explicit
bg_windows_ (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected
blobs()caffe::Layer< Dtype >inline
blobs_caffe::Layer< Dtype >protected
cache_images_ (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected
CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual
data_mean_ (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected
data_transformer_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected
DataLayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top) (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >virtual
EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
ExactNumBottomBlobs() constcaffe::WindowDataLayer< Dtype >inlinevirtual
ExactNumTopBlobs() constcaffe::WindowDataLayer< Dtype >inlinevirtual
fg_windows_ (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected
Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BasePrefetchingDataLayer< Dtype >virtual
Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BasePrefetchingDataLayer< Dtype >virtual
has_mean_file_ (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected
has_mean_values_ (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected
image_database_ (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected
image_database_cache_ (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected
IMAGE_INDEX enum value (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected
InternalThread() (defined in caffe::InternalThread)caffe::InternalThreadinline
InternalThreadEntry() (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protectedvirtual
is_started() const (defined in caffe::InternalThread)caffe::InternalThread
IsShared() constcaffe::Layer< Dtype >inline
LABEL enum value (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected
Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit
layer_param() constcaffe::Layer< Dtype >inline
layer_param_caffe::Layer< Dtype >protected
LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BasePrefetchingDataLayer< Dtype >virtual
load_batch(Batch< Dtype > *batch) (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protectedvirtual
loss(const int top_index) constcaffe::Layer< Dtype >inline
loss_caffe::Layer< Dtype >protected
MaxBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
mean_values_ (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected
MinBottomBlobs() constcaffe::Layer< Dtype >inlinevirtual
MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual
must_stop() (defined in caffe::InternalThread)caffe::InternalThreadprotected
NUM enum value (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected
output_labels_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected
OVERLAP enum value (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected
param_propagate_down(const int param_id)caffe::Layer< Dtype >inline
param_propagate_down_caffe::Layer< Dtype >protected
phase_caffe::Layer< Dtype >protected
prefetch_ (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protected
PREFETCH_COUNT (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >static
prefetch_free_ (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protected
prefetch_full_ (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protected
prefetch_rng_ (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected
PrefetchRand() (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protectedvirtual
Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::BaseDataLayer< Dtype >inlinevirtual
set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline
set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline
SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected
SetShared(bool is_shared)caffe::Layer< Dtype >inline
SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline
ShareInParallel() constcaffe::BaseDataLayer< Dtype >inlinevirtual
StartInternalThread()caffe::InternalThread
StopInternalThread()caffe::InternalThread
ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual
transform_param_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected
transformed_data_ (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protected
type() constcaffe::WindowDataLayer< Dtype >inlinevirtual
WindowDataLayer(const LayerParameter &param) (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >inlineexplicit
WindowField enum name (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected
X1 enum value (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected
X2 enum value (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected
Y1 enum value (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected
Y2 enum value (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected
~InternalThread() (defined in caffe::InternalThread)caffe::InternalThreadvirtual
~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
~WindowDataLayer() (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >virtual
+ + + + diff --git a/doxygen/classcaffe_1_1WindowDataLayer.html b/doxygen/classcaffe_1_1WindowDataLayer.html new file mode 100644 index 00000000000..4f166e93c3f --- /dev/null +++ b/doxygen/classcaffe_1_1WindowDataLayer.html @@ -0,0 +1,416 @@ + + + + + + + +Caffe: caffe::WindowDataLayer< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::WindowDataLayer< Dtype > Class Template Reference
+
+
+ +

Provides data to the Net from windows of images files, specified by a window data file. + More...

+ +

#include <window_data_layer.hpp>

+
+Inheritance diagram for caffe::WindowDataLayer< Dtype >:
+
+
+ + +caffe::BasePrefetchingDataLayer< Dtype > +caffe::BaseDataLayer< Dtype > +caffe::InternalThread +caffe::Layer< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

WindowDataLayer (const LayerParameter &param)
 
+virtual void DataLayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
+virtual const char * type () const
 Returns the layer type.
 
virtual int ExactNumBottomBlobs () const
 Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required. More...
 
virtual int ExactNumTopBlobs () const
 Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
 
- Public Member Functions inherited from caffe::BasePrefetchingDataLayer< Dtype >
BasePrefetchingDataLayer (const LayerParameter &param)
 
void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Does layer-specific setup: your layer should implement this function as well as Reshape. More...
 
+virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the CPU device, compute the layer output.
 
+virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
 
- Public Member Functions inherited from caffe::BaseDataLayer< Dtype >
BaseDataLayer (const LayerParameter &param)
 
+virtual bool ShareInParallel () const
 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 void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
 
+virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true.
 
+virtual void Backward_gpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_down is true. Fall back to Backward_cpu() if unavailable.
 
- Public Member Functions inherited from caffe::Layer< Dtype >
 Layer (const LayerParameter &param)
 
void SetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Implements common layer setup functionality. More...
 
+bool IsShared () const
 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.
 
+void SetShared (bool is_shared)
 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.
 
Dtype Forward (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 Given the bottom blobs, compute the top blobs and the loss. More...
 
void Backward (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
 Given the top blob error gradients, compute the bottom blob error gradients. More...
 
+vector< shared_ptr< Blob< Dtype > > > & blobs ()
 Returns the vector of learnable parameter blobs.
 
+const LayerParameter & layer_param () const
 Returns the layer parameter.
 
+virtual void ToProto (LayerParameter *param, bool write_diff=false)
 Writes the layer parameter to a protocol buffer.
 
+Dtype loss (const int top_index) const
 Returns the scalar loss associated with a top blob at a given index.
 
+void set_loss (const int top_index, const Dtype value)
 Sets the loss associated with a top blob at a given index.
 
virtual int MinBottomBlobs () const
 Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxBottomBlobs () const
 Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual int MinTopBlobs () const
 Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
 
virtual int MaxTopBlobs () const
 Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
 
virtual bool EqualNumBottomTopBlobs () const
 Returns true if the layer requires an equal number of bottom and top blobs. More...
 
virtual bool AutoTopBlobs () const
 Return whether "anonymous" top blobs are created automatically by the layer. More...
 
virtual bool AllowForceBackward (const int bottom_index) const
 Return whether to allow force_backward for a given bottom blob index. More...
 
bool param_propagate_down (const int param_id)
 Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id. More...
 
+void set_param_propagate_down (const int param_id, const bool value)
 Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by param_id.
 
- Public Member Functions inherited from caffe::InternalThread
void StartInternalThread ()
 
void StopInternalThread ()
 
+bool is_started () const
 
+ + + +

+Protected Types

enum  WindowField {
+  IMAGE_INDEX, +LABEL, +OVERLAP, +X1, +
+  Y1, +X2, +Y2, +NUM +
+ }
 
+ + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual unsigned int PrefetchRand ()
 
+virtual void load_batch (Batch< Dtype > *batch)
 
- Protected Member Functions inherited from caffe::BasePrefetchingDataLayer< Dtype >
+virtual void InternalThreadEntry ()
 
- Protected Member Functions inherited from caffe::Layer< Dtype >
virtual void CheckBlobCounts (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
 
void SetLossWeights (const vector< Blob< Dtype > *> &top)
 
- Protected Member Functions inherited from caffe::InternalThread
+bool must_stop ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+shared_ptr< Caffe::RNGprefetch_rng_
 
+vector< std::pair< std::string, vector< int > > > image_database_
 
+vector< vector< float > > fg_windows_
 
+vector< vector< float > > bg_windows_
 
+Blob< Dtype > data_mean_
 
+vector< Dtype > mean_values_
 
+bool has_mean_file_
 
+bool has_mean_values_
 
+bool cache_images_
 
+vector< std::pair< std::string, Datum > > image_database_cache_
 
- Protected Attributes inherited from caffe::BasePrefetchingDataLayer< Dtype >
+Batch< Dtype > prefetch_ [PREFETCH_COUNT]
 
+BlockingQueue< Batch< Dtype > * > prefetch_free_
 
+BlockingQueue< Batch< Dtype > * > prefetch_full_
 
+Blob< Dtype > transformed_data_
 
- Protected Attributes inherited from caffe::BaseDataLayer< Dtype >
+TransformationParameter transform_param_
 
+shared_ptr< DataTransformer< Dtype > > data_transformer_
 
+bool output_labels_
 
- Protected Attributes inherited from caffe::Layer< Dtype >
LayerParameter layer_param_
 
Phase phase_
 
vector< shared_ptr< Blob< Dtype > > > blobs_
 
vector< bool > param_propagate_down_
 
vector< Dtype > loss_
 
+ + + + +

+Additional Inherited Members

- Static Public Attributes inherited from caffe::BasePrefetchingDataLayer< Dtype >
+static const int PREFETCH_COUNT = 3
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::WindowDataLayer< Dtype >

+ +

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.

+

Member Function Documentation

+ +

§ ExactNumBottomBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::WindowDataLayer< Dtype >::ExactNumBottomBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of bottom blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+ +

§ ExactNumTopBlobs()

+ +
+
+
+template<typename Dtype >
+ + + + + +
+ + + + + + + +
virtual int caffe::WindowDataLayer< Dtype >::ExactNumTopBlobs () const
+
+inlinevirtual
+
+ +

Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

+

This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

+ +

Reimplemented from caffe::Layer< Dtype >.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classcaffe_1_1WindowDataLayer.png b/doxygen/classcaffe_1_1WindowDataLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..1a71cc36c0d70f106837ecc46774546c7a4c06aa GIT binary patch literal 2286 zcmb`Jc~}!?9>*sFjfqwe4MYT$5>_2W0Y#!BAc7J(8bdBXASf1zEkUjY2@-io5k-WQ zOA$eY3Q0(VU^zl!2*kJ?O1WHIuAl@EtH>cBg>*vQeYU&*?X&YdGxPl&&&)gT`+2_a zq~JYIe2Fwd0s!zO&efR!0IM`wx>^gm5~f9Wpc@+RPIOVL)sP%}I~#RVmJX?vQ!16} zr1Wit!qt%kPcHy!(j48*L~AG&k8?gsjDh`{Kk@MXZatTre{k#7W(ijQW5?b1E8M5D z7S~=F*3rA|GMyuNzqm__wk1J~@iXMnQ2bSnG7vy(R3Zs*y(4gXaichxQ6#Z3Qow^_xYvxa(|{Zk$Mc zveF%uJ#x)K8GWh7FT!V0p0l9F+w_mT;mp{RmEWS8&y~o20Lywnb`UE3`i65tWC31z zSKR5Z+sh=G_vA(|Wh1TRP4>?-8bGEayT_kF*_5_Cruc!c$IXs-;td;OK09?U|KkK- zNH*>AAx9ICl(YV*~I?A%YAWdc_=Jr56uML8=Z9NEaf3CmKaV0s8TS zbCfTn05g9x3s!T843qYG)b#2AXHh`w`9wd!63V1n185cx%A}H3V(LnHt={#24>dK% z-B9-*)z7U!#h*eb&}usK9}l{mrdhsMuDdhF%*X4TQJC?%m9g;?i}BF<36bQZgdOj> z?NMe6y-QznjJn=8&yv^Rd@3R%O0zKEeF#C_zVgy`A@t5W@$7W(-Hq36Noa}0sG-t^ zJ1FMKR0{KP6MMcay6|J^JCi5V^#8^HFvVsyepHknJm>qaz9GW)1rJ@uFzh+zJPsP1e$z1^1jcsJwcPX#Y6 zBuSwv?)V-`PO;$~flT6BMpIN#*DYo`g;&6!!)}{AkW4gH zlFJB6*BJXE8PCxs+SzXxZ(AAfyoWDmKqW-J3QxB4FWRDe^_<(+HXX1Etp7lg=VS~Y*W)VhrrQnyDgj{YOv8+TySUhmc!@?2SK)xRe}2rbGg3#DcQ!yn)&i$AGv~5 z_}r#rwSWBi0xDd6Ojmtc2lvU)IG5UKfIB2z09`xO83kU-QUv)Z=h@H;BKF%vQhM>e zd9jugXW5k806~d^h=IWTy!bo7nfSqg+(M_pxg|Di9<&8sxnhB|CTn$`Ul_(1D9q%Y z7`9Ik4QaC4_-ihj)<&D9KD@MxtmGpB;5~vN9%Ut_*X_&R%el7 z?#c9?&eD${E>8H>#EXSd@b_Hd!Am$g4b=m-ib6C_w6&U!m_GfeYK@!aqnjp8ixs_L zk0UJyN(Q{HW2Nla=~0^kQEY4BvZtFaPe=$%@rAIQrk5P5ZK!fC_mnkuJe1I9{4u>o zLtUXC%p)s5oe?&J08txt61xl4qlg_)bZ-)uId$HstM*~3o^}kqX??VC1<#OFA@jgg zH=~ZQlnA?R*(L|OU9)7B;kCZ(z8b5CSYgNuMw#Assa`v+scZ|BPo98$um0&S#_Zf^0JO0N(WE~BWsUM$AR+0=)7w3rI?(lx&4V{@-UmZ^&4b%8*vp$Rt8qX zj^-t2pqX;*s6Jnwfw4J=uMN2lxrOX~X?plIjCcql3`R2yc#izF$pUAwE)R0L=nre) zNtk$q2ChHv4;sWa0a}w$p}-eIZy=9~uvLCzxZ-yA5z#Aj>}v*SfFSMvV|f4Vobw0k z1QUX_tW6}KW)HccVsZwy!mYt)tvK^bKTo&oi2G~X8v>E?C-0GVYt}*DpO`wtLK7WQ_7HyK<)#go-Y-Z+ce_C_sDyVBVhcF%fT;a zeZeN@tm7YjzTkyH{ + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::WorkerSolver< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::WorkerSolver< Dtype >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
action_request_function_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
add_callback(Callback *value) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
ApplyUpdate() (defined in caffe::WorkerSolver< Dtype >)caffe::WorkerSolver< Dtype >inlineprotectedvirtual
callbacks() const (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
callbacks_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
CheckSnapshotWritePermissions() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
current_step_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
DISABLE_COPY_AND_ASSIGN(Solver) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
DisplayOutputBlobs(const int net_id) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
GetRequestedAction() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
Init(const SolverParameter &param) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
InitTestNets() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
InitTrainNet() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
iter() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
iter_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
losses_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
net() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
net_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
param() const (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
param_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
requested_early_exit_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Restore(const char *resume_file) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
RestoreSolverStateFromBinaryProto(const string &state_file) (defined in caffe::WorkerSolver< Dtype >)caffe::WorkerSolver< Dtype >inlineprotectedvirtual
RestoreSolverStateFromHDF5(const string &state_file) (defined in caffe::WorkerSolver< Dtype >)caffe::WorkerSolver< Dtype >inlineprotectedvirtual
root_solver_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
SetActionFunction(ActionCallback func) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
smoothed_loss_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Snapshot() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
SnapshotFilename(const string extension) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
SnapshotSolverState(const string &model_filename) (defined in caffe::WorkerSolver< Dtype >)caffe::WorkerSolver< Dtype >inlineprotectedvirtual
SnapshotToBinaryProto() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
SnapshotToHDF5() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
Solve(const char *resume_file=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >virtual
Solve(const string resume_file) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
Solver(const SolverParameter &param, const Solver *root_solver=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >explicit
Solver(const string &param_file, const Solver *root_solver=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >explicit
Step(int iters) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
Test(const int test_net_id=0) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
test_nets() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
test_nets_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
TestAll() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
type() constcaffe::Solver< Dtype >inlinevirtual
UpdateSmoothedLoss(Dtype loss, int start_iter, int average_loss) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
WorkerSolver(const SolverParameter &param, const Solver< Dtype > *root_solver=NULL) (defined in caffe::WorkerSolver< Dtype >)caffe::WorkerSolver< Dtype >inlineexplicit
~Solver() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1WorkerSolver.html b/doxygen/classcaffe_1_1WorkerSolver.html new file mode 100644 index 00000000000..82f9eb96a15 --- /dev/null +++ b/doxygen/classcaffe_1_1WorkerSolver.html @@ -0,0 +1,249 @@ + + + + + + + +Caffe: caffe::WorkerSolver< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::WorkerSolver< Dtype > Class Template Reference
+
+
+ +

Solver that only computes gradients, used as worker for multi-GPU training. + More...

+ +

#include <solver.hpp>

+
+Inheritance diagram for caffe::WorkerSolver< Dtype >:
+
+
+ + +caffe::Solver< Dtype > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

WorkerSolver (const SolverParameter &param, const Solver< Dtype > *root_solver=NULL)
 
- Public Member Functions inherited from caffe::Solver< Dtype >
Solver (const SolverParameter &param, const Solver *root_solver=NULL)
 
Solver (const string &param_file, const Solver *root_solver=NULL)
 
+void Init (const SolverParameter &param)
 
+void InitTrainNet ()
 
+void InitTestNets ()
 
+void SetActionFunction (ActionCallback func)
 
+SolverAction::Enum GetRequestedAction ()
 
+virtual void Solve (const char *resume_file=NULL)
 
+void Solve (const string resume_file)
 
+void Step (int iters)
 
+void Restore (const char *resume_file)
 
+void Snapshot ()
 
+const SolverParameter & param () const
 
+shared_ptr< Net< Dtype > > net ()
 
+const vector< shared_ptr< Net< Dtype > > > & test_nets ()
 
+int iter ()
 
+const vector< Callback * > & callbacks () const
 
+void add_callback (Callback *value)
 
+void CheckSnapshotWritePermissions ()
 
+virtual const char * type () const
 Returns the solver type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+void ApplyUpdate ()
 
+void SnapshotSolverState (const string &model_filename)
 
+void RestoreSolverStateFromBinaryProto (const string &state_file)
 
+void RestoreSolverStateFromHDF5 (const string &state_file)
 
- Protected Member Functions inherited from caffe::Solver< Dtype >
+string SnapshotFilename (const string extension)
 
+string SnapshotToBinaryProto ()
 
+string SnapshotToHDF5 ()
 
+void TestAll ()
 
+void Test (const int test_net_id=0)
 
+void DisplayOutputBlobs (const int net_id)
 
+void UpdateSmoothedLoss (Dtype loss, int start_iter, int average_loss)
 
DISABLE_COPY_AND_ASSIGN (Solver)
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::Solver< Dtype >
+SolverParameter param_
 
+int iter_
 
+int current_step_
 
+shared_ptr< Net< Dtype > > net_
 
+vector< shared_ptr< Net< Dtype > > > test_nets_
 
+vector< Callback * > callbacks_
 
+vector< Dtype > losses_
 
+Dtype smoothed_loss_
 
+const Solver *const root_solver_
 
+ActionCallback action_request_function_
 
+bool requested_early_exit_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::WorkerSolver< Dtype >

+ +

Solver that only computes gradients, used as worker for multi-GPU training.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classcaffe_1_1WorkerSolver.png b/doxygen/classcaffe_1_1WorkerSolver.png new file mode 100644 index 0000000000000000000000000000000000000000..d8d2158dfe50635fdc1aa19cd1f24aecdff9039d GIT binary patch literal 750 zcmeAS@N?(olHy`uVBq!ia0vp^+kiNLgBeIR8`rM{QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;SZ+_|C|B3sz zWgak7S^C>7Ol4Wz$|d5(1v&5aZ*R-}-03?h?ed{%O9G>AOfvC$pRjz3chJuzx93NC zURwI@U;FE=p_BZ+uzmYG=hYgA3yrl>UX!XyduvtF&KFm$%dPvo{kcD@rux;-Z&%xf z+)M16xa9h-Bi|Hes_U2UN?7}%xY05vyHq=W`jWP|r0MG!Z%_ThTDBk~@wcq)gV-C@ z;xo6)Cmmb7R(o6Ffo?QDJf*sq!k?0@aI)^@#ZKU!E?-@9h< zpZZPP-l`Z{esMnRCvDB|f2?@s?PLEpPj;D97k>Zm@z2|Dq*i!clKvH(bNSPxFKz#J zc&NOz278P9s^DR?j?$m??_i@|J|8mq(mzP@t47cC;k z{O$9LuiDHB_P+~WY>G=Ve{t^sAB*gb<>^c&AshOCzpLD5TfZjvmQLBZbIJ~Xj~uh% zxfgQ3#@_h7fenM7Wkdgaj>G)({&6JEmw9^iR;ZUkvsQ0 z<+JKHL|uE|ma}}|s?O*89CTRLf8+dfK?)Bur1id414H!N-Pn7JkLN92dU2)P-Mya4 zD>ue+Z`=G + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::XavierFiller< Dtype > Member List
+
+
+ +

This is the complete list of members for caffe::XavierFiller< Dtype >, including all inherited members.

+ + + + + + +
Fill(Blob< Dtype > *blob) (defined in caffe::XavierFiller< Dtype >)caffe::XavierFiller< Dtype >inlinevirtual
Filler(const FillerParameter &param) (defined in caffe::Filler< Dtype >)caffe::Filler< Dtype >inlineexplicit
filler_param_ (defined in caffe::Filler< Dtype >)caffe::Filler< Dtype >protected
XavierFiller(const FillerParameter &param) (defined in caffe::XavierFiller< Dtype >)caffe::XavierFiller< Dtype >inlineexplicit
~Filler() (defined in caffe::Filler< Dtype >)caffe::Filler< Dtype >inlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1XavierFiller.html b/doxygen/classcaffe_1_1XavierFiller.html new file mode 100644 index 00000000000..b65b5ef9741 --- /dev/null +++ b/doxygen/classcaffe_1_1XavierFiller.html @@ -0,0 +1,126 @@ + + + + + + + +Caffe: caffe::XavierFiller< Dtype > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::XavierFiller< Dtype > Class Template Reference
+
+
+ +

Fills a Blob with values $ x \sim U(-a, +a) $ where $ a $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average. + More...

+ +

#include <filler.hpp>

+
+Inheritance diagram for caffe::XavierFiller< Dtype >:
+
+
+ + +caffe::Filler< Dtype > + +
+ + + + + + + + + +

+Public Member Functions

XavierFiller (const FillerParameter &param)
 
+virtual void Fill (Blob< Dtype > *blob)
 
- Public Member Functions inherited from caffe::Filler< Dtype >
Filler (const FillerParameter &param)
 
+ + + + +

+Additional Inherited Members

- Protected Attributes inherited from caffe::Filler< Dtype >
+FillerParameter filler_param_
 
+

Detailed Description

+

template<typename Dtype>
+class caffe::XavierFiller< Dtype >

+ +

Fills a Blob with values $ x \sim U(-a, +a) $ where $ a $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average.

+

A Filler based on the paper [Bengio and Glorot 2010]: Understanding the difficulty of training deep feedforward neuralnetworks.

+

It fills the incoming matrix by randomly sampling uniform data from [-scale, scale] where scale = sqrt(3 / n) where n is the fan_in, fan_out, or their average, depending on the variance_norm option. You should make sure the input blob has shape (num, a, b, c) where a * b * c = fan_in and num * b * c = fan_out. Note that this is currently not the case for inner product layers.

+

TODO(dox): make notation in above comment consistent with rest & use LaTeX.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classcaffe_1_1XavierFiller.png b/doxygen/classcaffe_1_1XavierFiller.png new file mode 100644 index 0000000000000000000000000000000000000000..8510583128b7d8dff334660215a69d8f639efc9b GIT binary patch literal 736 zcmeAS@N?(olHy`uVBq!ia0vp^tARLxgBeH$CYOE$QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;q|C8G@ zg*G%Uxw$)TtH+udy-qR3No>!jrbbS4Jfh_3oUzF(Xph=zm7}lO*J$Q`Dt>+ca}|&0 ztIYo0JrkE`-%XDd&lEEf&X4d9_PAslyGd^84Xs(aUT>Zz z>bdKhX!f~G{b$!gF8Su1xM|*ZRqf0Ef`^l?ypUaeKS4YF@U*Q_yNKYeY)Teh1u)3=yMSj$;_Uw!-YHY*_U_0K6)v?htc9M*C(lO;`g|8|Hc1(T=I!$pG{rz`xnb<%gvKYqUV2XQ284( zIdsw^(@0g#IR9%vzZ$X#tY<%e z*NT&C7oGok{jXj0#&_qr{MJo4dA<6^?PZG#_buXOX$ba95N~U_9Js)CSLfM<%O;&; zJASyxaGKG|Kl(8hM_+9}x9aW#yVV;LPv6qHyXn_e?OSc8@;uuMMCTS3+0M~kwM**9 zx4qTtL)OkJUy}5;V!_w!iJa^Gy)JXDdleP5m3>qE_2B*UHax4}`(Yn@*8Z^dwddDw z^d@+?{ ms8|g1_153Zrd$&E#V%T`lHb2%{}W(xWbkzLb6Mw<&;$TPifsu1 literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1db_1_1Cursor-members.html b/doxygen/classcaffe_1_1db_1_1Cursor-members.html new file mode 100644 index 00000000000..cdce9e2a480 --- /dev/null +++ b/doxygen/classcaffe_1_1db_1_1Cursor-members.html @@ -0,0 +1,88 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::db::Cursor Member List
+
+
+ +

This is the complete list of members for caffe::db::Cursor, including all inherited members.

+ + + + + + + + + +
Cursor() (defined in caffe::db::Cursor)caffe::db::Cursorinline
DISABLE_COPY_AND_ASSIGN(Cursor) (defined in caffe::db::Cursor)caffe::db::Cursor
key()=0 (defined in caffe::db::Cursor)caffe::db::Cursorpure virtual
Next()=0 (defined in caffe::db::Cursor)caffe::db::Cursorpure virtual
SeekToFirst()=0 (defined in caffe::db::Cursor)caffe::db::Cursorpure virtual
valid()=0 (defined in caffe::db::Cursor)caffe::db::Cursorpure virtual
value()=0 (defined in caffe::db::Cursor)caffe::db::Cursorpure virtual
~Cursor() (defined in caffe::db::Cursor)caffe::db::Cursorinlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1db_1_1Cursor.html b/doxygen/classcaffe_1_1db_1_1Cursor.html new file mode 100644 index 00000000000..faacde6dc82 --- /dev/null +++ b/doxygen/classcaffe_1_1db_1_1Cursor.html @@ -0,0 +1,105 @@ + + + + + + + +Caffe: caffe::db::Cursor Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::db::Cursor Class Referenceabstract
+
+
+ + + + + + + + + + + + + + +

+Public Member Functions

+virtual void SeekToFirst ()=0
 
+virtual void Next ()=0
 
+virtual string key ()=0
 
+virtual string value ()=0
 
+virtual bool valid ()=0
 
DISABLE_COPY_AND_ASSIGN (Cursor)
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classcaffe_1_1db_1_1Cursor.png b/doxygen/classcaffe_1_1db_1_1Cursor.png new file mode 100644 index 0000000000000000000000000000000000000000..8b319059f4777f32abc45c1dd62bfbc8058ba5a8 GIT binary patch literal 877 zcmeAS@N?(olHy`uVBq!ia0y~yV6+3W12~w0~`Z!IAWT-YF+lZX?p{kQgRwUbA3o`OO#m0dEn{JoKqLr6NG;;e`n4q(5@|3)i7Qj zwYUB2S>bomUvqWto%?m~@^yLUgrk4I?_0FwP3`Jav$@?iN7wc5+x6+()=jJCMY_dS zZa%VS&vX6NN29g$9p+cRVE&=sV#hEW)#aSE3}y@Y4?OFCA>Ed^Lxth~Q4RqH3!u8` zg*^2PYCx%{$K!r5f8eNPQ0J%wt5y5LcmumZ@k{e%j(_~b5HoqdK{zyMpcdfP1hfJs zc|OfYb7{ZfvMHCA{}7g(tP(phYCe#-pzdk5(0@{n(|nbiEq0!pUcQuWlk_}mXu5u# zYUbqQ0`~QvD^8z$>@%tE>4JUclb>yy{P5dX-{hRW&+GQ3ZFuG~smyZO`@2j0{huG& z`$9WE>7RMLd46)%+_v?%=IIx|n|m_c`8%{xvN&^)YMs-dP*Jf0^sK zYvKF91-7-HJ+5l$?ECIy%N$ZJ8zcX7?!MLMeWLEn<-C4z`$iS3)ysmJKt@&Y5OdxTUR#!(aybl zx>Wc33GY>F)?V5aCBJmX+t=39w`?m?y3=jvxl1Irc2bETETA}RC#4AgQaP#i#dDJH qi^(dpK_O}XE6D5Rq!2Lqhgl@sv7z_eDG6ZSVDNPHb6Mw<&;$TUNvt9O literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1db_1_1DB-members.html b/doxygen/classcaffe_1_1db_1_1DB-members.html new file mode 100644 index 00000000000..a332a3d237b --- /dev/null +++ b/doxygen/classcaffe_1_1db_1_1DB-members.html @@ -0,0 +1,87 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::db::DB Member List
+
+
+ +

This is the complete list of members for caffe::db::DB, including all inherited members.

+ + + + + + + + +
Close()=0 (defined in caffe::db::DB)caffe::db::DBpure virtual
DB() (defined in caffe::db::DB)caffe::db::DBinline
DISABLE_COPY_AND_ASSIGN(DB) (defined in caffe::db::DB)caffe::db::DB
NewCursor()=0 (defined in caffe::db::DB)caffe::db::DBpure virtual
NewTransaction()=0 (defined in caffe::db::DB)caffe::db::DBpure virtual
Open(const string &source, Mode mode)=0 (defined in caffe::db::DB)caffe::db::DBpure virtual
~DB() (defined in caffe::db::DB)caffe::db::DBinlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1db_1_1DB.html b/doxygen/classcaffe_1_1db_1_1DB.html new file mode 100644 index 00000000000..fd4be229be1 --- /dev/null +++ b/doxygen/classcaffe_1_1db_1_1DB.html @@ -0,0 +1,102 @@ + + + + + + + +Caffe: caffe::db::DB Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::db::DB Class Referenceabstract
+
+
+ + + + + + + + + + + + +

+Public Member Functions

+virtual void Open (const string &source, Mode mode)=0
 
+virtual void Close ()=0
 
+virtual CursorNewCursor ()=0
 
+virtual TransactionNewTransaction ()=0
 
DISABLE_COPY_AND_ASSIGN (DB)
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classcaffe_1_1db_1_1DB.png b/doxygen/classcaffe_1_1db_1_1DB.png new file mode 100644 index 0000000000000000000000000000000000000000..d494a69e11b2457e4ac7516c1ba1b09832b5e69e GIT binary patch literal 686 zcmV;f0#W^mP)vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0006#NklfT?53yXiDNjR-Kfc2tk%_w4wzaIx$#R9yc7}6pjQc5THQo!KbcI*8^v15g^ckMF`h143 zl%*fZI4Q(joj172(m9J=<2?-UcepS>KU^4~DJ~4q4;Kb#iVFkuV;F{^GXN)K1h^A- z6CTH#8Q)F#*Y{q=w-fd(4RCE-7~smdFu;{@VSp>+!T|r9aU93*0nnMRu8|7^G{%Ji zdf~zVjd5XsUbrwoV_X=Z7cLCY7#9ZUg$n~T=B&aYgzyn#2qApLcLxuW)DOHwafIDLj8BB{8h>P1_KPQQr$styW!Xg^SKo<9))l zAtbZMG_8&LB0Nt@{EFpbhNjx715@{$*VsCfODTw*!iPdw3NJ@p3Y!S$A5%(!89o}qitw8=Z1$!d%|7vNwA3z*`s}27g%5-<+t#e` z%6{6|avLeq{QIHs=OI)JZyq3%@NHUn39?L(wORUaLii+0n{_JkZIL2#3Mo@*PL;Vu z)qD6*2v)fMJuFGh*!Lcmqz1UKBsIo`C8-xKEJ=-VVM*%69fd;(p)W=_gb@1j1K8a$ Uj>{r>_y7O^07*qoM6N<$g4qZ<3jhEB literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1db_1_1LMDB-members.html b/doxygen/classcaffe_1_1db_1_1LMDB-members.html new file mode 100644 index 00000000000..b566f7a9c35 --- /dev/null +++ b/doxygen/classcaffe_1_1db_1_1LMDB-members.html @@ -0,0 +1,114 @@ + + + + + + +Caffe: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::db::LMDB Member List
+
+
+ +

This is the complete list of members for caffe::db::LMDB, including all inherited members.

+ + + + + + + + + + +
Close() (defined in caffe::db::LMDB)caffe::db::LMDBinlinevirtual
DB() (defined in caffe::db::DB)caffe::db::DBinline
DISABLE_COPY_AND_ASSIGN(DB) (defined in caffe::db::DB)caffe::db::DB
LMDB() (defined in caffe::db::LMDB)caffe::db::LMDBinline
NewCursor() (defined in caffe::db::LMDB)caffe::db::LMDBvirtual
NewTransaction() (defined in caffe::db::LMDB)caffe::db::LMDBvirtual
Open(const string &source, Mode mode) (defined in caffe::db::LMDB)caffe::db::LMDBvirtual
~DB() (defined in caffe::db::DB)caffe::db::DBinlinevirtual
~LMDB() (defined in caffe::db::LMDB)caffe::db::LMDBinlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1db_1_1LMDB.html b/doxygen/classcaffe_1_1db_1_1LMDB.html new file mode 100644 index 00000000000..1c61b4b3e56 --- /dev/null +++ b/doxygen/classcaffe_1_1db_1_1LMDB.html @@ -0,0 +1,138 @@ + + + + + + +Caffe: caffe::db::LMDB Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::db::LMDB Class Reference
+
+
+
+Inheritance diagram for caffe::db::LMDB:
+
+
+ + +caffe::db::DB + +
+ + + + + + + + + + + + + +

+Public Member Functions

+virtual void Open (const string &source, Mode mode)
 
+virtual void Close ()
 
+virtual LMDBCursorNewCursor ()
 
+virtual LMDBTransactionNewTransaction ()
 
- Public Member Functions inherited from caffe::db::DB
DISABLE_COPY_AND_ASSIGN (DB)
 
+
The documentation for this class was generated from the following files:
    +
  • include/caffe/util/db_lmdb.hpp
  • +
  • src/caffe/util/db_lmdb.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1db_1_1LMDB.png b/doxygen/classcaffe_1_1db_1_1LMDB.png new file mode 100644 index 0000000000000000000000000000000000000000..6d7f806ccfcd0429cc45f6f25ae0648b9b2d9fe6 GIT binary patch literal 488 zcmeAS@N?(olHy`uVBq!ia0vp^X+Rvn!3-qtD1CSUq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXg%ROBjLn;{G&b_#9jRFrt`=lTL=huX= zMDy>u{pOJE&X;Y0iH$3l?weeE?y+KbM~|9`l9J!QF14ji9W%D^-mZLo-loFjc2nPy z#fF>Ldt1#iUR9)7EBwf8*W0DXP6bche@#a4=ImE;YZuLmP8MGL(xs?&_V;tk{4_Vu zcG9oAw&UKi$y;Xc;j@@+JoEX@nz+nrM_F#~y;nt6d9616c(Pns=@YAyveF|Jkgd-$ zi_TSAFvN*9d^~ee=d{RqnX_3lAI@Cz^SqX>2}7I{^8*zV20t`va*)?!MMj{r8T|fj zOk3M4dtgiMk4xd(|GwY5A&b*Kd)vX?_Pb^k-ETI29WCK|BS~ZWC3|MA-EV%c*eLDG z{d|?>pKr@{xvySPmRIcZ(F@`Q%h`R)%FVROqZTi-%bxXk?e>={Z==NJv-8fog|4=H z9)EG>-T1JmvnA4NlVUTss^v_oz0Z5VoRha<@&yKqnae#jmp=T%kQ5~5CUK^0DKJ_X NJYD@<);T3K0RZ?^+9?14 literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1db_1_1LMDBCursor-members.html b/doxygen/classcaffe_1_1db_1_1LMDBCursor-members.html new file mode 100644 index 00000000000..28a8a258741 --- /dev/null +++ b/doxygen/classcaffe_1_1db_1_1LMDBCursor-members.html @@ -0,0 +1,115 @@ + + + + + + +Caffe: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::db::LMDBCursor Member List
+
+
+ +

This is the complete list of members for caffe::db::LMDBCursor, including all inherited members.

+ + + + + + + + + + + +
Cursor() (defined in caffe::db::Cursor)caffe::db::Cursorinline
DISABLE_COPY_AND_ASSIGN(Cursor) (defined in caffe::db::Cursor)caffe::db::Cursor
key() (defined in caffe::db::LMDBCursor)caffe::db::LMDBCursorinlinevirtual
LMDBCursor(MDB_txn *mdb_txn, MDB_cursor *mdb_cursor) (defined in caffe::db::LMDBCursor)caffe::db::LMDBCursorinlineexplicit
Next() (defined in caffe::db::LMDBCursor)caffe::db::LMDBCursorinlinevirtual
SeekToFirst() (defined in caffe::db::LMDBCursor)caffe::db::LMDBCursorinlinevirtual
valid() (defined in caffe::db::LMDBCursor)caffe::db::LMDBCursorinlinevirtual
value() (defined in caffe::db::LMDBCursor)caffe::db::LMDBCursorinlinevirtual
~Cursor() (defined in caffe::db::Cursor)caffe::db::Cursorinlinevirtual
~LMDBCursor() (defined in caffe::db::LMDBCursor)caffe::db::LMDBCursorinlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1db_1_1LMDBCursor.html b/doxygen/classcaffe_1_1db_1_1LMDBCursor.html new file mode 100644 index 00000000000..7b53c8543af --- /dev/null +++ b/doxygen/classcaffe_1_1db_1_1LMDBCursor.html @@ -0,0 +1,143 @@ + + + + + + +Caffe: caffe::db::LMDBCursor Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::db::LMDBCursor Class Reference
+
+
+
+Inheritance diagram for caffe::db::LMDBCursor:
+
+
+ + +caffe::db::Cursor + +
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

LMDBCursor (MDB_txn *mdb_txn, MDB_cursor *mdb_cursor)
 
+virtual void SeekToFirst ()
 
+virtual void Next ()
 
+virtual string key ()
 
+virtual string value ()
 
+virtual bool valid ()
 
- Public Member Functions inherited from caffe::db::Cursor
DISABLE_COPY_AND_ASSIGN (Cursor)
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classcaffe_1_1db_1_1LMDBCursor.png b/doxygen/classcaffe_1_1db_1_1LMDBCursor.png new file mode 100644 index 0000000000000000000000000000000000000000..e8ed8ed47b0f11269f8e63466687b539d357c5da GIT binary patch literal 623 zcmeAS@N?(olHy`uVBq!ia0vp^y+9nm!3-pY71+{%lth3}i0l9V|AEXGZ@!lHADRGU zf$@O@2Ut7r$OE|?B|(0{3_wL7aP?G(5d#C`KTj9OkP61PbMN-GDDb%P&p)~6zw&#H zkW&%$Ml-oLy=>der6rT|`pzbu(?+~HlT0`>l|2nXxIfoxrH9llE1i>DKmD7$M86_y z^Evr-g&S^G#lMQVu|+qp{cHSNe(8Ak>r3z6s7w3zb(&qM^u#61&&_hTeSENMt>n7e z8$8o_a#r~6(LIUt$IEHK%O!H@v;**@1xGgV51Ve$ls z;^MT=e(!k`GG2dhzc0J(baZaS#&@aQ1*bdDT2+)OZrPZ6`^3LL1xy8=+h1C*`kz&Q zBlNG_n(6Oy%ChtG(@Ll9i`sr8_tx6S2TP-kV_si2xfwnCVWza@4RBb_fwND)wCPv51 z_AS%l{uWq$;rbL`d$(_&sxQ|qu3l2*`&6I#fGEO;o9j*iJtOpwA)rw%wP|ngCSdAd N@O1TaS?83{1ON<)7i0hc literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1db_1_1LMDBTransaction-members.html b/doxygen/classcaffe_1_1db_1_1LMDBTransaction-members.html new file mode 100644 index 00000000000..9f09b95ee4b --- /dev/null +++ b/doxygen/classcaffe_1_1db_1_1LMDBTransaction-members.html @@ -0,0 +1,111 @@ + + + + + + +Caffe: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::db::LMDBTransaction Member List
+
+
+ +

This is the complete list of members for caffe::db::LMDBTransaction, including all inherited members.

+ + + + + + + +
Commit() (defined in caffe::db::LMDBTransaction)caffe::db::LMDBTransactioninlinevirtual
DISABLE_COPY_AND_ASSIGN(Transaction) (defined in caffe::db::Transaction)caffe::db::Transaction
LMDBTransaction(MDB_dbi *mdb_dbi, MDB_txn *mdb_txn) (defined in caffe::db::LMDBTransaction)caffe::db::LMDBTransactioninlineexplicit
Put(const string &key, const string &value) (defined in caffe::db::LMDBTransaction)caffe::db::LMDBTransactionvirtual
Transaction() (defined in caffe::db::Transaction)caffe::db::Transactioninline
~Transaction() (defined in caffe::db::Transaction)caffe::db::Transactioninlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1db_1_1LMDBTransaction.html b/doxygen/classcaffe_1_1db_1_1LMDBTransaction.html new file mode 100644 index 00000000000..d1053768521 --- /dev/null +++ b/doxygen/classcaffe_1_1db_1_1LMDBTransaction.html @@ -0,0 +1,135 @@ + + + + + + +Caffe: caffe::db::LMDBTransaction Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::db::LMDBTransaction Class Reference
+
+
+
+Inheritance diagram for caffe::db::LMDBTransaction:
+
+
+ + +caffe::db::Transaction + +
+ + + + + + + + + + + +

+Public Member Functions

LMDBTransaction (MDB_dbi *mdb_dbi, MDB_txn *mdb_txn)
 
+virtual void Put (const string &key, const string &value)
 
+virtual void Commit ()
 
- Public Member Functions inherited from caffe::db::Transaction
DISABLE_COPY_AND_ASSIGN (Transaction)
 
+
The documentation for this class was generated from the following files:
    +
  • include/caffe/util/db_lmdb.hpp
  • +
  • src/caffe/util/db_lmdb.cpp
  • +
+
+ + + + diff --git a/doxygen/classcaffe_1_1db_1_1LMDBTransaction.png b/doxygen/classcaffe_1_1db_1_1LMDBTransaction.png new file mode 100644 index 0000000000000000000000000000000000000000..58f4754193cfe769d7c164158dcd8968f7f30c54 GIT binary patch literal 678 zcmeAS@N?(olHy`uVBq!ia0vp^D}XqFgBeKf3OV-)NJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~nR>c7hEy=VoqN0QwE~Z;xOLF~|C7(F zOgIvAX-V;)0F!k$7T!5?=!VT^ozq6m5h^c#i!PY-WF^B?6@ObcUrq0z&};9qZhf1) zL_I6a`%>$?rghKS)PAp(3$8Qy&YMwqCT#8eJL~Rj{kCp*sNR|XpFQG&j`iARe|wSr z#>42T)RrF`*7FCuWQMd1$Qf+$LU`{*vLKY4a@_w22a z_f>-TU%O>}Z-UnAdUh?(`-?%2W?i9DspX)0GT69L@AM`g1%~py3~3j17OcOnvSf3^ zzk+j)R=gQ0whil+d zl^OmC-m#^htuFkkTFaK6nN-41)w1mGwwzp--UsaqRGG{4X0zuz@}Dvfw>OCYUdv#$ zKQ^rJJQV-{ literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1db_1_1LevelDB-members.html b/doxygen/classcaffe_1_1db_1_1LevelDB-members.html new file mode 100644 index 00000000000..fbef9878904 --- /dev/null +++ b/doxygen/classcaffe_1_1db_1_1LevelDB-members.html @@ -0,0 +1,114 @@ + + + + + + +Caffe: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::db::LevelDB Member List
+
+
+ +

This is the complete list of members for caffe::db::LevelDB, including all inherited members.

+ + + + + + + + + + +
Close() (defined in caffe::db::LevelDB)caffe::db::LevelDBinlinevirtual
DB() (defined in caffe::db::DB)caffe::db::DBinline
DISABLE_COPY_AND_ASSIGN(DB) (defined in caffe::db::DB)caffe::db::DB
LevelDB() (defined in caffe::db::LevelDB)caffe::db::LevelDBinline
NewCursor() (defined in caffe::db::LevelDB)caffe::db::LevelDBinlinevirtual
NewTransaction() (defined in caffe::db::LevelDB)caffe::db::LevelDBinlinevirtual
Open(const string &source, Mode mode) (defined in caffe::db::LevelDB)caffe::db::LevelDBvirtual
~DB() (defined in caffe::db::DB)caffe::db::DBinlinevirtual
~LevelDB() (defined in caffe::db::LevelDB)caffe::db::LevelDBinlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1db_1_1LevelDB.html b/doxygen/classcaffe_1_1db_1_1LevelDB.html new file mode 100644 index 00000000000..7546162de60 --- /dev/null +++ b/doxygen/classcaffe_1_1db_1_1LevelDB.html @@ -0,0 +1,138 @@ + + + + + + +Caffe: caffe::db::LevelDB Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::db::LevelDB Class Reference
+
+
+
+Inheritance diagram for caffe::db::LevelDB:
+
+
+ + +caffe::db::DB + +
+ + + + + + + + + + + + + +

+Public Member Functions

+virtual void Open (const string &source, Mode mode)
 
+virtual void Close ()
 
+virtual LevelDBCursorNewCursor ()
 
+virtual LevelDBTransactionNewTransaction ()
 
- Public Member Functions inherited from caffe::db::DB
DISABLE_COPY_AND_ASSIGN (DB)
 
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/doxygen/classcaffe_1_1db_1_1LevelDB.png b/doxygen/classcaffe_1_1db_1_1LevelDB.png new file mode 100644 index 0000000000000000000000000000000000000000..da84c4a11e2b3aceda8daf5c16645d6f0930e521 GIT binary patch literal 507 zcmVvTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0004sNklrf+Oi1_fu&Xfuw zV%jon=iNW%hlt1n&pDUX!wA2eX7-MB*V*$ekJ2~EFQZFfHCBGLOins$uJ%iHYip?X zp3|P6W{}q7K3}-cHoq+0d^*yx^YwiW&UWYcz3;Q1dB4vO*X>%KHA<=8cG9YDTTy-N z{S*=T9N`oZ@gbZdB0gN?%sJ<|0KCQxU@{jtZ@2l<3!Hc5bm%ZEwf1 za~a(Gw;3niPXIT<3E)FG0erZ~nNmt~`2jIQ83QfPXJr5Y002ovPDHLkV1g~#>s0^% literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1db_1_1LevelDBCursor-members.html b/doxygen/classcaffe_1_1db_1_1LevelDBCursor-members.html new file mode 100644 index 00000000000..5239e4dc544 --- /dev/null +++ b/doxygen/classcaffe_1_1db_1_1LevelDBCursor-members.html @@ -0,0 +1,115 @@ + + + + + + +Caffe: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::db::LevelDBCursor Member List
+
+
+ +

This is the complete list of members for caffe::db::LevelDBCursor, including all inherited members.

+ + + + + + + + + + + +
Cursor() (defined in caffe::db::Cursor)caffe::db::Cursorinline
DISABLE_COPY_AND_ASSIGN(Cursor) (defined in caffe::db::Cursor)caffe::db::Cursor
key() (defined in caffe::db::LevelDBCursor)caffe::db::LevelDBCursorinlinevirtual
LevelDBCursor(leveldb::Iterator *iter) (defined in caffe::db::LevelDBCursor)caffe::db::LevelDBCursorinlineexplicit
Next() (defined in caffe::db::LevelDBCursor)caffe::db::LevelDBCursorinlinevirtual
SeekToFirst() (defined in caffe::db::LevelDBCursor)caffe::db::LevelDBCursorinlinevirtual
valid() (defined in caffe::db::LevelDBCursor)caffe::db::LevelDBCursorinlinevirtual
value() (defined in caffe::db::LevelDBCursor)caffe::db::LevelDBCursorinlinevirtual
~Cursor() (defined in caffe::db::Cursor)caffe::db::Cursorinlinevirtual
~LevelDBCursor() (defined in caffe::db::LevelDBCursor)caffe::db::LevelDBCursorinline
+ + + + diff --git a/doxygen/classcaffe_1_1db_1_1LevelDBCursor.html b/doxygen/classcaffe_1_1db_1_1LevelDBCursor.html new file mode 100644 index 00000000000..fe9453b8b7a --- /dev/null +++ b/doxygen/classcaffe_1_1db_1_1LevelDBCursor.html @@ -0,0 +1,143 @@ + + + + + + +Caffe: caffe::db::LevelDBCursor Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::db::LevelDBCursor Class Reference
+
+
+
+Inheritance diagram for caffe::db::LevelDBCursor:
+
+
+ + +caffe::db::Cursor + +
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

LevelDBCursor (leveldb::Iterator *iter)
 
+virtual void SeekToFirst ()
 
+virtual void Next ()
 
+virtual string key ()
 
+virtual string value ()
 
+virtual bool valid ()
 
- Public Member Functions inherited from caffe::db::Cursor
DISABLE_COPY_AND_ASSIGN (Cursor)
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classcaffe_1_1db_1_1LevelDBCursor.png b/doxygen/classcaffe_1_1db_1_1LevelDBCursor.png new file mode 100644 index 0000000000000000000000000000000000000000..6368450c740ebf649ee3ea495ce6479570e568e6 GIT binary patch literal 644 zcmeAS@N?(olHy`uVBq!ia0vp^vw%2&gBeI(3!3vCNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~346LYhEy=VoqMtGwE_=oyYR~Y|4(k8 zBH+X1yJt7Q$93&xx+(`641b^6mV0~F2G2`fEwfZAIZZu3Jqq<+sjyOeXXGT!mw(kg z?T@XTrY`MQ5%~K`-P5x5+w}i^o@(#4_x7Yavuu5Ce_XA%Y|o{(ThS_+ht}S*EBT+g zs(R&&qM+AuSH(PMee_t%KPxrC{_fUW6)*KYndMeb4Za(eqx36cZO)bW)x1nroj=XD z{*;(h@~Aw0t?%`7w=|t!KYZ`^{QioYJi3;to7VWH7;oXaHeq_Z+5%l?)l9!Xizlh* zFI4l4bMl?E2jt?))w#E~>2e;p|B)$Ta_QB$^{IESg;vjA`)b>Us1%Kc`2oxygt8do zoOlm-uVAd;G-c3V$o4?>3d5cjsfOtY$8g|cdRf13PmQ{5zDiQo z_V#P{npFocX4l{Bxw_A%R9`fB+1~jpOP#My>yDD=IGyls-R-@%>W;AOPP_N&*uE80 z6@5~ozU*5mYdkxSpE=6>m0zyFh2p$3Wovn_OUbX|eO^;`?M!OHoW6@)zkL48TKM(D z_xF5PbJ}KYE#G-9HA8ma`6rLx?b>_&R01fV9?Od!IM0Fb>yzKcOQ(cAk(cFDRFXd} RWe-d;44$rjF6*2UngAGcE+GH_ literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1db_1_1LevelDBTransaction-members.html b/doxygen/classcaffe_1_1db_1_1LevelDBTransaction-members.html new file mode 100644 index 00000000000..16efdef44c4 --- /dev/null +++ b/doxygen/classcaffe_1_1db_1_1LevelDBTransaction-members.html @@ -0,0 +1,111 @@ + + + + + + +Caffe: Member List + + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::db::LevelDBTransaction Member List
+
+
+ +

This is the complete list of members for caffe::db::LevelDBTransaction, including all inherited members.

+ + + + + + + +
Commit() (defined in caffe::db::LevelDBTransaction)caffe::db::LevelDBTransactioninlinevirtual
DISABLE_COPY_AND_ASSIGN(Transaction) (defined in caffe::db::Transaction)caffe::db::Transaction
LevelDBTransaction(leveldb::DB *db) (defined in caffe::db::LevelDBTransaction)caffe::db::LevelDBTransactioninlineexplicit
Put(const string &key, const string &value) (defined in caffe::db::LevelDBTransaction)caffe::db::LevelDBTransactioninlinevirtual
Transaction() (defined in caffe::db::Transaction)caffe::db::Transactioninline
~Transaction() (defined in caffe::db::Transaction)caffe::db::Transactioninlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1db_1_1LevelDBTransaction.html b/doxygen/classcaffe_1_1db_1_1LevelDBTransaction.html new file mode 100644 index 00000000000..0f55e88b519 --- /dev/null +++ b/doxygen/classcaffe_1_1db_1_1LevelDBTransaction.html @@ -0,0 +1,134 @@ + + + + + + +Caffe: caffe::db::LevelDBTransaction Class Reference + + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::db::LevelDBTransaction Class Reference
+
+
+
+Inheritance diagram for caffe::db::LevelDBTransaction:
+
+
+ + +caffe::db::Transaction + +
+ + + + + + + + + + + +

+Public Member Functions

LevelDBTransaction (leveldb::DB *db)
 
+virtual void Put (const string &key, const string &value)
 
+virtual void Commit ()
 
- Public Member Functions inherited from caffe::db::Transaction
DISABLE_COPY_AND_ASSIGN (Transaction)
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classcaffe_1_1db_1_1LevelDBTransaction.png b/doxygen/classcaffe_1_1db_1_1LevelDBTransaction.png new file mode 100644 index 0000000000000000000000000000000000000000..093aff3f892ded2d5e46d4bd7d7bc6ec24c9fca7 GIT binary patch literal 698 zcmeAS@N?(olHy`uVBq!ia0vp^TY)%$gBeI>upC(hq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0JUv|;Ln;{G&b{6D+JM7#dij!{|NZSI zKTF#1SZ(UE7ZFKM=Jw=oaB57SmKwQCxLd_{*^+5XBviMm9DNb|D#*;UC^@$5cwGIY zFD_?uJ*!spuMEFE{af|^`3W^Ge>$r8Z@%7Yw{0i)lU=)Zl^wkM?|#`f?ce)0rk|ac z-7D*vRqDOh{rdhhCGzcASIV=Bw|kWR2ru`WRYR3T)&z=zhC*)?>+yRv!dTrFTH;C zaQj_Uoz0vNynivy@Cy$5 z|L07Ht?F0(FD*BUgVOmKJA#6kk7%r9Oqz0q0jQxtLeVe+UoimwZUZp1K{#YD5mzVoNXH>rVmDi6l9xG?1ud!p0 z%P83vbbUcif9^Y`&0kNJuHL+RzFo}1wAFLZts%WnOjx>oPPovqccjOV`Hy!T4l!>iL{g5HM)*T0&@_kP9q;^+EN z%oe96aL3oZWq#Golj&U|@;d9>PnqEIZ@UiIFOqw<^<|3Q{#*TDeILj2zg+qL^RK2` zV(U9+yk=Y1F7xzd_1VDebk?7BcT+n)rv9BTduIERc~S{t$RUxr(pxjt>@V|kMYVZx TWl;{mgvQ|M>gTe~DWM4fdjM0q literal 0 HcmV?d00001 diff --git a/doxygen/classcaffe_1_1db_1_1Transaction-members.html b/doxygen/classcaffe_1_1db_1_1Transaction-members.html new file mode 100644 index 00000000000..54940573df9 --- /dev/null +++ b/doxygen/classcaffe_1_1db_1_1Transaction-members.html @@ -0,0 +1,85 @@ + + + + + + + +Caffe: Member List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe::db::Transaction Member List
+
+
+ +

This is the complete list of members for caffe::db::Transaction, including all inherited members.

+ + + + + + +
Commit()=0 (defined in caffe::db::Transaction)caffe::db::Transactionpure virtual
DISABLE_COPY_AND_ASSIGN(Transaction) (defined in caffe::db::Transaction)caffe::db::Transaction
Put(const string &key, const string &value)=0 (defined in caffe::db::Transaction)caffe::db::Transactionpure virtual
Transaction() (defined in caffe::db::Transaction)caffe::db::Transactioninline
~Transaction() (defined in caffe::db::Transaction)caffe::db::Transactioninlinevirtual
+ + + + diff --git a/doxygen/classcaffe_1_1db_1_1Transaction.html b/doxygen/classcaffe_1_1db_1_1Transaction.html new file mode 100644 index 00000000000..10d3288afdc --- /dev/null +++ b/doxygen/classcaffe_1_1db_1_1Transaction.html @@ -0,0 +1,96 @@ + + + + + + + +Caffe: caffe::db::Transaction Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
caffe::db::Transaction Class Referenceabstract
+
+
+ + + + + + + + +

+Public Member Functions

+virtual void Put (const string &key, const string &value)=0
 
+virtual void Commit ()=0
 
DISABLE_COPY_AND_ASSIGN (Transaction)
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen/classcaffe_1_1db_1_1Transaction.png b/doxygen/classcaffe_1_1db_1_1Transaction.png new file mode 100644 index 0000000000000000000000000000000000000000..88f1e6f067fe75f5a635901668590f929a204d25 GIT binary patch literal 955 zcmeAS@N?(olHy`uVBq!ia0y~yU@QT$12~w0q}}(ruRuy7z$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-opiH zW|lw0QL|XRS!e4R-UobTt2mYKIbTY?EMx23&g!s7_4>7QH+)XKrThG-$-H%bja@7E z{)v016MOBq+C1Lf@v9#(T>10<()FFOa%W!d%6($F-^;v~eM59*#x2G#KUiO;a&DB_ zGrelr_1faeHAP>P7^?nseR;Zj2lw{*C#PR}z3=JP348$)wq7yb8{8Q6^6cNVTkRzW za{RNa!meF=H1ErGQ`;r}r3uzP|92)yxPIXqkGggqVux?UJ2V)0a3u6X@TsdhbuNoy^gx zOQ!wGR9`w@=1AGwU3=zx&)+3eX05%KV_Ny7FKm0az4x@Y?g)LQ^K;f7>6bsR>g|5I zr(*BrtD1{;Zad$%^y{&*ZG4M;>pHiX-JVx7qm6UB{dVoYs~xXg`d@c%Ye}-EJSYNZ ztiAm^^V71M3OCnw25hTV`+M7QO`qQB-yT&vf9bG0XPtUj{Ic3}%kN#mdw=z_eewEb z-fS`9U-;*Dp7HiFJN=$){it()>)m~8KAF7Gz1*BW_4>XE{~juA`q=&HoritI%(+Kz z|NJm}_xefsk4!H=cYZma|B>#?`Oj-tEqfkN+N;$bS@$jX-1^D&vC{V^|NE=3?)2_y zdG`C$_T_~pM|=D{yuWtJHL=vEx1)2ke{V3Gc7D_O`$}(~t}3}c`QKfIH5al! + + + + + + +Caffe: Class Index + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Index
+
+
+
a | b | c | d | e | f | g | h | i | l | m | n | p | q | r | s | t | u | w | x
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  a  
+
CropLayer (caffe)   HDF5OutputLayer (caffe)   
  p  
+
SoftmaxLayer (caffe)   
Cursor (caffe::db)   HingeLossLayer (caffe)   SoftmaxWithLossLayer (caffe)   
AbsValLayer (caffe)   
  d  
+
  i  
+
P2PSync (caffe)   Solver (caffe)   
AccuracyLayer (caffe)   ParameterLayer (caffe)   SolverRegisterer (caffe)   
AdaDeltaSolver (caffe)   DataLayer (caffe)   Im2colLayer (caffe)   Params (caffe)   SolverRegistry (caffe)   
AdaGradSolver (caffe)   DataReader (caffe)   ImageDataLayer (caffe)   PoolingLayer (caffe)   SplitLayer (caffe)   
AdamSolver (caffe)   DataTransformer (caffe)   InfogainLossLayer (caffe)   PositiveUnitballFiller (caffe)   SPPLayer (caffe)   
ArgMaxLayer (caffe)   DB (caffe::db)   InnerProductLayer (caffe)   PowerLayer (caffe)   BlockingQueue::sync (caffe)   
  b  
+
DeconvolutionLayer (caffe)   InputLayer (caffe)   PReLULayer (caffe)   SyncedMemory (caffe)   
DevicePair (caffe)   InternalThread (caffe)   PythonLayer (caffe)   
  t  
+
BaseConvolutionLayer (caffe)   DropoutLayer (caffe)   
  l  
+
  q  
+
BaseDataLayer (caffe)   DummyDataLayer (caffe)   TanHLayer (caffe)   
BasePrefetchingDataLayer (caffe)   
  e  
+
Layer (caffe)   DataReader::QueuePair (caffe)   ThresholdLayer (caffe)   
Batch (caffe)   LayerRegisterer (caffe)   
  r  
+
TileLayer (caffe)   
BatchNormLayer (caffe)   EltwiseLayer (caffe)   LayerRegistry (caffe)   Timer (caffe)   
BatchReindexLayer (caffe)   ELULayer (caffe)   LogLayer (caffe)   RecurrentLayer (caffe)   Transaction (caffe::db)   
BiasLayer (caffe)   EmbedLayer (caffe)   LossLayer (caffe)   ReductionLayer (caffe)   
  u  
+
BilinearFiller (caffe)   EuclideanLossLayer (caffe)   LRNLayer (caffe)   ReLULayer (caffe)   
Blob (caffe)   ExpLayer (caffe)   LSTMLayer (caffe)   ReshapeLayer (caffe)   UniformFiller (caffe)   
BlockingQueue (caffe)   
  f  
+
LSTMUnitLayer (caffe)   RMSPropSolver (caffe)   
  w  
+
BNLLLayer (caffe)   
  m  
+
Caffe::RNG (caffe)   
DataReader::Body (caffe)   Filler (caffe)   RNNLayer (caffe)   WindowDataLayer (caffe)   
  c  
+
FilterLayer (caffe)   MemoryDataLayer (caffe)   
  s  
+
WorkerSolver (caffe)   
FlattenLayer (caffe)   MSRAFiller (caffe)   
  x  
+
Caffe (caffe)   
  g  
+
MultinomialLogisticLossLayer (caffe)   ScaleLayer (caffe)   
Solver::Callback (caffe)   MVNLayer (caffe)   SGDSolver (caffe)   XavierFiller (caffe)   
ConcatLayer (caffe)   GaussianFiller (caffe)   
  n  
+
SigmoidCrossEntropyLossLayer (caffe)   
ConstantFiller (caffe)   Caffe::RNG::Generator (caffe)   SigmoidLayer (caffe)   
ContrastiveLossLayer (caffe)   GPUParams (caffe)   NesterovSolver (caffe)   SignalHandler (caffe)   
ConvolutionLayer (caffe)   
  h  
+
Net (caffe)   SilenceLayer (caffe)   
CPUTimer (caffe)   NeuronLayer (caffe)   SliceLayer (caffe)   
HDF5DataLayer (caffe)   
+
a | b | c | d | e | f | g | h | i | l | m | n | p | q | r | s | t | u | w | x
+
+ + + + diff --git a/doxygen/closed.png b/doxygen/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/doxygen/common_8hpp_source.html b/doxygen/common_8hpp_source.html new file mode 100644 index 00000000000..ff41c098c0c --- /dev/null +++ b/doxygen/common_8hpp_source.html @@ -0,0 +1,82 @@ + + + + + + + +Caffe: include/caffe/common.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
common.hpp
+
+
+
1 #ifndef CAFFE_COMMON_HPP_
2 #define CAFFE_COMMON_HPP_
3 
4 #include <boost/shared_ptr.hpp>
5 #include <gflags/gflags.h>
6 #include <glog/logging.h>
7 
8 #include <climits>
9 #include <cmath>
10 #include <fstream> // NOLINT(readability/streams)
11 #include <iostream> // NOLINT(readability/streams)
12 #include <map>
13 #include <set>
14 #include <sstream>
15 #include <string>
16 #include <utility> // pair
17 #include <vector>
18 
19 #include "caffe/util/device_alternate.hpp"
20 
21 // Convert macro to string
22 #define STRINGIFY(m) #m
23 #define AS_STRING(m) STRINGIFY(m)
24 
25 // gflags 2.1 issue: namespace google was changed to gflags without warning.
26 // Luckily we will be able to use GFLAGS_GFLAGS_H_ to detect if it is version
27 // 2.1. If yes, we will add a temporary solution to redirect the namespace.
28 // TODO(Yangqing): Once gflags solves the problem in a more elegant way, let's
29 // remove the following hack.
30 #ifndef GFLAGS_GFLAGS_H_
31 namespace gflags = google;
32 #endif // GFLAGS_GFLAGS_H_
33 
34 // Disable the copy and assignment operator for a class.
35 #define DISABLE_COPY_AND_ASSIGN(classname) \
36 private:\
37  classname(const classname&);\
38  classname& operator=(const classname&)
39 
40 // Instantiate a class with float and double specifications.
41 #define INSTANTIATE_CLASS(classname) \
42  char gInstantiationGuard##classname; \
43  template class classname<float>; \
44  template class classname<double>
45 
46 #define INSTANTIATE_LAYER_GPU_FORWARD(classname) \
47  template void classname<float>::Forward_gpu( \
48  const std::vector<Blob<float>*>& bottom, \
49  const std::vector<Blob<float>*>& top); \
50  template void classname<double>::Forward_gpu( \
51  const std::vector<Blob<double>*>& bottom, \
52  const std::vector<Blob<double>*>& top);
53 
54 #define INSTANTIATE_LAYER_GPU_BACKWARD(classname) \
55  template void classname<float>::Backward_gpu( \
56  const std::vector<Blob<float>*>& top, \
57  const std::vector<bool>& propagate_down, \
58  const std::vector<Blob<float>*>& bottom); \
59  template void classname<double>::Backward_gpu( \
60  const std::vector<Blob<double>*>& top, \
61  const std::vector<bool>& propagate_down, \
62  const std::vector<Blob<double>*>& bottom)
63 
64 #define INSTANTIATE_LAYER_GPU_FUNCS(classname) \
65  INSTANTIATE_LAYER_GPU_FORWARD(classname); \
66  INSTANTIATE_LAYER_GPU_BACKWARD(classname)
67 
68 // A simple macro to mark codes that are not implemented, so that when the code
69 // is executed we will see a fatal log.
70 #define NOT_IMPLEMENTED LOG(FATAL) << "Not Implemented Yet"
71 
72 // See PR #1236
73 namespace cv { class Mat; }
74 
75 namespace caffe {
76 
77 // We will use the boost shared_ptr instead of the new C++11 one mainly
78 // because cuda does not work (at least now) well with C++11 features.
79 using boost::shared_ptr;
80 
81 // Common functions and classes from std that caffe often uses.
82 using std::fstream;
83 using std::ios;
84 using std::isnan;
85 using std::isinf;
86 using std::iterator;
87 using std::make_pair;
88 using std::map;
89 using std::ostringstream;
90 using std::pair;
91 using std::set;
92 using std::string;
93 using std::stringstream;
94 using std::vector;
95 
96 // A global initialization function that you should call in your main function.
97 // Currently it initializes google flags and google logging.
98 void GlobalInit(int* pargc, char*** pargv);
99 
100 // A singleton class to hold common caffe stuff, such as the handler that
101 // caffe is going to use for cublas, curand, etc.
102 class Caffe {
103  public:
104  ~Caffe();
105 
106  // Thread local context for Caffe. Moved to common.cpp instead of
107  // including boost/thread.hpp to avoid a boost/NVCC issues (#1009, #1010)
108  // on OSX. Also fails on Linux with CUDA 7.0.18.
109  static Caffe& Get();
110 
111  enum Brew { CPU, GPU };
112 
113  // This random number generator facade hides boost and CUDA rng
114  // implementation from one another (for cross-platform compatibility).
115  class RNG {
116  public:
117  RNG();
118  explicit RNG(unsigned int seed);
119  explicit RNG(const RNG&);
120  RNG& operator=(const RNG&);
121  void* generator();
122  private:
123  class Generator;
124  shared_ptr<Generator> generator_;
125  };
126 
127  // Getters for boost rng, curand, and cublas handles
128  inline static RNG& rng_stream() {
129  if (!Get().random_generator_) {
130  Get().random_generator_.reset(new RNG());
131  }
132  return *(Get().random_generator_);
133  }
134 #ifndef CPU_ONLY
135  inline static cublasHandle_t cublas_handle() { return Get().cublas_handle_; }
136  inline static curandGenerator_t curand_generator() {
137  return Get().curand_generator_;
138  }
139 #endif
140 
141  // Returns the mode: running on CPU or GPU.
142  inline static Brew mode() { return Get().mode_; }
143  // The setters for the variables
144  // Sets the mode. It is recommended that you don't change the mode halfway
145  // into the program since that may cause allocation of pinned memory being
146  // freed in a non-pinned way, which may cause problems - I haven't verified
147  // it personally but better to note it here in the header file.
148  inline static void set_mode(Brew mode) { Get().mode_ = mode; }
149  // Sets the random seed of both boost and curand
150  static void set_random_seed(const unsigned int seed);
151  // Sets the device. Since we have cublas and curand stuff, set device also
152  // requires us to reset those values.
153  static void SetDevice(const int device_id);
154  // Prints the current GPU status.
155  static void DeviceQuery();
156  // Check if specified device is available
157  static bool CheckDevice(const int device_id);
158  // Search from start_id to the highest possible device ordinal,
159  // return the ordinal of the first available device.
160  static int FindDevice(const int start_id = 0);
161  // Parallel training info
162  inline static int solver_count() { return Get().solver_count_; }
163  inline static void set_solver_count(int val) { Get().solver_count_ = val; }
164  inline static bool root_solver() { return Get().root_solver_; }
165  inline static void set_root_solver(bool val) { Get().root_solver_ = val; }
166 
167  protected:
168 #ifndef CPU_ONLY
169  cublasHandle_t cublas_handle_;
170  curandGenerator_t curand_generator_;
171 #endif
172  shared_ptr<RNG> random_generator_;
173 
174  Brew mode_;
175  int solver_count_;
176  bool root_solver_;
177 
178  private:
179  // The private constructor to avoid duplicate instantiation.
180  Caffe();
181 
182  DISABLE_COPY_AND_ASSIGN(Caffe);
183 };
184 
185 } // namespace caffe
186 
187 #endif // CAFFE_COMMON_HPP_
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
Definition: common.hpp:73
+
Definition: common.hpp:115
+
Definition: common.cpp:238
+
Definition: common.hpp:102
+
+ + + + diff --git a/doxygen/common__layers_8hpp_source.html b/doxygen/common__layers_8hpp_source.html new file mode 100644 index 00000000000..cb906af5d9d --- /dev/null +++ b/doxygen/common__layers_8hpp_source.html @@ -0,0 +1,776 @@ + + + + + + +Caffe: include/caffe/common_layers.hpp Source File + + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
common_layers.hpp
+
+
+
1 #ifndef CAFFE_COMMON_LAYERS_HPP_
+
2 #define CAFFE_COMMON_LAYERS_HPP_
+
3 
+
4 #include <string>
+
5 #include <utility>
+
6 #include <vector>
+
7 
+
8 #include "caffe/blob.hpp"
+
9 #include "caffe/common.hpp"
+
10 #include "caffe/data_layers.hpp"
+
11 #include "caffe/layer.hpp"
+
12 #include "caffe/loss_layers.hpp"
+
13 #include "caffe/neuron_layers.hpp"
+
14 #include "caffe/proto/caffe.pb.h"
+
15 
+
16 namespace caffe {
+
17 
+
29 template <typename Dtype>
+
30 class ArgMaxLayer : public Layer<Dtype> {
+
31  public:
+
44  explicit ArgMaxLayer(const LayerParameter& param)
+
45  : Layer<Dtype>(param) {}
+
46  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
+
47  const vector<Blob<Dtype>*>& top);
+
48  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
49  const vector<Blob<Dtype>*>& top);
+
50 
+
51  virtual inline const char* type() const { return "ArgMax"; }
+
52  virtual inline int ExactNumBottomBlobs() const { return 1; }
+
53  virtual inline int ExactNumTopBlobs() const { return 1; }
+
54 
+
55  protected:
+
68  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
69  const vector<Blob<Dtype>*>& top);
+
71  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
72  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {
+
73  NOT_IMPLEMENTED;
+
74  }
+
75  bool out_max_val_;
+
76  size_t top_k_;
+
77  bool has_axis_;
+
78  int axis_;
+
79 };
+
80 
+
88 template <typename Dtype>
+
89 class BatchReindexLayer : public Layer<Dtype> {
+
90  public:
+
91  explicit BatchReindexLayer(const LayerParameter& param)
+
92  : Layer<Dtype>(param) {}
+
93  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
94  const vector<Blob<Dtype>*>& top);
+
95 
+
96  virtual inline const char* type() const { return "BatchReindex"; }
+
97  virtual inline int ExactNumBottomBlobs() const { return 2; }
+
98  virtual inline int ExactNumTopBlobs() const { return 1; }
+
99 
+
100  protected:
+
113  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
114  const vector<Blob<Dtype>*>& top);
+
115  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
+
116  const vector<Blob<Dtype>*>& top);
+
117 
+
133  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
134  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
135  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
+
136  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
137 
+
138  private:
+
139  struct pair_sort_first {
+
140  bool operator()(const std::pair<int, int> &left,
+
141  const std::pair<int, int> &right) {
+
142  return left.first < right.first;
+
143  }
+
144  };
+
145  void check_batch_reindex(int initial_num, int final_num,
+
146  const Dtype* ridx_data);
+
147 };
+
148 
+
149 
+
154 template <typename Dtype>
+
155 class ConcatLayer : public Layer<Dtype> {
+
156  public:
+
157  explicit ConcatLayer(const LayerParameter& param)
+
158  : Layer<Dtype>(param) {}
+
159  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
+
160  const vector<Blob<Dtype>*>& top);
+
161  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
162  const vector<Blob<Dtype>*>& top);
+
163 
+
164  virtual inline const char* type() const { return "Concat"; }
+
165  virtual inline int MinBottomBlobs() const { return 1; }
+
166  virtual inline int ExactNumTopBlobs() const { return 1; }
+
167 
+
168  protected:
+
185  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
186  const vector<Blob<Dtype>*>& top);
+
187  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
+
188  const vector<Blob<Dtype>*>& top);
+
189 
+
212  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
213  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
214  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
+
215  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
216 
+
217  int count_;
+
218  int num_concats_;
+
219  int concat_input_size_;
+
220  int concat_axis_;
+
221 };
+
222 
+
229 template <typename Dtype>
+
230 class EltwiseLayer : public Layer<Dtype> {
+
231  public:
+
232  explicit EltwiseLayer(const LayerParameter& param)
+
233  : Layer<Dtype>(param) {}
+
234  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
+
235  const vector<Blob<Dtype>*>& top);
+
236  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
237  const vector<Blob<Dtype>*>& top);
+
238 
+
239  virtual inline const char* type() const { return "Eltwise"; }
+
240  virtual inline int MinBottomBlobs() const { return 2; }
+
241  virtual inline int ExactNumTopBlobs() const { return 1; }
+
242 
+
243  protected:
+
244  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
245  const vector<Blob<Dtype>*>& top);
+
246  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
+
247  const vector<Blob<Dtype>*>& top);
+
248  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
249  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
250  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
+
251  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
252 
+
253  EltwiseParameter_EltwiseOp op_;
+
254  vector<Dtype> coeffs_;
+
255  Blob<int> max_idx_;
+
256 
+
257  bool stable_prod_grad_;
+
258 };
+
259 
+
267 template <typename Dtype>
+
268 class EmbedLayer : public Layer<Dtype> {
+
269  public:
+
270  explicit EmbedLayer(const LayerParameter& param)
+
271  : Layer<Dtype>(param) {}
+
272  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
+
273  const vector<Blob<Dtype>*>& top);
+
274  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
275  const vector<Blob<Dtype>*>& top);
+
276 
+
277  virtual inline const char* type() const { return "Embed"; }
+
278  virtual inline int ExactNumBottomBlobs() const { return 1; }
+
279  virtual inline int ExactNumTopBlobs() const { return 1; }
+
280 
+
281  protected:
+
282  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
283  const vector<Blob<Dtype>*>& top);
+
284  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
+
285  const vector<Blob<Dtype>*>& top);
+
286  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
287  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
288  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
+
289  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
290 
+
291  int M_;
+
292  int K_;
+
293  int N_;
+
294  bool bias_term_;
+
295  Blob<Dtype> bias_multiplier_;
+
296 };
+
297 
+
304 template <typename Dtype>
+
305 class FilterLayer : public Layer<Dtype> {
+
306  public:
+
307  explicit FilterLayer(const LayerParameter& param)
+
308  : Layer<Dtype>(param) {}
+
309  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
+
310  const vector<Blob<Dtype>*>& top);
+
311  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
312  const vector<Blob<Dtype>*>& top);
+
313 
+
314  virtual inline const char* type() const { return "Filter"; }
+
315  virtual inline int MinBottomBlobs() const { return 2; }
+
316  virtual inline int MinTopBlobs() const { return 1; }
+
317 
+
318  protected:
+
338  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
339  const vector<Blob<Dtype>*>& top);
+
340  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
+
341  const vector<Blob<Dtype>*>& top);
+
342 
+
352  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
353  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
354  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
+
355  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
356 
+
357  bool first_reshape_;
+
358  vector<int> indices_to_forward_;
+
359 };
+
360 
+
371 template <typename Dtype>
+
372 class FlattenLayer : public Layer<Dtype> {
+
373  public:
+
374  explicit FlattenLayer(const LayerParameter& param)
+
375  : Layer<Dtype>(param) {}
+
376  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
377  const vector<Blob<Dtype>*>& top);
+
378 
+
379  virtual inline const char* type() const { return "Flatten"; }
+
380  virtual inline int ExactNumBottomBlobs() const { return 1; }
+
381  virtual inline int ExactNumTopBlobs() const { return 1; }
+
382 
+
383  protected:
+
392  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
393  const vector<Blob<Dtype>*>& top);
+
394 
+
404  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
405  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
406 };
+
407 
+
414 template <typename Dtype>
+
415 class InnerProductLayer : public Layer<Dtype> {
+
416  public:
+
417  explicit InnerProductLayer(const LayerParameter& param)
+
418  : Layer<Dtype>(param) {}
+
419  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
+
420  const vector<Blob<Dtype>*>& top);
+
421  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
422  const vector<Blob<Dtype>*>& top);
+
423 
+
424  virtual inline const char* type() const { return "InnerProduct"; }
+
425  virtual inline int ExactNumBottomBlobs() const { return 1; }
+
426  virtual inline int ExactNumTopBlobs() const { return 1; }
+
427 
+
428  protected:
+
429  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
430  const vector<Blob<Dtype>*>& top);
+
431  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
+
432  const vector<Blob<Dtype>*>& top);
+
433  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
434  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
435  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
+
436  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
437 
+
438  int M_;
+
439  int K_;
+
440  int N_;
+
441  bool bias_term_;
+
442  Blob<Dtype> bias_multiplier_;
+
443 };
+
444 
+
450 template <typename Dtype>
+
451 class MVNLayer : public Layer<Dtype> {
+
452  public:
+
453  explicit MVNLayer(const LayerParameter& param)
+
454  : Layer<Dtype>(param) {}
+
455  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
456  const vector<Blob<Dtype>*>& top);
+
457 
+
458  virtual inline const char* type() const { return "MVN"; }
+
459  virtual inline int ExactNumBottomBlobs() const { return 1; }
+
460  virtual inline int ExactNumTopBlobs() const { return 1; }
+
461 
+
462  protected:
+
463  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
464  const vector<Blob<Dtype>*>& top);
+
465  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
+
466  const vector<Blob<Dtype>*>& top);
+
467  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
468  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
469  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
+
470  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
471 
+
472  Blob<Dtype> mean_, variance_, temp_;
+
473 
+ +
476  Dtype eps_;
+
477 };
+
478 
+
479 /*
+
480  * @brief Reshapes the input Blob into an arbitrary-sized output Blob.
+
481  *
+
482  * Note: similarly to FlattenLayer, this layer does not change the input values
+
483  * (see FlattenLayer, Blob::ShareData and Blob::ShareDiff).
+
484  */
+
485 template <typename Dtype>
+
486 class ReshapeLayer : public Layer<Dtype> {
+
487  public:
+
488  explicit ReshapeLayer(const LayerParameter& param)
+
489  : Layer<Dtype>(param) {}
+
490  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
+
491  const vector<Blob<Dtype>*>& top);
+
492  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
493  const vector<Blob<Dtype>*>& top);
+
494 
+
495  virtual inline const char* type() const { return "Reshape"; }
+
496  virtual inline int ExactNumBottomBlobs() const { return 1; }
+
497  virtual inline int ExactNumTopBlobs() const { return 1; }
+
498 
+
499  protected:
+
500  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
501  const vector<Blob<Dtype>*>& top) {}
+
502  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
503  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
+
504  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
+
505  const vector<Blob<Dtype>*>& top) {}
+
506  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
+
507  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
+
508 
+
510  vector<int> copy_axes_;
+ + +
515 };
+
516 
+
524 template <typename Dtype>
+
525 class ReductionLayer : public Layer<Dtype> {
+
526  public:
+
527  explicit ReductionLayer(const LayerParameter& param)
+
528  : Layer<Dtype>(param) {}
+
529  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
+
530  const vector<Blob<Dtype>*>& top);
+
531  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
532  const vector<Blob<Dtype>*>& top);
+
533 
+
534  virtual inline const char* type() const { return "Reduction"; }
+
535  virtual inline int ExactNumBottomBlobs() const { return 1; }
+
536  virtual inline int ExactNumTopBlobs() const { return 1; }
+
537 
+
538  protected:
+
539  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
540  const vector<Blob<Dtype>*>& top);
+
541  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
+
542  const vector<Blob<Dtype>*>& top);
+
543  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
544  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
545  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
+
546  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
547 
+
549  ReductionParameter_ReductionOp op_;
+
551  Dtype coeff_;
+
553  int axis_;
+
555  int num_;
+
557  int dim_;
+ +
560 };
+
561 
+
566 template <typename Dtype>
+
567 class SilenceLayer : public Layer<Dtype> {
+
568  public:
+
569  explicit SilenceLayer(const LayerParameter& param)
+
570  : Layer<Dtype>(param) {}
+
571  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
572  const vector<Blob<Dtype>*>& top) {}
+
573 
+
574  virtual inline const char* type() const { return "Silence"; }
+
575  virtual inline int MinBottomBlobs() const { return 1; }
+
576  virtual inline int ExactNumTopBlobs() const { return 0; }
+
577 
+
578  protected:
+
579  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
580  const vector<Blob<Dtype>*>& top) {}
+
581  // We can't define Forward_gpu here, since STUB_GPU will provide
+
582  // its own definition for CPU_ONLY mode.
+
583  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
+
584  const vector<Blob<Dtype>*>& top);
+
585  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
586  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
587  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
+
588  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
589 };
+
590 
+
596 template <typename Dtype>
+
597 class SoftmaxLayer : public Layer<Dtype> {
+
598  public:
+
599  explicit SoftmaxLayer(const LayerParameter& param)
+
600  : Layer<Dtype>(param) {}
+
601  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
602  const vector<Blob<Dtype>*>& top);
+
603 
+
604  virtual inline const char* type() const { return "Softmax"; }
+
605  virtual inline int ExactNumBottomBlobs() const { return 1; }
+
606  virtual inline int ExactNumTopBlobs() const { return 1; }
+
607 
+
608  protected:
+
609  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
610  const vector<Blob<Dtype>*>& top);
+
611  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
+
612  const vector<Blob<Dtype>*>& top);
+
613  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
614  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
615  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
+
616  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
617 
+
618  int outer_num_;
+
619  int inner_num_;
+
620  int softmax_axis_;
+ + +
625 };
+
626 
+
627 #ifdef USE_CUDNN
+
628 
+
632 template <typename Dtype>
+
633 class CuDNNSoftmaxLayer : public SoftmaxLayer<Dtype> {
+
634  public:
+
635  explicit CuDNNSoftmaxLayer(const LayerParameter& param)
+
636  : SoftmaxLayer<Dtype>(param), handles_setup_(false) {}
+
637  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
+
638  const vector<Blob<Dtype>*>& top);
+
639  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
640  const vector<Blob<Dtype>*>& top);
+
641  virtual ~CuDNNSoftmaxLayer();
+
642 
+
643  protected:
+
644  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
+
645  const vector<Blob<Dtype>*>& top);
+
646  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
+
647  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
648 
+
649  bool handles_setup_;
+
650  cudnnHandle_t handle_;
+
651  cudnnTensorDescriptor_t bottom_desc_;
+
652  cudnnTensorDescriptor_t top_desc_;
+
653 };
+
654 #endif
+
655 
+
662 template <typename Dtype>
+
663 class SplitLayer : public Layer<Dtype> {
+
664  public:
+
665  explicit SplitLayer(const LayerParameter& param)
+
666  : Layer<Dtype>(param) {}
+
667  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
668  const vector<Blob<Dtype>*>& top);
+
669 
+
670  virtual inline const char* type() const { return "Split"; }
+
671  virtual inline int ExactNumBottomBlobs() const { return 1; }
+
672  virtual inline int MinTopBlobs() const { return 1; }
+
673 
+
674  protected:
+
675  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
676  const vector<Blob<Dtype>*>& top);
+
677  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
+
678  const vector<Blob<Dtype>*>& top);
+
679  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
680  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
681  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
+
682  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
683 
+
684  int count_;
+
685 };
+
686 
+
693 template <typename Dtype>
+
694 class SliceLayer : public Layer<Dtype> {
+
695  public:
+
696  explicit SliceLayer(const LayerParameter& param)
+
697  : Layer<Dtype>(param) {}
+
698  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
+
699  const vector<Blob<Dtype>*>& top);
+
700  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
701  const vector<Blob<Dtype>*>& top);
+
702 
+
703  virtual inline const char* type() const { return "Slice"; }
+
704  virtual inline int ExactNumBottomBlobs() const { return 1; }
+
705  virtual inline int MinTopBlobs() const { return 1; }
+
706 
+
707  protected:
+
708  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
709  const vector<Blob<Dtype>*>& top);
+
710  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
+
711  const vector<Blob<Dtype>*>& top);
+
712  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
713  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
714  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
+
715  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
716 
+
717  int count_;
+
718  int num_slices_;
+
719  int slice_size_;
+
720  int slice_axis_;
+
721  vector<int> slice_point_;
+
722 };
+
723 
+
727 template <typename Dtype>
+
728 class TileLayer : public Layer<Dtype> {
+
729  public:
+
730  explicit TileLayer(const LayerParameter& param)
+
731  : Layer<Dtype>(param) {}
+
732  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
733  const vector<Blob<Dtype>*>& top);
+
734 
+
735  virtual inline const char* type() const { return "Tile"; }
+
736  virtual inline int ExactNumBottomBlobs() const { return 1; }
+
737  virtual inline int ExactNumTopBlobs() const { return 1; }
+
738 
+
739  protected:
+
740  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
741  const vector<Blob<Dtype>*>& top);
+
742  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
+
743  const vector<Blob<Dtype>*>& top);
+
744 
+
745  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
746  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
747  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
+
748  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
749 
+
750  unsigned int axis_, tiles_, outer_dim_, inner_dim_;
+
751 };
+
752 
+
753 } // namespace caffe
+
754 
+
755 #endif // CAFFE_COMMON_LAYERS_HPP_
+
virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: common_layers.hpp:506
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the CPU device, compute the layer output.
Definition: split_layer.cpp:27
+
virtual int MinBottomBlobs() const
Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is requi...
Definition: common_layers.hpp:240
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: common_layers.hpp:460
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the CPU device, compute the layer output.
Definition: embed_layer.cpp:68
+
virtual const char * type() const
Returns the layer type.
Definition: common_layers.hpp:51
+
virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: inner_product_layer.cpp:13
+
virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: tile_layer.cpp:39
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: common_layers.hpp:381
+
virtual const char * type() const
Returns the layer type.
Definition: common_layers.hpp:277
+
Copy a Blob along specified dimensions.
Definition: common_layers.hpp:728
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: batch_reindex_layer.cpp:10
+
virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
Definition: common_layers.hpp:504
+
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
A layer factory that allows one to register layers. During runtime, registered layers could be called...
Definition: blob.hpp:15
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Definition: concat_layer.cpp:58
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: embed_layer.cpp:52
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: reduction_layer.cpp:80
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the CPU device, compute the layer output.
Definition: reduction_layer.cpp:45
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: common_layers.hpp:426
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: common_layers.hpp:605
+
Blob< Dtype > sum_multiplier_
sum_multiplier is used to carry out sum using BLAS
Definition: common_layers.hpp:622
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: common_layers.hpp:704
+
Reshapes the input Blob into flat vectors.
Definition: common_layers.hpp:372
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: common_layers.hpp:502
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: inner_product_layer.cpp:55
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: softmax_layer.cpp:64
+
int dim_
the input size of each reduction
Definition: common_layers.hpp:557
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: slice_layer.cpp:23
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the CPU device, compute the layer output.
Definition: common_layers.hpp:579
+
virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: reshape_layer.cpp:9
+
virtual const char * type() const
Returns the layer type.
Definition: common_layers.hpp:379
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: common_layers.hpp:459
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: common_layers.hpp:606
+
virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the CPU device, compute the layer output.
Definition: tile_layer.cpp:25
+
virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
int constant_count_
the product of the "constant" output dimensions
Definition: common_layers.hpp:514
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: filter_layer.cpp:18
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: argmax_layer.cpp:34
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Computes the error gradient w.r.t. the concatenate inputs.
Definition: concat_layer.cpp:78
+
virtual int MinTopBlobs() const
Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
Definition: common_layers.hpp:705
+
virtual const char * type() const
Returns the layer type.
Definition: common_layers.hpp:604
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: common_layers.hpp:97
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: reshape_layer.cpp:31
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: common_layers.hpp:278
+
virtual int MinBottomBlobs() const
Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is requi...
Definition: common_layers.hpp:575
+
virtual int MinBottomBlobs() const
Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is requi...
Definition: common_layers.hpp:315
+
virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: concat_layer.cpp:10
+
virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: eltwise_layer.cpp:11
+
int inferred_axis_
the index of the axis whose dimension we infer, or -1 if none
Definition: common_layers.hpp:512
+
virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: embed_layer.cpp:13
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: embed_layer.cpp:89
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: reduction_layer.cpp:18
+
Normalizes the input to have 0-mean and/or unit (1) variance.
Definition: common_layers.hpp:451
+
A layer for learning "embeddings" of one-hot vector input. Equivalent to an InnerProductLayer with on...
Definition: common_layers.hpp:268
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: common_layers.hpp:535
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Definition: filter_layer.cpp:63
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Computes the error gradient w.r.t. the forwarded inputs.
Definition: filter_layer.cpp:81
+
Compute the index of the max values for each datum across all dimensions .
Definition: common_layers.hpp:30
+
virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: argmax_layer.cpp:12
+
Computes the softmax function.
Definition: common_layers.hpp:597
+
virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
virtual const char * type() const
Returns the layer type.
Definition: common_layers.hpp:534
+
virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
virtual const char * type() const
Returns the layer type.
Definition: common_layers.hpp:574
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the CPU device, compute the layer output.
Definition: inner_product_layer.cpp:81
+
virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: silence_layer.cpp:10
+
virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
Compute elementwise operations, such as product and sum, along multiple input Blobs.
Definition: common_layers.hpp:230
+
virtual const char * type() const
Returns the layer type.
Definition: common_layers.hpp:424
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: common_layers.hpp:497
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: common_layers.hpp:380
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: common_layers.hpp:53
+
virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: common_layers.hpp:736
+
Ignores bottom blobs while producing no top blobs. (This is useful to suppress outputs during testing...
Definition: common_layers.hpp:567
+
Blob< Dtype > sum_multiplier_
a helper Blob used for summation (op_ == SUM)
Definition: common_layers.hpp:559
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: common_layers.hpp:576
+
virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: eltwise_layer.cpp:32
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the CPU device, compute the layer output.
Definition: slice_layer.cpp:77
+
virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual const char * type() const
Returns the layer type.
Definition: common_layers.hpp:458
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Not implemented (non-differentiable function)
Definition: common_layers.hpp:71
+
Definition: common_layers.hpp:486
+
virtual const char * type() const
Returns the layer type.
Definition: common_layers.hpp:239
+
virtual const char * type() const
Returns the layer type.
Definition: common_layers.hpp:670
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: slice_layer.cpp:98
+
Also known as a "fully-connected" layer, computes an inner product with a set of learned weights...
Definition: common_layers.hpp:415
+
vector< int > copy_axes_
vector of axes indices whose dimensions we'll copy from the bottom
Definition: common_layers.hpp:510
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: flatten_layer.cpp:10
+
virtual const char * type() const
Returns the layer type.
Definition: common_layers.hpp:314
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: inner_product_layer.cpp:96
+
virtual int MinTopBlobs() const
Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
Definition: common_layers.hpp:316
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: common_layers.hpp:536
+
virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
ReductionParameter_ReductionOp op_
the reduction operation performed by the layer
Definition: common_layers.hpp:549
+
Compute "reductions" – operations that return a scalar output Blob for an input Blob of arbitrary si...
Definition: common_layers.hpp:525
+
virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Definition: batch_reindex_layer.cpp:34
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: common_layers.hpp:737
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: split_layer.cpp:35
+
virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual const char * type() const
Returns the layer type.
Definition: common_layers.hpp:96
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: common_layers.hpp:279
+
virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: reduction_layer.cpp:12
+
virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: mvn_layer.cpp:11
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Computes the error gradient w.r.t. the reordered input.
Definition: batch_reindex_layer.cpp:53
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: tile_layer.cpp:10
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: common_layers.hpp:52
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: common_layers.hpp:241
+
virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: mvn_layer.cpp:76
+
Dtype coeff_
a scalar coefficient applied to all outputs
Definition: common_layers.hpp:551
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: concat_layer.cpp:18
+
Blob< Dtype > scale_
scale is an intermediate Blob to hold temporary results.
Definition: common_layers.hpp:624
+
virtual int MinBottomBlobs() const
Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is requi...
Definition: common_layers.hpp:165
+
virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the CPU device, compute the layer output.
Definition: softmax_layer.cpp:28
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: common_layers.hpp:571
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: common_layers.hpp:166
+
virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
Creates a "split" path in the network by copying the bottom Blob into multiple top Blobs to be used b...
Definition: common_layers.hpp:663
+
virtual int MinTopBlobs() const
Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
Definition: common_layers.hpp:672
+
virtual const char * type() const
Returns the layer type.
Definition: common_layers.hpp:164
+
Index into the input blob along its first axis.
Definition: common_layers.hpp:89
+
Takes a Blob and slices it along either the num or channel dimension, outputting multiple sliced Blob...
Definition: common_layers.hpp:694
+
virtual const char * type() const
Returns the layer type.
Definition: common_layers.hpp:735
+
virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: common_layers.hpp:671
+
virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Definition: flatten_layer.cpp:30
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: eltwise_layer.cpp:101
+
virtual const char * type() const
Returns the layer type.
Definition: common_layers.hpp:495
+
virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: slice_layer.cpp:11
+
ArgMaxLayer(const LayerParameter &param)
Definition: common_layers.hpp:44
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the CPU device, compute the layer output.
Definition: eltwise_layer.cpp:46
+
virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
Blob< Dtype > sum_multiplier_
sum_multiplier is used to carry out sum using BLAS
Definition: common_layers.hpp:475
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: softmax_layer.cpp:11
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the CPU device, compute the layer output.
Definition: mvn_layer.cpp:33
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the CPU device, compute the layer output.
Definition: common_layers.hpp:500
+
virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: common_layers.hpp:496
+
int num_
the number of reductions performed
Definition: common_layers.hpp:555
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Computes the error gradient w.r.t. the concatenate inputs.
Definition: flatten_layer.cpp:36
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: split_layer.cpp:10
+
virtual const char * type() const
Returns the layer type.
Definition: common_layers.hpp:703
+
Takes two+ Blobs, interprets last Blob as a selector and filter remaining Blobs accordingly with sele...
Definition: common_layers.hpp:305
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: common_layers.hpp:98
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: common_layers.hpp:425
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Definition: argmax_layer.cpp:54
+
int axis_
the index of the first input axis to reduce
Definition: common_layers.hpp:553
+
virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: filter_layer.cpp:11
+
Takes at least two Blobs and concatenates them along either the num or channel dimension, outputting the result.
Definition: common_layers.hpp:155
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:25
+
+ + + + diff --git a/doxygen/concat__layer_8hpp_source.html b/doxygen/concat__layer_8hpp_source.html new file mode 100644 index 00000000000..304ab001279 --- /dev/null +++ b/doxygen/concat__layer_8hpp_source.html @@ -0,0 +1,90 @@ + + + + + + + +Caffe: include/caffe/layers/concat_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
concat_layer.hpp
+
+
+
1 #ifndef CAFFE_CONCAT_LAYER_HPP_
2 #define CAFFE_CONCAT_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 namespace caffe {
11 
16 template <typename Dtype>
17 class ConcatLayer : public Layer<Dtype> {
18  public:
19  explicit ConcatLayer(const LayerParameter& param)
20  : Layer<Dtype>(param) {}
21  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
22  const vector<Blob<Dtype>*>& top);
23  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
24  const vector<Blob<Dtype>*>& top);
25 
26  virtual inline const char* type() const { return "Concat"; }
27  virtual inline int MinBottomBlobs() const { return 1; }
28  virtual inline int ExactNumTopBlobs() const { return 1; }
29 
30  protected:
47  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
48  const vector<Blob<Dtype>*>& top);
49  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
50  const vector<Blob<Dtype>*>& top);
51 
74  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
75  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
76  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
77  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
78 
79  int count_;
80  int num_concats_;
81  int concat_input_size_;
82  int concat_axis_;
83 };
84 
85 } // namespace caffe
86 
87 #endif // CAFFE_CONCAT_LAYER_HPP_
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Definition: concat_layer.cpp:57
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Computes the error gradient w.r.t. the concatenate inputs.
Definition: concat_layer.cpp:77
+
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: concat_layer.hpp:28
+
virtual const char * type() const
Returns the layer type.
Definition: concat_layer.hpp:26
+
virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual int MinBottomBlobs() const
Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is requi...
Definition: concat_layer.hpp:27
+
virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: concat_layer.cpp:17
+
virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: concat_layer.cpp:9
+
Takes at least two Blobs and concatenates them along either the num or channel dimension, outputting the result.
Definition: concat_layer.hpp:17
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/contrastive__loss__layer_8hpp_source.html b/doxygen/contrastive__loss__layer_8hpp_source.html new file mode 100644 index 00000000000..7e4026c96f0 --- /dev/null +++ b/doxygen/contrastive__loss__layer_8hpp_source.html @@ -0,0 +1,89 @@ + + + + + + + +Caffe: include/caffe/layers/contrastive_loss_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
contrastive_loss_layer.hpp
+
+
+
1 #ifndef CAFFE_CONTRASTIVE_LOSS_LAYER_HPP_
2 #define CAFFE_CONTRASTIVE_LOSS_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 #include "caffe/layers/loss_layer.hpp"
11 
12 namespace caffe {
13 
38 template <typename Dtype>
39 class ContrastiveLossLayer : public LossLayer<Dtype> {
40  public:
41  explicit ContrastiveLossLayer(const LayerParameter& param)
42  : LossLayer<Dtype>(param), diff_() {}
43  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
44  const vector<Blob<Dtype>*>& top);
45 
46  virtual inline int ExactNumBottomBlobs() const { return 3; }
47  virtual inline const char* type() const { return "ContrastiveLoss"; }
52  virtual inline bool AllowForceBackward(const int bottom_index) const {
53  return bottom_index != 2;
54  }
55 
56  protected:
58  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
59  const vector<Blob<Dtype>*>& top);
60  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
61  const vector<Blob<Dtype>*>& top);
62 
88  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
89  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
90  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
91  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
92 
93  Blob<Dtype> diff_; // cached for backward pass
94  Blob<Dtype> dist_sq_; // cached for backward pass
95  Blob<Dtype> diff_sq_; // tmp storage for gpu forward pass
96  Blob<Dtype> summer_vec_; // tmp storage for gpu forward pass
97 };
98 
99 } // namespace caffe
100 
101 #endif // CAFFE_CONTRASTIVE_LOSS_LAYER_HPP_
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual const char * type() const
Returns the layer type.
Definition: contrastive_loss_layer.hpp:47
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: contrastive_loss_layer.hpp:46
+
virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual bool AllowForceBackward(const int bottom_index) const
Definition: contrastive_loss_layer.hpp:52
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Computes the contrastive loss where . This can be used to train siamese networks.
Definition: contrastive_loss_layer.cpp:31
+
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
An interface for Layers that take two Blobs as input – usually (1) predictions and (2) ground-truth ...
Definition: loss_layer.hpp:23
+
Computes the contrastive loss where . This can be used to train siamese networks.
Definition: contrastive_loss_layer.hpp:39
+
virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: contrastive_loss_layer.cpp:10
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Computes the Contrastive error gradient w.r.t. the inputs.
Definition: contrastive_loss_layer.cpp:65
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/conv__layer_8hpp_source.html b/doxygen/conv__layer_8hpp_source.html new file mode 100644 index 00000000000..b7856149b01 --- /dev/null +++ b/doxygen/conv__layer_8hpp_source.html @@ -0,0 +1,87 @@ + + + + + + + +Caffe: include/caffe/layers/conv_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
conv_layer.hpp
+
+
+
1 #ifndef CAFFE_CONV_LAYER_HPP_
2 #define CAFFE_CONV_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 #include "caffe/layers/base_conv_layer.hpp"
11 
12 namespace caffe {
13 
30 template <typename Dtype>
31 class ConvolutionLayer : public BaseConvolutionLayer<Dtype> {
32  public:
64  explicit ConvolutionLayer(const LayerParameter& param)
65  : BaseConvolutionLayer<Dtype>(param) {}
66 
67  virtual inline const char* type() const { return "Convolution"; }
68 
69  protected:
70  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
71  const vector<Blob<Dtype>*>& top);
72  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
73  const vector<Blob<Dtype>*>& top);
74  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
75  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
76  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
77  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
78  virtual inline bool reverse_dimensions() { return false; }
79  virtual void compute_output_shape();
80 };
81 
82 } // namespace caffe
83 
84 #endif // CAFFE_CONV_LAYER_HPP_
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual const char * type() const
Returns the layer type.
Definition: conv_layer.hpp:67
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: conv_layer.cpp:43
+
Abstract base class that factors out the BLAS code common to ConvolutionLayer and DeconvolutionLayer...
Definition: base_conv_layer.hpp:18
+
virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
ConvolutionLayer(const LayerParameter &param)
Definition: conv_layer.hpp:64
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the CPU device, compute the layer output.
Definition: conv_layer.cpp:25
+
Convolves the input image with a bank of learned filters, and (optionally) adds biases.
Definition: conv_layer.hpp:31
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/crop__layer_8hpp_source.html b/doxygen/crop__layer_8hpp_source.html new file mode 100644 index 00000000000..24ec76381a8 --- /dev/null +++ b/doxygen/crop__layer_8hpp_source.html @@ -0,0 +1,90 @@ + + + + + + + +Caffe: include/caffe/layers/crop_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
crop_layer.hpp
+
+
+
1 #ifndef CAFFE_CROP_LAYER_HPP_
2 #define CAFFE_CROP_LAYER_HPP_
3 
4 #include <utility>
5 #include <vector>
6 
7 #include "caffe/blob.hpp"
8 #include "caffe/layer.hpp"
9 #include "caffe/proto/caffe.pb.h"
10 
11 namespace caffe {
12 
20 template <typename Dtype>
21 class CropLayer : public Layer<Dtype> {
22  public:
23  explicit CropLayer(const LayerParameter& param)
24  : Layer<Dtype>(param) {}
25  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
26  const vector<Blob<Dtype>*>& top);
27  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
28  const vector<Blob<Dtype>*>& top);
29 
30  virtual inline const char* type() const { return "Crop"; }
31  virtual inline int ExactNumBottomBlobs() const { return 2; }
32  virtual inline int ExactNumTopBlobs() const { return 1; }
33 
34  protected:
35  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
36  const vector<Blob<Dtype>*>& top);
37  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
38  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
39  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
40  const vector<Blob<Dtype>*>& top);
41  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
42  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
43 
44  vector<int> offsets;
45 
46  private:
47  // Recursive copy function.
48  void crop_copy(const vector<Blob<Dtype>*>& bottom,
49  const vector<Blob<Dtype>*>& top,
50  const vector<int>& offsets,
51  vector<int> indices,
52  int cur_dim,
53  const Dtype* src_data,
54  Dtype* dest_data,
55  bool is_forward);
56 
57  // Recursive copy function: this is similar to crop_copy() but loops over all
58  // but the last two dimensions to allow for ND cropping while still relying on
59  // a CUDA kernel for the innermost two dimensions for performance reasons. An
60  // alterantive implementation could rely on the kernel more by passing
61  // offsets, but this is problematic because of its variable length.
62  // Since in the standard (N,C,W,H) case N,C are usually not cropped a speedup
63  // could be achieved by not looping the application of the copy_kernel around
64  // these dimensions.
65  void crop_copy_gpu(const vector<Blob<Dtype>*>& bottom,
66  const vector<Blob<Dtype>*>& top,
67  const vector<int>& offsets,
68  vector<int> indices,
69  int cur_dim,
70  const Dtype* src_data,
71  Dtype* dest_data,
72  bool is_forward);
73 };
74 } // namespace caffe
75 
76 #endif // CAFFE_CROP_LAYER_HPP_
virtual const char * type() const
Returns the layer type.
Definition: crop_layer.hpp:30
+
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: crop_layer.hpp:32
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: crop_layer.hpp:31
+
Takes a Blob and crop it, to the shape specified by the second input Blob, across all dimensions afte...
Definition: crop_layer.hpp:21
+
virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: crop_layer.cpp:36
+
virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the CPU device, compute the layer output.
Definition: crop_layer.cpp:115
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: crop_layer.cpp:124
+
virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: crop_layer.cpp:16
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/cudnn_8hpp_source.html b/doxygen/cudnn_8hpp_source.html new file mode 100644 index 00000000000..5e59602490a --- /dev/null +++ b/doxygen/cudnn_8hpp_source.html @@ -0,0 +1,78 @@ + + + + + + + +Caffe: include/caffe/util/cudnn.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
cudnn.hpp
+
+
+
1 #ifndef CAFFE_UTIL_CUDNN_H_
2 #define CAFFE_UTIL_CUDNN_H_
3 #ifdef USE_CUDNN
4 
5 #include <cudnn.h>
6 
7 #include "caffe/common.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 #define CUDNN_VERSION_MIN(major, minor, patch) \
11  (CUDNN_VERSION >= (major * 1000 + minor * 100 + patch))
12 
13 #define CUDNN_CHECK(condition) \
14  do { \
15  cudnnStatus_t status = condition; \
16  CHECK_EQ(status, CUDNN_STATUS_SUCCESS) << " "\
17  << cudnnGetErrorString(status); \
18  } while (0)
19 
20 inline const char* cudnnGetErrorString(cudnnStatus_t status) {
21  switch (status) {
22  case CUDNN_STATUS_SUCCESS:
23  return "CUDNN_STATUS_SUCCESS";
24  case CUDNN_STATUS_NOT_INITIALIZED:
25  return "CUDNN_STATUS_NOT_INITIALIZED";
26  case CUDNN_STATUS_ALLOC_FAILED:
27  return "CUDNN_STATUS_ALLOC_FAILED";
28  case CUDNN_STATUS_BAD_PARAM:
29  return "CUDNN_STATUS_BAD_PARAM";
30  case CUDNN_STATUS_INTERNAL_ERROR:
31  return "CUDNN_STATUS_INTERNAL_ERROR";
32  case CUDNN_STATUS_INVALID_VALUE:
33  return "CUDNN_STATUS_INVALID_VALUE";
34  case CUDNN_STATUS_ARCH_MISMATCH:
35  return "CUDNN_STATUS_ARCH_MISMATCH";
36  case CUDNN_STATUS_MAPPING_ERROR:
37  return "CUDNN_STATUS_MAPPING_ERROR";
38  case CUDNN_STATUS_EXECUTION_FAILED:
39  return "CUDNN_STATUS_EXECUTION_FAILED";
40  case CUDNN_STATUS_NOT_SUPPORTED:
41  return "CUDNN_STATUS_NOT_SUPPORTED";
42  case CUDNN_STATUS_LICENSE_ERROR:
43  return "CUDNN_STATUS_LICENSE_ERROR";
44  }
45  return "Unknown cudnn status";
46 }
47 
48 namespace caffe {
49 
50 namespace cudnn {
51 
52 template <typename Dtype> class dataType;
53 template<> class dataType<float> {
54  public:
55  static const cudnnDataType_t type = CUDNN_DATA_FLOAT;
56  static float oneval, zeroval;
57  static const void *one, *zero;
58 };
59 template<> class dataType<double> {
60  public:
61  static const cudnnDataType_t type = CUDNN_DATA_DOUBLE;
62  static double oneval, zeroval;
63  static const void *one, *zero;
64 };
65 
66 template <typename Dtype>
67 inline void createTensor4dDesc(cudnnTensorDescriptor_t* desc) {
68  CUDNN_CHECK(cudnnCreateTensorDescriptor(desc));
69 }
70 
71 template <typename Dtype>
72 inline void setTensor4dDesc(cudnnTensorDescriptor_t* desc,
73  int n, int c, int h, int w,
74  int stride_n, int stride_c, int stride_h, int stride_w) {
75  CUDNN_CHECK(cudnnSetTensor4dDescriptorEx(*desc, dataType<Dtype>::type,
76  n, c, h, w, stride_n, stride_c, stride_h, stride_w));
77 }
78 
79 template <typename Dtype>
80 inline void setTensor4dDesc(cudnnTensorDescriptor_t* desc,
81  int n, int c, int h, int w) {
82  const int stride_w = 1;
83  const int stride_h = w * stride_w;
84  const int stride_c = h * stride_h;
85  const int stride_n = c * stride_c;
86  setTensor4dDesc<Dtype>(desc, n, c, h, w,
87  stride_n, stride_c, stride_h, stride_w);
88 }
89 
90 template <typename Dtype>
91 inline void createFilterDesc(cudnnFilterDescriptor_t* desc,
92  int n, int c, int h, int w) {
93  CUDNN_CHECK(cudnnCreateFilterDescriptor(desc));
94 #if CUDNN_VERSION_MIN(5, 0, 0)
95  CUDNN_CHECK(cudnnSetFilter4dDescriptor(*desc, dataType<Dtype>::type,
96  CUDNN_TENSOR_NCHW, n, c, h, w));
97 #else
98  CUDNN_CHECK(cudnnSetFilter4dDescriptor_v4(*desc, dataType<Dtype>::type,
99  CUDNN_TENSOR_NCHW, n, c, h, w));
100 #endif
101 }
102 
103 template <typename Dtype>
104 inline void createConvolutionDesc(cudnnConvolutionDescriptor_t* conv) {
105  CUDNN_CHECK(cudnnCreateConvolutionDescriptor(conv));
106 }
107 
108 template <typename Dtype>
109 inline void setConvolutionDesc(cudnnConvolutionDescriptor_t* conv,
110  cudnnTensorDescriptor_t bottom, cudnnFilterDescriptor_t filter,
111  int pad_h, int pad_w, int stride_h, int stride_w) {
112  CUDNN_CHECK(cudnnSetConvolution2dDescriptor(*conv,
113  pad_h, pad_w, stride_h, stride_w, 1, 1, CUDNN_CROSS_CORRELATION));
114 }
115 
116 template <typename Dtype>
117 inline void createPoolingDesc(cudnnPoolingDescriptor_t* pool_desc,
118  PoolingParameter_PoolMethod poolmethod, cudnnPoolingMode_t* mode,
119  int h, int w, int pad_h, int pad_w, int stride_h, int stride_w) {
120  switch (poolmethod) {
121  case PoolingParameter_PoolMethod_MAX:
122  *mode = CUDNN_POOLING_MAX;
123  break;
124  case PoolingParameter_PoolMethod_AVE:
125  *mode = CUDNN_POOLING_AVERAGE_COUNT_INCLUDE_PADDING;
126  break;
127  default:
128  LOG(FATAL) << "Unknown pooling method.";
129  }
130  CUDNN_CHECK(cudnnCreatePoolingDescriptor(pool_desc));
131 #if CUDNN_VERSION_MIN(5, 0, 0)
132  CUDNN_CHECK(cudnnSetPooling2dDescriptor(*pool_desc, *mode,
133  CUDNN_PROPAGATE_NAN, h, w, pad_h, pad_w, stride_h, stride_w));
134 #else
135  CUDNN_CHECK(cudnnSetPooling2dDescriptor_v4(*pool_desc, *mode,
136  CUDNN_PROPAGATE_NAN, h, w, pad_h, pad_w, stride_h, stride_w));
137 #endif
138 }
139 
140 template <typename Dtype>
141 inline void createActivationDescriptor(cudnnActivationDescriptor_t* activ_desc,
142  cudnnActivationMode_t mode) {
143  CUDNN_CHECK(cudnnCreateActivationDescriptor(activ_desc));
144  CUDNN_CHECK(cudnnSetActivationDescriptor(*activ_desc, mode,
145  CUDNN_PROPAGATE_NAN, Dtype(0)));
146 }
147 
148 } // namespace cudnn
149 
150 } // namespace caffe
151 
152 #endif // USE_CUDNN
153 #endif // CAFFE_UTIL_CUDNN_H_
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
+ + + + diff --git a/doxygen/cudnn__conv__layer_8hpp_source.html b/doxygen/cudnn__conv__layer_8hpp_source.html new file mode 100644 index 00000000000..c74a3f57ca8 --- /dev/null +++ b/doxygen/cudnn__conv__layer_8hpp_source.html @@ -0,0 +1,78 @@ + + + + + + + +Caffe: include/caffe/layers/cudnn_conv_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
cudnn_conv_layer.hpp
+
+
+
1 #ifndef CAFFE_CUDNN_CONV_LAYER_HPP_
2 #define CAFFE_CUDNN_CONV_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 #include "caffe/layers/conv_layer.hpp"
11 
12 namespace caffe {
13 
14 #ifdef USE_CUDNN
15 /*
16  * @brief cuDNN implementation of ConvolutionLayer.
17  * Fallback to ConvolutionLayer for CPU mode.
18  *
19  * cuDNN accelerates convolution through forward kernels for filtering and bias
20  * plus backward kernels for the gradient w.r.t. the filters, biases, and
21  * inputs. Caffe + cuDNN further speeds up the computation through forward
22  * parallelism across groups and backward parallelism across gradients.
23  *
24  * The CUDNN engine does not have memory overhead for matrix buffers. For many
25  * input and filter regimes the CUDNN engine is faster than the CAFFE engine,
26  * but for fully-convolutional models and large inputs the CAFFE engine can be
27  * faster as long as it fits in memory.
28 */
29 template <typename Dtype>
30 class CuDNNConvolutionLayer : public ConvolutionLayer<Dtype> {
31  public:
32  explicit CuDNNConvolutionLayer(const LayerParameter& param)
33  : ConvolutionLayer<Dtype>(param), handles_setup_(false) {}
34  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
35  const vector<Blob<Dtype>*>& top);
36  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
37  const vector<Blob<Dtype>*>& top);
38  virtual ~CuDNNConvolutionLayer();
39 
40  protected:
41  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
42  const vector<Blob<Dtype>*>& top);
43  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
44  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
45 
46  bool handles_setup_;
47  cudnnHandle_t* handle_;
48  cudaStream_t* stream_;
49 
50  // algorithms for forward and backwards convolutions
51  cudnnConvolutionFwdAlgo_t *fwd_algo_;
52  cudnnConvolutionBwdFilterAlgo_t *bwd_filter_algo_;
53  cudnnConvolutionBwdDataAlgo_t *bwd_data_algo_;
54 
55  vector<cudnnTensorDescriptor_t> bottom_descs_, top_descs_;
56  cudnnTensorDescriptor_t bias_desc_;
57  cudnnFilterDescriptor_t filter_desc_;
58  vector<cudnnConvolutionDescriptor_t> conv_descs_;
59  int bottom_offset_, top_offset_, bias_offset_;
60 
61  size_t *workspace_fwd_sizes_;
62  size_t *workspace_bwd_data_sizes_;
63  size_t *workspace_bwd_filter_sizes_;
64  size_t workspaceSizeInBytes; // size of underlying storage
65  void *workspaceData; // underlying storage
66  void **workspace; // aliases into workspaceData
67 };
68 #endif
69 
70 } // namespace caffe
71 
72 #endif // CAFFE_CUDNN_CONV_LAYER_HPP_
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
+ + + + diff --git a/doxygen/cudnn__lcn__layer_8hpp_source.html b/doxygen/cudnn__lcn__layer_8hpp_source.html new file mode 100644 index 00000000000..1979015737a --- /dev/null +++ b/doxygen/cudnn__lcn__layer_8hpp_source.html @@ -0,0 +1,78 @@ + + + + + + + +Caffe: include/caffe/layers/cudnn_lcn_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
cudnn_lcn_layer.hpp
+
+
+
1 #ifndef CAFFE_CUDNN_LCN_LAYER_HPP_
2 #define CAFFE_CUDNN_LCN_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 #include "caffe/layers/lrn_layer.hpp"
11 #include "caffe/layers/power_layer.hpp"
12 
13 namespace caffe {
14 
15 #ifdef USE_CUDNN
16 template <typename Dtype>
17 class CuDNNLCNLayer : public LRNLayer<Dtype> {
18  public:
19  explicit CuDNNLCNLayer(const LayerParameter& param)
20  : LRNLayer<Dtype>(param), handles_setup_(false), tempDataSize(0),
21  tempData1(NULL), tempData2(NULL) {}
22  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
23  const vector<Blob<Dtype>*>& top);
24  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
25  const vector<Blob<Dtype>*>& top);
26  virtual ~CuDNNLCNLayer();
27 
28  protected:
29  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
30  const vector<Blob<Dtype>*>& top);
31  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
32  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
33 
34  bool handles_setup_;
35  cudnnHandle_t handle_;
36  cudnnLRNDescriptor_t norm_desc_;
37  cudnnTensorDescriptor_t bottom_desc_, top_desc_;
38 
39  int size_, pre_pad_;
40  Dtype alpha_, beta_, k_;
41 
42  size_t tempDataSize;
43  void *tempData1, *tempData2;
44 };
45 #endif
46 
47 } // namespace caffe
48 
49 #endif // CAFFE_CUDNN_LCN_LAYER_HPP_
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
+ + + + diff --git a/doxygen/cudnn__lrn__layer_8hpp_source.html b/doxygen/cudnn__lrn__layer_8hpp_source.html new file mode 100644 index 00000000000..7429338d678 --- /dev/null +++ b/doxygen/cudnn__lrn__layer_8hpp_source.html @@ -0,0 +1,78 @@ + + + + + + + +Caffe: include/caffe/layers/cudnn_lrn_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
cudnn_lrn_layer.hpp
+
+
+
1 #ifndef CAFFE_CUDNN_LRN_LAYER_HPP_
2 #define CAFFE_CUDNN_LRN_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 #include "caffe/layers/lrn_layer.hpp"
11 
12 namespace caffe {
13 
14 #ifdef USE_CUDNN
15 template <typename Dtype>
16 class CuDNNLRNLayer : public LRNLayer<Dtype> {
17  public:
18  explicit CuDNNLRNLayer(const LayerParameter& param)
19  : LRNLayer<Dtype>(param), handles_setup_(false) {}
20  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
21  const vector<Blob<Dtype>*>& top);
22  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
23  const vector<Blob<Dtype>*>& top);
24  virtual ~CuDNNLRNLayer();
25 
26  protected:
27  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
28  const vector<Blob<Dtype>*>& top);
29  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
30  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
31 
32  bool handles_setup_;
33  cudnnHandle_t handle_;
34  cudnnLRNDescriptor_t norm_desc_;
35  cudnnTensorDescriptor_t bottom_desc_, top_desc_;
36 
37  int size_;
38  Dtype alpha_, beta_, k_;
39 };
40 #endif
41 
42 } // namespace caffe
43 
44 #endif // CAFFE_CUDNN_LRN_LAYER_HPP_
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
+ + + + diff --git a/doxygen/cudnn__pooling__layer_8hpp_source.html b/doxygen/cudnn__pooling__layer_8hpp_source.html new file mode 100644 index 00000000000..f0e0be00f23 --- /dev/null +++ b/doxygen/cudnn__pooling__layer_8hpp_source.html @@ -0,0 +1,78 @@ + + + + + + + +Caffe: include/caffe/layers/cudnn_pooling_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
cudnn_pooling_layer.hpp
+
+
+
1 #ifndef CAFFE_CUDNN_POOLING_LAYER_HPP_
2 #define CAFFE_CUDNN_POOLING_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 #include "caffe/layers/pooling_layer.hpp"
11 
12 namespace caffe {
13 
14 #ifdef USE_CUDNN
15 /*
16  * @brief cuDNN implementation of PoolingLayer.
17  * Fallback to PoolingLayer for CPU mode.
18 */
19 template <typename Dtype>
20 class CuDNNPoolingLayer : public PoolingLayer<Dtype> {
21  public:
22  explicit CuDNNPoolingLayer(const LayerParameter& param)
23  : PoolingLayer<Dtype>(param), handles_setup_(false) {}
24  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
25  const vector<Blob<Dtype>*>& top);
26  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
27  const vector<Blob<Dtype>*>& top);
28  virtual ~CuDNNPoolingLayer();
29  // Currently, cuDNN does not support the extra top blob.
30  virtual inline int MinTopBlobs() const { return -1; }
31  virtual inline int ExactNumTopBlobs() const { return 1; }
32 
33  protected:
34  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
35  const vector<Blob<Dtype>*>& top);
36  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
37  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
38 
39  bool handles_setup_;
40  cudnnHandle_t handle_;
41  cudnnTensorDescriptor_t bottom_desc_, top_desc_;
42  cudnnPoolingDescriptor_t pooling_desc_;
43  cudnnPoolingMode_t mode_;
44 };
45 #endif
46 
47 } // namespace caffe
48 
49 #endif // CAFFE_CUDNN_POOLING_LAYER_HPP_
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
+ + + + diff --git a/doxygen/cudnn__relu__layer_8hpp_source.html b/doxygen/cudnn__relu__layer_8hpp_source.html new file mode 100644 index 00000000000..d051a49116c --- /dev/null +++ b/doxygen/cudnn__relu__layer_8hpp_source.html @@ -0,0 +1,78 @@ + + + + + + + +Caffe: include/caffe/layers/cudnn_relu_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
cudnn_relu_layer.hpp
+
+
+
1 #ifndef CAFFE_CUDNN_RELU_LAYER_HPP_
2 #define CAFFE_CUDNN_RELU_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 #include "caffe/layers/neuron_layer.hpp"
11 #include "caffe/layers/relu_layer.hpp"
12 
13 namespace caffe {
14 
15 #ifdef USE_CUDNN
16 
19 template <typename Dtype>
20 class CuDNNReLULayer : public ReLULayer<Dtype> {
21  public:
22  explicit CuDNNReLULayer(const LayerParameter& param)
23  : ReLULayer<Dtype>(param), handles_setup_(false) {}
24  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
25  const vector<Blob<Dtype>*>& top);
26  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
27  const vector<Blob<Dtype>*>& top);
28  virtual ~CuDNNReLULayer();
29 
30  protected:
31  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
32  const vector<Blob<Dtype>*>& top);
33  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
34  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
35 
36  bool handles_setup_;
37  cudnnHandle_t handle_;
38  cudnnTensorDescriptor_t bottom_desc_;
39  cudnnTensorDescriptor_t top_desc_;
40  cudnnActivationDescriptor_t activ_desc_;
41 };
42 #endif
43 
44 } // namespace caffe
45 
46 #endif // CAFFE_CUDNN_RELU_LAYER_HPP_
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
+ + + + diff --git a/doxygen/cudnn__sigmoid__layer_8hpp_source.html b/doxygen/cudnn__sigmoid__layer_8hpp_source.html new file mode 100644 index 00000000000..7c4993c930d --- /dev/null +++ b/doxygen/cudnn__sigmoid__layer_8hpp_source.html @@ -0,0 +1,78 @@ + + + + + + + +Caffe: include/caffe/layers/cudnn_sigmoid_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
cudnn_sigmoid_layer.hpp
+
+
+
1 #ifndef CAFFE_CUDNN_SIGMOID_LAYER_HPP_
2 #define CAFFE_CUDNN_SIGMOID_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 #include "caffe/layers/neuron_layer.hpp"
11 #include "caffe/layers/sigmoid_layer.hpp"
12 
13 namespace caffe {
14 
15 #ifdef USE_CUDNN
16 
19 template <typename Dtype>
20 class CuDNNSigmoidLayer : public SigmoidLayer<Dtype> {
21  public:
22  explicit CuDNNSigmoidLayer(const LayerParameter& param)
23  : SigmoidLayer<Dtype>(param), handles_setup_(false) {}
24  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
25  const vector<Blob<Dtype>*>& top);
26  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
27  const vector<Blob<Dtype>*>& top);
28  virtual ~CuDNNSigmoidLayer();
29 
30  protected:
31  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
32  const vector<Blob<Dtype>*>& top);
33  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
34  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
35 
36  bool handles_setup_;
37  cudnnHandle_t handle_;
38  cudnnTensorDescriptor_t bottom_desc_;
39  cudnnTensorDescriptor_t top_desc_;
40  cudnnActivationDescriptor_t activ_desc_;
41 };
42 #endif
43 
44 } // namespace caffe
45 
46 #endif // CAFFE_CUDNN_SIGMOID_LAYER_HPP_
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
+ + + + diff --git a/doxygen/cudnn__softmax__layer_8hpp_source.html b/doxygen/cudnn__softmax__layer_8hpp_source.html new file mode 100644 index 00000000000..2e9156eaeea --- /dev/null +++ b/doxygen/cudnn__softmax__layer_8hpp_source.html @@ -0,0 +1,78 @@ + + + + + + + +Caffe: include/caffe/layers/cudnn_softmax_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
cudnn_softmax_layer.hpp
+
+
+
1 #ifndef CAFFE_CUDNN_SOFTMAX_LAYER_HPP_
2 #define CAFFE_CUDNN_SOFTMAX_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 #include "caffe/layers/softmax_layer.hpp"
11 
12 namespace caffe {
13 
14 #ifdef USE_CUDNN
15 
19 template <typename Dtype>
20 class CuDNNSoftmaxLayer : public SoftmaxLayer<Dtype> {
21  public:
22  explicit CuDNNSoftmaxLayer(const LayerParameter& param)
23  : SoftmaxLayer<Dtype>(param), handles_setup_(false) {}
24  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
25  const vector<Blob<Dtype>*>& top);
26  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
27  const vector<Blob<Dtype>*>& top);
28  virtual ~CuDNNSoftmaxLayer();
29 
30  protected:
31  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
32  const vector<Blob<Dtype>*>& top);
33  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
34  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
35 
36  bool handles_setup_;
37  cudnnHandle_t handle_;
38  cudnnTensorDescriptor_t bottom_desc_;
39  cudnnTensorDescriptor_t top_desc_;
40 };
41 #endif
42 
43 } // namespace caffe
44 
45 #endif // CAFFE_CUDNN_SOFTMAX_LAYER_HPP_
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
+ + + + diff --git a/doxygen/cudnn__tanh__layer_8hpp_source.html b/doxygen/cudnn__tanh__layer_8hpp_source.html new file mode 100644 index 00000000000..583a2157408 --- /dev/null +++ b/doxygen/cudnn__tanh__layer_8hpp_source.html @@ -0,0 +1,78 @@ + + + + + + + +Caffe: include/caffe/layers/cudnn_tanh_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
cudnn_tanh_layer.hpp
+
+
+
1 #ifndef CAFFE_CUDNN_TANH_LAYER_HPP_
2 #define CAFFE_CUDNN_TANH_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 #include "caffe/layers/neuron_layer.hpp"
11 #include "caffe/layers/tanh_layer.hpp"
12 
13 namespace caffe {
14 
15 #ifdef USE_CUDNN
16 
19 template <typename Dtype>
20 class CuDNNTanHLayer : public TanHLayer<Dtype> {
21  public:
22  explicit CuDNNTanHLayer(const LayerParameter& param)
23  : TanHLayer<Dtype>(param), handles_setup_(false) {}
24  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
25  const vector<Blob<Dtype>*>& top);
26  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
27  const vector<Blob<Dtype>*>& top);
28  virtual ~CuDNNTanHLayer();
29 
30  protected:
31  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
32  const vector<Blob<Dtype>*>& top);
33  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
34  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
35 
36  bool handles_setup_;
37  cudnnHandle_t handle_;
38  cudnnTensorDescriptor_t bottom_desc_;
39  cudnnTensorDescriptor_t top_desc_;
40  cudnnActivationDescriptor_t activ_desc_;
41 };
42 #endif
43 
44 } // namespace caffe
45 
46 #endif // CAFFE_CUDNN_TANH_LAYER_HPP_
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
+ + + + diff --git a/doxygen/data__layer_8hpp_source.html b/doxygen/data__layer_8hpp_source.html new file mode 100644 index 00000000000..ef5cce2c697 --- /dev/null +++ b/doxygen/data__layer_8hpp_source.html @@ -0,0 +1,88 @@ + + + + + + + +Caffe: include/caffe/layers/data_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
data_layer.hpp
+
+
+
1 #ifndef CAFFE_DATA_LAYER_HPP_
2 #define CAFFE_DATA_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/data_reader.hpp"
8 #include "caffe/data_transformer.hpp"
9 #include "caffe/internal_thread.hpp"
10 #include "caffe/layer.hpp"
11 #include "caffe/layers/base_data_layer.hpp"
12 #include "caffe/proto/caffe.pb.h"
13 #include "caffe/util/db.hpp"
14 
15 namespace caffe {
16 
17 template <typename Dtype>
18 class DataLayer : public BasePrefetchingDataLayer<Dtype> {
19  public:
20  explicit DataLayer(const LayerParameter& param);
21  virtual ~DataLayer();
22  virtual void DataLayerSetUp(const vector<Blob<Dtype>*>& bottom,
23  const vector<Blob<Dtype>*>& top);
24  // DataLayer uses DataReader instead for sharing for parallelism
25  virtual inline bool ShareInParallel() const { return false; }
26  virtual inline const char* type() const { return "Data"; }
27  virtual inline int ExactNumBottomBlobs() const { return 0; }
28  virtual inline int MinTopBlobs() const { return 1; }
29  virtual inline int MaxTopBlobs() const { return 2; }
30 
31  protected:
32  virtual void load_batch(Batch<Dtype>* batch);
33 
34  DataReader reader_;
35 };
36 
37 } // namespace caffe
38 
39 #endif // CAFFE_DATA_LAYER_HPP_
Definition: base_data_layer.hpp:49
+
Definition: base_data_layer.hpp:55
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual bool ShareInParallel() const
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.
Definition: data_layer.hpp:25
+
Definition: data_layer.hpp:18
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: data_layer.hpp:27
+
virtual const char * type() const
Returns the layer type.
Definition: data_layer.hpp:26
+
Reads data from a source to queues available to data layers. A single reading thread is created per s...
Definition: data_reader.hpp:23
+
virtual int MaxTopBlobs() const
Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required...
Definition: data_layer.hpp:29
+
virtual int MinTopBlobs() const
Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
Definition: data_layer.hpp:28
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/data__layers_8hpp_source.html b/doxygen/data__layers_8hpp_source.html new file mode 100644 index 00000000000..bda072cae87 --- /dev/null +++ b/doxygen/data__layers_8hpp_source.html @@ -0,0 +1,475 @@ + + + + + + +Caffe: include/caffe/data_layers.hpp Source File + + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
data_layers.hpp
+
+
+
1 #ifndef CAFFE_DATA_LAYERS_HPP_
+
2 #define CAFFE_DATA_LAYERS_HPP_
+
3 
+
4 #include <string>
+
5 #include <utility>
+
6 #include <vector>
+
7 #include "hdf5.h"
+
8 
+
9 #include "caffe/blob.hpp"
+
10 #include "caffe/common.hpp"
+
11 #include "caffe/data_reader.hpp"
+
12 #include "caffe/data_transformer.hpp"
+
13 #include "caffe/filler.hpp"
+
14 #include "caffe/internal_thread.hpp"
+
15 #include "caffe/layer.hpp"
+
16 #include "caffe/proto/caffe.pb.h"
+
17 #include "caffe/util/blocking_queue.hpp"
+
18 #include "caffe/util/db.hpp"
+
19 
+
20 namespace caffe {
+
21 
+
27 template <typename Dtype>
+
28 class BaseDataLayer : public Layer<Dtype> {
+
29  public:
+
30  explicit BaseDataLayer(const LayerParameter& param);
+
31  // LayerSetUp: implements common data layer setup functionality, and calls
+
32  // DataLayerSetUp to do special data layer setup for individual layer types.
+
33  // This method may not be overridden except by the BasePrefetchingDataLayer.
+
34  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
+
35  const vector<Blob<Dtype>*>& top);
+
36  // Data layers should be shared by multiple solvers in parallel
+
37  virtual inline bool ShareInParallel() const { return true; }
+
38  virtual void DataLayerSetUp(const vector<Blob<Dtype>*>& bottom,
+
39  const vector<Blob<Dtype>*>& top) {}
+
40  // Data layers have no bottoms, so reshaping is trivial.
+
41  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
42  const vector<Blob<Dtype>*>& top) {}
+
43 
+
44  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
45  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
+
46  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
+
47  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
+
48 
+
49  protected:
+
50  TransformationParameter transform_param_;
+
51  shared_ptr<DataTransformer<Dtype> > data_transformer_;
+
52  bool output_labels_;
+
53 };
+
54 
+
55 template <typename Dtype>
+
56 class Batch {
+
57  public:
+
58  Blob<Dtype> data_, label_;
+
59 };
+
60 
+
61 template <typename Dtype>
+ +
63  public BaseDataLayer<Dtype>, public InternalThread {
+
64  public:
+
65  explicit BasePrefetchingDataLayer(const LayerParameter& param);
+
66  // LayerSetUp: implements common data layer setup functionality, and calls
+
67  // DataLayerSetUp to do special data layer setup for individual layer types.
+
68  // This method may not be overridden.
+
69  void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
+
70  const vector<Blob<Dtype>*>& top);
+
71 
+
72  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
73  const vector<Blob<Dtype>*>& top);
+
74  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
+
75  const vector<Blob<Dtype>*>& top);
+
76 
+
77  // Prefetches batches (asynchronously if to GPU memory)
+
78  static const int PREFETCH_COUNT = 3;
+
79 
+
80  protected:
+
81  virtual void InternalThreadEntry();
+
82  virtual void load_batch(Batch<Dtype>* batch) = 0;
+
83 
+
84  Batch<Dtype> prefetch_[PREFETCH_COUNT];
+
85  BlockingQueue<Batch<Dtype>*> prefetch_free_;
+
86  BlockingQueue<Batch<Dtype>*> prefetch_full_;
+
87 
+
88  Blob<Dtype> transformed_data_;
+
89 };
+
90 
+
91 template <typename Dtype>
+
92 class DataLayer : public BasePrefetchingDataLayer<Dtype> {
+
93  public:
+
94  explicit DataLayer(const LayerParameter& param);
+
95  virtual ~DataLayer();
+
96  virtual void DataLayerSetUp(const vector<Blob<Dtype>*>& bottom,
+
97  const vector<Blob<Dtype>*>& top);
+
98  // DataLayer uses DataReader instead for sharing for parallelism
+
99  virtual inline bool ShareInParallel() const { return false; }
+
100  virtual inline const char* type() const { return "Data"; }
+
101  virtual inline int ExactNumBottomBlobs() const { return 0; }
+
102  virtual inline int MinTopBlobs() const { return 1; }
+
103  virtual inline int MaxTopBlobs() const { return 2; }
+
104 
+
105  protected:
+
106  virtual void load_batch(Batch<Dtype>* batch);
+
107 
+
108  DataReader reader_;
+
109 };
+
110 
+
116 template <typename Dtype>
+
117 class DummyDataLayer : public Layer<Dtype> {
+
118  public:
+
119  explicit DummyDataLayer(const LayerParameter& param)
+
120  : Layer<Dtype>(param) {}
+
121  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
+
122  const vector<Blob<Dtype>*>& top);
+
123  // Data layers should be shared by multiple solvers in parallel
+
124  virtual inline bool ShareInParallel() const { return true; }
+
125  // Data layers have no bottoms, so reshaping is trivial.
+
126  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
127  const vector<Blob<Dtype>*>& top) {}
+
128 
+
129  virtual inline const char* type() const { return "DummyData"; }
+
130  virtual inline int ExactNumBottomBlobs() const { return 0; }
+
131  virtual inline int MinTopBlobs() const { return 1; }
+
132 
+
133  protected:
+
134  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
135  const vector<Blob<Dtype>*>& top);
+
136  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
137  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
+
138  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
+
139  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
+
140 
+
141  vector<shared_ptr<Filler<Dtype> > > fillers_;
+
142  vector<bool> refill_;
+
143 };
+
144 
+
150 template <typename Dtype>
+
151 class HDF5DataLayer : public Layer<Dtype> {
+
152  public:
+
153  explicit HDF5DataLayer(const LayerParameter& param)
+
154  : Layer<Dtype>(param) {}
+
155  virtual ~HDF5DataLayer();
+
156  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
+
157  const vector<Blob<Dtype>*>& top);
+
158  // Data layers should be shared by multiple solvers in parallel
+
159  virtual inline bool ShareInParallel() const { return true; }
+
160  // Data layers have no bottoms, so reshaping is trivial.
+
161  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
162  const vector<Blob<Dtype>*>& top) {}
+
163 
+
164  virtual inline const char* type() const { return "HDF5Data"; }
+
165  virtual inline int ExactNumBottomBlobs() const { return 0; }
+
166  virtual inline int MinTopBlobs() const { return 1; }
+
167 
+
168  protected:
+
169  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
170  const vector<Blob<Dtype>*>& top);
+
171  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
+
172  const vector<Blob<Dtype>*>& top);
+
173  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
174  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
+
175  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
+
176  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
+
177  virtual void LoadHDF5FileData(const char* filename);
+
178 
+
179  std::vector<std::string> hdf_filenames_;
+
180  unsigned int num_files_;
+
181  unsigned int current_file_;
+
182  hsize_t current_row_;
+
183  std::vector<shared_ptr<Blob<Dtype> > > hdf_blobs_;
+
184  std::vector<unsigned int> data_permutation_;
+
185  std::vector<unsigned int> file_permutation_;
+
186 };
+
187 
+
193 template <typename Dtype>
+
194 class HDF5OutputLayer : public Layer<Dtype> {
+
195  public:
+
196  explicit HDF5OutputLayer(const LayerParameter& param)
+
197  : Layer<Dtype>(param), file_opened_(false) {}
+
198  virtual ~HDF5OutputLayer();
+
199  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
+
200  const vector<Blob<Dtype>*>& top);
+
201  // Data layers should be shared by multiple solvers in parallel
+
202  virtual inline bool ShareInParallel() const { return true; }
+
203  // Data layers have no bottoms, so reshaping is trivial.
+
204  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
205  const vector<Blob<Dtype>*>& top) {}
+
206 
+
207  virtual inline const char* type() const { return "HDF5Output"; }
+
208  // TODO: no limit on the number of blobs
+
209  virtual inline int ExactNumBottomBlobs() const { return 2; }
+
210  virtual inline int ExactNumTopBlobs() const { return 0; }
+
211 
+
212  inline std::string file_name() const { return file_name_; }
+
213 
+
214  protected:
+
215  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
216  const vector<Blob<Dtype>*>& top);
+
217  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
+
218  const vector<Blob<Dtype>*>& top);
+
219  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
220  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
221  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
+
222  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
223  virtual void SaveBlobs();
+
224 
+
225  bool file_opened_;
+
226  std::string file_name_;
+
227  hid_t file_id_;
+
228  Blob<Dtype> data_blob_;
+
229  Blob<Dtype> label_blob_;
+
230 };
+
231 
+
237 template <typename Dtype>
+ +
239  public:
+
240  explicit ImageDataLayer(const LayerParameter& param)
+ +
242  virtual ~ImageDataLayer();
+
243  virtual void DataLayerSetUp(const vector<Blob<Dtype>*>& bottom,
+
244  const vector<Blob<Dtype>*>& top);
+
245 
+
246  virtual inline const char* type() const { return "ImageData"; }
+
247  virtual inline int ExactNumBottomBlobs() const { return 0; }
+
248  virtual inline int ExactNumTopBlobs() const { return 2; }
+
249 
+
250  protected:
+
251  shared_ptr<Caffe::RNG> prefetch_rng_;
+
252  virtual void ShuffleImages();
+
253  virtual void load_batch(Batch<Dtype>* batch);
+
254 
+
255  vector<std::pair<std::string, int> > lines_;
+
256  int lines_id_;
+
257 };
+
258 
+
264 template <typename Dtype>
+
265 class MemoryDataLayer : public BaseDataLayer<Dtype> {
+
266  public:
+
267  explicit MemoryDataLayer(const LayerParameter& param)
+
268  : BaseDataLayer<Dtype>(param), has_new_data_(false) {}
+
269  virtual void DataLayerSetUp(const vector<Blob<Dtype>*>& bottom,
+
270  const vector<Blob<Dtype>*>& top);
+
271 
+
272  virtual inline const char* type() const { return "MemoryData"; }
+
273  virtual inline int ExactNumBottomBlobs() const { return 0; }
+
274  virtual inline int ExactNumTopBlobs() const { return 2; }
+
275 
+
276  virtual void AddDatumVector(const vector<Datum>& datum_vector);
+
277 #ifdef USE_OPENCV
+
278  virtual void AddMatVector(const vector<cv::Mat>& mat_vector,
+
279  const vector<int>& labels);
+
280 #endif // USE_OPENCV
+
281 
+
282  // Reset should accept const pointers, but can't, because the memory
+
283  // will be given to Blob, which is mutable
+
284  void Reset(Dtype* data, Dtype* label, int n);
+
285  void set_batch_size(int new_size);
+
286 
+
287  int batch_size() { return batch_size_; }
+
288  int channels() { return channels_; }
+
289  int height() { return height_; }
+
290  int width() { return width_; }
+
291 
+
292  protected:
+
293  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
294  const vector<Blob<Dtype>*>& top);
+
295 
+
296  int batch_size_, channels_, height_, width_, size_;
+
297  Dtype* data_;
+
298  Dtype* labels_;
+
299  int n_;
+
300  size_t pos_;
+
301  Blob<Dtype> added_data_;
+
302  Blob<Dtype> added_label_;
+
303  bool has_new_data_;
+
304 };
+
305 
+
312 template <typename Dtype>
+ +
314  public:
+
315  explicit WindowDataLayer(const LayerParameter& param)
+ +
317  virtual ~WindowDataLayer();
+
318  virtual void DataLayerSetUp(const vector<Blob<Dtype>*>& bottom,
+
319  const vector<Blob<Dtype>*>& top);
+
320 
+
321  virtual inline const char* type() const { return "WindowData"; }
+
322  virtual inline int ExactNumBottomBlobs() const { return 0; }
+
323  virtual inline int ExactNumTopBlobs() const { return 2; }
+
324 
+
325  protected:
+
326  virtual unsigned int PrefetchRand();
+
327  virtual void load_batch(Batch<Dtype>* batch);
+
328 
+
329  shared_ptr<Caffe::RNG> prefetch_rng_;
+
330  vector<std::pair<std::string, vector<int> > > image_database_;
+
331  enum WindowField { IMAGE_INDEX, LABEL, OVERLAP, X1, Y1, X2, Y2, NUM };
+
332  vector<vector<float> > fg_windows_;
+
333  vector<vector<float> > bg_windows_;
+
334  Blob<Dtype> data_mean_;
+
335  vector<Dtype> mean_values_;
+
336  bool has_mean_file_;
+
337  bool has_mean_values_;
+
338  bool cache_images_;
+
339  vector<std::pair<std::string, Datum > > image_database_cache_;
+
340 };
+
341 
+
342 } // namespace caffe
+
343 
+
344 #endif // CAFFE_DATA_LAYERS_HPP_
+
virtual bool ShareInParallel() const
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.
Definition: data_layers.hpp:99
+
Definition: data_layers.hpp:56
+
virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: data_layers.hpp:175
+
Definition: data_layers.hpp:62
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: data_layers.hpp:165
+
virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: hdf5_data_layer.cpp:73
+
virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: data_layers.hpp:136
+
A layer factory that allows one to register layers. During runtime, registered layers could be called...
Definition: blob.hpp:15
+
Provides data to the Net from windows of images files, specified by a window data file...
Definition: data_layers.hpp:313
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: data_layers.hpp:210
+
virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: hdf5_output_layer.cpp:15
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: data_layers.hpp:126
+
Write blobs to disk as HDF5 files.
Definition: data_layers.hpp:194
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the CPU device, compute the layer output.
Definition: hdf5_data_layer.cpp:129
+
virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: base_data_layer.cpp:18
+
Provides data to the Net generated by a Filler.
Definition: data_layers.hpp:117
+
Definition: data_layers.hpp:92
+
virtual int MinTopBlobs() const
Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
Definition: data_layers.hpp:102
+
virtual const char * type() const
Returns the layer type.
Definition: data_layers.hpp:207
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the CPU device, compute the layer output.
Definition: memory_data_layer.cpp:110
+
virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: data_layers.hpp:101
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: data_layers.hpp:44
+
virtual const char * type() const
Returns the layer type.
Definition: data_layers.hpp:272
+
Provides base for data layers that feed blobs to the Net.
Definition: data_layers.hpp:28
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: data_layers.hpp:130
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the CPU device, compute the layer output.
Definition: hdf5_output_layer.cpp:44
+
void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: base_data_layer.cpp:43
+
virtual bool ShareInParallel() const
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.
Definition: data_layers.hpp:37
+
Provides data to the Net from image files.
Definition: data_layers.hpp:238
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: data_layers.hpp:322
+
virtual const char * type() const
Returns the layer type.
Definition: data_layers.hpp:246
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: data_layers.hpp:209
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: data_layers.hpp:323
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: data_layers.hpp:273
+
virtual const char * type() const
Returns the layer type.
Definition: data_layers.hpp:129
+
Provides data to the Net from HDF5 files.
Definition: data_layers.hpp:151
+
virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: data_layers.hpp:138
+
virtual const char * type() const
Returns the layer type.
Definition: data_layers.hpp:164
+
virtual int MinTopBlobs() const
Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
Definition: data_layers.hpp:166
+
virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: dummy_data_layer.cpp:10
+
virtual int MaxTopBlobs() const
Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required...
Definition: data_layers.hpp:103
+
virtual bool ShareInParallel() const
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.
Definition: data_layers.hpp:202
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: data_layers.hpp:274
+
virtual int MinTopBlobs() const
Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
Definition: data_layers.hpp:131
+
virtual const char * type() const
Returns the layer type.
Definition: data_layers.hpp:100
+
Definition: internal_thread.hpp:19
+
virtual bool ShareInParallel() const
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.
Definition: data_layers.hpp:159
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: hdf5_output_layer.cpp:65
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: data_layers.hpp:41
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: data_layers.hpp:248
+
Definition: blocking_queue.hpp:12
+
virtual const char * type() const
Returns the layer type.
Definition: data_layers.hpp:321
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the CPU device, compute the layer output.
Definition: dummy_data_layer.cpp:102
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: data_layers.hpp:161
+
Reads data from a source to queues available to data layers. A single reading thread is created per s...
Definition: data_reader.hpp:23
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the CPU device, compute the layer output.
Definition: base_data_layer.cpp:104
+
virtual bool ShareInParallel() const
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.
Definition: data_layers.hpp:124
+
virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: data_layers.hpp:46
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: data_layers.hpp:173
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: data_layers.hpp:247
+
Provides data to the Net from memory.
Definition: data_layers.hpp:265
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: data_layers.hpp:204
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:25
+
+ + + + diff --git a/doxygen/data__reader_8hpp_source.html b/doxygen/data__reader_8hpp_source.html new file mode 100644 index 00000000000..3f7708f5d00 --- /dev/null +++ b/doxygen/data__reader_8hpp_source.html @@ -0,0 +1,84 @@ + + + + + + + +Caffe: include/caffe/data_reader.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
data_reader.hpp
+
+
+
1 #ifndef CAFFE_DATA_READER_HPP_
2 #define CAFFE_DATA_READER_HPP_
3 
4 #include <map>
5 #include <string>
6 #include <vector>
7 
8 #include "caffe/common.hpp"
9 #include "caffe/internal_thread.hpp"
10 #include "caffe/util/blocking_queue.hpp"
11 #include "caffe/util/db.hpp"
12 
13 namespace caffe {
14 
23 class DataReader {
24  public:
25  explicit DataReader(const LayerParameter& param);
26  ~DataReader();
27 
28  inline BlockingQueue<Datum*>& free() const {
29  return queue_pair_->free_;
30  }
31  inline BlockingQueue<Datum*>& full() const {
32  return queue_pair_->full_;
33  }
34 
35  protected:
36  // Queue pairs are shared between a body and its readers
37  class QueuePair {
38  public:
39  explicit QueuePair(int size);
40  ~QueuePair();
41 
44 
45  DISABLE_COPY_AND_ASSIGN(QueuePair);
46  };
47 
48  // A single body is created per source
49  class Body : public InternalThread {
50  public:
51  explicit Body(const LayerParameter& param);
52  virtual ~Body();
53 
54  protected:
55  void InternalThreadEntry();
56  void read_one(db::Cursor* cursor, QueuePair* qp);
57 
58  const LayerParameter param_;
59  BlockingQueue<shared_ptr<QueuePair> > new_queue_pairs_;
60 
61  friend class DataReader;
62 
63  DISABLE_COPY_AND_ASSIGN(Body);
64  };
65 
66  // A source is uniquely identified by its layer name + path, in case
67  // the same database is read from two different locations in the net.
68  static inline string source_key(const LayerParameter& param) {
69  return param.name() + ":" + param.data_param().source();
70  }
71 
72  const shared_ptr<QueuePair> queue_pair_;
73  shared_ptr<Body> body_;
74 
75  static map<const string, boost::weak_ptr<DataReader::Body> > bodies_;
76 
77 DISABLE_COPY_AND_ASSIGN(DataReader);
78 };
79 
80 } // namespace caffe
81 
82 #endif // CAFFE_DATA_READER_HPP_
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
Definition: data_reader.hpp:49
+
Definition: data_reader.hpp:37
+
Definition: internal_thread.hpp:19
+
Definition: blocking_queue.hpp:10
+
Reads data from a source to queues available to data layers. A single reading thread is created per s...
Definition: data_reader.hpp:23
+
Definition: db.hpp:13
+
+ + + + diff --git a/doxygen/data__transformer_8hpp_source.html b/doxygen/data__transformer_8hpp_source.html new file mode 100644 index 00000000000..d4c44c5e820 --- /dev/null +++ b/doxygen/data__transformer_8hpp_source.html @@ -0,0 +1,84 @@ + + + + + + + +Caffe: include/caffe/data_transformer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
data_transformer.hpp
+
+
+
1 #ifndef CAFFE_DATA_TRANSFORMER_HPP
2 #define CAFFE_DATA_TRANSFORMER_HPP
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/common.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 namespace caffe {
11 
16 template <typename Dtype>
18  public:
19  explicit DataTransformer(const TransformationParameter& param, Phase phase);
20  virtual ~DataTransformer() {}
21 
26  void InitRand();
27 
38  void Transform(const Datum& datum, Blob<Dtype>* transformed_blob);
39 
50  void Transform(const vector<Datum> & datum_vector,
51  Blob<Dtype>* transformed_blob);
52 
53 #ifdef USE_OPENCV
54 
64  void Transform(const vector<cv::Mat> & mat_vector,
65  Blob<Dtype>* transformed_blob);
66 
77  void Transform(const cv::Mat& cv_img, Blob<Dtype>* transformed_blob);
78 #endif // USE_OPENCV
79 
91  void Transform(Blob<Dtype>* input_blob, Blob<Dtype>* transformed_blob);
92 
100  vector<int> InferBlobShape(const Datum& datum);
109  vector<int> InferBlobShape(const vector<Datum> & datum_vector);
118 #ifdef USE_OPENCV
119  vector<int> InferBlobShape(const vector<cv::Mat> & mat_vector);
127  vector<int> InferBlobShape(const cv::Mat& cv_img);
128 #endif // USE_OPENCV
129 
130  protected:
139  virtual int Rand(int n);
140 
141  void Transform(const Datum& datum, Dtype* transformed_data);
142  // Tranformation parameters
143  TransformationParameter param_;
144 
145 
146  shared_ptr<Caffe::RNG> rng_;
147  Phase phase_;
148  Blob<Dtype> data_mean_;
149  vector<Dtype> mean_values_;
150 };
151 
152 } // namespace caffe
153 
154 #endif // CAFFE_DATA_TRANSFORMER_HPP_
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
vector< int > InferBlobShape(const Datum &datum)
Infers the shape of transformed_blob will have when the transformation is applied to the data...
Definition: data_transformer.cpp:442
+
Applies common transformations to the input data, such as scaling, mirroring, substracting the image ...
Definition: data_transformer.hpp:17
+
void InitRand()
Initialize the Random number generations if needed by the transformation.
Definition: data_transformer.cpp:523
+
virtual int Rand(int n)
Infers the shape of transformed_blob will have when the transformation is applied to the data...
Definition: data_transformer.cpp:535
+
void Transform(const Datum &datum, Blob< Dtype > *transformed_blob)
Applies the transformation defined in the data layer&#39;s transform_param block to the data...
Definition: data_transformer.cpp:131
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/db_8hpp_source.html b/doxygen/db_8hpp_source.html new file mode 100644 index 00000000000..3b740057f87 --- /dev/null +++ b/doxygen/db_8hpp_source.html @@ -0,0 +1,81 @@ + + + + + + + +Caffe: include/caffe/util/db.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
db.hpp
+
+
+
1 #ifndef CAFFE_UTIL_DB_HPP
2 #define CAFFE_UTIL_DB_HPP
3 
4 #include <string>
5 
6 #include "caffe/common.hpp"
7 #include "caffe/proto/caffe.pb.h"
8 
9 namespace caffe { namespace db {
10 
11 enum Mode { READ, WRITE, NEW };
12 
13 class Cursor {
14  public:
15  Cursor() { }
16  virtual ~Cursor() { }
17  virtual void SeekToFirst() = 0;
18  virtual void Next() = 0;
19  virtual string key() = 0;
20  virtual string value() = 0;
21  virtual bool valid() = 0;
22 
23  DISABLE_COPY_AND_ASSIGN(Cursor);
24 };
25 
26 class Transaction {
27  public:
28  Transaction() { }
29  virtual ~Transaction() { }
30  virtual void Put(const string& key, const string& value) = 0;
31  virtual void Commit() = 0;
32 
33  DISABLE_COPY_AND_ASSIGN(Transaction);
34 };
35 
36 class DB {
37  public:
38  DB() { }
39  virtual ~DB() { }
40  virtual void Open(const string& source, Mode mode) = 0;
41  virtual void Close() = 0;
42  virtual Cursor* NewCursor() = 0;
43  virtual Transaction* NewTransaction() = 0;
44 
45  DISABLE_COPY_AND_ASSIGN(DB);
46 };
47 
48 DB* GetDB(DataParameter::DB backend);
49 DB* GetDB(const string& backend);
50 
51 } // namespace db
52 } // namespace caffe
53 
54 #endif // CAFFE_UTIL_DB_HPP
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
Definition: db.hpp:26
+
Definition: db.hpp:36
+
Definition: db.hpp:13
+
+ + + + diff --git a/doxygen/db__leveldb_8hpp_source.html b/doxygen/db__leveldb_8hpp_source.html new file mode 100644 index 00000000000..188ad073382 --- /dev/null +++ b/doxygen/db__leveldb_8hpp_source.html @@ -0,0 +1,78 @@ + + + + + + + +Caffe: include/caffe/util/db_leveldb.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
db_leveldb.hpp
+
+
+
1 #ifdef USE_LEVELDB
2 #ifndef CAFFE_UTIL_DB_LEVELDB_HPP
3 #define CAFFE_UTIL_DB_LEVELDB_HPP
4 
5 #include <string>
6 
7 #include "leveldb/db.h"
8 #include "leveldb/write_batch.h"
9 
10 #include "caffe/util/db.hpp"
11 
12 namespace caffe { namespace db {
13 
14 class LevelDBCursor : public Cursor {
15  public:
16  explicit LevelDBCursor(leveldb::Iterator* iter)
17  : iter_(iter) { SeekToFirst(); }
18  ~LevelDBCursor() { delete iter_; }
19  virtual void SeekToFirst() { iter_->SeekToFirst(); }
20  virtual void Next() { iter_->Next(); }
21  virtual string key() { return iter_->key().ToString(); }
22  virtual string value() { return iter_->value().ToString(); }
23  virtual bool valid() { return iter_->Valid(); }
24 
25  private:
26  leveldb::Iterator* iter_;
27 };
28 
29 class LevelDBTransaction : public Transaction {
30  public:
31  explicit LevelDBTransaction(leveldb::DB* db) : db_(db) { CHECK_NOTNULL(db_); }
32  virtual void Put(const string& key, const string& value) {
33  batch_.Put(key, value);
34  }
35  virtual void Commit() {
36  leveldb::Status status = db_->Write(leveldb::WriteOptions(), &batch_);
37  CHECK(status.ok()) << "Failed to write batch to leveldb "
38  << std::endl << status.ToString();
39  }
40 
41  private:
42  leveldb::DB* db_;
43  leveldb::WriteBatch batch_;
44 
45  DISABLE_COPY_AND_ASSIGN(LevelDBTransaction);
46 };
47 
48 class LevelDB : public DB {
49  public:
50  LevelDB() : db_(NULL) { }
51  virtual ~LevelDB() { Close(); }
52  virtual void Open(const string& source, Mode mode);
53  virtual void Close() {
54  if (db_ != NULL) {
55  delete db_;
56  db_ = NULL;
57  }
58  }
59  virtual LevelDBCursor* NewCursor() {
60  return new LevelDBCursor(db_->NewIterator(leveldb::ReadOptions()));
61  }
62  virtual LevelDBTransaction* NewTransaction() {
63  return new LevelDBTransaction(db_);
64  }
65 
66  private:
67  leveldb::DB* db_;
68 };
69 
70 
71 } // namespace db
72 } // namespace caffe
73 
74 #endif // CAFFE_UTIL_DB_LEVELDB_HPP
75 #endif // USE_LEVELDB
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
+ + + + diff --git a/doxygen/db__lmdb_8hpp_source.html b/doxygen/db__lmdb_8hpp_source.html new file mode 100644 index 00000000000..588d4dec474 --- /dev/null +++ b/doxygen/db__lmdb_8hpp_source.html @@ -0,0 +1,78 @@ + + + + + + + +Caffe: include/caffe/util/db_lmdb.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
db_lmdb.hpp
+
+
+
1 #ifdef USE_LMDB
2 #ifndef CAFFE_UTIL_DB_LMDB_HPP
3 #define CAFFE_UTIL_DB_LMDB_HPP
4 
5 #include <string>
6 #include <vector>
7 
8 #include "lmdb.h"
9 
10 #include "caffe/util/db.hpp"
11 
12 namespace caffe { namespace db {
13 
14 inline void MDB_CHECK(int mdb_status) {
15  CHECK_EQ(mdb_status, MDB_SUCCESS) << mdb_strerror(mdb_status);
16 }
17 
18 class LMDBCursor : public Cursor {
19  public:
20  explicit LMDBCursor(MDB_txn* mdb_txn, MDB_cursor* mdb_cursor)
21  : mdb_txn_(mdb_txn), mdb_cursor_(mdb_cursor), valid_(false) {
22  SeekToFirst();
23  }
24  virtual ~LMDBCursor() {
25  mdb_cursor_close(mdb_cursor_);
26  mdb_txn_abort(mdb_txn_);
27  }
28  virtual void SeekToFirst() { Seek(MDB_FIRST); }
29  virtual void Next() { Seek(MDB_NEXT); }
30  virtual string key() {
31  return string(static_cast<const char*>(mdb_key_.mv_data), mdb_key_.mv_size);
32  }
33  virtual string value() {
34  return string(static_cast<const char*>(mdb_value_.mv_data),
35  mdb_value_.mv_size);
36  }
37  virtual bool valid() { return valid_; }
38 
39  private:
40  void Seek(MDB_cursor_op op) {
41  int mdb_status = mdb_cursor_get(mdb_cursor_, &mdb_key_, &mdb_value_, op);
42  if (mdb_status == MDB_NOTFOUND) {
43  valid_ = false;
44  } else {
45  MDB_CHECK(mdb_status);
46  valid_ = true;
47  }
48  }
49 
50  MDB_txn* mdb_txn_;
51  MDB_cursor* mdb_cursor_;
52  MDB_val mdb_key_, mdb_value_;
53  bool valid_;
54 };
55 
56 class LMDBTransaction : public Transaction {
57  public:
58  explicit LMDBTransaction(MDB_env* mdb_env)
59  : mdb_env_(mdb_env) { }
60  virtual void Put(const string& key, const string& value);
61  virtual void Commit();
62 
63  private:
64  MDB_env* mdb_env_;
65  vector<string> keys, values;
66 
67  void DoubleMapSize();
68 
69  DISABLE_COPY_AND_ASSIGN(LMDBTransaction);
70 };
71 
72 class LMDB : public DB {
73  public:
74  LMDB() : mdb_env_(NULL) { }
75  virtual ~LMDB() { Close(); }
76  virtual void Open(const string& source, Mode mode);
77  virtual void Close() {
78  if (mdb_env_ != NULL) {
79  mdb_dbi_close(mdb_env_, mdb_dbi_);
80  mdb_env_close(mdb_env_);
81  mdb_env_ = NULL;
82  }
83  }
84  virtual LMDBCursor* NewCursor();
85  virtual LMDBTransaction* NewTransaction();
86 
87  private:
88  MDB_env* mdb_env_;
89  MDB_dbi mdb_dbi_;
90 };
91 
92 } // namespace db
93 } // namespace caffe
94 
95 #endif // CAFFE_UTIL_DB_LMDB_HPP
96 #endif // USE_LMDB
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
+ + + + diff --git a/doxygen/deconv__layer_8hpp_source.html b/doxygen/deconv__layer_8hpp_source.html new file mode 100644 index 00000000000..6286bd2f33f --- /dev/null +++ b/doxygen/deconv__layer_8hpp_source.html @@ -0,0 +1,86 @@ + + + + + + + +Caffe: include/caffe/layers/deconv_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
deconv_layer.hpp
+
+
+
1 #ifndef CAFFE_DECONV_LAYER_HPP_
2 #define CAFFE_DECONV_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 #include "caffe/layers/base_conv_layer.hpp"
11 
12 namespace caffe {
13 
28 template <typename Dtype>
30  public:
31  explicit DeconvolutionLayer(const LayerParameter& param)
32  : BaseConvolutionLayer<Dtype>(param) {}
33 
34  virtual inline const char* type() const { return "Deconvolution"; }
35 
36  protected:
37  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
38  const vector<Blob<Dtype>*>& top);
39  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
40  const vector<Blob<Dtype>*>& top);
41  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
42  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
43  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
44  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
45  virtual inline bool reverse_dimensions() { return true; }
46  virtual void compute_output_shape();
47 };
48 
49 } // namespace caffe
50 
51 #endif // CAFFE_DECONV_LAYER_HPP_
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the CPU device, compute the layer output.
Definition: deconv_layer.cpp:25
+
virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
Abstract base class that factors out the BLAS code common to ConvolutionLayer and DeconvolutionLayer...
Definition: base_conv_layer.hpp:18
+
virtual const char * type() const
Returns the layer type.
Definition: deconv_layer.hpp:34
+
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
Convolve the input with a bank of learned filters, and (optionally) add biases, treating filters and ...
Definition: deconv_layer.hpp:29
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: deconv_layer.cpp:43
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/device__alternate_8hpp_source.html b/doxygen/device__alternate_8hpp_source.html new file mode 100644 index 00000000000..76e8f985886 --- /dev/null +++ b/doxygen/device__alternate_8hpp_source.html @@ -0,0 +1,78 @@ + + + + + + + +Caffe: include/caffe/util/device_alternate.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
device_alternate.hpp
+
+
+
1 #ifndef CAFFE_UTIL_DEVICE_ALTERNATE_H_
2 #define CAFFE_UTIL_DEVICE_ALTERNATE_H_
3 
4 #ifdef CPU_ONLY // CPU-only Caffe.
5 
6 #include <vector>
7 
8 // Stub out GPU calls as unavailable.
9 
10 #define NO_GPU LOG(FATAL) << "Cannot use GPU in CPU-only Caffe: check mode."
11 
12 #define STUB_GPU(classname) \
13 template <typename Dtype> \
14 void classname<Dtype>::Forward_gpu(const vector<Blob<Dtype>*>& bottom, \
15  const vector<Blob<Dtype>*>& top) { NO_GPU; } \
16 template <typename Dtype> \
17 void classname<Dtype>::Backward_gpu(const vector<Blob<Dtype>*>& top, \
18  const vector<bool>& propagate_down, \
19  const vector<Blob<Dtype>*>& bottom) { NO_GPU; } \
20 
21 #define STUB_GPU_FORWARD(classname, funcname) \
22 template <typename Dtype> \
23 void classname<Dtype>::funcname##_##gpu(const vector<Blob<Dtype>*>& bottom, \
24  const vector<Blob<Dtype>*>& top) { NO_GPU; } \
25 
26 #define STUB_GPU_BACKWARD(classname, funcname) \
27 template <typename Dtype> \
28 void classname<Dtype>::funcname##_##gpu(const vector<Blob<Dtype>*>& top, \
29  const vector<bool>& propagate_down, \
30  const vector<Blob<Dtype>*>& bottom) { NO_GPU; } \
31 
32 #else // Normal GPU + CPU Caffe.
33 
34 #include <cublas_v2.h>
35 #include <cuda.h>
36 #include <cuda_runtime.h>
37 #include <curand.h>
38 #include <driver_types.h> // cuda driver types
39 #ifdef USE_CUDNN // cuDNN acceleration library.
40 #include "caffe/util/cudnn.hpp"
41 #endif
42 
43 //
44 // CUDA macros
45 //
46 
47 // CUDA: various checks for different function calls.
48 #define CUDA_CHECK(condition) \
49  /* Code block avoids redefinition of cudaError_t error */ \
50  do { \
51  cudaError_t error = condition; \
52  CHECK_EQ(error, cudaSuccess) << " " << cudaGetErrorString(error); \
53  } while (0)
54 
55 #define CUBLAS_CHECK(condition) \
56  do { \
57  cublasStatus_t status = condition; \
58  CHECK_EQ(status, CUBLAS_STATUS_SUCCESS) << " " \
59  << caffe::cublasGetErrorString(status); \
60  } while (0)
61 
62 #define CURAND_CHECK(condition) \
63  do { \
64  curandStatus_t status = condition; \
65  CHECK_EQ(status, CURAND_STATUS_SUCCESS) << " " \
66  << caffe::curandGetErrorString(status); \
67  } while (0)
68 
69 // CUDA: grid stride looping
70 #define CUDA_KERNEL_LOOP(i, n) \
71  for (int i = blockIdx.x * blockDim.x + threadIdx.x; \
72  i < (n); \
73  i += blockDim.x * gridDim.x)
74 
75 // CUDA: check for error after kernel execution and exit loudly if there is one.
76 #define CUDA_POST_KERNEL_CHECK CUDA_CHECK(cudaPeekAtLastError())
77 
78 namespace caffe {
79 
80 // CUDA: library error reporting.
81 const char* cublasGetErrorString(cublasStatus_t error);
82 const char* curandGetErrorString(curandStatus_t error);
83 
84 // CUDA: use 512 threads per block
85 const int CAFFE_CUDA_NUM_THREADS = 512;
86 
87 // CUDA: number of blocks for threads.
88 inline int CAFFE_GET_BLOCKS(const int N) {
89  return (N + CAFFE_CUDA_NUM_THREADS - 1) / CAFFE_CUDA_NUM_THREADS;
90 }
91 
92 } // namespace caffe
93 
94 #endif // CPU_ONLY
95 
96 #endif // CAFFE_UTIL_DEVICE_ALTERNATE_H_
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
+ + + + diff --git a/doxygen/dir_4b7f3da7c7b4301d805dae0326fb91b7.html b/doxygen/dir_4b7f3da7c7b4301d805dae0326fb91b7.html new file mode 100644 index 00000000000..bc99fd43fed --- /dev/null +++ b/doxygen/dir_4b7f3da7c7b4301d805dae0326fb91b7.html @@ -0,0 +1,81 @@ + + + + + + + +Caffe: include/caffe Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/doxygen/dir_5c92236a0f5740f6a611cf0cbca860fd.html b/doxygen/dir_5c92236a0f5740f6a611cf0cbca860fd.html new file mode 100644 index 00000000000..1dece0c9b5d --- /dev/null +++ b/doxygen/dir_5c92236a0f5740f6a611cf0cbca860fd.html @@ -0,0 +1,81 @@ + + + + + + + +Caffe: src/caffe Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
caffe Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/doxygen/dir_63b6f53f56ebc4a4e494d80608d10658.html b/doxygen/dir_63b6f53f56ebc4a4e494d80608d10658.html new file mode 100644 index 00000000000..2e85864c87e --- /dev/null +++ b/doxygen/dir_63b6f53f56ebc4a4e494d80608d10658.html @@ -0,0 +1,77 @@ + + + + + + + +Caffe: src/caffe/util Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
util Directory Reference
+
+
+
+ + + + diff --git a/doxygen/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/doxygen/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 00000000000..1ab881cdc50 --- /dev/null +++ b/doxygen/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,81 @@ + + + + + + + +Caffe: src Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
src Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/doxygen/dir_750d2c266ff028c3ef5b86bdca6396e1.html b/doxygen/dir_750d2c266ff028c3ef5b86bdca6396e1.html new file mode 100644 index 00000000000..237c286afee --- /dev/null +++ b/doxygen/dir_750d2c266ff028c3ef5b86bdca6396e1.html @@ -0,0 +1,77 @@ + + + + + + + +Caffe: src/caffe/solvers Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
solvers Directory Reference
+
+
+
+ + + + diff --git a/doxygen/dir_b4c5ae27f152c386e8799324caa2412e.html b/doxygen/dir_b4c5ae27f152c386e8799324caa2412e.html new file mode 100644 index 00000000000..fe908cae3ae --- /dev/null +++ b/doxygen/dir_b4c5ae27f152c386e8799324caa2412e.html @@ -0,0 +1,77 @@ + + + + + + + +Caffe: src/caffe/layers Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
layers Directory Reference
+
+
+
+ + + + diff --git a/doxygen/dir_b9606a76d4acbf8f90a06a4a51ec8b9e.html b/doxygen/dir_b9606a76d4acbf8f90a06a4a51ec8b9e.html new file mode 100644 index 00000000000..a0f7c4d8d2f --- /dev/null +++ b/doxygen/dir_b9606a76d4acbf8f90a06a4a51ec8b9e.html @@ -0,0 +1,77 @@ + + + + + + + +Caffe: include/caffe/layers Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
layers Directory Reference
+
+
+
+ + + + diff --git a/doxygen/dir_d44c64559bbebec7f509842c48db8b23.html b/doxygen/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 00000000000..3f083e2c350 --- /dev/null +++ b/doxygen/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,81 @@ + + + + + + + +Caffe: include Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
include Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/doxygen/dir_feb0d617e78aec1d705c99fd9e400e0d.html b/doxygen/dir_feb0d617e78aec1d705c99fd9e400e0d.html new file mode 100644 index 00000000000..68556c6e9bb --- /dev/null +++ b/doxygen/dir_feb0d617e78aec1d705c99fd9e400e0d.html @@ -0,0 +1,77 @@ + + + + + + + +Caffe: include/caffe/util Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
util Directory Reference
+
+
+
+ + + + diff --git a/doxygen/doc.png b/doxygen/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/doxygen/doxygen.css b/doxygen/doxygen.css new file mode 100644 index 00000000000..a2cf15fa876 --- /dev/null +++ b/doxygen/doxygen.css @@ -0,0 +1,1508 @@ +/* The standard CSS for doxygen 1.8.12 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + diff --git a/doxygen/doxygen.png b/doxygen/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 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 literal 0 HcmV?d00001 diff --git a/doxygen/dropout__layer_8hpp_source.html b/doxygen/dropout__layer_8hpp_source.html new file mode 100644 index 00000000000..1e033e9edec --- /dev/null +++ b/doxygen/dropout__layer_8hpp_source.html @@ -0,0 +1,92 @@ + + + + + + + +Caffe: include/caffe/layers/dropout_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
dropout_layer.hpp
+
+
+
1 #ifndef CAFFE_DROPOUT_LAYER_HPP_
2 #define CAFFE_DROPOUT_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 #include "caffe/layers/neuron_layer.hpp"
11 
12 namespace caffe {
13 
25 template <typename Dtype>
26 class DropoutLayer : public NeuronLayer<Dtype> {
27  public:
34  explicit DropoutLayer(const LayerParameter& param)
35  : NeuronLayer<Dtype>(param) {}
36  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
37  const vector<Blob<Dtype>*>& top);
38  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
39  const vector<Blob<Dtype>*>& top);
40 
41  virtual inline const char* type() const { return "Dropout"; }
42 
43  protected:
60  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
61  const vector<Blob<Dtype>*>& top);
62  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
63  const vector<Blob<Dtype>*>& top);
64  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
65  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
66  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
67  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
68 
72  Dtype threshold_;
74  Dtype scale_;
75  unsigned int uint_thres_;
76 };
77 
78 } // namespace caffe
79 
80 #endif // CAFFE_DROPOUT_LAYER_HPP_
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
Blob< unsigned int > rand_vec_
when divided by UINT_MAX, the randomly generated values
Definition: dropout_layer.hpp:70
+
Dtype scale_
the scale for undropped inputs at train time
Definition: dropout_layer.hpp:74
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: dropout_layer.cpp:22
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Definition: dropout_layer.cpp:31
+
DropoutLayer(const LayerParameter &param)
Definition: dropout_layer.hpp:34
+
virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
An interface for layers that take one blob as input ( ) and produce one equally-sized blob as output ...
Definition: neuron_layer.hpp:19
+
virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: dropout_layer.cpp:11
+
virtual const char * type() const
Returns the layer type.
Definition: dropout_layer.hpp:41
+
During training only, sets a random portion of to 0, adjusting the rest of the vector magnitude acco...
Definition: dropout_layer.hpp:26
+
Dtype threshold_
the probability of dropping any input
Definition: dropout_layer.hpp:72
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: dropout_layer.cpp:49
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/dummy__data__layer_8hpp_source.html b/doxygen/dummy__data__layer_8hpp_source.html new file mode 100644 index 00000000000..98d80cf59f4 --- /dev/null +++ b/doxygen/dummy__data__layer_8hpp_source.html @@ -0,0 +1,90 @@ + + + + + + + +Caffe: include/caffe/layers/dummy_data_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
dummy_data_layer.hpp
+
+
+
1 #ifndef CAFFE_DUMMY_DATA_LAYER_HPP_
2 #define CAFFE_DUMMY_DATA_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/filler.hpp"
8 #include "caffe/layer.hpp"
9 #include "caffe/proto/caffe.pb.h"
10 
11 namespace caffe {
12 
18 template <typename Dtype>
19 class DummyDataLayer : public Layer<Dtype> {
20  public:
21  explicit DummyDataLayer(const LayerParameter& param)
22  : Layer<Dtype>(param) {}
23  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
24  const vector<Blob<Dtype>*>& top);
25  // Data layers should be shared by multiple solvers in parallel
26  virtual inline bool ShareInParallel() const { return true; }
27  // Data layers have no bottoms, so reshaping is trivial.
28  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
29  const vector<Blob<Dtype>*>& top) {}
30 
31  virtual inline const char* type() const { return "DummyData"; }
32  virtual inline int ExactNumBottomBlobs() const { return 0; }
33  virtual inline int MinTopBlobs() const { return 1; }
34 
35  protected:
36  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
37  const vector<Blob<Dtype>*>& top);
38  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
39  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
40  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
41  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
42 
43  vector<shared_ptr<Filler<Dtype> > > fillers_;
44  vector<bool> refill_;
45 };
46 
47 } // namespace caffe
48 
49 #endif // CAFFE_DUMMY_DATA_LAYER_HPP_
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: dummy_data_layer.hpp:40
+
Provides data to the Net generated by a Filler.
Definition: dummy_data_layer.hpp:19
+
virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: dummy_data_layer.hpp:28
+
virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: dummy_data_layer.cpp:9
+
virtual int MinTopBlobs() const
Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
Definition: dummy_data_layer.hpp:33
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: dummy_data_layer.hpp:32
+
virtual bool ShareInParallel() const
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.
Definition: dummy_data_layer.hpp:26
+
virtual const char * type() const
Returns the layer type.
Definition: dummy_data_layer.hpp:31
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: dummy_data_layer.hpp:38
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the CPU device, compute the layer output.
Definition: dummy_data_layer.cpp:101
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/dynsections.js b/doxygen/dynsections.js new file mode 100644 index 00000000000..85e18369095 --- /dev/null +++ b/doxygen/dynsections.js @@ -0,0 +1,97 @@ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +Caffe: include/caffe/layers/eltwise_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
eltwise_layer.hpp
+
+
+
1 #ifndef CAFFE_ELTWISE_LAYER_HPP_
2 #define CAFFE_ELTWISE_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 namespace caffe {
11 
18 template <typename Dtype>
19 class EltwiseLayer : public Layer<Dtype> {
20  public:
21  explicit EltwiseLayer(const LayerParameter& param)
22  : Layer<Dtype>(param) {}
23  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
24  const vector<Blob<Dtype>*>& top);
25  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
26  const vector<Blob<Dtype>*>& top);
27 
28  virtual inline const char* type() const { return "Eltwise"; }
29  virtual inline int MinBottomBlobs() const { return 2; }
30  virtual inline int ExactNumTopBlobs() const { return 1; }
31 
32  protected:
33  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
34  const vector<Blob<Dtype>*>& top);
35  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
36  const vector<Blob<Dtype>*>& top);
37  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
38  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
39  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
40  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
41 
42  EltwiseParameter_EltwiseOp op_;
43  vector<Dtype> coeffs_;
44  Blob<int> max_idx_;
45 
46  bool stable_prod_grad_;
47 };
48 
49 } // namespace caffe
50 
51 #endif // CAFFE_ELTWISE_LAYER_HPP_
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: eltwise_layer.cpp:100
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: eltwise_layer.hpp:30
+
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual const char * type() const
Returns the layer type.
Definition: eltwise_layer.hpp:28
+
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
Compute elementwise operations, such as product and sum, along multiple input Blobs.
Definition: eltwise_layer.hpp:19
+
virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: eltwise_layer.cpp:31
+
virtual int MinBottomBlobs() const
Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is requi...
Definition: eltwise_layer.hpp:29
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the CPU device, compute the layer output.
Definition: eltwise_layer.cpp:45
+
virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: eltwise_layer.cpp:10
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/elu__layer_8hpp_source.html b/doxygen/elu__layer_8hpp_source.html new file mode 100644 index 00000000000..7f68dd6aa30 --- /dev/null +++ b/doxygen/elu__layer_8hpp_source.html @@ -0,0 +1,87 @@ + + + + + + + +Caffe: include/caffe/layers/elu_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
elu_layer.hpp
+
+
+
1 #ifndef CAFFE_ELU_LAYER_HPP_
2 #define CAFFE_ELU_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 #include "caffe/layers/neuron_layer.hpp"
11 
12 namespace caffe {
13 
23 template <typename Dtype>
24 class ELULayer : public NeuronLayer<Dtype> {
25  public:
32  explicit ELULayer(const LayerParameter& param)
33  : NeuronLayer<Dtype>(param) {}
34 
35  virtual inline const char* type() const { return "ELU"; }
36 
37  protected:
52  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
53  const vector<Blob<Dtype>*>& top);
54  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
55  const vector<Blob<Dtype>*>& top);
56 
77  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
78  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
79  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
80  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
81 };
82 
83 
84 } // namespace caffe
85 
86 #endif // CAFFE_ELU_LAYER_HPP_
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual const char * type() const
Returns the layer type.
Definition: elu_layer.hpp:35
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Definition: elu_layer.cpp:9
+
An interface for layers that take one blob as input ( ) and produce one equally-sized blob as output ...
Definition: neuron_layer.hpp:19
+
ELULayer(const LayerParameter &param)
Definition: elu_layer.hpp:32
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Computes the error gradient w.r.t. the ELU inputs.
Definition: elu_layer.cpp:22
+
virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
Exponential Linear Unit non-linearity .
Definition: elu_layer.hpp:24
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/embed__layer_8hpp_source.html b/doxygen/embed__layer_8hpp_source.html new file mode 100644 index 00000000000..f64c218da1d --- /dev/null +++ b/doxygen/embed__layer_8hpp_source.html @@ -0,0 +1,90 @@ + + + + + + + +Caffe: include/caffe/layers/embed_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
embed_layer.hpp
+
+
+
1 #ifndef CAFFE_EMBED_LAYER_HPP_
2 #define CAFFE_EMBED_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 namespace caffe {
11 
19 template <typename Dtype>
20 class EmbedLayer : public Layer<Dtype> {
21  public:
22  explicit EmbedLayer(const LayerParameter& param)
23  : Layer<Dtype>(param) {}
24  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
25  const vector<Blob<Dtype>*>& top);
26  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
27  const vector<Blob<Dtype>*>& top);
28 
29  virtual inline const char* type() const { return "Embed"; }
30  virtual inline int ExactNumBottomBlobs() const { return 1; }
31  virtual inline int ExactNumTopBlobs() const { return 1; }
32 
33  protected:
34  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
35  const vector<Blob<Dtype>*>& top);
36  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
37  const vector<Blob<Dtype>*>& top);
38  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
39  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
40  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
41  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
42 
43  int M_;
44  int K_;
45  int N_;
46  bool bias_term_;
47  Blob<Dtype> bias_multiplier_;
48 };
49 
50 } // namespace caffe
51 
52 #endif // CAFFE_EMBED_LAYER_HPP_
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual const char * type() const
Returns the layer type.
Definition: embed_layer.hpp:29
+
virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: embed_layer.cpp:49
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: embed_layer.hpp:30
+
A layer for learning "embeddings" of one-hot vector input. Equivalent to an InnerProductLayer with on...
Definition: embed_layer.hpp:20
+
virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: embed_layer.hpp:31
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the CPU device, compute the layer output.
Definition: embed_layer.cpp:65
+
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: embed_layer.cpp:86
+
virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: embed_layer.cpp:10
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/euclidean__loss__layer_8hpp_source.html b/doxygen/euclidean__loss__layer_8hpp_source.html new file mode 100644 index 00000000000..d05a64fe7d6 --- /dev/null +++ b/doxygen/euclidean__loss__layer_8hpp_source.html @@ -0,0 +1,88 @@ + + + + + + + +Caffe: include/caffe/layers/euclidean_loss_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
euclidean_loss_layer.hpp
+
+
+
1 #ifndef CAFFE_EUCLIDEAN_LOSS_LAYER_HPP_
2 #define CAFFE_EUCLIDEAN_LOSS_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 #include "caffe/layers/loss_layer.hpp"
11 
12 namespace caffe {
13 
40 template <typename Dtype>
41 class EuclideanLossLayer : public LossLayer<Dtype> {
42  public:
43  explicit EuclideanLossLayer(const LayerParameter& param)
44  : LossLayer<Dtype>(param), diff_() {}
45  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
46  const vector<Blob<Dtype>*>& top);
47 
48  virtual inline const char* type() const { return "EuclideanLoss"; }
53  virtual inline bool AllowForceBackward(const int bottom_index) const {
54  return true;
55  }
56 
57  protected:
59  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
60  const vector<Blob<Dtype>*>& top);
61  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
62  const vector<Blob<Dtype>*>& top);
63 
97  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
98  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
99  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
100  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
101 
102  Blob<Dtype> diff_;
103 };
104 
105 } // namespace caffe
106 
107 #endif // CAFFE_EUCLIDEAN_LOSS_LAYER_HPP_
virtual bool AllowForceBackward(const int bottom_index) const
Definition: euclidean_loss_layer.hpp:53
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: euclidean_loss_layer.cpp:9
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Computes the Euclidean error gradient w.r.t. the inputs.
Definition: euclidean_loss_layer.cpp:32
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Computes the Euclidean (L2) loss for real-valued regression tasks.
Definition: euclidean_loss_layer.cpp:18
+
virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual const char * type() const
Returns the layer type.
Definition: euclidean_loss_layer.hpp:48
+
An interface for Layers that take two Blobs as input – usually (1) predictions and (2) ground-truth ...
Definition: loss_layer.hpp:23
+
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
Computes the Euclidean (L2) loss for real-valued regression tasks.
Definition: euclidean_loss_layer.hpp:41
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/exp__layer_8hpp_source.html b/doxygen/exp__layer_8hpp_source.html new file mode 100644 index 00000000000..2c0da9c7b4c --- /dev/null +++ b/doxygen/exp__layer_8hpp_source.html @@ -0,0 +1,88 @@ + + + + + + + +Caffe: include/caffe/layers/exp_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
exp_layer.hpp
+
+
+
1 #ifndef CAFFE_EXP_LAYER_HPP_
2 #define CAFFE_EXP_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 #include "caffe/layers/neuron_layer.hpp"
11 
12 namespace caffe {
13 
19 template <typename Dtype>
20 class ExpLayer : public NeuronLayer<Dtype> {
21  public:
30  explicit ExpLayer(const LayerParameter& param)
31  : NeuronLayer<Dtype>(param) {}
32  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
33  const vector<Blob<Dtype>*>& top);
34 
35  virtual inline const char* type() const { return "Exp"; }
36 
37  protected:
48  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
49  const vector<Blob<Dtype>*>& top);
50  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
51  const vector<Blob<Dtype>*>& top);
52 
70  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
71  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
72  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
73  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
74 
75  Dtype inner_scale_, outer_scale_;
76 };
77 
78 } // namespace caffe
79 
80 #endif // CAFFE_EXP_LAYER_HPP_
virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: exp_layer.cpp:9
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Computes the error gradient w.r.t. the exp inputs.
Definition: exp_layer.cpp:48
+
virtual const char * type() const
Returns the layer type.
Definition: exp_layer.hpp:35
+
Computes , as specified by the scale , shift , and base .
Definition: exp_layer.hpp:20
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Definition: exp_layer.cpp:31
+
virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
An interface for layers that take one blob as input ( ) and produce one equally-sized blob as output ...
Definition: neuron_layer.hpp:19
+
ExpLayer(const LayerParameter &param)
Definition: exp_layer.hpp:30
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/files.html b/doxygen/files.html new file mode 100644 index 00000000000..518a4118956 --- /dev/null +++ b/doxygen/files.html @@ -0,0 +1,184 @@ + + + + + + + +Caffe: File List + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 1234]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  include
  caffe
  layers
  util
 blob.hpp
 caffe.hpp
 common.hpp
 data_reader.hpp
 data_transformer.hpp
 filler.hpp
 internal_thread.hpp
 layer.hpp
 layer_factory.hpp
 net.hpp
 parallel.hpp
 sgd_solvers.hpp
 solver.hpp
 solver_factory.hpp
 syncedmem.hpp
+
+
+ + + + diff --git a/doxygen/filler_8hpp_source.html b/doxygen/filler_8hpp_source.html new file mode 100644 index 00000000000..d983532a825 --- /dev/null +++ b/doxygen/filler_8hpp_source.html @@ -0,0 +1,93 @@ + + + + + + + +Caffe: include/caffe/filler.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
filler.hpp
+
+
+
1 // Fillers are random number generators that fills a blob using the specified
2 // algorithm. The expectation is that they are only going to be used during
3 // initialization time and will not involve any GPUs.
4 
5 #ifndef CAFFE_FILLER_HPP
6 #define CAFFE_FILLER_HPP
7 
8 #include <string>
9 
10 #include "caffe/blob.hpp"
11 #include "caffe/proto/caffe.pb.h"
12 #include "caffe/syncedmem.hpp"
13 #include "caffe/util/math_functions.hpp"
14 
15 namespace caffe {
16 
18 template <typename Dtype>
19 class Filler {
20  public:
21  explicit Filler(const FillerParameter& param) : filler_param_(param) {}
22  virtual ~Filler() {}
23  virtual void Fill(Blob<Dtype>* blob) = 0;
24  protected:
25  FillerParameter filler_param_;
26 }; // class Filler
27 
28 
30 template <typename Dtype>
31 class ConstantFiller : public Filler<Dtype> {
32  public:
33  explicit ConstantFiller(const FillerParameter& param)
34  : Filler<Dtype>(param) {}
35  virtual void Fill(Blob<Dtype>* blob) {
36  Dtype* data = blob->mutable_cpu_data();
37  const int count = blob->count();
38  const Dtype value = this->filler_param_.value();
39  CHECK(count);
40  for (int i = 0; i < count; ++i) {
41  data[i] = value;
42  }
43  CHECK_EQ(this->filler_param_.sparse(), -1)
44  << "Sparsity not supported by this Filler.";
45  }
46 };
47 
49 template <typename Dtype>
50 class UniformFiller : public Filler<Dtype> {
51  public:
52  explicit UniformFiller(const FillerParameter& param)
53  : Filler<Dtype>(param) {}
54  virtual void Fill(Blob<Dtype>* blob) {
55  CHECK(blob->count());
56  caffe_rng_uniform<Dtype>(blob->count(), Dtype(this->filler_param_.min()),
57  Dtype(this->filler_param_.max()), blob->mutable_cpu_data());
58  CHECK_EQ(this->filler_param_.sparse(), -1)
59  << "Sparsity not supported by this Filler.";
60  }
61 };
62 
64 template <typename Dtype>
65 class GaussianFiller : public Filler<Dtype> {
66  public:
67  explicit GaussianFiller(const FillerParameter& param)
68  : Filler<Dtype>(param) {}
69  virtual void Fill(Blob<Dtype>* blob) {
70  Dtype* data = blob->mutable_cpu_data();
71  CHECK(blob->count());
72  caffe_rng_gaussian<Dtype>(blob->count(), Dtype(this->filler_param_.mean()),
73  Dtype(this->filler_param_.std()), blob->mutable_cpu_data());
74  int sparse = this->filler_param_.sparse();
75  CHECK_GE(sparse, -1);
76  if (sparse >= 0) {
77  // Sparse initialization is implemented for "weight" blobs; i.e. matrices.
78  // These have num == channels == 1; width is number of inputs; height is
79  // number of outputs. The 'sparse' variable specifies the mean number
80  // of non-zero input weights for a given output.
81  CHECK_GE(blob->num_axes(), 1);
82  const int num_outputs = blob->shape(0);
83  Dtype non_zero_probability = Dtype(sparse) / Dtype(num_outputs);
84  rand_vec_.reset(new SyncedMemory(blob->count() * sizeof(int)));
85  int* mask = reinterpret_cast<int*>(rand_vec_->mutable_cpu_data());
86  caffe_rng_bernoulli(blob->count(), non_zero_probability, mask);
87  for (int i = 0; i < blob->count(); ++i) {
88  data[i] *= mask[i];
89  }
90  }
91  }
92 
93  protected:
94  shared_ptr<SyncedMemory> rand_vec_;
95 };
96 
100 template <typename Dtype>
101 class PositiveUnitballFiller : public Filler<Dtype> {
102  public:
103  explicit PositiveUnitballFiller(const FillerParameter& param)
104  : Filler<Dtype>(param) {}
105  virtual void Fill(Blob<Dtype>* blob) {
106  Dtype* data = blob->mutable_cpu_data();
107  DCHECK(blob->count());
108  caffe_rng_uniform<Dtype>(blob->count(), 0, 1, blob->mutable_cpu_data());
109  // We expect the filler to not be called very frequently, so we will
110  // just use a simple implementation
111  int dim = blob->count() / blob->num();
112  CHECK(dim);
113  for (int i = 0; i < blob->num(); ++i) {
114  Dtype sum = 0;
115  for (int j = 0; j < dim; ++j) {
116  sum += data[i * dim + j];
117  }
118  for (int j = 0; j < dim; ++j) {
119  data[i * dim + j] /= sum;
120  }
121  }
122  CHECK_EQ(this->filler_param_.sparse(), -1)
123  << "Sparsity not supported by this Filler.";
124  }
125 };
126 
143 template <typename Dtype>
144 class XavierFiller : public Filler<Dtype> {
145  public:
146  explicit XavierFiller(const FillerParameter& param)
147  : Filler<Dtype>(param) {}
148  virtual void Fill(Blob<Dtype>* blob) {
149  CHECK(blob->count());
150  int fan_in = blob->count() / blob->num();
151  int fan_out = blob->count() / blob->channels();
152  Dtype n = fan_in; // default to fan_in
153  if (this->filler_param_.variance_norm() ==
154  FillerParameter_VarianceNorm_AVERAGE) {
155  n = (fan_in + fan_out) / Dtype(2);
156  } else if (this->filler_param_.variance_norm() ==
157  FillerParameter_VarianceNorm_FAN_OUT) {
158  n = fan_out;
159  }
160  Dtype scale = sqrt(Dtype(3) / n);
161  caffe_rng_uniform<Dtype>(blob->count(), -scale, scale,
162  blob->mutable_cpu_data());
163  CHECK_EQ(this->filler_param_.sparse(), -1)
164  << "Sparsity not supported by this Filler.";
165  }
166 };
167 
185 template <typename Dtype>
186 class MSRAFiller : public Filler<Dtype> {
187  public:
188  explicit MSRAFiller(const FillerParameter& param)
189  : Filler<Dtype>(param) {}
190  virtual void Fill(Blob<Dtype>* blob) {
191  CHECK(blob->count());
192  int fan_in = blob->count() / blob->num();
193  int fan_out = blob->count() / blob->channels();
194  Dtype n = fan_in; // default to fan_in
195  if (this->filler_param_.variance_norm() ==
196  FillerParameter_VarianceNorm_AVERAGE) {
197  n = (fan_in + fan_out) / Dtype(2);
198  } else if (this->filler_param_.variance_norm() ==
199  FillerParameter_VarianceNorm_FAN_OUT) {
200  n = fan_out;
201  }
202  Dtype std = sqrt(Dtype(2) / n);
203  caffe_rng_gaussian<Dtype>(blob->count(), Dtype(0), std,
204  blob->mutable_cpu_data());
205  CHECK_EQ(this->filler_param_.sparse(), -1)
206  << "Sparsity not supported by this Filler.";
207  }
208 };
209 
243 template <typename Dtype>
244 class BilinearFiller : public Filler<Dtype> {
245  public:
246  explicit BilinearFiller(const FillerParameter& param)
247  : Filler<Dtype>(param) {}
248  virtual void Fill(Blob<Dtype>* blob) {
249  CHECK_EQ(blob->num_axes(), 4) << "Blob must be 4 dim.";
250  CHECK_EQ(blob->width(), blob->height()) << "Filter must be square";
251  Dtype* data = blob->mutable_cpu_data();
252  int f = ceil(blob->width() / 2.);
253  float c = (2 * f - 1 - f % 2) / (2. * f);
254  for (int i = 0; i < blob->count(); ++i) {
255  float x = i % blob->width();
256  float y = (i / blob->width()) % blob->height();
257  data[i] = (1 - fabs(x / f - c)) * (1 - fabs(y / f - c));
258  }
259  CHECK_EQ(this->filler_param_.sparse(), -1)
260  << "Sparsity not supported by this Filler.";
261  }
262 };
263 
270 template <typename Dtype>
271 Filler<Dtype>* GetFiller(const FillerParameter& param) {
272  const std::string& type = param.type();
273  if (type == "constant") {
274  return new ConstantFiller<Dtype>(param);
275  } else if (type == "gaussian") {
276  return new GaussianFiller<Dtype>(param);
277  } else if (type == "positive_unitball") {
278  return new PositiveUnitballFiller<Dtype>(param);
279  } else if (type == "uniform") {
280  return new UniformFiller<Dtype>(param);
281  } else if (type == "xavier") {
282  return new XavierFiller<Dtype>(param);
283  } else if (type == "msra") {
284  return new MSRAFiller<Dtype>(param);
285  } else if (type == "bilinear") {
286  return new BilinearFiller<Dtype>(param);
287  } else {
288  CHECK(false) << "Unknown filler name: " << param.type();
289  }
290  return (Filler<Dtype>*)(NULL);
291 }
292 
293 } // namespace caffe
294 
295 #endif // CAFFE_FILLER_HPP_
int channels() const
Deprecated legacy shape accessor channels: use shape(1) instead.
Definition: blob.hpp:134
+
Fills a Blob with constant or randomly-generated data.
Definition: filler.hpp:19
+
Fills a Blob with values such that .
Definition: filler.hpp:101
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
int height() const
Deprecated legacy shape accessor height: use shape(2) instead.
Definition: blob.hpp:136
+
Fills a Blob with coefficients for bilinear interpolation.
Definition: filler.hpp:244
+
Filler< Dtype > * GetFiller(const FillerParameter &param)
Get a specific filler from the specification given in FillerParameter.
Definition: filler.hpp:271
+
Fills a Blob with values where is set inversely proportional to number of incoming nodes...
Definition: filler.hpp:144
+
Fills a Blob with uniformly distributed values .
Definition: filler.hpp:50
+
Fills a Blob with Gaussian-distributed values .
Definition: filler.hpp:65
+
Manages memory allocation and synchronization between the host (CPU) and device (GPU).
Definition: syncedmem.hpp:45
+
Fills a Blob with values where is set inversely proportional to number of incoming nodes...
Definition: filler.hpp:186
+
int num() const
Deprecated legacy shape accessor num: use shape(0) instead.
Definition: blob.hpp:132
+
int width() const
Deprecated legacy shape accessor width: use shape(3) instead.
Definition: blob.hpp:138
+
Fills a Blob with constant values .
Definition: filler.hpp:31
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/filter__layer_8hpp_source.html b/doxygen/filter__layer_8hpp_source.html new file mode 100644 index 00000000000..d5c5eda1b0c --- /dev/null +++ b/doxygen/filter__layer_8hpp_source.html @@ -0,0 +1,90 @@ + + + + + + + +Caffe: include/caffe/layers/filter_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
filter_layer.hpp
+
+
+
1 #ifndef CAFFE_FILTER_LAYER_HPP_
2 #define CAFFE_FILTER_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 namespace caffe {
11 
18 template <typename Dtype>
19 class FilterLayer : public Layer<Dtype> {
20  public:
21  explicit FilterLayer(const LayerParameter& param)
22  : Layer<Dtype>(param) {}
23  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
24  const vector<Blob<Dtype>*>& top);
25  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
26  const vector<Blob<Dtype>*>& top);
27 
28  virtual inline const char* type() const { return "Filter"; }
29  virtual inline int MinBottomBlobs() const { return 2; }
30  virtual inline int MinTopBlobs() const { return 1; }
31 
32  protected:
52  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
53  const vector<Blob<Dtype>*>& top);
54  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
55  const vector<Blob<Dtype>*>& top);
56 
66  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
67  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
68  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
69  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
70 
71  bool first_reshape_;
72  vector<int> indices_to_forward_;
73 };
74 
75 } // namespace caffe
76 
77 #endif // CAFFE_FILTER_LAYER_HPP_
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual const char * type() const
Returns the layer type.
Definition: filter_layer.hpp:28
+
virtual int MinTopBlobs() const
Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
Definition: filter_layer.hpp:30
+
virtual int MinBottomBlobs() const
Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is requi...
Definition: filter_layer.hpp:29
+
virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: filter_layer.cpp:16
+
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Definition: filter_layer.cpp:61
+
virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: filter_layer.cpp:9
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Computes the error gradient w.r.t. the forwarded inputs.
Definition: filter_layer.cpp:79
+
Takes two+ Blobs, interprets last Blob as a selector and filter remaining Blobs accordingly with sele...
Definition: filter_layer.hpp:19
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
+ + + + diff --git a/doxygen/flatten__layer_8hpp_source.html b/doxygen/flatten__layer_8hpp_source.html new file mode 100644 index 00000000000..bb318d1932a --- /dev/null +++ b/doxygen/flatten__layer_8hpp_source.html @@ -0,0 +1,87 @@ + + + + + + + +Caffe: include/caffe/layers/flatten_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
flatten_layer.hpp
+
+
+
1 #ifndef CAFFE_FLATTEN_LAYER_HPP_
2 #define CAFFE_FLATTEN_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 namespace caffe {
11 
22 template <typename Dtype>
23 class FlattenLayer : public Layer<Dtype> {
24  public:
25  explicit FlattenLayer(const LayerParameter& param)
26  : Layer<Dtype>(param) {}
27  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
28  const vector<Blob<Dtype>*>& top);
29 
30  virtual inline const char* type() const { return "Flatten"; }
31  virtual inline int ExactNumBottomBlobs() const { return 1; }
32  virtual inline int ExactNumTopBlobs() const { return 1; }
33 
34  protected:
43  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
44  const vector<Blob<Dtype>*>& top);
45 
55  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
56  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
57 };
58 
59 } // namespace caffe
60 
61 #endif // CAFFE_FLATTEN_LAYER_HPP_
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Definition: flatten_layer.cpp:30
+
virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: flatten_layer.cpp:8
+
Reshapes the input Blob into flat vectors.
Definition: flatten_layer.hpp:23
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: flatten_layer.hpp:31
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: flatten_layer.hpp:32
+
virtual const char * type() const
Returns the layer type.
Definition: flatten_layer.hpp:30
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Computes the error gradient w.r.t. the concatenate inputs.
Definition: flatten_layer.cpp:36
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/folderclosed.png b/doxygen/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/doxygen/form_0.png b/doxygen/form_0.png new file mode 100644 index 0000000000000000000000000000000000000000..cf000715034b45bb0f67dcaaf1a00d6e9f0f66da GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~e!3-p0EYEHRQU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW9|Za8DPtZs84t|PcE$C@ykPXOb5h2TfQr>tYoN|;rnwzwzZ+< zjpV!;9`ek~zy6Jrp6b{g7jbOnvSJnKZ5!n*IU}D9x49_jn)4amk(+J(>!A_fN9pJ1&)mH?VTTvT!ZIb<5+|-_ zH|I#s;+;2bX8fX;T(d-lrhbiivL#YGb5*A6s>%0-H**)7hk9M&(NbSFM@8;E&#F@1 ziup@rXB@H>*x|WuLiF{Jr+1dmS+q3cmZ7Ea_qNOv=hsbGEPpF2)96M>8b@a0YSw3; z&Ne>Wdcxw+%AD(od%laE`+dIOH_TN0?b5fGZ!;;=AFFFB=8BbR~mvv4FO#qMByTbqg literal 0 HcmV?d00001 diff --git a/doxygen/form_10.png b/doxygen/form_10.png new file mode 100644 index 0000000000000000000000000000000000000000..bd29111bb207d69b7946f0ec58f9d72df624a031 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^B0$W|!3-oluE!PvDT4r?5LX~g5{R;w;Rb3DC<*cl zX3+D9&2Q+Rw`S+jOLt#>`M)ZC!+W4yqNj^vNCo5Dx!!z73^<(QIp$9aJM}j|`qx#R zw2Ryk5em0|@G#te`AUxOPY>7T^eH=4QocBg%vgRqYvtaXZ)3IzP2Hg-*?7&cC?+rQ u)`_|r-_@VoMWd>1L literal 0 HcmV?d00001 diff --git a/doxygen/form_100.png b/doxygen/form_100.png new file mode 100644 index 0000000000000000000000000000000000000000..514ce8691fec66adcc8a1f7d722b62e2a6d0fce2 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$3?vg*uel1O3<7*YT!A!6Aj)2b8>m5`B*-tA zLC+&LzoCELnw>{4-F^Ax|Ely2?}2i*o-U3d6^w7^9^^b=z{9-$#JX6g@A2Ciogew{ zI@ox?X`d`Z-J+5mueMEGpBS2?w)F4I^2XIvHYI404sHtDnm{ Hr-UW|j@dc6 literal 0 HcmV?d00001 diff --git a/doxygen/form_101.png b/doxygen/form_101.png new file mode 100644 index 0000000000000000000000000000000000000000..131d57190458d5231fbf821cba135027746a0fe0 GIT binary patch literal 474 zcmeAS@N?(olHy`uVBq!ia0vp^VL&Xv!3-pKcUEixQU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW88%jGmq@jv*C{Z|B~fv_^ra#a^i6(T~sn@^>?a zl$^3PeqOdZ$mA$PrWNlw(*yS%S$^N^@XY0>R zU_JX$)Go||^MLY|o!>Etp zrG~xLTc++h?{?^rgV5a+YrSVq)-54Nc6C*yZQSur!2dqq>8LHOiyTj%5)-P^^tE*i z&Hb`2SDQWL*sYhDxpL=u7Hs#j7FG1VS|*~HX6AP<^j5^1X#ZPviQO`i)4sn@I}_Ry zt+M9U4RHODt~>m49TAT=C^cj+VRBzi)A^Q)a9< fT>qy&X8S*eFN@gX4}5oR1;vo3tDnm{r-UW|6+62i literal 0 HcmV?d00001 diff --git a/doxygen/form_102.png b/doxygen/form_102.png new file mode 100644 index 0000000000000000000000000000000000000000..51fc5a20b8b4dd3ecc749a6f16549344b9484b1b GIT binary patch literal 481 zcmeAS@N?(olHy`uVBq!ia0vp^AwVp^!3-q#*R1FSQU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW88%i~*i5jv*C{Z|9z!bVxy<#r~g~%j6IL@^{;M zBrU2gu+0;7)n;3kzKgw>?ZLrt@52BR6H z#o6EcPDIMNHfXOpnxvQ-9=R&ZW9zXct^pYZm%eKFgniMPelU4n$=h?&t&SaDIBllb z+tfF0otoyJd?_dWeAW4a7VBM{U-9nVi5;G23aWaJ>#KSPt-26mU~hDHxnQNLZ;w-1 z&@-oR@S zH53NZvM;N;O*B{zx%THy?@1M*EIK^_w?6wF?FGjZZg;%tGV;5 mXy=1^9X^Zm_v2;nY5icVapBZ@1;l z==Qoj^Y!LUH!`oz@GWD=XZ&Yw@t@&G6T=7go=0=-?_72lf1C$#VWv?;J&xE?%Uj&X{fN6nfod?xji3w|u`i?VjI*vTXiaG5kgAx6RnhJ$L=V{LswP(Lvt%f@!}5 z?r+&Wv3yymOyGg+m=nofFWm#T2X`t)_!jqW-1GX57Kc<)+JAqczLVjWi-KYWvf@+2 z7hdH1y&>Y|)=wv@rp4Z!9(#tD3VN;&tmCx7yw}SOY#~xYf^cfmqjP=uBeUUpL{~=2D`uejECV%EX X`Id8|amF`M)ZC!+Qn>#&e!7jv*C{Z|B~gblZT(x!>jP+lv4H^SOUb z+8X>mZQESG`6h11dQv!AJZzc&gx|2_V5o1E>RkFfy<%3^OBu#J?k@}u7On8{Pushk z@q_M~D+#(0ysFcMRw!kCII(1wi1p9skG9t&s`*`6rE}ROMq+hxq1xqHljm#R`@GcM zi!;sh(^2`vvVA*#nYjNC{kQe^g(KDbemHnd;yoNz>#MRcdgCc}SM9oK>(3b-wedKd zb8?cZ+%1XbIbLDA98b+JsnrnwuaP~y&`Pr*{7w6JrH9*`y0)B_u0Ok4T#7;bN$&m! zo^@WgSQw|PpJxeViZPs)8d=wL_MGKo&D~eF@i#=rh#dXhR?Tv3p8E~<1F~BJwf??* z^zL+&)lwO~t6^rp8TPq;d3K?A#T~Cg@!BiiXJ&{o?pZV~&#e7U^S7LB*XEyc`8&Jn zE!Q*YeNi*QjxvZJX}mn S-^fXWl8L9QpUXO@geCw*g9zmS literal 0 HcmV?d00001 diff --git a/doxygen/form_105.png b/doxygen/form_105.png new file mode 100644 index 0000000000000000000000000000000000000000..249e0e65c778c5d2d2d34498ba67e5f4cc94f2e1 GIT binary patch literal 654 zcmeAS@N?(olHy`uVBq!ia0vp^@jxub!3-oP9^H@(qznRlLR^6~Ng&Ezh8w6spd`pI zm_g4YHou{N-kP09FWr6l<^QVm4euEk82@^@IEGX(zKy-P?Xd!naKafOkAMI3*ZX)( zUT0if^?ai6)|APuIg`T~e!MSWWT@jjAEUJJlmBWD9fl9AdwxBVT;e)0HSY8iKL?|C z91QUaY(I_}yl(Ygq@uULRYQj1kEuA8G-(j0zyqrW+^S5BWyD$-sbqPYBNwF zYi~&B-u)Ujm#yB|?{Et9`mDOKNGoxx(Yt1d{WsS^Q^`z`eL#D?v zEAff_X~&I@TPTa)f0Q4b@=Iz*jn%{6iI>dOrfwGGWq7yn^{%+SaP5d~`#w+i$+WHy z>shxjZQf0TfBV+Gu9V?z5V$E^?)X`zI(Ns8&X3;GycR#(>((V)lKJ&GSg}LFHm0Ol zCiR5KMEm!vXa8v~G`xK5wDE1$cgucHc>nzk!vXD*(AICPn+mTUylVPUXMtgjchsWR zsge3UsiIZ!$0wP2Xes|>_`s%iac*VG74P-F-Q7plDgNI4vt@J4UjDQH6P4dS>6pH3 zug~2(l5Z!Tbq%^3v#2p+PtG)^1MC@I;he|U6_-ukeonRc_)FKsCL@zC%Z->C>YI0N zugHG%^^Vq67t6x?mv2wY+7;U~pNoxQpVQPoZ>O^`++v literal 0 HcmV?d00001 diff --git a/doxygen/form_106.png b/doxygen/form_106.png new file mode 100644 index 0000000000000000000000000000000000000000..5a0fc3466e3e792b5e27233787a06c068539c5fc GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$3?vg*uel1O3<7*YT!A!6Aj)2b8>m5`B*-tA zLC+&LzoCELnw>{4-F^Ax|Ely2?}2h2o-U3d6^w7^I&w8Q@Gx)AjnOQ7`@eqmhL;Ds z?Iko+rks>!c<`LhJgBlysp!okp9J5%k62EH<}t5kk9%sAx@`M~scqUOzaKLCHZgLt SGG|1C9O&ul=d#Wzp$PzwlRB>e literal 0 HcmV?d00001 diff --git a/doxygen/form_107.png b/doxygen/form_107.png new file mode 100644 index 0000000000000000000000000000000000000000..098c7ba4867ad88f62e8703930261f67ecd3946a GIT binary patch literal 1013 zcmeAS@N?(olHy`uVBq!ia0vp^OMqCJgBeKb-U}24QU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW88%%qgBOjv*C{Z|B}DdThnx!vEcs`~UxZ_9Y_m zYs;Q!oSeHVacAmu%}KrsE>^JqU~hH`IvDZ=i!UbZt}1+*luaLAY$z4vh~jSi~em~>H?FGIxVrn`E4~L}Ydocr&#>L*l6=x{d3V~P zm*S614gCsB16Q0bWym`)E9IPJ{)V%+npCO;w6qPML_TVM@_U5}~~6DN zYq3JGh@VEa@(lIHEg$ht&bj7|VCz zQHxfuyT0evFPH8mtDN^$y@^h{9>%;TakaFLE_VX|*3$iXll`nq{%4*{Exu#Ic&}mg zI+girqyFAnGiCm9m!Q(y&$f3tZrgtIqlweHXisju0~|+g>E<5a>ir6l)_Mo{w2l44 z%-Ab>%eG&RZGGZY(XUn3JKyHX1+Pn|5~q7!W1YWd+OqlTDvV_ta`P`={k2Yoz0kt* zx9X%_6KgK+iRCGB319Vy{c&^46}FX;_kT~wxqow=@g@JgEGMn*Yc};~pAX!-J;>tG zg=NKdRa3pT{CyB)+3~M0&FZy=G^MqYp8jick7jZiAUzPrf3Fwd-YaMm2F7hG3(t%zth#qi`I9hyo#Ei zrSdXo${)X~P(5+mUz7d#K6tL-cF%d-xpqsKCd;aweW8DZJ#TZBs=e&GntXM^gel>B z{TJDmUJYn`n(i9(L`9XMfa|LD?W?;j^gG|?YRP3LIR4(4uNxup-RS*Nt}f$^(>iS! z?;W?=on^$?5d1<@=c{IA&dQL|t8+psx5?+Oduyi8P$B$s@-yBK)f(|mdKI;Vst0Ir118UO$Q literal 0 HcmV?d00001 diff --git a/doxygen/form_108.png b/doxygen/form_108.png new file mode 100644 index 0000000000000000000000000000000000000000..512d21828910e8cb37284f59f713033075d3da31 GIT binary patch literal 428 zcmeAS@N?(olHy`uVBq!ia0vp^Evi75l3gOcb8Z=*QmB3Q@?=9$ z`QnTR%qGn zPM1~Zx}SW0C(oj}Mt0k8W|iY^^Q=ET^NtKLKdowhcJ+j_(IKBME-Y8LA*}V%XZG9E zt6CrFzW-z+tWf@TjzU>k@xH~~JCEi!m~8KLzk4I&JD&>g&cZOCMJ-2Mx^Hg287^x* zHSk2KM0UQ$^4qs3-a0gAM^eh%wSHQvBB4*Uqvplm&VJE(?CaF$A2-%k8tWh1@LuAg jF2f&9y&%2+Ui+K)V_vczvU^c>5ESN~u6{1-oD!M<@x`dw literal 0 HcmV?d00001 diff --git a/doxygen/form_109.png b/doxygen/form_109.png new file mode 100644 index 0000000000000000000000000000000000000000..8a385ab322a35e7a01ee9700723728835b1c775c GIT binary patch literal 623 zcmeAS@N?(olHy`uVBq!ia0vp^4L~f!!3-pq_^E9KQU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW88%jQ2cU978G?-_AXM>9zvTk#LVc$DjSZ|1G*_ z?he08OXkW{t!O)Y#CXG>2`uRhKlB-XNM{-`R4ksr@SwXWlWl?w!=6wvh98SIX)D!< zE;&EPehwSMd`-``9Upudj>nujK8N|hp?7Pp%=WTj7ZC0HdH)WR2|vU6rPXKVPP($^ z4MUyITZRu&)&~+775~@p)=540!HK(1`_S9l?UKd1#tXhOeBjNi^>NDOXV^CT%xvfP zddi=pj~K<=Ial00`Q%oXtQockjvV!2XL$Zl?e+VrgaY}E8nGpBXU0tYFVN$&_4!Nf z%Kn*?7!CM#S{fIod{F;(`PzO488vq8o%t!<(t1`gQ4J+eRi7W{{5XqI;`Mgsk__eD zTcxbyIahOKvTi$efNAdu2k~teS3GX%Yjl%#Fu%HPuj{%hz690jbG$d6wQM<&c{?aJ z^5%_%-QkO@mfNs;1WvY(Iv`YYS4?u3aGVF{RK3^9R*ZMp=T3HiXsLD}jGgx-%Z5En z3(1EPdcm+dey_In?4pl5 g*mIQU!9L;om7rwf>FVdQ&MBb@0H>7qng9R* literal 0 HcmV?d00001 diff --git a/doxygen/form_11.png b/doxygen/form_11.png new file mode 100644 index 0000000000000000000000000000000000000000..21a97d15ef077d39bc524f761d7939bb7db9e116 GIT binary patch literal 584 zcmeAS@N?(olHy`uVBq!ia0vp^)j%x3!3-oBwLV+{QU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW9|zw|lxchEy=VjXgN6S%F8!K``Ld|Nn2(m>PF| z-L?14=e;dno@qv$^B5oezs1H7zvb-N`R)&XSGp-&IrBH9{J?8IhC6Rh9G_Tb$-rRl zZCWj}wdR`A?8bA6`&k?vf9zP~eKzI7#Y0~ob+b3zcZ=f44UG5C`0`fM=lp8rGYu?W z_P15iWfCu%UOcqwodNS2wb&D9&D48Cj=uGJP%g1KKV@rRN(Y1O?80xsk6J#9EbNi# zpFj7Sp;0;8yD2hpefvIYU3ZpP^~A4t-Ezr*y)7Zzr)w&%5Gf6ss55PG;HIw}KbqXE zi_e|a*xxSr`$NfMYgw%?H-3GZz0x%{?&aFMPdD9PQpX;DLH=!AqQ+6zi%0E~HXn4G z=^gXOb!YJIBgwUG&!?PDjd**FaVt|^qKE6HsY$DN->lnN)Tithc>4{*)XUF4Zn*aL ztyt%STc5AK%Xz!6)pNb7%U$*|jWyNTo}YI3EGQ%++bUxUjeR zyFt#9DQWdN*G}a22WoUazjMrE+q;)+r^`+qf4q14h8J^oto-~o{@5B$qqQ~i)eJwT uoz3_Dzl`a?^*3v8EzdV*_%oID>Oc0LIb8qsxMya8(u1d~pUXO@geCy2ECojZ literal 0 HcmV?d00001 diff --git a/doxygen/form_110.png b/doxygen/form_110.png new file mode 100644 index 0000000000000000000000000000000000000000..512d21828910e8cb37284f59f713033075d3da31 GIT binary patch literal 428 zcmeAS@N?(olHy`uVBq!ia0vp^Evi75l3gOcb8Z=*QmB3Q@?=9$ z`QnTR%qGn zPM1~Zx}SW0C(oj}Mt0k8W|iY^^Q=ET^NtKLKdowhcJ+j_(IKBME-Y8LA*}V%XZG9E zt6CrFzW-z+tWf@TjzU>k@xH~~JCEi!m~8KLzk4I&JD&>g&cZOCMJ-2Mx^Hg287^x* zHSk2KM0UQ$^4qs3-a0gAM^eh%wSHQvBB4*Uqvplm&VJE(?CaF$A2-%k8tWh1@LuAg jF2f&9y&%2+Ui+K)V_vczvU^c>5ESN~u6{1-oD!M<@x`dw literal 0 HcmV?d00001 diff --git a/doxygen/form_111.png b/doxygen/form_111.png new file mode 100644 index 0000000000000000000000000000000000000000..4b4d3c69e28b3d5d944123124df946e64356b135 GIT binary patch literal 376 zcmeAS@N?(olHy`uVBq!ia0vp^7C`M)ZC!+W6Ib59q?kP61Pb0eo6QQ&Z0zjW<3 z3EKbnso*2Um|6{Ph9CajesjXvKO{`M(%zl?@mDG5gM-r?cU{s659@BTeX^(4@>*}n zisaBHm+j??-(DN$$zi$Vm(*r34^VC8@x*QSQ{QRXv;lw zt$6){pW824&)C#kcXFenaHP0FRO#19t?rbZO&?hf-wNs4*Se=g?A2qj-zN{)*-w31 zVClE@#P+b5s?QH^AvBFz4r8zI&1Ws=|N7^qn(W3R?mFPTwr=XYWn)4GX8%q f?_@9+gTe~DWM4fs^pGr literal 0 HcmV?d00001 diff --git a/doxygen/form_112.png b/doxygen/form_112.png new file mode 100644 index 0000000000000000000000000000000000000000..d0d0ae87f5ffd2446ba89a0a86f7969f106d7fe7 GIT binary patch literal 371 zcmeAS@N?(olHy`uVBq!ia0vp^7C_9y!3-oBHup^jk_G`jA+8`UDIm&Th8w6}pd`pI zm_g4YHou{N-kP09FWr6l<^QVm4ex<+k33x*Ln;{G#(Ea97;*?#lvn@!pRc@O`DB@* z^R8E~aP*{ns9|9E=l|r=B@c*^y<9nDN|Z9&A3_8ciT-!6P$y?=-I)#-a% a6RyQS|HGP>Vfwxh6mp)felF{r5}E+PVvhR& literal 0 HcmV?d00001 diff --git a/doxygen/form_113.png b/doxygen/form_113.png new file mode 100644 index 0000000000000000000000000000000000000000..e18a15ffede587e31d6752311963d1dfbcf7ba31 GIT binary patch literal 874 zcmeAS@N?(olHy`uVBq!ia0vp^(|}lvgBeJQ=1=7SQU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW88%OgBAU978G?-_E^R^w^5Wh2OK_;=lj(*1TRD zL$^(tz4A`c+3r)aN1rvNEoR)u^k+2(=Y#4c3?DpaEDc<5H0vqj118mLOocjWhxz#! zKSZ0jt__$Q#8%;c<;SA$&zAp~kT-3u*E-AK9o&&Rxs5xLJ{EbM5PZP&_PyW78Sgry zmmZtO{+G4lxXj6*Rp%;!+Gb2mZV10|_C3S&0{frJqBf2}N=HiG&bE2`Mm1y75{C5| z<`1_DJ$SBh+-=d<4byViK6E{@v|BTE{mk;H^OOGlQonmu;DG6!!}~UgO4{;;mS!-B zuULD+I`z!8syS7QrwHm{Am{`JewE7?HmXW{OQ?A+a&8AY;IYp+hd*(C9Pl3mh|18&O| zo*5O^XLrAwqbg{!WN(mo*7B>Le?;9|Dtmrs?;NeW+wVDjx~%$g!{sQESjHSX)2Amb zy}4&+7Cl$mEfZ41y-km^?Za`D58bAMB+>Mn0pV5&P2x71oUzb;GR ztxm=FX&Js(U%PRi5}$f4=*xEREgs_HI=|nzb6=|XaV%r^?Qdcqk5-+U{CkyH_vUiz z*`jN&F4Eklc`+#2p!VhUsH|s_llLB%n&=g{u=uoX*40mnv-QJd=VU%j3Vn3_;CtH! z?kzcwC9Z^6Z5NvHe$}<@p;PmAZl9#=VQze&ev$UI;uXSM4Ud@|za3q1;fZRx>{;D~ zO8fR+iB$2C`(C;Cw14ZzWr|FD9z-7DTB%ladxd}aL7}Ahw5Q(~>fVR<`c2yv@7?uu z_ss)87wgzhJ>h%$ZUsYlz)s$-O%>4$KN$bL>td^L{CJs_`}-P>tGD-LmHjO>Y4|U` nblUvcEDxML{x1k)kUu29=$WwVk-nU{pd91r>gTe~DWM4fHYt)t literal 0 HcmV?d00001 diff --git a/doxygen/form_114.png b/doxygen/form_114.png new file mode 100644 index 0000000000000000000000000000000000000000..0c148ecec97060e52a1b2844dcc9bcc87ea109e2 GIT binary patch literal 1069 zcmV+|1k(G7P)yE2P41~YFLkBwV|F&Ch z7+?bAOr+ge=}4%Z2xx4VU9SEM@b{Su0Pih0fd9ol4jp5t`pY%OGy+^$_9cU_ImYn^ z@Bu!w+pIqiJ?NtX#lR$hvw6Lr_5U>d|3$A{X*X_fLc8EMZrQKhZ5>Lns6|sE-_|L| z@O1b_^w(P~F2Em5B*3YH0N-u?D0CWJ^(j8ahfu~@_xlG%v!-;OX}nEp@+6h0OlbnR zFe5F%d&{07;w^feC*ltPU59QW)?iIaYJ#6Ql2P!jrz(N-;hLoBvEWt{gW3r2V)6@c zWrr%6`ywi`G;mn__gyOb4#E892z(-L!xdSpS0Ev>#|34Yi(Zw z^HiNfjp~LR$Y(#uCad`3psp3mO03nd?E1rwrT?U()B;@DDYS2`wHw=79$tOtKC8Np z;=WTN7@tC0J~BP%9eUdRvjZ}rId{msg}p-nXS)cUZcazwu>3w@Qk(MfO`p|`21{Df zrmwesL{+Z-#&B4M2FTvT;`O^Z+yU8ePd)4#4LOG%acd}mldT(r_uDQ>=sKnV*QWeT zJ-w_(&7SW8H?jK;%PK)$57oEPy%O##lP&|){hrG@U_266+Ga+D~= zGM0O>7*ed&DbLfe_6G+5z_+!%*|*f6OwS%5ra1=@VLiNK&ITfmWi&qvpd81?m)EF` zL-jsP2O0v$H7c7qB^_a}^mj|O*I)p5wgK7|5a3TXE6=A(N^a?Z2~f*AD~1xC3qiCH zCh=q&wMmiexO*q&HsxaF?CfL)_T`tlthfN~?3*|M{K#w`4a&^QpGkRlEw!UqoEfsw zLu=!gs-FgOm``H2UsAMDj^<5}0e;1tC?PUw;@eUY=~s~cjMASzzMXPmupJv0im2wI zdvh?jV&}E=aPPkA2SsV5zrfEJh-nl6CM$)O5^64Qa=lAl|%HFm&|Cu)^~*s>NSiz?=ogOzOPLOIo;FM&t;ucLK6Vg{z<|B literal 0 HcmV?d00001 diff --git a/doxygen/form_116.png b/doxygen/form_116.png new file mode 100644 index 0000000000000000000000000000000000000000..3cffe53332b8cc17bd1e83bad40201d6f35f90e0 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^+(695!3-or^+GlRDT4r?5LX~g5{R;w0U0Dv666=m zpyv^r-_SpA&Ca8j?!Nr;e^vU1_dq#YPZ!6K3dXl{1GyL!Iat$$Z+9iUufJW}6lgE| z@L&(W;CY6EhZ~jHKjmC-ePTS(d{*{b;q#|5@?-1EtUobp%x2hg&-C$fkgGgh{an^L HB{Ts5C*U?T literal 0 HcmV?d00001 diff --git a/doxygen/form_117.png b/doxygen/form_117.png new file mode 100644 index 0000000000000000000000000000000000000000..1dabf760d1447e78018c308ebbef6e1c8647988c GIT binary patch literal 744 zcmeAS@N?(olHy`uVBq!ia0vp^i-1^wgBirq3ke5O1_3@Hu0Wb35M?jJ4b&h|666=m zpyv^r-_SpA&Ca8j?!Nr;e^vU1_Y4e7;hrvzAr*{oWA9#DtiUrzpyNtX<^Sz>ITt0B zo-g|y`{rzw$Lc>klRY`MGkmzu@L>K7rUOTX7-|v)8T8b?&t^ElZf2dg%U}{aLrqem z)ZefC-i!xU-sHDXdtB9Q70lrNxv`gp;m@^8Mm09!)p65)FaWi-hOt&$WZ-$raCW*O z!;Z}^g6dVX^?Gu;gHyC#^j^N{WOVVx=b&YFvx)=uacn%Iskb|Wrz&{E8w>WMb85F6 zFIfCUVsZKT7~{!{uGyL^s~euWUHwH$r)Djd2r2FRlUXZl`0QFe!>?z24?oX6e(0&StKRGNbCu*It)EPak?yX19tQQxQmIi+6{(6x zzjQVJ%s8|BL4Q!ZQ&yC@Od-WTS z=h?6IV`cRZShv@gc*d`Lel?om$DuF()UpcpGf39)_s=rj*$7Inp00i_>zopr09|xC AOaK4? literal 0 HcmV?d00001 diff --git a/doxygen/form_118.png b/doxygen/form_118.png new file mode 100644 index 0000000000000000000000000000000000000000..6a193d997e67bb1b7a0ebe7060fddcdb51ede420 GIT binary patch literal 947 zcmeAS@N?(olHy`uVBq!ia0vp^4M42S!3-p`Gd}GEQU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW88%%u1dvjv*C{Z|B~g^jLw%g+Ki9@BjbbdL8RK zXgD(^efhF)jf+;l5pY)C8nvF`KX(%Uhw2$^kB+u8Txgi?db?ln0qdgg4Ec-XPx~vc zd%`?r^YpDJcm96cyY7{Q&P(mSqY<$`lM)0OObqVp@7}om=gDvi$p@BQ4c`FnEJAMF~A;uE5ms8 z_(Z0izm?Ak{V$$wGJp5452h1m9XKr#!t%t|-)i1u5B>gkK8{8`pDvue*B9QsAmPT_Eny)gv$VC@c@}%fF-5=Hv4^b(+SSPl^X@?Jj5^ z(7j~WP?XnoYm1U(hH9C1ZNvKmZ={P?ljH|@UHKj&`AdbR06?dB53eQhBQmU;TqmSx{Na(AuB zqSzuy<{EazIJ3^bc6`&W-%DRQvs-6ZT-Kksd3O8sqcyLDm+rlq_13zo`fsM!-FtUW z8=msIzI53l{^)Oq&s~gYKPI$*F?#w#g+~%c;#D}-ecP$?aFe)*BjY(ub-A)z)tB{! zT7C)^HAtB@8Ya0`&t_S-Z_;tuMnB7NT~qP$DY`+Ml-wKGvY6CLtKMI!zHhI3-iNtR z_S=2c3v;V{#AX}Vx2%2gdEKput*Kq=+pX`Y`$d#Ff2|07v$DMOUvER4`FpAA*-b0b zYIcj?NR8~O^mX!laIx6`Wctpfx~xCr)08u$zFz5Q;5>URR+wXIpzWj$Gk>$Q)vGGR z-rcGaEhI7XQD$f>n~6c3G5-g)c^oJHO3$C2$XO`&d1bKpZ{@JN5p23&>TJEzA?)({;@q1a`b?@YD)7L=Z5=-p0x3|@O)TbC~9`V{Ri`PQ(+VFz0*ZOSi_WtXkSE5u)$+u>u3H~Czt$(mLxA=w<0R|jEEOdgUc+=OQCiI@ek~(11$N{f z*!#z5x?~T10#S7Z7ke4jF=H9_+(6j&{7(x|5Lnkla08%ESK1#wPGTBvL^Ge}%S@aEPcQ2XSwO(^RXCkECp){Gp~D zugtD|fe*tFyc-;VJNRYub(ja&PULdskYl^hu$Y1N)k06$B`qys>mi%nAgA{QHZieAsz9qD$s>a(YYzYG-wT~#CiaQ-G`Re();+|g z5(g4g&d(c8^s}DlsxcIzdkxAq#D!RPYtx#jYmw!>)q^smAA`AAwq`k;!cCnZAnR$F z%oQYAsBQ`JBv_J*Y?FbA98$U2bhbY3I(4`c2OEGD@u`4y$HRMqOCaTP0+YyGAH=UJ zci=6u9R%f=(+4-p(zsmmfTgbP5}$f7o}z~` zFO6x%=r}HrDr^!)TFM#jBKUC+w8E4cO9{<_)mTlQdGGfl(*dPRZ$i-p)5D&0WNGkk zcdIPOD{(^(D>#(m>A>oGB^{e94RQPxkkn6i0vZu&;_Oj4e>B;l>aAeHjTQT z2X@T@{XTdX*-W}hmjduP0Dsn3QJ08ih=#|^t<8MKBmwB$X$eG`r zLkf$OSAg9TTV%ZTS*ln{eKpK6=O`wzq&^DoJgi3_)@~4D8VIAt#Hrd|O}jng8sJ=f lHXaiHDz|<1P=#0c&t*VHc{@#1JMiCAc%uEFW|yd}e*xD!23G(8 literal 0 HcmV?d00001 diff --git a/doxygen/form_12.png b/doxygen/form_12.png new file mode 100644 index 0000000000000000000000000000000000000000..cb3357d3b22dff1da759d3eb569cb88269d90dc5 GIT binary patch literal 579 zcmeAS@N?(olHy`uVBq!ia0vp^)j%x3!3-oBwLV+{QU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW9|zH+i}^hEy=VjlDgsS%F7J@09QK|Nn2FRq42P z>-gK#a{iuzYAHsXcFYI<%L+2=vsg6yvdE8nvu>2?KmYaf$=-?uTS9HKv z^DRw&#J(_d%Ju#wyI*V(V12W#y!maCn5x0_<7wjWJ;Ej`IkRj?Uc+{fd##1VZnfF- zLJd3)uCkjnOVQ_(b#;{jLRb9AxwQ=ses(GDqn_sE2OZ{SA zGd1X!&TJNYC*!hDCX21qstn>E3jbbu$FKVRisVE6g7^BpY!Br$?SE@JH1Ljc+u;}*Go&cxLHm8Bl+xz&HG7*3%gscUpQr7yNKbz`(uB$-7ptr m*k`79^OiU_!#?AttpD5%Z@8IHpS{ZuN(!E?elF{r5}E*Irt$g! literal 0 HcmV?d00001 diff --git a/doxygen/form_120.png b/doxygen/form_120.png new file mode 100644 index 0000000000000000000000000000000000000000..36b8a236e7feb08a98cf713e12dd31f5e96a308e GIT binary patch literal 630 zcmeAS@N?(olHy`uVBq!ia0vp^X+SK-!3-o>l_e(vDT4r?5LX~g5{R;w;Rb3DC<*cl zX3+D9&2Q+Rw`S+jOLt#>`M)ZC!+Qn>#;2Yxjv*C{Z|6o%x^2MYA}?MrQT5lq?Xm$X zx;LY=Iw$|xc;oRW36+L-VqdsF>`#z6U^|EL2iv{fp7w{H>`iG9W|3yTp;(ru*Z=i%P3Ygm__&%YWoe29rLG^|Wo}^2zwdN}`Hn*G2d|KeS@S1- z)juG(*>%fgi_<(gw?o)s_AT1AZk2m%RH~|rw&}IGpY{5~dd=Q!d77IV%{%3ID8qaX z+qlbnmITgZuoKi;9xHV-Jm~AC;PT8W9z9mkd(T$b?M|{E9&f}#a-<-VfU`5r$_pk$S6ijaoX8^G`zl(wV+9*ZdQ*S%j@2Q2H~RR zyiEDkEhlzd&OV>H>Dt+EMOtaRaV|+qszP>WtX&(-@SsERlTyhw?UGqM_Zeg^xF1b= zQ+1|2Zo+Px%g&EZ$3(4EX^Q4+yB)SMWomk+9P5wTmKB}7=GP+)Huf=oP5JrjD_cRo nz~Q4;n159N_!r9i;rs{YHHAFhh12U>L8-^n)z4*}Q$iB}+>r=3 literal 0 HcmV?d00001 diff --git a/doxygen/form_121.png b/doxygen/form_121.png new file mode 100644 index 0000000000000000000000000000000000000000..f3ab2945c0e27e4646850f140cce463ffc1d725b GIT binary patch literal 1468 zcmV;t1w;CYP)$2l041_=KnApktzwHVz zzQo4KoY~A|tCq6rBsm7UrB>@N!2bd8ldu3Ej8C5r@Y5JHz(+#+!N~<4;432uJb+Kc z4emz%NC13YSOEy|k%%x!Zq*&&3*!OM4Ikr=n!?0bJ6(_Em;~^35eI;73`zm~dMI1? z>M*DHhsOYXE*{r~?WJaC;QEZ2$>jB5eChY$I>!LN5$X+3F-MSg0_aBvv-Gm{!=mNw zTi(}ig?vn@zN9a@>mBF--LSS?=99Iqmt?Pl%p9G(wL`lv&9VeIi}SN|HZply{hPQ~ z*2|woVclW>4s>Aq*s#l&pz(qrST!_CsJNBWy$Ar^1eIm4$xJ(^dbYI+n6vSXL6dd+eJU{n%ru0y^{MA~d=2HPFuUVg0xALaf^hfA=>R>Qs`U#cuB(_WiVJ{H4sxz5^} zoc=|D`Lpw-A_wvvPd`AfW_(Uwi`GPiUYC?t)k(Izel>QiJ(Dj@So;v*ET#qa z75N5NmdvHH#QoRhy)kC@oRDu9s0OR&XqELTc_&>q|G(tC9GO$GS*Ig)y5H~XGq=l1 zxqTYyYDp>NQ%dRA;(|P|eU8xUSZL(k45)IFu^{HKCtrK*X=M9(+eW$8J*9hE8{j?J zFEs$x=jrBC*|%|G8?4m>_R#Nr*)y4H4o~F8hl&LP^dc(CklGx!AiNrN0Q(Tf)FCd1 zWix3x@V@Tp^*q2no}kM}-V9-2^GrHVtF}_hnb9(l04_qdg%jkxu{rWuo!t76hJhjnM33RXcm zITyn0DP3_rlUEPxY(3k$Bsr`J);F2E^+IVV@%T`D{+#@I53kUz8Qa`;-S+ivd+Jic zQQ+ieSq%_iA366@=}GD31pO9yQ=7Y-JveclqD&pgw9AD;-b%B}%tf=cYwe06z#Hgod)J&m9$tD_dKKNyXHgWjkpZ$@qNsWHLp8DdqR7UAQqkBQ1PF z{vyi-x{Tr5t7!%Bd*OrM6u~U*4{(g<+=N=zr?#9&-A=80@-O>K-E!{(d^F4s;|twC zlUMWRJ^8A4VDs$B_f@}~+?OoCN5c09O95^6xdM16#3Od(UlktUFT`|Ndhzfdk=Moe zmlaCPa4e<$=GxC7wVBgotW_+Z@rLO%n%5g%tCzn8lxAK-)W&D;V0v+)nx WCL;jg7-0hd0000`M)ZC!+Qn>#y6fWjv*C{Z|B~;G+RODXnoU~i$DJ5NApC8 zJ-vLx%$)WA6riM|*Amrwk#{Yw~;kPVnv4+WGat?P_uE zxJ>2^?Vnz{|KNJSfFy7XSoI3>jJV!u-skAS*X)j<7 zcqbm)6aT{^Ws}#WqK(ZqbNv`k#a`r`-6t+rt-tlVq3Jb`)k3BdzHg9XEod_fWtgsT znQ6twYnKXY-fG7(cU~zNGb>{sDT4r?5LX~g5{R;w;Rb3DC<*cl zX3+D9&2Q+Rw`S+jOLt#>`M)ZC!+Qn>Mqf`C$B+ufx3RI4wkYuAD6qK5zN^3ewx#gM zrL{lzZLi(vank?N%aS4nh9BO`wlW;}AIZZ|uzA)6t|vb~3f(WWI(e<7Jx%9G8N<1y zf~Abp-e>$;B)_LeRj9v_iy{2>4-p-4hCg|#-_0W;Jg2lLh%+n;?L6wzJj-L!9EJyJ ztaE*OeAE^xfA_at_^CTWC34%NDT^08PkUPM|6R}Xq**PO6w9JsL~obWdH*ZQ^vShZ zhMsZi-8XskQ1QDx&)YY)ZOk&fzfP>=DMrj1jUl4tDnm{r-UW|K9j!D literal 0 HcmV?d00001 diff --git a/doxygen/form_125.png b/doxygen/form_125.png new file mode 100644 index 0000000000000000000000000000000000000000..27b1249cb8a23bdc5e15293c41a4006d29cf754d GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~i!3-n?Kj!QJQU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW9|ZNKY5XkP61Pa|8Jr6nLEP2h3gBeI>Iqho%QU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW88%Os$?Sjv*C{Z(~nRdab~dqbP9WX;T;;aDJQm z;_|!lEqD7DO};q8@h%&~oR2?LWM4~oZavABpYimb1Vc?r-RDZ$*AL*dU)rYwsf~ywik=mAKyIp z)~P+(0ae@#=L^oB%j4J^dUnR#yo)ufdfoQ*tcvVOR;W1`Jn!42m9sqSF8aJ*x8-Wa z=Y*?gYI_2*Hm%Kmyz1uW=POO;Y8=d795-#&+gVlW{T{aKkH_Zj*k$)R>qXpVfB!8? zakj5l`hH$ulsVycz-t-RenlVG6_&n+8&sQAnrfBngyV$KU6 zTC-DfQXPkv*X+<=es>(^OfCQDWWB79?dQ^!%dc6#xIXjTvzqHxLZ45m&+3eSv*O^2 z>AYLMS#9IezxSa2$PTwI0}KCsFH0wd-cS>BeiATgbCm>}u+)ON96K*fGTwFJ>6OKI zjo8lVpFePpnPL8;3yqTPwND;#=kL>e&ns(R>VB&#>-Vw?N2@L~K9GL%ruzEYhj*fw z8EUw1-u^jr+dW2xADrzD%oeuym+~C=cjEPC@6&(Sg|r1eaY)&CfKs=otDnm{r-UW| D;J04V literal 0 HcmV?d00001 diff --git a/doxygen/form_127.png b/doxygen/form_127.png new file mode 100644 index 0000000000000000000000000000000000000000..3b733aeffb51fb4125b7ab84bbe045153d2d7c08 GIT binary patch literal 435 zcmeAS@N?(olHy`uVBq!ia0vp^{y;3i!3-o5j4n+BQU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW88%j7pv^jv*C{Z|9z#)~q1lqW?(P^w0nMe)c(6 zdN!XpnPw)}#kYRZt`~0@|JheH=wDp^t@xBxT=>i5wU*EI?{Dh)93eOT*0c!UqlaQb zpRs)Cdw2C^5bFIu|3$}C9wyW*Feyo-6)=rO!I5p<4W|HA1UljL~nce$4{ s+BvOG|G%HHrnP%jbuD8}U(Wfj%%#DsM(=+ne**=*r>mdKI;Vst092W=FaQ7m literal 0 HcmV?d00001 diff --git a/doxygen/form_128.png b/doxygen/form_128.png new file mode 100644 index 0000000000000000000000000000000000000000..3ecfb782c38b68acb28cbf24b17ec3f12412704d GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^AT|#NGmy;LdS?=lG6?VqaRt&Ofhci@TYDXvwh zXjgRhc*pSJfbLf2n2xI#mc?(Y+qS>urpmF@C%ktzGDxpr=#&-b{tR-Gr>mdKI;Vst E0D0&(djJ3c literal 0 HcmV?d00001 diff --git a/doxygen/form_129.png b/doxygen/form_129.png new file mode 100644 index 0000000000000000000000000000000000000000..7e7ad121a8236a49dd04831dc50687660e8c54f5 GIT binary patch literal 1218 zcmV;z1U>tSP)~{&PeR@Nc2-0RAmpaB?YSQ!=Dj?OzBo0MR&;na2GG6 zN;GRPPcBi_@O>k(eJ9nlD#6q&O8Jx}RVTTodz8*FJ1+nZ9R&@c@3daG1T%F)a;+)5@_N)6_|m6W?M;W4S+dTmw7 zIVXzs0ob7?wR8pWT&vAB?yB;M%)d#k=CN`GIKZA%vR{kjdB0D-xrm{PloxGLBC&ny z^Q4t5gdaQg);1;P7o0cbj+8W#`mEhP?~g%U4seJvW!FwifaNatV$K=%f<8*s2iHGt zCsB-_dL&&KckdOABP-NW3!g+(w|E@ewr{JdZm>OmeK$}qJ>wysDm1E6Q(QaDN2`Oy`{fa2uf{)zUXvdvEKBus&N0o%3}iTla+2Wn6nxDu7QR zX?a$b-IogJG*xefa?ex%=Sbr??iRos^1+ytWCVQH*2`8}YjuF{fy8&o*RI&6!Is}! z=c#r^)xJ150N^)J9NpK4b~b*2=MwRwLlfF-XaQW}Fv0+ip)S9eE}JmZi&-?xqm7Iq z9+Y-R-on1WHT^@5kNhf8+ExcgzM5ZJraf_cm8g0eQjvO)0qhWL_V;&EReObYX4R-a zhbWXRTEz3?UlM&DOnM8mls})CE3t!dFh6ZmIj86@nRR~zI`fDOcW0jlQqIaHjZw<^ zFrIJSssvNBDCJX@RG;KZyA`O{FP1XvOjUa{YFM56a|!~y<8Aic?l?`EO{qlboyE@c z*REN8Gw9nFQZ6SO-4d*FI>G>suqV|F!%(j)SJk8(OUk(2BrQv859Yr2hS(AuV2{`G zxe(m*0XRcVYOV}WFO_PkZMT&V;0|8Pmx7#+L*Th8QeM<1+OF|g64z{|N-CH&5WqdW zl2WO=TXU{V*|pPhf!yWZ#!;Bt$~vnnm2!P>*3kg>@TQbVn_P10U4U~~ZMOoOeeKWs z?iaD;%Wwgz^+HNR&P_hG!CQ&~e1cp)d^^Aa_N2@jPUCGP?)nJe4!&uE?@4(j)dqY^ z=lwTb8{k897I~GWayFZ18_LbcxHF g8UCAk2H=0gFR2n4%y7OL82|tP07*qoM6N<$g3N6(BLDyZ literal 0 HcmV?d00001 diff --git a/doxygen/form_13.png b/doxygen/form_13.png new file mode 100644 index 0000000000000000000000000000000000000000..54af190320f8c4df96ff7e4dad32824c1a0a3666 GIT binary patch literal 477 zcmeAS@N?(olHy`uVBq!ia0vp^lYm%&gBeJkx_d1jNErn9gt!7}l0cNb3^!1NKuM5a zFoT{)Y<@%kyfr(IUb_48%l}pB8{RW8F#349IEGX(zMXq|Qi}qQD}Vmh!2kdA)h)O< zeEiSrR9zL>eri?r8AHxptUov&{I5F0kUu$A=Rok@=^Q=m6|4AzT2q#`x-pw*d0bTzll+jo!f1G(wm{c&6ig82gPMQ$mVope$9&GWm@ zvnHtAo@VrG1H<;($b)`!*$pm;GI>uhn!>2nJ6rt>*M(K<-kNWgTZ9uA+ zw92Q8J(tWRJnh*Yu`Geb;$MLOQ4i(4mJgFh{sQnz&B`a?ohw3u;Nchb)4Ch4xanLXE*rI}>c7PU6Hcftg;TfaP`dJT{D(*Q?pYbK^5(cWr5KF+6{I7hZ zjQ1;MNp5-&U5!Osew|f?x8*CAo~7l2wXZ}1&2!+(e5Ksw*pg!Jef_+zsQE613A`Sg z(i#&}>p?0hNbFs%sONlh83DXQ7eA2DE_UFzZ~?rd<}3X~YS;+L#vWG2neV(BjIuTt zMd#(1%a(c2?}fX>BpMXax}j{9_q}!yKWf#b<^AYVFX7VqCE;?;a-9${xliVRNL(ig z*6h<|%^&#YMZ4~73TeBj@}e#$-cc4GzFP2DA8rUTgHAP?1J%QboSkon~yV-LE;; zVa`j&981&qg(|1^a);5Fw+f^!+Ud%SOTYYkt4cXuIwXXp@hP5YN>ei05 z#mv6<9)N!aQuw7G16-r{0KoUr8VkTJth1pLjosI8>%S(rn*s!QgeWDb27g*JK>Y+4 zmTP4*n}X`a^kp%?DH^^qTS_0`GkCE;Irf3DlNFEJEK>Zj^W=tqZ37M8{KGzp3cw$5 zY+!2&`}##;S?(p@M848rC#x=c_kr&qKg{P9sQQ4NhSis?6Oq*(ZBp9utqb3B0TaDs zR(UI4pmR?KIHKX3SAKynRyN(@t1M%1LO{QgZ2Gt`E{83An;b}^2RK2?SHkcOzS&4O zzQS@UOie9H)s>WA@CCR)!?*vA9vZ$`nuTFqeWr_reWeG02Wa?uNt<{ez(=V0TI~iA zg{taUU{tmffDfR$*_v?;+YsVlJW3B+i3aVB6@~!!Nbd8*mHSRrdI0|Q2tUgRz<(Wo0fMU- UktY1hJpcdz07*qoM6N<$f*}bu@&Et; literal 0 HcmV?d00001 diff --git a/doxygen/form_131.png b/doxygen/form_131.png new file mode 100644 index 0000000000000000000000000000000000000000..a295b3220ea3b91488919366fc8df7e1a4f780e4 GIT binary patch literal 542 zcmeAS@N?(olHy`uVBq!ia0vp^*+4A7!3-qTS_*A|ltF+`h%1mL2}Ie;a04|6lmz(& zGw6B5<~Q`uTeI`%rMoY`{9l#6;XMNbW3Q)+V@L(#+t|}dM-(_@uKegY`Rjjuv_p-_ z?!8;5$B9kmFk)`5W^4GL&B*ZYQs2*Md)B?Q@MmgRK2@mr&l9e#Za=D)mfx=wpVay} zj??a@+1yzZx)+Nx*qqrr#~_p8!xrn)C%GBqo~g!(Uy?YfDDq{c!KSnKa#>B+-nw2c zzF?o3XTII_A4@r=RmqC4cv5xh%sIIiOD`;b{OFa!zU?+APa562Uupi>XKMd$xpO=m zAr%{&uWkHyV(nKhs~ZiAww0J};5?e{rFs30UbC-;L9toiJg?~IX{Q;# zoWGao7EG+0-umvv4FO#l%2 B<;eg5 literal 0 HcmV?d00001 diff --git a/doxygen/form_132.png b/doxygen/form_132.png new file mode 100644 index 0000000000000000000000000000000000000000..a430728ec0a1f514a6d3ef253f466d1d0f262ffe GIT binary patch literal 559 zcmeAS@N?(olHy`uVBq!ia0vp^=|C*R!3-n|3k-GwDT4r?5LX~g5{R;w;Rb3DC<*cl zX3+D9&2Q+Rw`S+jOLt#>`M)ZC!+Qn>#(ADDjv*C{Z|C0LwOE0twf-DO)cyat-YNou{Tw>4sQ}jXToHLAe9#@17 zSs(OI(mJqukLA0W^Db7a+NyTm=3B#;cY240lI#7iXV$GX}{#mUAkuA<@D$caKhMH>()4dHX#y5qRv)@)UlLuF_B+b zex@fvndGGe+rIU|)|5snR z)G_Q+>6+ZU>)~$uLJi#JKf2k?-uL;Qx!lw%5f_%q{$$)E$Y{5#{f3fF9?OBys%F_Q zF?rEE)$Po8x+JR7rk@Z0bENS2x&8d_1305?kIB0qVXRTDU-;`!HuI12r|d7!a6ICA RoV^$n?VhfFF6*2UngC>*=Xn4C literal 0 HcmV?d00001 diff --git a/doxygen/form_133.png b/doxygen/form_133.png new file mode 100644 index 0000000000000000000000000000000000000000..ae020da523505e6dc1e174b8b470a184c08c7164 GIT binary patch literal 565 zcmeAS@N?(olHy`uVBq!ia0vp^1wbso!3-pSp5j&pQU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW88%j7vOS978G?-^O}QI;_Bxb0E!_@Bja|D^$hQ zjjzvH79@DXDQLS`4O_#11$Ks-*mGZ}FgdRGzE&a5&LBVO{iDVrSB4(~g*_bM-uq>> z7oSuT&{bTru z{>hZ7N3Oiyu-T#3pw{|xtQ;5P*DKzuPF>IvuBhP=dM6ZoUTLG^$*B)AG&#_m1Zq@{NN0-#*S#%r^hH>FY(A{EPP& zm*zJ-RPx`xslX>%{HD|SOMjMKUcq_UOtNmpqHmt-r<{}9**Y`m+3meEZdEMuT421Y z%>U8j=gB>NujA!a3T+BHSQ-8Z^=|Kbw)MmLLWYL?lY4%A%VchN-&M~e1`KnNr|c0) VoHrBCt(pspd{0+Dmvv4FO#rJF;4AS=2j zZ~MBso-a{SRZZH0;efp%gUz8EVTKxov8nUE9c8R>>NtLAY0$GZOlX0*P7gwoSLtv9gcg_TszxUCqAl3RiZ&o z)^q#wotmBIr5qOyd!*@SyfKv5om%G=&mgO}WW%eCJ8NdGo@{eTyHdp?z|?F~M^CWf zvLXiCJuhBMYGpl%Gh(P{soGK2%TRZC{>ORO1s+JBI%ggt##~yyaAr9upgdjuT-G@y GGywpKjd_p& literal 0 HcmV?d00001 diff --git a/doxygen/form_135.png b/doxygen/form_135.png new file mode 100644 index 0000000000000000000000000000000000000000..24fce7d9a7dfa83209edab7713618596325d86a5 GIT binary patch literal 295 zcmeAS@N?(olHy`uVBq!ia0vp^(m*W0!3-oXoc*!{NErn9gt!7}l0cNb3^!1NKuM5a zFoT{)Y<@%kyfr(IUb_48%l}pB8{Pxurg^$JhEy=VjlIp-Y`|f|;keZF-Tqv~gtc{L zjPuHEoYWW^{)aOB;o6$N!$l)4a(h0Dt*2Lk<+9B$e4ZapZavtPyUu!N$=Q4vJCo~oEw=f|O^^{<|8-B^2j|^d xjR&Rd;=qXAJzf_5a;_Egj)m zb2Rrq>)+(L#;g5YG9$zPewGhHhp)>nF7*B=b6bX?&RJ%*_#6Ydt0LwM=Vv@E>9T&D z`2LB}_LA+t>z1(Q{F@y%RqpaVE{$b%nJ4qp-@iFApoU`GJWBYQkr#0?Dec>ABOdXXYYRJdBFSR*5ln&b VurQQ%u5bc{ny0Iu%Q~loCIDS5iWdL? literal 0 HcmV?d00001 diff --git a/doxygen/form_137.png b/doxygen/form_137.png new file mode 100644 index 0000000000000000000000000000000000000000..97498c1550ff231a1e978351f24fead0aa91e1e0 GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^_CPGa!3-p)RfqEdDT4r?5LX~g5{R;w;Rb3DC<*cl zX3+D9&2Q+Rw`S+jOLt#>`M)ZC!+W6IJ5LwKkP61Pb5G|TQQ&dqPq3NLa`ONG+_Tz_ zmsgs^mRxK-I`u+pbFb$&hW{?JlneN8vOGvuWnZJLap3qb>$o>c2buSHsCe*jzhC^r z;FMbe9R{9^_8Hv*~Qst5e#lFE58>Z9B=Hf9~eAyJ~tPf_l&1K6EUqq)ZlYZD}sN`4t|H+WAlDfU*^zZ3GeY3@{vLEPw o^?u`ryFZ?OS6~0%f7`rTMsY({?>DMKpb%y7boFyt=akR{0AfUz?*IS* literal 0 HcmV?d00001 diff --git a/doxygen/form_138.png b/doxygen/form_138.png new file mode 100644 index 0000000000000000000000000000000000000000..94f009b3f6c9b1b20c250672b2940881c709511e GIT binary patch literal 1298 zcmV+t1?~EYP)>n zfN9(F&0bBT=Clb?g;VJk-~qt@2G==A!2&!uu3-l60UiMDN|Pf3JOJ9|ogYa64}f+_ zvP|wF2H*_g#4pl+0UjI@W->4W{ChBe6K^BD0Q`f9K288%z{TG*mS^dn0pK%yf1b<6 zwFU6cVYcPRe)O?B6XTZ@%gW24|AsxSx>jeVy*;cR;0;U%@Bz1y0sa8~>{zJYbZf%+ zc@ii43~-MNG4zsd>u}mnnS-|nQNxYcP6A@X@}^DM&&(Y40o=kY06!yb-(w0YuUDIr z-P-RWv-fQnuf(wI?(Sduntt_V+dpl$MMt$(4}0^D7>19{{iqM%9v@1*8`f>|o5VsZ zzj>bKs@*JB1-xlEFT~j8W%sF*w};*RR$ptTz9q)LhUwztx03_lM{HfTlUO+|gHZ?W zHgdz_lreyNg!~eocy-HZ8iW)vD!*E7bI5zqHDacEcS}qVO+iE%m0-pk{p5TQ>wNN~ zAVAT#dr?oaJ8~hG$~dNYr+#9+eL}F)CQ!gjo8x7ZnG6vPZP!B*iW7G&tp8 zFVWGNt4N|%=)S5d2ezn`l`%Ty>Lj@mBMfWC;K$0~u20#J@14|-MnP$)86aocbF*=9cZFANE6yn54GHyyTlX=yEIr-m8@+&nZr$>zB-sM3|3~h5cM) zsy=O%5@)OBD=juByVj}6UYe4aE!iR)eSgy^)&osqy{^5wR^h3X)|AV4V+3fI>I3)*+Fk%YVl}LYGusdX_<*2AnVqs=w2jI6uMz=q35n^~!2H`M)ZC!+Qn>MpaK2$B+ufw{vgj9Z}$M;lIuxed7QBTwl*k zkz$M1UfCD2$wa8@W2fX{>jV2IvoU|zx#ZE>BkRN-gdTHd*)jFBctk++q(=;KUnOV1 z-6XeZy>#6%v!~P6_MT;!>$h!Rv8_vR?7R(=udABe64ZY)Yr5(Iho1{CS+1G)cFFTg z8P~RFRF{8K<-d>}++vbEJvHb1!MgLu#qOuCEn6;pee=`fWmEIdFVfhezWdo`4J-Q@ zYbMS!Pi`vT`g3mX^c#FpCfO1{E5F?Rq?gSmEWYi}C0GBq`RVE*)+_nqS`S{fyy0%Q zIK06xZ>9g@b5BxM&pf^Pcdl|`W*TG3sTu7m{`=j(oxK^gkgb1vt5Egan9t3*&&$iw vy9F=1G2RQE7?jkU$!3-otox^>BltF+`h%1mL2}Ie;a04|6lmz(& zGw6B5<~Q`uTeI`%rMoY`{9l#6;XP1pxu=U`NCo5DxxAZN6nL8L7qEV0e_wxFylmpt z+Ui!n#g}J!3i~sB5LRTgNthP4_fyuh(l=sfS-s}}eY8_luv}gE-s*GtkLJdGt+~E3 zpZ$niM`q0Byi=aPLNiYW^=*Bzit&$I-rBoWMw8tiTuhsC`ppv8raKJtzvVnVqE)$S zW|QvfrE`;Af-mT}tom-TIO~{bLifG;o2eVW%y@SD`^OEXu@CM&oc})hFJp=~^HD#E RS{sDT4r?5LX~g5{R;w;Rb3DC<*cl zX3+D9&2Q+Rw`S+jOLt#>`M)ZC!+Qn>Mj1~R$B+ufx3Qi@M-+H+#5PM9|N5V=tY}s} zY1Ne{le)PW^VVErD`)s|{uSc`|Ee>wB~B4s=NG0iGw{d$XNpk1n$sA=6!T_+<<}OK z1B~y4m};Lh7N|U%$f>wSY5BU3dyW)T%$R&aW%uEiM%{#ZL^F5zWBDZ$u z{S$HpXE}nD1fRunKQEtaY+xAe7M)UlV|iuJ?PD(!A3ey>o|(y8Iq7bKyP*EIYIR{L zFJmJ=x1cKJ+YgVhS}kGk_PJa#sd`D=rmz`d3)pY+t`ib1{VzRJ`;v(9oef84v>Xi1 zKf@>Oe)2%f65R`CkDjboHep|E%CPOB^9YH29asMAiB+eAs!b il((*;is6HIE>HX)JvNz*uPiG;f$r(*=d#Wzp$P!7n3+rf literal 0 HcmV?d00001 diff --git a/doxygen/form_141.png b/doxygen/form_141.png new file mode 100644 index 0000000000000000000000000000000000000000..ebdf2217bcd6acac747e611385b16ef710c8927a GIT binary patch literal 437 zcmeAS@N?(olHy`uVBq!ia0vp^K0qwM!3-q3Su>{sDT4r?5LX~g5{R;w;Rb3DC<*cl zX3+D9&2Q+Rw`S+jOLt#>`M)ZC!+Qn>MioyN$B+ufx3MRu9ai9(+~{=e*Z==zIysw6 zieJS%JG7e9bYcp35qrab8CHgWBI}c{8gX8~`fS&ECWh}T-j?sooG)y!UUa9cm)QM4 zCAUv)f;q+vHEv;tW(zj0k?FR-y=h~|!UCTY`Pt1Is%L3!3*K{BBy0EYX_L9UI8J1B z969!P@1vCKCKHXdbRQYq`<(bU_jI5{qWXzd{al*A4g?&*AAXme@O)ptEPuiORPbiTb0-F?79is8Bcs@~^*o7NP(6R)zE*w)VQ tA-Bi-^?YH58u=|>Kh9)2V17}uj^RoyTiLz0?k1qX_jL7hS?83{1OQF)t)c(` literal 0 HcmV?d00001 diff --git a/doxygen/form_142.png b/doxygen/form_142.png new file mode 100644 index 0000000000000000000000000000000000000000..a7f05e3bc2779e7584bc19fc0d67a263ecb02245 GIT binary patch literal 1338 zcmb7^`#aMM0LH(wPRr(cMxxm1f}UbV2w`Y)%blL^Fj|@^B$rZb(}@n*Atpwg6HZgM zx#WIbE{RMfmsp!c$fXQ3x$fvs=>6gSyuW;YeN)_A>|~*8PyhgA9qch4002Vl?j!ra zyX~%~TfYmG+j%eBUH(#h(T8BWfh-}Tr}y3O`|pN0r@F%+!k`(4B3uP88_Em7tmG}{y{0Er(4 zfhRAryU=-)q({4Mu{_h~|oHt~So1Kgf^n-!!*%&mN7y2L@Fb_1=mQdPib=oZcWsn#O=z|w1S zH8pEJzH>+=_vdyXWMv(RPBpzs>Dep7VeSv9Mgfb8$&DtCN#@;C zj6*i5hOt(k>FVtjgS66h+8f>(;#iM2IiV-}aiRMK5vpQWnS$yT%bms>HO3S!nfgRpPbh0Ry&j&Ra=Ee z8<|9*r)pTSW{-=Jhp5@p)5kH5;vs**Cbsna{@%pUDHU;jvOmdXi#j_TmTznmTb@AM zV6=&L<;fc)rr@r0Qlryx=rg?18-!aN5Umyate4J?l$C3%K6d2iA2L4^mJ*7uRquFV`**U!U zH#^8k0AF%(?!$Shc(TL*ZoKCF6~s~u#kY!O1Ty8}Bm2C;i2jWjWX`#_bNg|WxM=Eb!|8KBlARP2cxWh>_YinG#T0+pkfsVd5= zuMu=9!A!`6aVaPqF#kLaF}VP5dRJGC#GXd83G1jafN!|5`xf^sQM^^KP~((N<*M2> sV{XX)qtb$N1QathQ=!A(3TRU#f$kb#d|6s3q2><{9 literal 0 HcmV?d00001 diff --git a/doxygen/form_143.png b/doxygen/form_143.png new file mode 100644 index 0000000000000000000000000000000000000000..e073847f4fb3f764f32202a707d02cab3d92a719 GIT binary patch literal 1056 zcmeAS@N?(olHy`uVBq!ia0vp^+kse_gBeIZbkF_)qznRlLR^6~Ng&Ezh8w6spd`pI zm_g4YHou{N-kP09FWr6l<^QVm4euEknEO3l978G?-_HG8wAza2Nd3Pf5>EI2=dMq2 zZeUU0GWpxHIhH-!bDOl+hhKUX->_fAjOkC|3q8IE{?2n4>X?tM^4iE;!StHvfOZV? zf&7F$4kz*$GL+pWpBFjs^~zg@dyOR*yf5ZYE)qTZw28rgKF8Qgl zx-4S*QXKl40I|zR(+jbSsgS@p5cA_>Fl`` zhgE0zrq#-GPh9f!f9kzUHul$-Mc=D3*brH#Q?)ezs%NKJxa@)Gjn8wB)?c5T*BbO% z`T^^2mCfpPX6MfT z(VD+Xwc$VWTpz8CvJJLu8`T>4j~=}knwV^Fe>x&J%5QgUe*Qek+QoAj&OJ_=UA$rG zj(Azo8|%Kx`>ZyfQe35w_hnw}8aIvtp4WN*U+%iGiT8TN#WT*^4Wr9l?i}@epCiX2 zc~sWv+DqmF{>$O1$tIO$yz}SvEJ*(EclPCGZWAV(2SG(w@7rWcZ=dKky?CwFR)MYi zi&`Jt`dfayy6lA0373fnELX>03pLT$c}3NPZ}s|5br!))Gv`dZopEESh&dGmG7l}D0A5o_MJ2GQpzLK87sB-S6$r2@ocaBVU;<57s^d7@7y^5^9{rEP3p$W zc2@j76}2yX?fEkw?#}bn;8%PU@_zLR#fgt4Lc~)GzutOOq@2sWcFAKKxzBpDr(1n& z^EL?ev;Lypo>UP3GFcJ+T^2w>i0E0wGDmcYs39!x-wmR`g>04^S^Udf8Gh)hf5yKtmX_b0pJ^fm8we$O;WcUdi7^wshL!-B@wA60H_smR^?I_GLxa@5_) zi(`@xF}!)0R6B2m=>gfA#g*?j*W7-Zx47gl_XED=nanlp3l~}(NPj#thv7d%0pEYd Xg!dvYpUgh1f%3VhtDnm{r-UW|<*DVR literal 0 HcmV?d00001 diff --git a/doxygen/form_144.png b/doxygen/form_144.png new file mode 100644 index 0000000000000000000000000000000000000000..9fd869151249ffda0390ceaaf9ec1422b744e44e GIT binary patch literal 908 zcmeAS@N?(olHy`uVBq!ia0vp^{XneD!3-p4C9gCAQU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW88%Ous!{978G?-_Cux>9&?Yi~Tp(X_f!CpG}z1 zQlpZuu6}ZDv`B2Kfz+(Xs((y>+!xv&ux~byZm4Jd$Hf!OxQ8XSzwO5x(`S31i<#HG zUca7wy~~Mn>Tra?c`}*hi|K5mV%t zo(7*jot6JEdF{%c+HKe7wte{iL9qPp)s^}6XPx&P2{rxg{M0B+aKqXAN8R%zb&jeg z1pc_O^Y`(a3a7gd&p&-icE0(mzsHuhuh6JG@o8n$%_};>ff@BzBw~-+A6?2WwefLs z@Hzi4Db}+$f3!3|emr5(>pMyJL~A(iChhgS;h8YiPW+_xe}+E-PnMb1s!V0rcWB>Y zUWWOHUG&dg(exJr!E^??_Z~3a(#xwG3!@1Z!DWxmFuUf?!ez4bN;`_5-I?k{4&AU1I&?bBSk4zO^ zvhvDTchv6r@jUH3&v)66g4_9~otbh=i%b6Zl4Fgz?|%9`-kZHgYyO6?w|)NKYXXI4 z#Lk*k;%%-Q^J(!P*0N&x^$(USc8A|~y!36KR?fL&&*z02&Zw9ps@Edi%Jc(h`p1K% zn}507V(eSsEB*WsTS1$VU3Jh$XQ9RJHPZ7xZd}}a<@-&B8t%O3iVgdF)iyHxm;b}$ Xogw%ruf8)4l&3sh{an^LB{Ts5S$&~d literal 0 HcmV?d00001 diff --git a/doxygen/form_145.png b/doxygen/form_145.png new file mode 100644 index 0000000000000000000000000000000000000000..3ecfb782c38b68acb28cbf24b17ec3f12412704d GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^AT|#NGmy;LdS?=lG6?VqaRt&Ofhci@TYDXvwh zXjgRhc*pSJfbLf2n2xI#mc?(Y+qS>urpmF@C%ktzGDxpr=#&-b{tR-Gr>mdKI;Vst E0D0&(djJ3c literal 0 HcmV?d00001 diff --git a/doxygen/form_146.png b/doxygen/form_146.png new file mode 100644 index 0000000000000000000000000000000000000000..0245eb2be6462908e5dc62ecfc2e2d7b42c6d167 GIT binary patch literal 619 zcmeAS@N?(olHy`uVBq!ia0vp^hk;m#gBeI(JUmMXNErn9gt!7}l0cNb3^!1NKuM5a zFoT{)Y<@%kyfr(IUb_48%l}pB8{RW8Fy8WXaSW+od^rb9X0f z@Jx0$47wV&_Q(ytIX6>{nE$Z;;BT;JWP70BVk;MWBX2YFj{ZcJ9ld^0hq>E3R^AEc zFOaWe1@TWyXE(L|`fkr?C7^sDx8zdPyy_|Kmhne-Eft-8?^LGv!|$Qsoax&?JB-H zd_5_!%G&0U>)DX4*PgsQ@$YT@LyH&>i=`XapRayfcWuI{HCClp&83q{y{5(T9pHX; z>%6AsKA&6L!`aCy%m{PxXU)O_G{8B2t z!UwGHWtv@CTD*F$Y}5UHno^&tB3dKU>oZO~ToWqZ{$lmU8lQ91R^>U(Q`;eP!q+KI zcxOvcQ(e99;qbTVZ-u_kd7kVs(bN8JYF4kJ#NFhpt5z+vrqo|D87pS<<@YK8|~Z-24;5aKTL z+I+9yEXnq5$ny2p3eoIEYya!>FVdQ&MBb@0N{oNSpWb4 literal 0 HcmV?d00001 diff --git a/doxygen/form_147.png b/doxygen/form_147.png new file mode 100644 index 0000000000000000000000000000000000000000..5116333bbd5260a21cf8ac3d9e1456618236fec9 GIT binary patch literal 444 zcmeAS@N?(olHy`uVBq!ia0vp^0YEIo!3-pS$FKYWqznRlLR^6~Ng&Ezh8w6spd`pI zm_g4YHou{N-kP09FWr6l<^QVm4euEk7_~iJ978G?-_AYR*J8lqa{8wEga7}_-dJ!h z5Mz5wpUFkbDdiz}8P`=aYTGO>p2CvsF{4>o@_IIl0!8b2InHw6~s|4u$$@$v) zYGv~4d22Pk{3&_9II}FM_K~6CTD`F8Pu=cIA5hY|`Oo&y9l7?Cr!Ow{EWIN#DZ;K} zd0WEdnQP->m=CN^+W#hsQ|2in^YZta8`5`3ZxMNLo1yEzCy$PETJGh{7e9HE_&R29 zJ(gjoeD;*UWTuZlE_}K9+cRJ1Fw@~pa?3RSE|u^V3Uj|G@xs!s=BUMSMuxZ$_H~Wt zv~_;HiEex?fBH{SgakuPoT6ve{h&N1#s~ec*gMX$Ui4x9UJQx@Pgg&ebxsLQ00@Y! A6951J literal 0 HcmV?d00001 diff --git a/doxygen/form_148.png b/doxygen/form_148.png new file mode 100644 index 0000000000000000000000000000000000000000..302112f923561066e9962b036e1b0744fd4d3f51 GIT binary patch literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^+Ca?1!3-qNXl zJLR`$-r9@NjQ1*fOV75qu`8aKa95`CkN5o?qi^RFPrnNEZ)h#O>}E7ky7;ZyM5YZ! z86t0gyPQ6)cR*b3)X$Gg7`RQRzm$I<{-&sSs7sP`QCTF%d3ry7VWLMC2!&=4)L1Mmb%4Z#^MWSj+|oMwJQF*ZMx&C`Q2h7 zQJelSKhxOk-KkTx!Rkrp*0*`4_r2aPea(HlX4~mMGHbTWZFT&dvngnHX;$;InYTs# zU)OKwndc>Ip0PAw*Udn)y5hK32iS5qiAm5`B*-tA zLC+&LzoCELnw>{4-F^Ax|Ely2?}2h|o-U3d6^w7^p5|>Z;5j;nKT}}K-TG)gRSvx~ zAC{z_yvO(;{awPYI)m0cZXfnDm%bgTatt@(_M2R&uCUS8Q%3)^vebccanECnT)#bd Q{(zk4>FVdQ&MBb@00O@`W&i*H literal 0 HcmV?d00001 diff --git a/doxygen/form_150.png b/doxygen/form_150.png new file mode 100644 index 0000000000000000000000000000000000000000..a25946592afccd82e37372aec89729a7daa6f788 GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^Qb5eZ!3-q5rDLmrltF+`h%1mL2}Ie;a04|6lmz(& zGw6B5<~Q`uTeI`%rMoY`{9l#6;XP0;&C|s(q=ND7Tt~jc3Op>wdDkg6KKZ|Yt)N1r zuiwt~5eH_-9^q$*vs%jX;eqo?X@Rz$qgonM95xo`=-HQ_&C1wX^($G|C_Ov;$cgyl z&(_tYDqh)>^=NX*-507g4mtbyKRlnwTJeSdMIYmoT^fP)Am@9!`njxgN@xNA;a^Ii literal 0 HcmV?d00001 diff --git a/doxygen/form_151.png b/doxygen/form_151.png new file mode 100644 index 0000000000000000000000000000000000000000..96a97dc25cf30536055bd9a83008536c375849c9 GIT binary patch literal 470 zcmeAS@N?(olHy`uVBq!ia0vp^AS}Sa3?w%t-8cuN3<7*YT!A!6Aj)2b8>m5`B*-tA zLC+&LzoCELnw>{4-F^Ax|Ely2?->{vT|HeKLn;{G&OJNrumVTxdV9mpjUWHs-xhOV zhTra)mv5d?T3(TKu%G+JI>rb4BiI_=>n?d++Iy$|*|A?7lQv(KtgANT&QyKh-ZE8C zWYvvZDXb0i!_Li(WPEToNxaWOe$AHCMLQM;scdV!q7g5--=Iw4>+6@sDZv|SC;myQ znen(Srn077K5?(d8sW$|nJ6xvn_KU-GfdijE?i~iXNF^|O5oD0Vzu{an^LB{Ts5lmWd^ literal 0 HcmV?d00001 diff --git a/doxygen/form_152.png b/doxygen/form_152.png new file mode 100644 index 0000000000000000000000000000000000000000..2a7caa0a2b56f000354785f394c0e68902a3d55c GIT binary patch literal 459 zcmeAS@N?(olHy`uVBq!ia0vp^?m#TS!3-pepH4~wQU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW88%j8>j5jv*C{Z({?uy;0!k*67>1?e71)_?CUs zb~XKed@#9Ffb;Ml<^%D!e?LoK$?)N(tizV8^DRsF@9%AsdETCWTj~_6!i`tee%|{2 zQU}yE`lB4Q7}l@d_uNHJZ?AuR?lKvMML-_Qyd^JJ@148Y>Ck7-&_(`zN+*k${I4!; zeksJTKGp0q%ZFP6b6(}!*)%=85MEK@S$$;2x$Ey|tT??Oz-e2UO~bk0+U*=xGgZZhc{5AXKC1%`sz}UjSQs6|*@l(%YJd*hh)Mm<SY2fh~1W9QHLWZXJOE$&>GYy;O;sSRiPS3h9*Fn`k9+o3I*=1I(4w-0AC zi_N>!vLaP>wkppC3*Ni;m5`B*-tA zLC+&LzoCELnw>{4-F^Ax|Ely2?}2h*o-U3d6^w7^2J#(H;Be;F(wJHG|F+*^w`p@5 zr}T?wJmg^b@OsLLz?9(jXXy<#4C{)--KQ?GUf#q$ZN~;-C)W(|P>0;(*?net)05Ta hz0A~~Z*RZj6>IZJ#@NTp?7KkD^>p=fS?83{1OWa8L6-mk literal 0 HcmV?d00001 diff --git a/doxygen/form_155.png b/doxygen/form_155.png new file mode 100644 index 0000000000000000000000000000000000000000..a16becf0c64d15f3dc90f5aeca802413acab241c GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_2!3-oTqJ08@ltF+`h%1mL2}Ie;a04|6lmz(& zGw6B5<~Q`uTeI`%rMoY`{9l#6;XP2!!_&nvq=ND7Tt~hJ0}hsUCPS0nzyI@(h6MWW zYe?arJ(nk*;m66ee_7SZSzGTpCd8ELRxukdSDSZ6sCAjvDK&Mo4evL*$CWdbP0l+XkK9F0V0 literal 0 HcmV?d00001 diff --git a/doxygen/form_157.png b/doxygen/form_157.png new file mode 100644 index 0000000000000000000000000000000000000000..9f5e107c2cd3565f44319a773cd3129bb33cecdb GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^!ayv-!3-oLy1%&rDT4r?5LX~g5{R;w;Rb3DC<*cl zX3+D9&2Q+Rw`S+jOLt#>`M)ZC!+W6IVow*xkP61Pv5mZk4LFP?CYhX^^?$!?;LU59 z)rv)-8xEMsGaR_@e}|#QQLBQXN^JAOlSi*8|I_w5bu@Fckga&O(S#WfIk!0f_Fm_9 z)oYD#Q&pka0_9`LvDHxrZuLES_-bB}%KIB;scTE!kLf>s-uK}xOF_HF+qpXT1I~#F z_V*vU@%)ms((I+jgiai}Bb(0lX5ZuL#hTBuXI^(|xjOsF@1Oe~aqo&W#< literal 0 HcmV?d00001 diff --git a/doxygen/form_158.png b/doxygen/form_158.png new file mode 100644 index 0000000000000000000000000000000000000000..1c3823d11b038e24d490215c59f387d691f37b61 GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQa1_3@Hu0Wb35M?jJ4b&h|666=m zpyv^r-_SpA&Ca8j?!Nr;e^vU1_dvOoo-U3d6^w6VUsoPc;F&ysg21VNx5G?!7W{d^ z@h@lICY2cs4F5E_SsT{g32X{izH^&9#N+uD#SiBbQ=ae#%)WZH_R|A~UDC(Z*QEqz zGAKRy*R3r0hTG`I>Si6YnJZ`M)ZC!+Qn>#zUSijv*C{Z|7d@d#u3Ys-M8a>G|XT{=3-= zbW1h|xy`C|*(k)fF1N=wp7BAw7ej;V9`**;c?-W!`qjJoVTV$+yOhf3shd5z>>YJo zx((TWG;h=Y{jP?YYdYWTQ^8M;xAEsrbX)0gYe9iBTc`DOkNSouFXrrvnzHkPqhIpp z8_F@IA42=WugzQV$1v+$nVWxmqn@RV{oR{M@=qjZ^@z2mFVI~&t-LO%R{rFtyN8rb zBugzNPt86t&23ZAqHS-qGUaF2HmNOU_+b6XP%3Nf<-?m#ZN2uhvTxa2>x&QK7RxpU zf6Z0<7Im@r8u!`T;*F+9rf{tj3)ZMq`PqE!?z#*!sT%Fx%nPntRJA+wOBR=An`B+# zHgcCLeH^m>yzk|SE9#Wz--oJwMkXamfDZUq|6UJ-FWkC z^5sj-?>nBK{Ml4f_?-Lf@@3Z~CNOOO+Ol(r@5x2Fi|ed}K5t#5;B&%(;e+nF$ol!t ztCyR+JC~`m;)lytXgTe~DWM4f D+DrTH literal 0 HcmV?d00001 diff --git a/doxygen/form_16.png b/doxygen/form_16.png new file mode 100644 index 0000000000000000000000000000000000000000..f497b5ea507bd4d8e11a0dad30b32c84e7409969 GIT binary patch literal 821 zcmeAS@N?(olHy`uVBq!ia0vp^n}Ar1gBeH$-!xkUqznRlLR^6~Ng&Ezh8w6spd`pI zm_g4YHou{N-kP09FWr6l<^QVm4euEkn3j0DIEGX(zMXrs?6HD?Oa5lg3*Y|NTlcDM zb7VU?Z~Ga`zEhT*uB)r+S%2_9Xuh7Ge471%tfIwVI}Tcgd0gr#HNPh{_)*hU`3B=D53hL4 zYU63JYrE#^cF%q4>Nvlrds1FZ;Mp_piOR~0Qx2avmXmUIbMCAwLI=cmY_O}E`#J9t zhwi)s$~$R9ku&T=$Strgmt|tT-sY?6sWEC_S!Ket_7~&)TC49uJw*Dzu)?G z`m{_ZD^O%vC@2rwIn|80GyoSeaFl5ZDW^>>- zJ0@{{h1%`nhQBp(ml+@Qcx~cVY+-Zwe8-rf%0RKDz%BIrUyb(M+pC@*KiZakxa8?Q zcb*10l_{%OUOaSf+oOKq*XM*RmF(a%*Hx3oe5~$(CU_$8Osh^#xT~>-uNht%_`#v}JNG>-5}Wf)^cbU3=RqEnWQD@_Aj^p#fLcoDLJZ&9dr&2x0V#%8-u+FH0p zVrK940(y=}ofRTxXn``1v#Y`(3do{%_i(efxgQw4GN> i4!m!ibDi_R`vdY_2|`U;l5*Lg#P8|q=d#Wzp$PzJJa4xE literal 0 HcmV?d00001 diff --git a/doxygen/form_160.png b/doxygen/form_160.png new file mode 100644 index 0000000000000000000000000000000000000000..8d19c88d657b93d2c4fc8368acac63c086bbc647 GIT binary patch literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^?m#TS!3-pepH4~wQU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW88%jBK7Rjv*C{Z|6D|9ai9Rl|RTQ;j#07uC`*c z;yk@sdAkxn6|NEVzr=r&`Hy`rgM3!;S^cr2ul{{JH^jDKJk3Gzm@5aU-$ddFFv??h5K1D@3~whW0W5r#b9^&T1B_P zq-LdA4{vne>Su`e$bNOA>E;oaiKQEu`Xe2GUiq~3$L+oCw!5dF-ZuGOa^GSr&r<34 zv5^r=U(_z;ZIOMjwr1=1p!;%nIo4mka&6}9owLmsoBA!zDrqh+o7E=9)%@VR=Guok z|Ezb}1m5`B*-tA zLC+&LzoCELnw>{4-F^Ax|Ely2?}2ijo-U3d6^w7^I`TC*a4_#?zs`E`-~a7mLTBP? z4ymxrN~>UI_;apsw&9uiJlqm82WBR&T2jXP@cOdA+~8B+^{1u^z*-qHQKiK-KB}&e|^?Xx|}^t dZe~n-qjdF6#)zj*%PT-G^>p=fS?83{1OVcLLL2}9 literal 0 HcmV?d00001 diff --git a/doxygen/form_164.png b/doxygen/form_164.png new file mode 100644 index 0000000000000000000000000000000000000000..09eed5b79e8055b27287425b223a5ae48aea1a0e GIT binary patch literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^en2e1!3-q(KkQrqqznRlLR^6~Ng&Ezh8w6spd`pI zm_g4YHou{N-kP09FWr6l<^QVm4euEk7?nL;978G?-_E^T)S|%S#=ogy!R|f(Z<{GL z+`8pw{nj;KLbzPOug>m9cEkTX{)YQAKYvb-64{yi=&`YNL-*7<+ijo!J-wpvLrmuS zt*<_@6qrs|d@sOsVEM9}TOQ1s)6kWp$akzn)!mclyCZePhd~rBRnx&D%CL`qqPzRUyJ!$E~g}dFdQo{^48n ztphWKRym$Ewq6dLE@p5N8Z{z`X_HqU&0g2BRGc6rbb-_pWb zH*Z-#`(;)tlgzS~#+~!y7XC2l(5khuRXs|btv62XxfrjuxaaYO{rmlr-g+&m3z+u% s9Mhj8%ZgswnH>18D>K3V2e-j7={cgTws+4~@`A$N)78&qol`;+060Ibi~s-t literal 0 HcmV?d00001 diff --git a/doxygen/form_165.png b/doxygen/form_165.png new file mode 100644 index 0000000000000000000000000000000000000000..a0da26327acb571d11be9acc09b57b3429d50fb8 GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^#y~8`M)ZC!+W6IV^0^ykP61PbMKZNQQ&B?ub-qd>&o}~+f6&v zGOKUJeC^x3;-F+gfjq;5|2E7vA7q{tb}!K?647LR(EU8BG?t(9#d%$g040;J^DXww zGTp?Rv3=2v(95Q_`tzP{lG^nqY(=vBhY!^oyPqhW);xDTqDyyz>E?SSYBfD)8{VI} z?YWVu`lFFbzTQkH)5*n?zIhrddOt3G{NvhFpUFjGTZ1P@&%GEu-B`0byU6lbuxohV zS%qa`G4=B6OwFDw%aTv*s5^h)KxHWNk7wP-kN3R3vG_FekJHa*Z<-s+_~+5|H~#+@ bue3j|uHDU&+8eW*4HR~su6{1-oD!M{4-F^Ax|Ely2?}2iTo-U3d6^w81-sWU5tu7{s1(Bk`!pxNwF_RyF~*<2>6iC0O*UW`YqCB2?-P;Vdtcm?w+~?WFL1ud4CFFT LS3j3^P6^;kDQaSO}>de*b3_JQ)G5qo7%4VCfD6LTDy8XR*Tvs06WHVSUC9*y)}gHTcgK9*o97>{O}lyA zE$7Hg+drE!t)EWXqxaQpb`0Y>kEs^dG}bmQy63NulkwBWvugL+ciCUpcRc&~WW6@a gj)QCW^F2`a-)zi$dh3~Ur$B+>>FVdQ&MBb@0N;On9RL6T literal 0 HcmV?d00001 diff --git a/doxygen/form_168.png b/doxygen/form_168.png new file mode 100644 index 0000000000000000000000000000000000000000..bcb2cf11c3821b450c1e8bbac9912e799afe4329 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CF!3-p~fAT*8qznRlLR^6~Ng&Ezh8w6spd`pI zm_g4YHou{N-kP09FWr6l<^QVm4ex<+j-D=#Ar*{o=U(J(Fc5IE+_-%0&a(fxPn&-| z=TK1*sIX=@u)p)c!#O|a1nRwgcYtU6rTkpChf;AX>J87DSek!+$*TW{;p*}DJvtzl NdAjiXow#I-*hd;NO_r<^My=?vh z|2}BTKdIdeAAGy>a*8KBkE-;2Zg*e5{`b6XAwPt7tF~07sCT~+ z3V6lNASY(S@W-fBR%6|Z^KMEGYz@nQdVflp^mnJ{8%4%LVbjldmlz6PW@?zd)TQaR z!OZQ3XIzcGF{EC5VJVck!z;4X|BxZ)OmE3Gj<#ISqxJf(&Rwy>@0dwNo$Tz8b)VeV zXB_U)yG8jkCh?A2Uh9n qJ+bQ`d6<^TS>T1S0( zW`AY&RhwqeDrV2{VU`5z1ODI$;{yz54Zqd=t(=y#?e^Xf2DdY-?}q+<q4We%{m$Ft7fnELtXw%oV(d*A;2+N_isJ?WXk()`G3HhY)rTHCkpJSCan zlBBtDdN%XL?R7k92aoTc>~Z?Kr$x=N?CRq;pUf9!vUzavDx*&&^WV+PNm&fDRX|?% MboFyt=akR{030uE`2YX_ literal 0 HcmV?d00001 diff --git a/doxygen/form_172.png b/doxygen/form_172.png new file mode 100644 index 0000000000000000000000000000000000000000..bcd93217154d75db33391f9be7dd7366727dc7ec GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^azM<-!3-q%En>KVltF+`h%1mL2}Ie;fbOjoR!3-o%3#WJiDT4r?5LX~g5{R;w;Rb3DC<*cl zX3+D9&2Q+Rw`S+jOLt#>`M)ZC!+W6IOivfbkP61Pb0hfDzdok4S@-H1&Vvd@eQNm2Rk|=G#7>|F)Z|Z5du~X8QVE()An2$DXc!F6*2UngAMo BW-7`M)ZC!+Qn>Mt@Hi$B+ufw{ve#TC2e0BF?C^BlO?@e08NA zd(T>$PG7!qQ^x5np3<{^@O@B!V03_YeY(_x`4_|sB7O>$OFgjm;Hy}Fl=;pF?@xJb zJ02hZr1(Q1m4l&t%_l>v=xCcOzb7(QI82`I(Amy><;uEPyDt5pB;MMUuh`iv*8aPw zmOt(Kr0>7W-hPs^Umv=uG%njL?REb0t1<<)xAtzoGK;Oi`R=uCQF!v$b;9kfr%zjjGVXtI@58Yhf+_JYMLs)dG+MB!xJ!Rhi@&o(W74wY-!`B0 z60}yF_U`YwJ#L#1W%xenFb~{safT;*`$=};_~mJTO5T}TY@HsK%X?+jv5x+uYrnji zc{D~SMd;?9eSgCK&#j(+Ezq*BJIf%xcUya;q*Ka<46b{d^gdl)`RV2MRX>+6v5J#@ ozg#Nz$=AxB--66FtX8+)GP^BhFKv17QxFtSp00i_>zopr0P9uA;{X5v literal 0 HcmV?d00001 diff --git a/doxygen/form_175.png b/doxygen/form_175.png new file mode 100644 index 0000000000000000000000000000000000000000..2e840df31301e8958d22b9a74fede48e45c28921 GIT binary patch literal 460 zcmeAS@N?(olHy`uVBq!ia0vp^{y;3i!3-o5j4n+BQU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW88%jMknmjv*C{Z|C}!9ai9JInL2@ux!Ww+|?6* zc-~rbNpIIfS3a?a$tEvSc^UrOD>3{rx-{z>&diI`ijsL#Nq|5ArW~=}|Bp0>XwRiB|oYV-Vw;Y%4lM7At1`@Q>rvwqnPwt1}S Rj^99W;_2$=vd$@?2>>0ixBCD9 literal 0 HcmV?d00001 diff --git a/doxygen/form_176.png b/doxygen/form_176.png new file mode 100644 index 0000000000000000000000000000000000000000..e626a8a3f8316c5c9a31de25ae914272533e128a GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~e!3-p0EYEHRQU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW9`@Ur!gukP61Pa|5{=40xQ4v$sx8-TObclrQ?r zX>Jyw7utJ_84mQXd$Y=2+jB?!V%tXjoyw1dUo)@qm6;UXcxt`VJ+8LI#j_)O?N52c Zs86(GoP4_V-UN^gBeKHT~|l|QU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW88%Odma6978G?-^OP4ztP~)Imcl6v5Kg|^kJ5F&jRZmP(kXSS4UKm5g2}!3_ zLAOMg?O=GI`K%{sd7i?VJ!}m8Kb?N_B`I?RFMXFHrpVl|dWpY9cg*{s@;?j(qTdal zeNWFx{F2Y*xr*C~Npw@_6W%i)IX+yUW&H-Z)LV z!%L}iN$Q5p3uUt^_Ziw)KfPx4ylc6XLPQgbp{mmM@_%=`W7bLX^B-}!`ljotQik0o4^xn?qnox)#OTP}C-)%q&7RK8$D0gzy4u;nse%#nYZq=Y*1|re|%_u*dD7JruDxb1^dN`=5Aa*t((s&_?N-I z!{Wg_3I8_SSR~qEI%`vuk@~kYn=W3}c(bmf|Cr=crlt*E)hcFBRsB>=n*|DM-&oIW zxh=r4Myk#9$FAlLPo{)v^Zb-jII84kG)ycP8S7er6{9gJeU6HY2 z{)xA23!k1iSU6!x@jZ)mF%Em~Wp7(@#?$}LZ>rbi2DEl literal 0 HcmV?d00001 diff --git a/doxygen/form_179.png b/doxygen/form_179.png new file mode 100644 index 0000000000000000000000000000000000000000..9204add9a254323ce1fb66116b6c4d53c3363e54 GIT binary patch literal 653 zcmeAS@N?(olHy`uVBq!ia0vp^Z9pu*!3-py%=rEnNErn9gt!7}l0cNb3^!1NKuM5a zFoT{)Y<@%kyfr(IUb_48%l}pB8{RW8F#hp$aSW+od^`8{q{j+8F46*zl9K=Z&)=R} zlQ<_Qw9LHUJCak_!OBDTyf(uhbA}&HPlXsB#QUsbI1qm`=y*9}(CUMBGLNF}>{*$^ z@ZsLABHw1F1MJ_rr1N-6iZAmjFwU4)(Qeg$x8rBOp$gLh{^}%;=W-tzmM!1+WBc3W z9P^8V^nf=hjK9pNyCn`1{6ZvBlmt3;lbf7JhHra`0(# zPnJmPvCjP;74l^xJ{|aZ>Z`4w0+VV(ekxx;_m+aerC-^*wc=LG5F}>x|hfmFtKGeNn-MSEqB}&u& zrgci*vM}6~xqw&k&5_9_6}vxgU$II%_k02OhizubGtxhL?-Y4<%Fxa0<#Lx}c~bY1 zX57(|o&7uKXNTtwzx{=!b~#~}-2=_qgC2HoIM2^>ZGFLArZ#awOVe0RaczQ-L2>EE^fc`y4o`nw-^eZImG^Yuu^zmNA;gtIdqXfOM1dwRRe zHS;UC!%viNx5?YlwYK(;7;D4#ZwGc9`Fh))!RP$GFRVRZTI+M4JrcJr;1yjbA;=3# NRGzMWF6*2UngD9u9rFMH literal 0 HcmV?d00001 diff --git a/doxygen/form_18.png b/doxygen/form_18.png new file mode 100644 index 0000000000000000000000000000000000000000..2796cee4185331e9f1832fde2f4b0de3159b03b5 GIT binary patch literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG+!3-qt|NYVdqznRlLR^6~Ng&Ezh8w6spd`pI zm_g4YHou{N-kP09FWr6l<^QVm4ex<+b)GJcAr*{o=LT{yEAqI^pDnR^b;bYNW~;Y# z2i#g;$H%AgK}g-4;m2;(qZ}WOK5Y5KTqSbBEIW8}3d8Qz#+Tezvd0!lF@Bm96Z?7R zQ5gg7glgUWlJ`U6HB&WX?pFR!ozik{>NXRJ&$}lTuaonh)~_DMd3Ev`hr~0CZ>|~s YVwwGfsn?-oTNKD!p00i_>zopr0DbpX+W-In literal 0 HcmV?d00001 diff --git a/doxygen/form_19.png b/doxygen/form_19.png new file mode 100644 index 0000000000000000000000000000000000000000..b28732cd503d44b0f7b37182af91694699aa88e3 GIT binary patch literal 429 zcmeAS@N?(olHy`uVBq!ia0vp^&Oj`{!3-p;_>3fgltF+`h%1mL2}Ie;a04|6lmz(& zGw6B5<~Q`uTeI`%rMoY`{9l#6;XMNbql~AEV@L(#+qs@)hZT6*?2kOSdFTJOs{+T% zZa*)%E&7O6@}FbSH-`V(MhCvHVCXl@DQ>LH{8i1CmmSSp!BEkY_vGe@RSy}S&vLuZ z`am(O+;p3yWmOcrp-)#NU`>}VodeqsMYd3~m-tgOzYwx*6^<)X2*4^?v ziz_U*{qc%i#;sOd91!|o*4%Zb-dFVdQ&MBb@00EAuRsaA1 literal 0 HcmV?d00001 diff --git a/doxygen/form_2.png b/doxygen/form_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2c2d2f272afd00bedaf3b2cbb1ae6faff9a75566 GIT binary patch literal 550 zcmeAS@N?(olHy`uVBq!ia0vp^`9Lhd!3-qz^DnvqDT4r?5LX~g5{R;w;Rb3DC<*cl zX3+D9&2Q+Rw`S+jOLt#>`M)ZC!+Qn>#;Kkzjv*C{Z(~nSI-H8rh238vf@CGVIH_{nwoRnGN5^ms)%bVcM#1SJqWLc|CKke)va* z4{1MFHJ(ef?k-L}5_>f{KgXE)K-NFkZFd+Fw*F1pC@*h%ZF%3$ZC4Io^*a4ErFn73 z%O@Ek42?`Z4|2ZV@^pN`JV^gm&w^6PWNme@+>jwBrI9>CFPc{FfH`(BX z$h(i0cjXtyd{dcYEL#@#TjD;i@YL1bi?;ut(SPuo^Dbrfts84jyX9Xs^QnHIHN|kB zx{pwZ;@VQ3XA0rA%*Q7z*OO`DbN+heg@o?WE0XsfSNlfFZP@p5+qdj}1skf&OAB+N z=EkWc-eA)SI+Nh~TO~(tn~B*^PUn={zps3MqknSkl+z1OmgX})xZ4y{&hR7Ekn>#k z?;jICgruBmQrxwFIX}bwO_lfGRoU|DBuR-@Tka_J>nBqc^2}DFVf|r>mdK II;Vst08+E%bN~PV literal 0 HcmV?d00001 diff --git a/doxygen/form_20.png b/doxygen/form_20.png new file mode 100644 index 0000000000000000000000000000000000000000..bbd1cdc96d6bebd2ef56c1c3fb1073d11a92ae5a GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^DnQJ|!3-o{SMa<6QU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW9|Z5>FS$kP61PbI(dS3-Y-5YY47={rCR1j(_)D z&F`LjuA_GB0WZV9b{9$R2eYq7gv`43>agy8@6cCQojG^4Y;dZ~Ze7wm)jivS!S4od zUulIG@B95X!se`dTF5@{mC>CK4Du0f(J_@>$0p5N`@TMyH+7H11M~8PdM2}#HC8i0 Op7C_`b6Mw<&;$UmoK$N7 literal 0 HcmV?d00001 diff --git a/doxygen/form_21.png b/doxygen/form_21.png new file mode 100644 index 0000000000000000000000000000000000000000..2688de04fe2ee009b6841d31f617a00a3639d05c GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^W`M)ZC!+W6I2~QWtkP61Pb1(88R^V{e?^?TQ-M|0$`QDV2 zX-0qBCNA9ba<99_4@QO$;({rx4cikE89pfM?b5Z`9rT}v!Ec5hW95yab#iWz-~M_m zs0xsu`MvTYXL8@1M<4CC2X9N+=QTYd;fl)Ax$39B?D;w4*~`)ky0^HPcmJL-&nNfB zwi{MlVYPolRJ^uL5qF(+KHKxE%nR1jJ9fR4&c1#15}W*Wsmz2m7iMU7PDu)W``B;W z>Z5IIzwS3+*wN*={N>6&4QKm5OFy%Dnsm3CA>kRz718pjE>Hk@y85}Sb4q9e0F6w7 A9smFU literal 0 HcmV?d00001 diff --git a/doxygen/form_22.png b/doxygen/form_22.png new file mode 100644 index 0000000000000000000000000000000000000000..fb6e561410ab2a22ba508a1f0ba9c1580cba0e1b GIT binary patch literal 475 zcmeAS@N?(olHy`uVBq!ia0vp^0YEIw!3-n~n5$wzRDe&2E087$MA^%512qVg1o;Is z=y}BEH}ub2v-9YsyDz`|UzNV$Jp%)ym#2$kNCo5Dxt@844R~DVuQ@nPDf;{VT+d#~ zCG_`V-^}(&i=uXU88XOM7kpK3y#LjI-&f|z{0-m#W~jIxRO>$+ zW~tgEE%+d|{NXEpZG&~6Vpb+Jod5I2p}I3E(qU^-t9XMuzg|o2GQJP5m^(V2**2cs z+18`|x;JUD%NnDf+jd@m=X$q}i{OS+*}tdBe&bP*ty=GKHMaTpx+`Jqm-L=mX)kPAojb+Fd2`@7reEI8^K)}p zK1Kz7)Qsx?XcU_!zlbsW=He%wYdmMioy=Nh^QBt)*jm~7ZtI@CKYogbpPAN)Bcaqg7b)+IL%9k);lNPhWz z$DQ0)neM+6uRJ{aYLdotC$_D(CuZ%eHuw0t?a=HUQ*>Tc_21T8KUXDs)sK%4Oc$Ps zi?m3MZOIMH>gLTld+)hNhRZgQs-JEbT=`#Jk@vr-^y*BR)G1eS!QP|OtXIfp%LU)A zjc{wWE-ij_c7pB9UBT766!%JS^S@eUwR5(vrOYLl$LoYAZ92E-TjA`755G39&Rx;Y z>)3hLzd>7N{pX~;yz`&AoGrZk-ch%Eddl8ehuJ?!U;6uW?$LkWr|x{SPp$vuzU4o{ ic@8k!{5Zce?=RE5(`;e;bG&>&G34p$=d#Wzp$PzQ3CJD* literal 0 HcmV?d00001 diff --git a/doxygen/form_24.png b/doxygen/form_24.png new file mode 100644 index 0000000000000000000000000000000000000000..81d4a67ea181eb665f84de1b6d395fb864d72d03 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^+(695!3-or^+GlRDT4r?5LX~g5{R;w0U0Dv666=m zpyv^r-_SpA&Ca8j?!Nr;e^vU1_dq#2PZ!6K3dXl{4{{zb;9)+$?)8id7QgdnyZgvB zzEiMR;%v4}Q_evk{(F^b-ete$2uCEK=Z>RT^p(h4djQw+rM-t~-=_ab9(Mb)!P(j20B|ioK8H-oqG_r{2o{ady($8&Uw*67r9<#Mh8|OMgfaXSz3!yBzY_ zXcd%sySoG>$Wo9hXByliM?d#I$UC3>!x5K7y=##advS^}WVOB}El1_u#YaqvtQ-B1 zia$Q)7^bVT(t)FUX62x_hkOv#LzHr~LqG28+gPd5?%g34==yQMBG}_r1rBG%D=51s zSD*xzUe4;Ss5d{eG-&H1m2|4HbHlTiE45 zZSn%jxzQ-a>kr^Xl$mz5d)DUzn>IOELMosnWqYg7D3q71pR#rLeiM^}`o+k4YxFA|d5suFGV;{`eF2j)_FLo!}! zrVqe75pdRzgOb%Xit`ElR?G&If{rRy+Z8T&t-gBgyr=frOD$iG3!q+R58#~`odA55 z-Laz19Rmm8g9K~Rq|7#fmJwLu+dJI!St)P3`J(!Tu%4T6wE8h+03YPjmN*gqDCZVm z>&$!4fO>iLapBpuI^oxOTkE>df)Y>^1ColXl;H z#Mo!_DVpg=*t!>gy+z7+IjepZ?)zZ8ZI<=zo0`Y>Os~KCi~sYqgL7}5tG<2k;#1ZK zOAdtnjdRC6oQh>^-mRBmNa&mMearOa{?l!YWj5_^T@;)Z zhF$w>A~(+N$v#M_K}&hSS? z9mp!-VAqfP)s zisKti*>$lUhgfrV*IhZy$?#p_oejee***F786NFRc|#^&26B^nu5Fg*V5qUyOaK32 fK4ZiFmYv_3)t0eKER}ut5EMtAu6{1-oD!M<>0P$G literal 0 HcmV?d00001 diff --git a/doxygen/form_28.png b/doxygen/form_28.png new file mode 100644 index 0000000000000000000000000000000000000000..8c3e6a9b02e3461bd37f28aeb92ecf72433c61d1 GIT binary patch literal 433 zcmeAS@N?(olHy`uVBq!ia0vp^;Xo|F!3-oryoI}fltF+`h%1mL2}Ie;a04|6lmz(& zGw6B5<~Q`uTeI`%rMoY`{9l#6;XMNbqk^Z4V@L(#+t|}ZhZT5YJ__(BfBs(|?U|sS zdr~E{`W27yp$#70TN=(YeDK#1=V!=|)@1l_W1bH4fm{EY%0n+{8BF_oOPXf<9^0m05@FlQ9?KSgGg!DHI&#<16@5E9 zTN|&evwKwWNoY~7s-SaUE1#cp^2=X8^`A4BFFIYOoYNe$(Nv6UrFpa(LFCunBo1Rg}nCn7u^1++XR&r7iFGT6Z4!dO>yCubqp0 z&-8Lt%{2Pc`xz*kMQKm|4fz{Y}LGr7Ds~O!PC{xWt~$( F696F>wM_s3 literal 0 HcmV?d00001 diff --git a/doxygen/form_3.png b/doxygen/form_3.png new file mode 100644 index 0000000000000000000000000000000000000000..00cb9f0bccae1ed430d78dbd650a84881280c89a GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^+(695!3-or^+GlRDT4r?5LX~g5{R;w0U0Dv666=m zpyv^r-_SpA&Ca8j?!Nr;e^vU1_dq#EPZ!6K3dXl{5Arq`@G$GIlxp{C{kwgsQpg^O zgPWFC&naj4G21j+cZzTC$Ab3Lcj8Z;f4`vl(sYAn4Zp2#qVMlyRJ+P>;FRR80+7o* MUHx3vIVCg!0IGL8Q2+n{ literal 0 HcmV?d00001 diff --git a/doxygen/form_30.png b/doxygen/form_30.png new file mode 100644 index 0000000000000000000000000000000000000000..f9c8957d8900c28e5d1ad554fe34cda80d28844f GIT binary patch literal 427 zcmeAS@N?(olHy`uVBq!ia0vp^aX>7`M)ZC!+Qn>Mk!Ah$B+ufw{s8n9ai9RX`f*sGU@66|J!b` zOm9$*_y)1@Ii9kOm=1AoeLs9<{o^$j^TjwMSJbtA`A~s k?l@CfRL*c9{&3z&bGJgau8RAuA3#Cw>FVdQ&MBb@0QknM5&!@I literal 0 HcmV?d00001 diff --git a/doxygen/form_31.png b/doxygen/form_31.png new file mode 100644 index 0000000000000000000000000000000000000000..56624540d57f625873c5786644fd22fba8976995 GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^#y~8`M)ZC!+W6IF;5rAkP61PbG`WvEAY4+-}tjt=w1EoTZ-~g zjhAA>J;Dw=J9_v4Bg2FJ4<|D>tp6a%kS2I?+m5H_Hk|!#!q9W5>(}KPC!tmHMsq%e zMTK=Ivfj~M_NAv|OJ}!yZCL6KzL^Rqe)p94pPyoo>Xl@7YeTPh^u=w$ZQi+y?!L;6 zIg`Cgx9Y++^_AxTzdSHay5hTW>fAS%nQv_o&(@yo7qhrd+WFD#!ZQcw1Z8P!PvYNJ x@J&f9bnQ30doK-Rw!aU57Vz)Pi66bIbo0N=X1UU)+_?o5Jf5z8F6*2UngAJmgG2xT literal 0 HcmV?d00001 diff --git a/doxygen/form_32.png b/doxygen/form_32.png new file mode 100644 index 0000000000000000000000000000000000000000..5e565cda00c37c8617ed06cd6cc95f66d45092c2 GIT binary patch literal 388 zcmeAS@N?(olHy`uVBq!ia0vp^5kM@!!3-pqI(V=HDT4r?5LX~g5{R;w;Rb3DC<*cl zX3+D9&2Q+Rw`S+jOLt#>`M)ZC!+W6IXHOT$kP61Pa~(GwQV?*7KNQZPQuY5fmk%4q zp=aS{dMmOfY}gv6O-1+Hu9NR}xaC@%TqdfKF#nb4x%)wvoqwxZM|zn|wiNctryDkJTa@`F5U@wUDzA z-{Rf>Ml9!0UESLt**Bk`+}b`dL~n^nz-+l&m-v1*o;K!d@axaW);Hy~_FKL7?KZ0h s>81J|doD42&sZC7|IeP`N59cq<~bkOR6E1A%Y(ww)78&qol`;+0DWkZegFUf literal 0 HcmV?d00001 diff --git a/doxygen/form_33.png b/doxygen/form_33.png new file mode 100644 index 0000000000000000000000000000000000000000..fdfe59ee3aec6ce0f600b2f41e1307ab9671be1f GIT binary patch literal 774 zcmeAS@N?(olHy`uVBq!ia0vp^T|lhF!3-p~i*39LqznRlLR^6~Ng&Ezh8w6spd`pI zm_g4YHou{N-kP09FWr6l<^QVm4euEkm`Xie978G?-_AW*wZwp@rT%@IVcq}jvKwzS z%vL$0^7Dn|j+NfrvnPdU#WVh^o{^zo!TZ6ajdKlag^Z%4&4I@oj`guL99LxZd}h0X zgL}5?PKNV`)LE4ed|$Y4`a~f$278A5TBaSWkL!ywj*3iT-obo(?((piwTv~=!G&Ib zpRWAqbM)DR=~thxic#)7x-@%xbolloQ6ko=mfK!4uDckpaPp$O=8!VU%2dni-^zQ} z=Wteu=f(Y5$h^bNyEUeA`UyYQ;>~)ur`34{-(0xKEu&UxuDF)f_WW=yhVL7412>(D z*ONA8sA0KY{+9Pm@#mXwW3rdVnR-6>GH0>)8~2G`xs}`3u6J9!zQ}U!>)c6N%rOsT z_AW5;K6;9OLF4>oFF(lKKlz;Z=^eWVeX3>AS+8#|f1xd^8x*NO)lz1A>AMp)FTG^{ zU-tDrz4MZVq~hACdtY6WGW9xt=9HNDse_3tBkoukb-z$h+09oe^8do&g?y{_)}PvW zY5STfXRpP~JS?;|@6zU}Inj%PW`Eda==ryef1TM**+~W*o9ow$9tWZF{l8Gm2+P)>28v z2JIb|yBq9hW$c~&3N1}T^}p^juz>p^%L3aU({awc2J%1AMf5BEC<31iUPfij9<(D&^qwm z@#hyinfZ$s)s!ez=1%*nA*wyyL*Q-rRl6GshF%|6l&?5dBkmIyExERGSHNazW*Y{{ l9K#QXckJFSU)-?&fIPDu|6}>OPzO+I_H^}gS?83{1OU&bNu&S( literal 0 HcmV?d00001 diff --git a/doxygen/form_34.png b/doxygen/form_34.png new file mode 100644 index 0000000000000000000000000000000000000000..b9c4f9e394e1ce23c3f0d07895660e5e1673bc31 GIT binary patch literal 460 zcmeAS@N?(olHy`uVBq!ia0vp^5kM@!!3-pqI(V=HDT4r?5LX~g5{R;w;Rb3DC<*cl zX3+D9&2Q+Rw`S+jOLt#>`M)ZC!+Qn>Mr%(O$B+ufx3RI44=ZrQOcCf+`}e=TdO`24 zFOREg_ed_kt){`Pb0eMMhy8>d3d8F^ID;HRv12ME((e*56^v5cA>6#p5M! zavv){;$RRjaZgh%@typ^XamdYE|*&;tCPf=W=>!A@}-7G%ie1)w@-I5{jNy}RGRs= z_lD~vB@dpc_QmDw0ePI&(Xm{s*6(tN677p&p8t14Z%FysL#o%8EbmEbxG()tZ5vx* zt?0)U2Uld+d0kBRRMFlMX{H;q_@cr+S*Od>mI>~eerV=odQrM2j)u*Phvr*B#r3xcGkj>cpC?xTTRp}2C$qgD+p-I* R93Fw<#M9N!Wt~$(6976Kv`hd1 literal 0 HcmV?d00001 diff --git a/doxygen/form_35.png b/doxygen/form_35.png new file mode 100644 index 0000000000000000000000000000000000000000..2386ecf4aafc00df9832808a02842679c1cf002d GIT binary patch literal 455 zcmeAS@N?(olHy`uVBq!ia0vp^5kM@!!3-pqI(V=HDT4r?5LX~g5{R;w;Rb3DC<*cl zX3+D9&2Q+Rw`S+jOLt#>`M)ZC!+Qn>Ml(+r$B+ufx3Q-uwJ7ks`Ou-D^#A|%*$qur ztBtLXuU*vB?@&HTt%9xLf3l1%!=IZLj0c)onHu!p$bL{x;${&4Et-)WRXqDghXvDt zqgEFz6-~ZgZNGg$CgR=mVZDivn)tu52%@uX07(7EGrb|U^UgaRU^4zN9Qsai=5wnqkLl_06ul zZmypMyLg|crU@3GHTHfe)XP?A#^D=nwe5i?*Ww8IZo6+i?IKr=)6e?FSr=^Fl9y|I zH}76b%5Md)C{DRqMb61>o^78V{aCP3>1{~ZM^aBH#>v=w|6N!^Xr{%O}5{!&eqZMTl*X+Iy_zd KT-G@yGywqmH>^+q literal 0 HcmV?d00001 diff --git a/doxygen/form_36.png b/doxygen/form_36.png new file mode 100644 index 0000000000000000000000000000000000000000..48fa5d792f7db55fb427cbabe8b74a36a1325850 GIT binary patch literal 768 zcmeAS@N?(olHy`uVBq!ia0vp^Z9uHV!3-qVY6V6EDT4r?5LX~g5{R;w;Rb3DC<*cl zX3+D9&2Q+Rw`S+jOLt#>`M)ZC!+Qn>rhHEq$B+ufw{vfATB0T3B3^!!`~Uy#!5RtK z+5H>+&lf&xR8X$UU*fT9)1>f*dhun(0(00ZgbwpuW3uTokhD3lc*C(imIiml&KYMu zo3u3gE(&UR{y?2o`GEL`&$l%a89%T_}pQkL2d!FX+tlGKZ->lP36S>!#BqcI` z5G?JkDCC_k#=Rr#z&tj)tNTMcFJyG=zrKJ$K49Ap6W`Q!FRSfmzy4$9U9?BzfZ6sO zhC5Do7e(FPnR14qpi$uP!;TV-gwB<7TROw9ZwxEDYBbM4-c`zU-OJNIUTEz)nJj*J za?7L8up^2pAFp$sxwK*D8iwj0mC~UXU;l5+y*4AS#!}l55pJ zWrZJ0&+h)6a&^Yy)9jgR-$Z(;_&*X%-CF9UvGCBL{o3`NDbp^V`L<@_Z|A?+J{OC= zoKnj^w=3RgMo8@1Qj?k0e3pKbwmp2bbXLl~si(L8lBrQHxpd}K&yCIR`s4Cq!cU7` zd?0H)UFPhul6!k=R&Qq#Z(AE|aLAfP^VaSwYvyP?pMKR>`te%xYhR6QlUHw>GzdVeMzNqu(bk<_Qyq|MttUb3hllQ#JvFXR>Y%@>oU0GAPl;Pfjzpopo zwq0Lp$)NYJO)pI=1jON-@DQW-wxU-p2uKCmP=WGucZJeEd zp6k3aHS$?vc`njxgN@xNAryEpZ literal 0 HcmV?d00001 diff --git a/doxygen/form_37.png b/doxygen/form_37.png new file mode 100644 index 0000000000000000000000000000000000000000..f4cdeb796920cbf1e77dc4adc8bbfec29e35775b GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^AT~D#GmtFY@J0(r83g!*xB_XCK$N`NswPK zgPuohenbDfH9L=9y8H6W|5fQ5-UH>VJzX3_Dj46+J;}?U$ivK==p51a<-RVzhf>#u zKN69T`M)ZC!+W6IEl(H6kP61PbI-0jqQKG0-?8E^=llQLnxihy z_bFa}_l_v%G>-XC6LzyV{QtI-;Xv~8NmU>C?jMY=P-58egV|1lA?A2SNEuO>wAn2qrf{u`BicO|y^^WuDIW53B21PcJSN{K_S5e4`>< z*SKkFz@f8$G)?bL+QVQ}CGnYmrDw-Vz8CL*FAw|s@3&=~BEy{85BdM)uYX}&wSi^1 T_hbLdpdj;f^>bP0l+XkKNT!Ww literal 0 HcmV?d00001 diff --git a/doxygen/form_39.png b/doxygen/form_39.png new file mode 100644 index 0000000000000000000000000000000000000000..f0cecd17e05cc8eb70b130f15128274bdfe9f7db GIT binary patch literal 408 zcmeAS@N?(olHy`uVBq!ia0vp^Za~b#!3-o{7+dcFQU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW88%jO?B+jv*C{Z)3eD9aZ4SG5omx&i`%98A)pI zL(k@wg=7dfUoeqlVEA`-Z#lzlhx*JqUO^z@BL!-s+tf zci#Tqc>PW71)YT_Oh1-of0>eXPxrUU^N?ws3?ItmuZieB=`!B4{0sBhUUsAD&PC@z O;p^$@=d#Wzp$Py+-JPfa literal 0 HcmV?d00001 diff --git a/doxygen/form_4.png b/doxygen/form_4.png new file mode 100644 index 0000000000000000000000000000000000000000..602770c152b218bca6a9492e242a0820e48ae5d2 GIT binary patch literal 487 zcmeAS@N?(olHy`uVBq!ia0vp^$v`Z?!3-o#gAGprDT4r?5LX~g5{R;w;Rb3DC<*cl zX3+D9&2Q+Rw`S+jOLt#>`M)ZC!+Qn>#xPG8$B+ufx3Q-uwJ7ksY4{{C^UweLeoUW= z=3YJ*x2?;_!fb+{mE<{w5A`|B4f{9j{r@SfGHBAxrydLin>UIdsBr3I>p01H;H(Gp z_Ijkh8yec|DqSBZ@lJ{h58J~VA1tT6 zr!~@5@uf(w^7PW^^DLgN%ZmbDHd-HNivCt{a;IZa-?NHG0qTJw%OPz{b4Vh0HcW*MAm9mp<&g@&u)3r2S{weXEptI`uwcTlY(hM~h sZ`E(Or^@i5)OazwU5q=!2W#!V`xY_m&9S*58$r?K>FVdQ&MBb@0Ay^xXaE2J literal 0 HcmV?d00001 diff --git a/doxygen/form_40.png b/doxygen/form_40.png new file mode 100644 index 0000000000000000000000000000000000000000..cf9bc7ff6a9967f987e5a2d4e7600ca386caaa8a GIT binary patch literal 323 zcmeAS@N?(olHy`uVBq!ia0vp^YCz1-!3-q#JNPC6DT4r?5LX~g5{R;w;Rb3DC<*cl zX3+D9&2Q+Rw`S+jOLt#>`M)ZC!+W6ICQlc~kP61PvC({o6?lxNu$=PR`9JshlDD%w zFMr$WzuK^OYWqVLh7a34qC&iV89u0H9aEcdKK0TpB}v@_Err=Ko=NIYvrnY_4|`+& zew|40oS^->z8h=rZTz*dK;z1bE3&owjiQQw)C5(n-4gow%&QBB?X_PyGN#%w9Le_* zJG19V;?fS?PKjF)tJ^QH?&7+-eG~iq)Sd_NZ%&=f6TNWu=ni@2?DS1v_HFvxR^6q| b_#oVdQDGPJpFN%D!J*;l>gTe~DWM4fzuI;* literal 0 HcmV?d00001 diff --git a/doxygen/form_41.png b/doxygen/form_41.png new file mode 100644 index 0000000000000000000000000000000000000000..a56935372f6c7ee338387390792a01ca180e5f75 GIT binary patch literal 427 zcmeAS@N?(olHy`uVBq!ia0vp^Za~b>!3-qxmU{{TDT4r?5LX~g5{R;w;Rb3DC<*cl zX3+D9&2Q+Rw`S+jOLt#>`M)ZC!+Qn>Mk!Ah$B+ufw{!1KJFLLbVqdQ;_4xPxw@sPS zo0s2?d(ZluCpSQXy@H|Pf9D-nuL!2X^9B5jHHQP<)NzLN9tl^NI;rp(!@CbhbA*m9 zTPG58b;I4#ovPE8bP0l+XkKW#Oh% literal 0 HcmV?d00001 diff --git a/doxygen/form_42.png b/doxygen/form_42.png new file mode 100644 index 0000000000000000000000000000000000000000..149c4f8ef207184a244cb112599b180a3c8b14ba GIT binary patch literal 435 zcmeAS@N?(olHy`uVBq!ia0vp^9ze{`!3-n|@+ubsDT4r?5LX~g5{R;w;Rb3DC<*cl zX3+D9&2Q+Rw`S+jOLt#>`M)ZC!+Qn>MkP-d$B+ufw{yLVjwtZB$TKA;<`noAz2-d#(zdrug8^snj#p=_(SO1 z{4C#ncWwDEC+vT9An56&%|Fe8PBWaJ@ysggYU0y_j+>_JV&PxBPW<96rou(Sv#00s z@-CgccTYvvx-0u93EsLa&?%hsGO6|OfWF*S{TeW$JGGlLC>^N%#1jUm57$T7S%|reU9V@%D$Z-AH z>xCB#n*BC1yjS86mU_A2h0)#G4Q{`mY8;qt@OthGGpByT2w&fA_kNWdv)z$1SFk@8 sBR>0Jc%sGqKVgjjWL}p2XV`y~JzR$E&*^u2*+4<>>FVdQ&MBb@05uG&MF0Q* literal 0 HcmV?d00001 diff --git a/doxygen/form_43.png b/doxygen/form_43.png new file mode 100644 index 0000000000000000000000000000000000000000..f1c8800abaaa9a72fb206615dddc84ba0503f6a4 GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^96-#&!3-ob9C+3PDT4r?5LX~g5{R;w;Rb3DC<*cl zX3+D9&2Q+Rw`S+jOLt#>`M)ZC!+W5dxu=U`NCo5DyNp~6iX5zgo2TAdvFCrT@(ljF zPG1y@IgG2975!(q&$PICiKbVQR;HKCTaLK8>x{}`3|sGT?^^?MkEg4j%Q~loCIFf8 BF#P}k literal 0 HcmV?d00001 diff --git a/doxygen/form_44.png b/doxygen/form_44.png new file mode 100644 index 0000000000000000000000000000000000000000..8e3b84ebb3fcda834ea80c4a9f10907ce42b6469 GIT binary patch literal 555 zcmeAS@N?(olHy`uVBq!ia0vp^^*}7Z!3-oh4hF0PQU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW88%jI%sl978G?-_G@&by$JJVg5(`Wv2K3Z(}}Y zw#0Pv?7KfaZwowRTy&S|5BGtPpiYK*rFBmpyJs>4N6uvvoF4r6?E5Lq2YOqME1&!o zb%niPrtMmzn0E}pf&ZMJaZ42m&wqaUc>&`G)zJ91;=P5tzfEZ`{8=F6eV5frpi=m3 zMac5}da1HK`m!dTMl*|MKGdz>|8C>mqKEm1?5EX#5I5xC|KVuHOx6EK_y6j+=Jq3W zSIVjD8|St%?l=*3SZ^b9P3O~gt~tframP=_zyB$}tYKzp{JBp%-hFv{{ZluCj{Vod zZ8u{7_RBKN@D>h}cIPRt@D={|PI=|C@c!26op1L)@7aIi)NWq6j*`pr)9%Mi3f3yz zWB%Y!`R*$Rx?9`c)kHu2ee>~3E4RLVmR|xgxAGlb#VL>A z%lX!+*B-03dPm-Ou@&o{5^(79nf^&yi?2Iu@sks?%#RiP?eufbJ-eiz&&rQ_&5PZt z_A5j7=BC}}y+3#}8cfdqeTK=jrhALH(YE+!Tn#h-+}h`E{O{%e{v}_S)t_*Fn%?|W P4ix2{u6{1-oD!M{1AzVs?B$mOfM=R1NdOuE{o`H$NkRbN zk;YsEHh|$t0iFQhsTLIC3HIV%(&Yf~Pz%!Ld@5{lya2#sO^TXM2wAB8da$4&i=dea zK>wI|GKj?jz%$KUsVcQ+m>R%AhR6#x!q^sSAD19+Jw zQ1_0s9dICRGu?aLK|4&Ebd+rL#X3T2CR4;KIiOSLpB?AzfOTg}#UUZ>Mo-fK*=oU>=Y zkR~4hF3iR}o|4BjTzcgSU)aaUJV{0)rvQ_SGes`aowLUAR)=fY9BLC)*tU}r02pm1 z_Vrjfhf~SN5*ooPF`1c^H7)x>?X4{+wRNM!t!4az+nSZAht^<=3}tH#ujMjZm}{|OY!$B6ma$+! zMmr1h`lrF}SEyga*43u1ofVV3W>LUF9sppp(L2JPWquUHh%zgiM6#4HMVLW~0CbNc zsfDinQs502uB~zkb0JYGO-?6Gei`M5yu?K>q~Uvn%-|IilBxoJ%5e(8^TU z$&0GUbQI#dWo0u<;%|p401OuG(og6%OW(A(^xj?}QSJG$H`2LBuyIwOWV+O#Gg)31 zv$fetx|JtF(jUPl!sI%D^Tu*6UBpN4{S}?$T*?H1{&8C;C5!YPKmc&GH*EPvI!LC7 zc0uLRk6_DQyS#%-WnNb)opPVNbSu0@T5cl;0DNI)^55B}=YF87-beWdu#IL~*!_0w zYuI-54sQYAf7y3WyWRJbkVq5#YcT-8pKRpUp3<@0k1_ywwCM!aLD{!bC{Jq+ie85; zt!szP8Qejgp9b3{kC$os^{#eu?AdZ%;(i=#2#FVSs`ioxIzJIMO##m95~#M)*en9y za;i&`@i^E`M)ZC!+W4yjHioZNCo5D*l4~60}kzKBjtksw|8~=*za|i zd~r?7Hg|@G`RiAd%`)-IU6>ianak06Q^{lnZ<$$_8NbOI_$?1}D%AFxcK^ujRmpAd o_)cqmTrS#e*sp%YvG4DGhHY+)o6j76C<}75r>mdKI;Vst08Pt9jQ{`u literal 0 HcmV?d00001 diff --git a/doxygen/form_47.png b/doxygen/form_47.png new file mode 100644 index 0000000000000000000000000000000000000000..8cfa8964e6964d0cfc9ea28fee093edff921d93f GIT binary patch literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG|!3-oLGuzaFltF+`h%1mL2}Ie;a04|6lmz(& zGw6B5<~Q`uTeI`%rMoY`{9l#6;XP2U%+tj&q=ND7+>2a?6?k0xBc*PaX8-%2FFi9f zqkYOjIeoc~JKjQnnHu&_{$k45BTy-QV8*n-Xy5q^;!($rJYKf+%xU+Zb2!FVdQ&MBb@0H4QGV*mgE literal 0 HcmV?d00001 diff --git a/doxygen/form_48.png b/doxygen/form_48.png new file mode 100644 index 0000000000000000000000000000000000000000..a3aad4e06db1467c4b8923db4195b5b60c2cc4d7 GIT binary patch literal 1148 zcmV-?1cUpDP)vF3&5QINnkU$3X{%?DF z1RMv)P>FXq1hFq1@IKrF^W^;UVosIr+v5eCwyA%W`GljPvhPJ`~bee z$7{_)4Qn^WY$fQD@(;nz7U9H45pM2-bHTXnBLLotZ}5rAwX12#t8}hJS3GLJRCSXz zmRwhz8wz36wb$Ga5diPSclvG8O0WIa=|2ZcG1S&%Q6%h{)kkymHm!d45dd$-i+q;2 zCiO~nA<@Pj`0OKq4`+PUD13J;oGPO3{agWp>wRt#8a(?`trY(&2KBx4{o~IfzS<66_(DuAch+9X>Yp48%)Pit_1>tH&$@p0Mqf=iY~@NO}K5X8sSKGYbRO*}>%^Qo(y z09=DE-^PuPADthGgL60O{21M={73Jmf~mdSL1ngH-9>2ct$bWqkFAEiO$~4vw2h)s zX^mYweBahI-x@=0InxR2HbQ_<0gd|0J-ike}$0~u{v5*72 z1EZ(do^AU_JtX-aq|E9v8<8w#ak*`LLiA=6`-l@gNUJ{rJm9NLyR)ACYl`=2``i|D z(YMqmkxN-)GK(xr2)gU~(lxaYeQY-I5OJn&5#TdYT6!Dc7>jtG1ez%Ve8#E&0G#2A zehS>rukdMp_u?k}Cw%7BngRBBl~2s7P4he3w5@}@TEYi8p6>1RcBM&TXOE*b)~-+c zbrS=83x1OWfCs$Dr$lmI{7zGN+e0O3ug2+?s-LDXOfJ@7rYN70TTH=}0N}lNjZf16 z1uXucDQ3L-C(QJ=VS+s0JZ90~4w2Ujy*VhrJF(*vRyA*9XM6^85WV_=PpmO^{c3mB z$uF(Jben1|3{#9&OMtiHwfdOfnei=t*Z8b@weZP(?uu1Pw-GmXW;6hA$7_6?9)@Z2 zyT*rE$}ewh^ZDwjb|pUQv=rS z?75lZkg}M{Mz5fAQXhc-9&T4PHoygNRm}kKTj1v_YysdZ{IUW8T!lYTJRO4fUIqpL O0000I9FX4F@o#>39=1$@?zyl=9(jF+r9}Z|Jzbv zylS)a_Z7FNJv+>*bNl%c)uqe!HUvDr#vA^(qg2Y&CaF1e{VGUH(*F z{C?Qe#?x%_%#glFZT06p59dt0H$P)vl-{y^-V&c~`xJS8Hd}MIO7~aq)Q?+#wg3D( zA^S<}*7&(8l2eZvyj#e0e(vTBwjXT?QOB){`M)ZC!+Qn>#%NC$$B+ufx3Q-uwJ7l991s+c`S(BHTy~z- zX7lfxLZ>+LsLU-rV=OUBgTZRH*XW{3+ zuLtsSZH=ugOr4<2aObG#tm=b|1(iMLUrjYEkoo$y|ICEn3k?tMRn4s0y^2%M`u2mx ztA3{i@Z3(a&i0+7%NBju)bm`_rttH*qRF9`jgr*Q_ZAfiSf?Cqa50Q8a=0XYrfd64 z@1oq-t9Ru%K8kW=b2)BNdOvjbf`jLZB;GdOt1!Jj`<7_`_8YzvY@}aGv+bR3V0}dG z)1_;hAFa0HDAJ$OS8+x{Ut+4Zdt9xgu2PT2&s}1t+4ij}G-@|GEVO8g+Wv$cM|93| zoHDSSThaH}IX7nFGP9juRxWvQ& literal 0 HcmV?d00001 diff --git a/doxygen/form_50.png b/doxygen/form_50.png new file mode 100644 index 0000000000000000000000000000000000000000..602439ce48c6eb72b315f4a2d2a32df45f95ad5c GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$3?vg*uel1O3<7*YT!A!6Aj)2b8>m5`B*-tA zLC+&LzoCELnw>{4-F^Ax|Ely2?}2h|o-U3d6^w7^Hu5$YaIoyZGTlq(&HlB9mqfNJ zJS?iWW;pPF$=m-On`daaE#fdO@Hljq@xAuOyB+26$}d_y)qD=E;LQJUR?a<}QJiyk QS~kdep00i_>zopr0EQtvJOBUy literal 0 HcmV?d00001 diff --git a/doxygen/form_51.png b/doxygen/form_51.png new file mode 100644 index 0000000000000000000000000000000000000000..07f206f7615c61723cbe06e4966bd199f4a740db GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CP!3-py+uy4OQU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW9|ZU{4pvkP61Pa~pXZ6nI$pTf_oW{^zc3S#?oT z@8=Wyx8|~p50-!UwADt_k?n`pNwt;d6gE0;#T8Vx7vKs{gySsjEU0rl} fPqxma`|~Z;GY&KAO3n-s2f5YL)z4*}Q$iB}uv|iI literal 0 HcmV?d00001 diff --git a/doxygen/form_52.png b/doxygen/form_52.png new file mode 100644 index 0000000000000000000000000000000000000000..d4c8845c146ce96bc21996fa5502d1e3cd98241c GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^azHG=!3-qLp4dMCQU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW9|Z3QrfukP61Pa|8L96**koHCL=%`+fggrmMZ# zyZ(Nhouc&YWx_FTh6D5BSQ*4xCsn0?IcQ_}{`M)ZC!+W4yhNp{TNCo5Dx!hcb4S1aAKX!R{{_NlU-43U3 z<>i*ImtE+Y~h=*D|iP)!@c7rwMj?}fYPpjl#9y3{- z^JL}}xvq!S+wQJnt5JQFbLQ~s$ANt-Z+&m~-@|Z9j&bMV+s}GH9`JPab6Mw<&;$Tx Cp-#&H literal 0 HcmV?d00001 diff --git a/doxygen/form_54.png b/doxygen/form_54.png new file mode 100644 index 0000000000000000000000000000000000000000..1d1b7062747cdfca7a51c09710e3f1b849eba7cc GIT binary patch literal 569 zcmeAS@N?(olHy`uVBq!ia0vp^VL+_J!3-onS>F=^QU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW88%j4M1{978G?-_E^#>9zt-i~WY4gY6&wiLBi7tHRUWm*_g?YrEp;K)CobkKbg_+DTsrA%Y}2{MeTsQvr(fqr z-(`Lv+B@y)s{?N9FMK)qZCQDod76@M*;MCE9>=DyFfG{2`|2-@~+jJFDTr)>{N8l+Vr-`M)ZC!+Qn>#%NC$$B+ufw{uVD9Z}$M%{Sm|asTmu|Jt*M zTh45m?PosK&8XAnL2~@;HH;7b&tPrXzajR%%*Rc&%(HG!Ta#qNaOyc5!|It6WOfH{ zP`F+jolx8v&Jc0-HxtA9Y5t0a>BZGDSde|>4bXe9mfV#1m{k#+B1FwXnW zS)ad2!qYW|*G|Ikm36zzDGsF!nZTR5X@V;0-)B`k*N*eL)NaJGsNCoR2Jg)mCpS(IX{?c~elMcxdO&=)=*nN}$0Uzg==4Y&cbwK7fBH_V z?U~0j3l(*H#MefwxHXx*xpkFo;CsW5Iw5a6Kl#2CE=UjXv274v7?ZED(|`u;l8Wq8WR`EWmX4+XwOtHaY3vUz;ZDAAk7uEbkUmf%T?O4R^oY y#&FL$Xi>UGRI`Da&Nz|=NQY5OZRqv YU^}nO9FaMZ*%IU}Pgg&ebxsLQ04P9K5&!@I literal 0 HcmV?d00001 diff --git a/doxygen/form_58.png b/doxygen/form_58.png new file mode 100644 index 0000000000000000000000000000000000000000..90bed613742e71a3db52d0b150a5105fb2118ff3 GIT binary patch literal 1571 zcmb7E`9BkU0RFD!b-#I=@@Bm1t>kEPy+YD*-$TvSn)8E5#>i1DsTC$(=g1L-8nzsn zt9R*;vDyl={Ea;&MA$8 zUMB0kDBKPPnKTNOaI#N;pNkELcSuVZVA9_NPF+B)dx>nSuTDQ4su2rVPS_}DrnI|7 zRPXGwMTO}~JEk01yidxfH{nYkY=%b}oifD`-h;(}+L}t)fK4SpAHg#woZPJDn7e^uifr>&1+I1p+&6*Z0ITnS*s~$ z^U>5K)y({i=A9SqRfaPLDyXqjemsL^f3`746fjrBcf4d!21*0rUz!b!XTaji+TSiED-KSdDj8jvbf9F9EH%kT8B^^RX8K%(JK3#! z0JpzpbkA`5zM-@$8Fi5vv%Y$JJ0lxm=DHi<@n;-qVse|e<(NTPE~0>bFt`=c?kBSa zJzi)VAyp=%9=SoXC&>^S#Wcx-{;9xDEAG~b_h3Um%ShmDUVwpG!ir6t1K2f zGwpS*_%0NC`#koXGeS4CGat#)0PQ6_1`W4awC-hJ9@lzIFHUy%{Cub!uJu93Bg%Lc zQ}Su`msg0iL#CN=IKtJ?*m@*YM~dcMLUfAi3fuFkOHjWC5YC%* zq_u2TPRtSDEpIM|J=|Ro;FR&a>Oy)U^3vME)Uhm#hZsEOFLd3E;p7{3?+sjOMjgLo ziioR8SI#snkhn_rn}-ZoKEEjDIC3xyk_9xvA7?gjT7GW4oP|iMtC!*)rVMA@$g2&O z>=EYO9DRJLlrHYl}htk!@)8|2Z62TizCqXivZY;-O)g%pi{Th#7k))->>13Xt!Yqm zUg@CBWG!Q#k9Bov&BUrXn3G*zGfDZ}X0GpbUGt?30J=YFX&8onAIv%F_3fK-kDz{E z!r`HYqv%MYz^!nmqC~pBiXbXzbU{*8zZYFkFv*E?^{cO>CBAus^_-o9xi8;VYn}@3 zagFNJwKq0EqhGG}JYGP<2Cj5sK8-XJkOVp4ZB$VA9d5i%t!86q^iuD(1$k_6Tg+B2 z#-?bw^%mZ7ujNEbVwvks3Hk##CTfKrQwE}qyyVD}RtpFEygh#y#J%HzZoKP8?V&A_ zh__!S5ZWyg?rKw+w?J)}KZAB_lpsUa4s7qEt$)q`!hRs}Jj2W)YW+y@kcM<~eAN$w zMPhwiAfNxvtydqUy1_$+e#$u(@&^SueVyF7lrktaLCsp%>{JU|u_|~#XXYaLrXyxA z(7ZwPyT}T-#HkSdoRR3xNuF9|5;o$>n*H7kBlqfnYJJD^t;PsYnB-V z)*I>+O*6BQwm0b7r1%OM$fWwKk}!GeF8#zK9YME>c=j`M)ZC!+W4ym8XkiNCo5DyLWkyDsZ$tyk38M)tmiq8z-Bb za&=dbkC}RW6XSvO<5Moxvpn#KFg~QrSuk-`a!iA_0P_+CJ=ZJim>&F^xAoe_oWT2* zKfZms{Q29|j}JfYxtp-~#-r%#5xh^Y?v&l1{Y)ZDyNq{3u+hTfHCexxzx>;L`4{7< WSxjBkh5Lj-Uh;JHb6Mw<&;$UpBwiQ* literal 0 HcmV?d00001 diff --git a/doxygen/form_6.png b/doxygen/form_6.png new file mode 100644 index 0000000000000000000000000000000000000000..5528b1c0058a87ca5650428e948f194218f083bb GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^=|C*R!3-n|3k-GwDT4r?5LX~g5{R;w;Rb3DC<*cl zX3+D9&2Q+Rw`S+jOLt#>`M)ZC!+Qn>#u=V2jv*C{Z|C03du+ht+P@-p+oS*gZ^zy8 zo175CVm#y9LWYIi9?yz)K9zlN{UDDM!wxqsqYV;|K2F|rCiz0IMC|IVdbHQu+xBQ)1&L{oC zM!dk|R=n-ywimPB70q9C(K~+Gr)l@Iew*)Jdf0B~ryaZI1geyt;CLXlaO%-Yn}3sR zf6aC8752|bEuMSI_UTef{)y>tpUitbZ?zZS~C6JtcuWuN3&iidudO;@yRf9;+k3e`oGSI zK78Hn@w|PT7~&n5on!nUc51igN7H-B(`4=jYp#fDST8tDW|0v4ymMQpvo>kWOIp@# zFM2@q(N6aBPu_20{=xsFTZi$V=q>$*eD@1+%r)kh_^(dB&Ckp6K-P|--GcMxQ>oXY Ppa}PL^>bP0l+XkKjIQoX literal 0 HcmV?d00001 diff --git a/doxygen/form_60.png b/doxygen/form_60.png new file mode 100644 index 0000000000000000000000000000000000000000..9cdaa04c91ed3ccfa9f4f3557638548b9ceba82e GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F*zC3<7*YT!A!6Aj)2b8>m5`B*-tA zLC+&LzoCELnw>{4-F^Ax|Ely2?}2gwo-U3d6^w7^p5$dvgTe~DWM4fhVws_ literal 0 HcmV?d00001 diff --git a/doxygen/form_61.png b/doxygen/form_61.png new file mode 100644 index 0000000000000000000000000000000000000000..5f3a433e59e7d6135f3f6f3ac8ab303163988ca0 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~e!3-p0EYEHRQU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW9|ZU{4pvkP61Pa~=5_3^-V(U%QaR{OAAnre$WC zHa{4Jo*mfqnT_Gc#&*fYtITJKXEzqF5!dI86Xh4F=N1qbJo`H2OKhOM$QF@U`M)ZC!+Qn>rW#Kd$B+ufw{vfAT5QGRGW|Up&%gisZH*+7 zoo-AH4i?U`*LW$?;_aQa^Doy2?Zicm4@?dy&k)-n_CT`b<^#rgjizRT4D%YN*v)4D z*?KEY(y@X4K{_kv14)gA>_6nrFno}hqA7d7*plf%{zChz>j&3=dU9Q2dd&2Os>dyP zrOT}sJ}Nw@w|P&F1mnAlSMxvDxd2;>PsGp&e1NgGi8SX8<`(Try@Bx30a`czWn;rC34~qM%-b)=pDDI;xxCqA3(Idz-|Wm}x4Yze z^+|YLH0us3{df7r(urCvzZ%}2een3LwwLtz)3>+J-5)PRhie;bT>6` z+_59|pgns zmp@wipQS9{|EtgQi%37p^4xz_u6p2XCAS@U5)9!hCav{3koi5I@q=a`FVBNuiI+G3 zS2I0`Hu(40knIQii?^Z=VFN>aSy6^mZHvdV58IQlG{(F?&{brN@RsBD1XO8?b tJ@xME-K`6kq?K2+m;FoOW!TU0pV3f)pL_R{mu8?u?dj_0vd$@?2>^v2U9lV{Kf(dw}O!njI0~x#pdpNC3|@DS_EN zoCCSOUqu!H9%^wmFabQ*j8FjZEOR};qs=(2{+*9=o%U8)q!7+qw{@a zGiey$<*`EtaBW5#&h=lkT>)zkASX5nYQy{cg0ep|6~YVblFiG=0!Wr#rs9BMIYMr^ zzGA<-;vit!T%XD8#hYb~G$`!s`cdu(fV>AtB0;CwpC#Q{64&MAEWx0Z%f`L%1qm^kxs zjJ}319N6ARK^3|%JKc(73aKUg;2?i;!$EuU;J|l2NhS3$jUnx|cg2B;Q}q405hU)x z!6b69hb^@)>j#C5O%!n!?JA(ELKi%fxaoR@G%J4VL?hhMNG%7cNW~QgZzoGx%6|ze zQ8l(g(ttM{1f<>tOwIVgfy#lGKY+&KvMlFQe=@$xhdN90YN<3pI8ZEpWpRZAiIsm> zA}DJS%ez|=cMj5)j)Jo}xpR=;b%Rk3&W_zV*gO<&tx#BLP0fK7dJbiB-L`%j_o^rj z2b1XCYK+^3a^oN@(nwOKJB(qF4z?Aa2b~2u;9zZ zQge_pyWLj&W?KLsY-%`CXA)RSEzZeo+9tgqxQ4{IyGs&xu|6!eJA3;pJ!nss9Ly$< z0I9PrCm-|x?WS3X9?hiNUaDi`pr2-`ma)kzzy~X}n>jl;uxpBvZ6gWG9QbJpW{4_S z-MTC}?leTHFeC3y56xUK{XAcc>GovC8|Tqk*^oDr^s3NQly_K%iz&BuDuYJSm+`6O zU5zt<){Ml^!ClM5G1B*8AR(1nbsimo-#%l0m6GKt6Y=Cwou zTv>avZI>)1+MvE6r=m&DmKahxf>SHyTMo4NUfSQR%beG`>PRUZ^j!?M4vln)dI<4y z`kc$%-Jm&{y#eRrx>(M}o2hO?s1I319=9<9@Y$q$miR)#xz2Y0zs|l!Eg2}&1mK?m zyqJssZJ+@B|7=rRfTx&fk4`!3@_Hr*L1vtex19Jn#zV_wn}>+hV3 p0Do&nav$vR(}oxT{u#ipwLg%<8ge^{v0MNE002ovPDHLkV1fyq8o~eo literal 0 HcmV?d00001 diff --git a/doxygen/form_64.png b/doxygen/form_64.png new file mode 100644 index 0000000000000000000000000000000000000000..e79e5c80cb383c5b9eea3f2fc67f0c8870c78ebe GIT binary patch literal 439 zcmeAS@N?(olHy`uVBq!ia0vp^;Xo|F!3-oryoI}fltF+`h%1mL2}Ie;a04|6lmz(& zGw6B5<~Q`uTeI`%rMoY`{9l#6;XMNbqnf9SV@L(#+t}F2%?dns9C`%ofBgUdO-Nwt zxvg9GZl9f~#>E*qjrRi&!~Y{qeGDHqZZu-B*{Z?tp>?n4o>pmw2TA)?gD#ck{@&3# zn}b1at-6uBTvBvh)vg?mlP7r(H}8JzRb<|IV~(z&!Knp1zxi(vzcazJD_^#-|5|bd2{HjI zxYz3c>Jl}*V6<6ct=roR)s|9RuFSI;hPPqXZQzHsMT vn?G;kt~k{e>F2e@?~}gTe~DWM4fQ#7l^ literal 0 HcmV?d00001 diff --git a/doxygen/form_65.png b/doxygen/form_65.png new file mode 100644 index 0000000000000000000000000000000000000000..0b0c5357c17e08d77756b3e4839f1d635526451a GIT binary patch literal 550 zcmeAS@N?(olHy`uVBq!ia0vp^`9Lhd!3-qz^DnvqDT4r?5LX~g5{R;w;Rb3DC<*cl zX3+D9&2Q+Rw`S+jOLt#>`M)ZC!+Qn>#;Kkzjv*C{Z(~nSI;_AW{N8=ir~mc4jV?Gy z8QtEyUVUB}gL33CJLUuX=ch5o*s(L1_n%}q(EdBOrIO*t)x&S4rZPOZoEliY{8-mT zr^kB}_WooGNM+dZYm(;2lD1p^kxmnn)#Vs!9!7dF?WkGqp_aRT@m-HSa~UcNEYob# zx9kl~GZW6_SrxN(W8S6G_bM{{K0iI33SSsLt_;=rW_exV`(>;BdwvT2_^+C}QA5u^ z^mV&l6t`Ta%>zmAg|82-2-*B^orKzUsfm3vMHwEyuF#X(7<~RvGk=B0!ne!^4z;eD zvgpyr<)^9+pN`9UVEejrdYkSC_kz7YR!UcL#C>0;9+WakO-Aqfto>hQ&YIry?%w}! zW6kV!d!D*6?5GIq*t$M-yT-jIH)B^S@8ygNCe literal 0 HcmV?d00001 diff --git a/doxygen/form_66.png b/doxygen/form_66.png new file mode 100644 index 0000000000000000000000000000000000000000..1499b7bc592a75b14e9b35838ae74c79d18e6915 GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^53kP61Pv7UT~4LD?GS11?#{ePcLW1Eoq z_IZNV9A`f;G5k2r_nDJHF6;!8C__2#8_#Zryi=R|&I+$ma){TKzi;zdqjIW}?TYh7 zyS(O~%QbjnvY+oxonN7Ysh`z?g|_VzKZ&br+pF$>;P->+=hO!^o_FGn?x+7_suE(- TQ_SRk0rHZktDnm{r-UW|xuZ{E literal 0 HcmV?d00001 diff --git a/doxygen/form_67.png b/doxygen/form_67.png new file mode 100644 index 0000000000000000000000000000000000000000..030d1fdfb51108bbaf39bdb936be9649ffa591d4 GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0vp^W`M)ZC!+W6IO-~ockP61Pb1%+nRp4l;KkB3X`tSWR#m^DD zE7yH*)BoiqA;Bik@SwipjPL>de(eL|{(LoazTEZsQ_5pd)cc!t`_}&k@`Wsu_q8=(}Tm8j@t>5c!D|aT% zNu9rUa`%}Op<_|3!FEgHABi#ilVtca(T(9l=C^;^s*;hM~cK^Wyu~KXqD)CYeot#mNvanaWVHO<~9NYiil-41bp7GJHr0+<2V9ab>38 zuXAav4EK8O7FKe|w8bCxmla}o=hnOXcYs~)+~)Xn-G{T=SsUcf9%a2h$%f%WecB?{ zNbjU;9}d^E{CrI8~5cn9W-Xq&&aK>X!{lXORrPE_pAAby_U?H9?diP zB-S3)R$!mJx^TJq&w{jc{*ErqOM<6+zIrS^;t?F9%XXWQLH-%{AGd{7R*UOW=Ph0C zzh!xV{mCz1k8I!bX5sFW-->r|ugzSs^tMrMr_t$8YcOut*YKr}skeY{Po zuIff*t-5zbFGE$%NZkLhx7aA*^3{~Ji(gFN6Mc1c3UB^V`!#dUq{>%Jm59w-Ikh@@ zqQ|4&33DcW?aE(~E3{c8bN*hJG;^J{Mtha3AGb>?Z?6d2vtG&O>3W??w-b724WGF^ zlm60m{&RP`eUD5of6Ba|H&2XR^){~Jn;4kDn7QO72gjP9T!(ka%nf@bnKkX%y1&}o zw-3%%-@L$cmc+?iv%r(*lFjFH&DlAzRFl&={*GK@cUOrdU!JHA!;gzXzpqU_GA;6p zo>u^ihU;vXtvU?vHoITS(7bgf{pfk;`7ujtjV_k>D=kUT5D(Ctc6W(3d)@I&@vlz5 z6ee%7`QZ9X==>R#iJL#}_$0tEZ%udH>-R2SEG%pn={~Amd%M{B;Po?-)6+PweVxRX zP`m5J@4X+L)V}*3-@a8UBJK zO|O-a%z?L^i`#xku4Xsd%eMRb%h%f62j1>nrt@z9)uO`7t~=6YzUHjGrsMi#$#IEz t?e=n=n^!U?Fh2M`o6|dk;lcYY{~6Mngw0oE)dzs`nWw9t%Q~loCIDb%qmBRo literal 0 HcmV?d00001 diff --git a/doxygen/form_69.png b/doxygen/form_69.png new file mode 100644 index 0000000000000000000000000000000000000000..602439ce48c6eb72b315f4a2d2a32df45f95ad5c GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$3?vg*uel1O3<7*YT!A!6Aj)2b8>m5`B*-tA zLC+&LzoCELnw>{4-F^Ax|Ely2?}2h|o-U3d6^w7^Hu5$YaIoyZGTlq(&HlB9mqfNJ zJS?iWW;pPF$=m-On`daaE#fdO@Hljq@xAuOyB+26$}d_y)qD=E;LQJUR?a<}QJiyk QS~kdep00i_>zopr0EQtvJOBUy literal 0 HcmV?d00001 diff --git a/doxygen/form_7.png b/doxygen/form_7.png new file mode 100644 index 0000000000000000000000000000000000000000..d47c77ff659f58ae990d27f6d366d64a57a60e92 GIT binary patch literal 273 zcmeAS@N?(olHy`uVBq!ia0vp^>OjoH!3-p?iG_RuQU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW9|Z22U5qkP61Pa|8KW6nI?Z6(Tq<{JvlI+RGsN z@16UeX_szw`cyMD>@SvH>~Kkn!RGV6Q;KS;OciZ=uU*Yhx+TvzZ_3l#Q|2(nRsQaa ztJ?ipMwtJ8hD+_;hu4>HbBvDl5x$rH@y*uYb=!O_=9g^sU-b5`p3%PW&02FV>aiAV aY4o-8t7iK9$aoLP(+r-jelF{r5}E)ZZdwxn literal 0 HcmV?d00001 diff --git a/doxygen/form_70.png b/doxygen/form_70.png new file mode 100644 index 0000000000000000000000000000000000000000..c5276650523fc8c4bb7e0313f4dae908ad0fb472 GIT binary patch literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^Nwn?iniMLE2manT52ENnY{PaV(-nNOD~1=|2(-dZkuC#`?48n4g6kQneka- gJ8u~4Th;GjzB!X=ul#RU1CaMTUHx3vIVCg!00b3Wd;kCd literal 0 HcmV?d00001 diff --git a/doxygen/form_71.png b/doxygen/form_71.png new file mode 100644 index 0000000000000000000000000000000000000000..945be95c010cac2fb36fb1364d5cbaf7a65d4e25 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&T!3-o_PwJWhDT4r?5LX~g5{R;w;Rb3DC<*cl zX3+D9&2Q+Rw`S+jOLt#>`M)ZC!+W4ygr|#RNCo5Dx!!z-4LDfY�GO{`GG=Z(!8b zn@^eiZ6>4{#xOpJJgj6CmUJq|HhhTzW8T)kcYLqZX}KlMs4w}mdKI;Vst03~We(EtDd literal 0 HcmV?d00001 diff --git a/doxygen/form_72.png b/doxygen/form_72.png new file mode 100644 index 0000000000000000000000000000000000000000..6670b75d67c4c8a0ea853e350afceea005be8030 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^d_XM3!3-p0n&d&0L4Z$)E087$MA^%512qVg1o;Is z=y}BEH}ub2v-9YsyDz`|UzNV$Jy0&j)5S5Qg7NL#(}E0&9M1FgbYA^omVQg?Z0U9)H5PV+rHBNetI_Y#X@7 oJM}{1b>Hwc8AA2n7u_s8&)%xV80+`$at+AQp00i_>zopr0Pi|UwEzGB literal 0 HcmV?d00001 diff --git a/doxygen/form_73.png b/doxygen/form_73.png new file mode 100644 index 0000000000000000000000000000000000000000..0542382710e46d834885a2d1bc1ae3b67ed65af8 GIT binary patch literal 562 zcmeAS@N?(olHy`uVBq!ia0vp^DL^d2!3-p=@2t23qznRlLR^6~Ng&Ezh8w6spd`pI zm_g4YHou{N-kP09FWr6l<^QVm4euEk7#DiFIEGX(zMUJn{;mQ~i+%G==0E@Iqn#(+ zi~hRmG;{5Wl(~TnmX8m5pVK~2&m!8e`NEX*?jIj8oIA9LLB@3^L;FJ62L@Se7Ck># z&pHyrl4}_^VauBKEh1Yw+EQLm>9UONt!aHLZ#r%MZ;v`1Pp$2e&5`>!ruohd$x@PD z{FZG?)~l9zE6bj-CmOT=S+alC(@W{1J~9WU3q0T4`Qhv}-ATQ-%E~4^=6f_}UBQ#O z%a&h^?^dv1U{R8*efJ`Mx2Q?__5=D#vQgVFFIQN4g73{UziY3q&SiQW&GLBZTs^_+ zNz0Er?RguP_Vv@{(|nWeE`F`t5xqKVo#(T(Znt#H?xiPFx9Y4a5APKaIQ?mQ@13rG zr{nD_n9;!o9pwY^Gx}e__fk6LI^;qD|YAb{q}YJ={N&CH?E!{D}?y^K%+E zy({QEF>mEo;~UrRZCU>I+RMi~;w5&!XwGY`&~>w8`p+`92jvr*R!?-}s{i@6 z)N<+j>-%;8clW#AC}u7Yxcb_53&ZjYSAWSrP`GpEJrC0y$5VB_N(U@&ELZ+_@ct`v XO(ia4>zOjTpqTe`^>bP0l+XkKcZ%}u literal 0 HcmV?d00001 diff --git a/doxygen/form_74.png b/doxygen/form_74.png new file mode 100644 index 0000000000000000000000000000000000000000..3a5994bb83d26405ac4e1a58d230b0287f262b08 GIT binary patch literal 686 zcmeAS@N?(olHy`uVBq!ia0vp^DL|~m!3-ql+4hJ7DT4r?5LX~g5{R;w;Rb3DC<*cl zX3+D9&2Q+Rw`S+jOLt#>`M)ZC!+Qn>CRtAx$B+ufw{vf=yQ9G4D&FQGH0i_t`e^2z z2ezb_EYr=3*Rh@@*tvag?L*NA@iXV@wsFy1Uw8wQh&! zMe)e~FD5g(e{Rp2Y`5H8IOUM-p-o>{N@wmU`CI&Z?%WwZ7o+YRH@8ikbzq0=U!Fs& zte?8<44M{kUt8hzZcZ;=@AnQK+79VgYiqaFHTbD+t&7^8$Sd2m#HZGLZt>3r4JANP zXYbVcoEKKsTgIseeT(1bu;NPWra3{6Z{1qf5x(Z%jwR7wW0O1Px%S^ZRRdDK`^A}m zA?LM@U)o-J-+uG8jPuXk&#An05-?o1%lNbA($cA3&89)Wf1GoP@Aldhef#9?Uzhy2 zf)a{-uk@SiSyq>|TP~fZVpVuqvAFR5GE?nGowb*0+za+?ZP|HX+M(l-t{c*Bw2q_&~BwHo5EiSj_ddrs%@{m%wDd#K8dNnPM*2qN|o<# z^Zl$pk~i0VQH@!0o0*~h;F~v}pPZ~U>|>ZIc77S_uGe-4*GV_6LV~bdPP}odrsDp00i_>zopr0AfNbCjbBd literal 0 HcmV?d00001 diff --git a/doxygen/form_75.png b/doxygen/form_75.png new file mode 100644 index 0000000000000000000000000000000000000000..9c2f9299157d761e8bee4a9d3f28e73031b92fb9 GIT binary patch literal 1136 zcmV-$1dscPP)vF3&5QIP7LFV%QZ@WFh zB*6xJPByqITT9W2gf5*>&({H)*V%Z<1>gX_YBa39 zj|RYdFx0OB=S_E+FhZ)~25^MF>M#_%#ornLZ^XDwrtXPE`}!i|Y?WPMtFEWJ1h^J2 zNd%9p-Tic3Ns7^BTNJ$0m^Fe{dCkak2(5uHQPYC+;VqP2k#LqOLtSS1!TEvMJ9l%g zAEKKS^x)lCiL)ckIktvwE^67>2R{Q`jn_A!FKar@3EyE-P;Lapr-30Yt45vq)OK{v zA|LX{XMjubcO+Uw_E!w`XSV#5mj;RfiJHwbN^f_6s$dswre81J1^KPEAKH%9^f0w!83iDRLbDr-)> z3-!Z{V-hAc02d>b+pv;25o)hMCDc-Aao)~odbcD;xIgP{b+$FYwUBEx$!f`UCe&7a zO$+pAJ42fcOVqlcg+ z5+SW5K4(Z9?&=cz`*RntbgaDqKZe0mt@v6^oC$R!5u#MuKg>8O?A%QDiz__KGr%+K zR{?hMw2A8^z8~szEYwovKLg$Ke5!A^4se1N&jb67_wG2=edU=?0G#0u z&916*+pq$7g0A_L#GX^FX9n<1OwBI=9GF%b%X9t^A*^T$GFH6z;)P=u#TxSzz%F!k%~mutVkqG z^Ova24N9olGIw;|X{H+v^#tJOupyCk3zL}=z%!!qTe%~N(V``toc{U5;+c6?iFik)cyz@<2L z5P)BT+mh4(zZY(P$9)4_2|uX@0e(0B3s(VfDgFU&R2|4p43m%m0000m5`B*-tA zLC+&LzoCELnw>{4-F^Ax|Ely2?}2hoo-U3d6^w7^HgYl;axhN~i~6hoZvWfc?m4?$ zo%$9;Hg>!SbKbz-AiFx8Atmu?&8LXXo4T%WcNd@6y_!2sd;j+f?B)jmdKI;Vst0BnvsX#fBK literal 0 HcmV?d00001 diff --git a/doxygen/form_77.png b/doxygen/form_77.png new file mode 100644 index 0000000000000000000000000000000000000000..dd5713fb857fcc3d01ec4ed9f2f9ad2340c7e0ab GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F*zC3<7*YT!A!6Aj)2b8>m5`B*-tA zLC+&LzoCELnw>{4-F^Ax|Ely2?}2i`o-U3d6^w7^GV(PTa4?^i@SAw_|Nm4^r9@C^Y4&OiU}uj7%N z;kRphmHhfwD>7y^7#u2^5zg>qy)(m_=U;glUp{f=`>>fR?cSvwm{_$fkr>*L1%Ls)9xajSV*HJ3ciRK&?AYy_>#UB8MKAwf^YMO8-1|1hpvk|5o`U>Bo}v(36&OCJR^q_?bi*|78k(+5s( zmbjHS<0My|;`+e(uHf)A)chf38weMY>`nS?7_|;v_vMSN^7+>ZCBIS$E z7HUiR3O<}3JhS<{T;yB%8T^t4&#vw>+mL^m{R2xqFV6v<_(wUcHSYYX7eOKG>FVdQ I&MBb@00U5)h5!Hn literal 0 HcmV?d00001 diff --git a/doxygen/form_8.png b/doxygen/form_8.png new file mode 100644 index 0000000000000000000000000000000000000000..4608907afe8c0d817baec2006581c754ed38d1fb GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngj!3-p)&s5I?QU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW9`@Ur!gukP61PbF;Y)DDX5Vzjd}=_eX(xZD ZiZL;PQFm_Tr9B{5db;|#taD0e0syZkK1Kil literal 0 HcmV?d00001 diff --git a/doxygen/form_80.png b/doxygen/form_80.png new file mode 100644 index 0000000000000000000000000000000000000000..81d4a67ea181eb665f84de1b6d395fb864d72d03 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^+(695!3-or^+GlRDT4r?5LX~g5{R;w0U0Dv666=m zpyv^r-_SpA&Ca8j?!Nr;e^vU1_dq#2PZ!6K3dXl{4{{zb;9)+$?)8id7QgdnyZgvB zzEiMR;%v{4-F^Ax|Ely2?}2hoo-U3d6^w81I`SP*;BdLf*ew-&>TmvP?h`kH zH&isrpJRAnekr5=rRj@+XBW?2`Zo9S)b=ORM}w=y*UXf=*6nb*g4w}`k@@&G*DWBY NdAj?1za$QCr%hMHc5|%&W cpB-2xo%D!Ny-oMR9*{#lUHx3vIVCg!0D1yHNdN!< literal 0 HcmV?d00001 diff --git a/doxygen/form_83.png b/doxygen/form_83.png new file mode 100644 index 0000000000000000000000000000000000000000..1c78666b066bd7b4a15375c937ee0375bd33a5a1 GIT binary patch literal 789 zcmeAS@N?(olHy`uVBq!ia0vp^)j+Jo!3-olW`q?1DT4r?5LX~g5{R;w;Rb3DC<*cl zX3+D9&2Q+Rw`S+jOLt#>`M)ZC!+Qn>rWQ{Z$B+ufw{s(l9vcWa%a`j;tN4GLZ^hJ2 zOFNAxYfR;z_Aq42mnOHv`x*B0`Z9?t9eB%eb2UT5?}>+;;~Bm$PAoXbc&ERk{?C~$ zAH~}E9+cfs)c8N$<7`b;0ow!Z2Ya=@96k5@0@IuWv3D7M@OSK9QR=C>X9r6~TjAk* ztEL{BzIY?^AM2VAp1t->SE@bJrtUslXyrTqbJV#luk!sDMb6i;>8~3`w}f~ z#w*dXKeZ32FGy48G!M+ZVdnXCdg*e#t1ov6-mrgaFI^S8|H7&=Pm})Y4ps95#!kCs z8jPRZx{}i=GV#N_A1h{jVonQv=9VmTeB-YuY{X^s`|Oy>C5Rb_xrErE0=XT zoq5d>TM>2Th7S7!9#_TV`?{Zr-i>;EewMg$>=8-p>6@N@i`#$v=z{Od&K5EFJ?K9? zW7+zGSQESRdYm$LRVvc*Znu3V-MFGzZ4~_S{jBD@H)h|jm}0+j;-B7X8}V%`jFnu10*DJ8Px>>nvtJUX7~fafd717f+I#c2Mg=4#(477Fky7 zyZF6p3hvI^Vy9Pj-KZvRkB4B%{_CYvZ!8O+{r=98sTZafl_!UUh^iRrZTI{B<;b(= zhig7Pd%jH2yt*(q=9upQ+OP_Pu6m?KyyLgyloR{DO-ym5`B*-tA zLC+&LzoCELnw>{4-F^Ax|Ely2?}2h|o-U3d6^w7^p5|>Z;5j;nKT}}K-TG)gRSvx~ zAC{z_yvO(;{awPYI)m0cZXfnDm%bgTatt@(_M2R&uCUS8Q%3)^vebccanECnT)#bd Q{(zk4>FVdQ&MBb@00O@`W&i*H literal 0 HcmV?d00001 diff --git a/doxygen/form_85.png b/doxygen/form_85.png new file mode 100644 index 0000000000000000000000000000000000000000..dac5b534aea78f6a53e9f2fd43336662dd9f1c64 GIT binary patch literal 782 zcmeAS@N?(olHy`uVBq!ia0vp^)j+Jo!3-olW`q?1DT4r?5LX~g5{R;w;Rb3DC<*cl zX3+D9&2Q+Rw`S+jOLt#>`M)ZC!+Qn>rdm%I$B+ufw{vfnEjAEvSzjjB{O^DM@*`R~ zCoGIPEh}FvK9%IS{_4~4hWl-5jog9{%39t`WjOHHF=ojb7sp& zu{OR3Wj7Qx{!I@!TT@lQ_CWi=UhTKtbH6WSwP@VEi{S_Vit@nMle((E3O$fK##_BI zj3?eFnf*ukj|Y>v>RC2^-!wDyjoI;&v+SOm&NUC)TXc6#{dBwjD)aVl%>1D_$9f;0 zD&J(Tk-xiZ_Uq4)aqM?{B}#=K@Ra7v-hT0n^}oIi>^&(JwYim!8@Ct6ulJRm9r0vGrLvq=o;8a$TQVlDLFUz4g2+hcXfb~QhUu$_nj_a@$FxAT(GpXJA zdeO(qFwX}CUp&n0dbZ6}%6&7%W+s0de?iOLUFPcFHTDN7|C0V*;g^$`?jt!_=&fN{ zN1S+-YTSoAN7S}ljrcZqR&@Net88<)CVW4)ch|>0H%(ie=BbN)1-SmsKBxWou#kMn zcJ;Tv4A*4-*po5Q=Ec72&%HMKt~a{Bb7iwdpO!se z7MO1*WFBpj^8VU8Z6TKz_u9N8!-A6U#6@&gc)B*23kGM-m8xFqmC-Ou;=uL;UsB&O z%y;aWeu@2q-WhFYhJQ_$Q`vs7{VAFnH9xX+bsa8=9drQw16!}9B&@m&zn+4K~Ysy$u(T-G@yGywq0+hTA4 literal 0 HcmV?d00001 diff --git a/doxygen/form_86.png b/doxygen/form_86.png new file mode 100644 index 0000000000000000000000000000000000000000..f4cdeb796920cbf1e77dc4adc8bbfec29e35775b GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^AT~D#GmtFY@J0(r83g!*xB_XCK$N`NswPK zgPuohenbDfH9L=9y8H6W|5fQ5-UH>VJzX3_Dj46+J;}?U$ivK==p51a<-RVzhf>#u zKN69T7a2UtWdv@vF{HJ;z~A(y#oo6SnokLPbW3&o4`eS6jL zb@Hn4obZroxj8StFrMs;?EPRNubh(B&AW8Y&O>#Zls76j9G#@RqE|`2L#pgX%$rGX zgUWNi%2}^S&AEO3^_ODnuH(icE3+Qn@z;qtVRP|-c&{0Ai5thUpCDg*y85}Sb4q9e E0HbDS{Qv*} literal 0 HcmV?d00001 diff --git a/doxygen/form_88.png b/doxygen/form_88.png new file mode 100644 index 0000000000000000000000000000000000000000..188696d4f4c839c2aad065389b5a6f067c6ebbe6 GIT binary patch literal 310 zcmeAS@N?(olHy`uVBq!ia0vp^!ayv>!3-otox^>BltF+`h%1mL2}Ie;a04|6lmz(& zGw6B5<~Q`uTeI`%rMoY`{9l#6;XP1psi%u$NCo5DSZ=Xq1s?9dA1-o!-~TpfSV^|1FhdviIv zf~@D466Ni;HhyincIMnAu2^1%dD`Fa)n5xz`~O=*^hL>v=M@J7k7ho~EetyAz9@U5 z>f&Q<8OP5gDb;ODi%32^^(x=Z#%YDBqA9(Be0!UsE}URGkZT(dzlSkTlKDjTo=vhK O-+Q|HxvX;FRR80+7o* MUHx3vIVCg!0IGL8Q2+n{ literal 0 HcmV?d00001 diff --git a/doxygen/form_9.png b/doxygen/form_9.png new file mode 100644 index 0000000000000000000000000000000000000000..f7be7b8b46aa04e3847cbcda4ce72470f41dffa8 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngj!3-p)&s5I?QU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW9|ZP)`@fkP61Pa|8Jr3^<(cHyn&PQ}+M1Rp=fS?83{1OV6&LU#ZF literal 0 HcmV?d00001 diff --git a/doxygen/form_90.png b/doxygen/form_90.png new file mode 100644 index 0000000000000000000000000000000000000000..d2c11ae931b14b750a1f7d738c65cd106cbde08a GIT binary patch literal 759 zcmeAS@N?(olHy`uVBq!ia0vp^)j+Jo!3-olW`q?1DT4r?5LX~g5{R;w;Rb3DC<*cl zX3+D9&2Q+Rw`S+jOLt#>`M)ZC!+Qn>rZi6%$B+ufw{ve#daS_X!e9R8#j?MDNla{@Algu`@Kj}W|?iFoSdgXp@>rFS6>y;C?p5%@1a21}N zn!e*n^qPGVk9QxuyG!q6Q)EzlK#*^P_LhyMx1xjj16pH4wp})ANbk^ExAA+~_v6cY zd(Z#e_m1U*+9H)%-ST^vtZrA(S)b3~$B~?IxR<-Y=BNE@`FmwgpS^j@7gDyCt)TUa z+r>*pd&C}{-TUPHJ)^5XQX^+QFZvi0({Fa?*oWlBceX6OSh0CoeEi%!rJg^Z`8B_K zoW&4+f~V51{MjBauk6(IH{$j#TJTdVBPm+@yWs_!EYk+=8_(0GyyO1=XhF^@ElwNT zquukHwL0HTZ#)rP%lv`wOWeO%cU0u9ST);>E?aKg>VC6(l8*P1MCr8WxgIwRTFy;f zQ&Zx6d0O(ate1P&Xd7$EH(uN`Dedbk&hTT|w-t-+`=VxhmM=NFi`_Tw^RzbK*GxAP z*VTCza;!JnU*+0zN+EyOF_rh~KP%tNv3mdFl)jnm{MAci&xe}at5sZ~{$A^UrM{=y zqqBdUzAL}AQP^FqoHV_QA^#A&=G-1P^O9*=>HS$< zp8fB7-liOAskFZOu1B}gRl%+}Pw literal 0 HcmV?d00001 diff --git a/doxygen/form_91.png b/doxygen/form_91.png new file mode 100644 index 0000000000000000000000000000000000000000..af841b332024a422799c5d62b83d3660914ebc2d GIT binary patch literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S3?yCqj{O5t1_3@Hu0Wb35M?jJ4b&h|666=m zpyv^r-_SpA&Ca8j?!Nr;e^vU1_dvP1o-U3d6^w6V8TpPVaA-4WMc?`N|MqID{J5g{ z1CumFxb`tH{M)sY;fJH>9G+=u&z=hxE6rFXaO2TVS@sKE(?X?Y<`?Ck+~d3Z=4!@U zRhhFkYAbqJ-?;SR@RF3Y$-67}_e@xoCowsw*gV!~-c5l6Z8;y_XLze>>M>X!Qqc>F zUK2SXJKikt?b5CL?!TkAd9=K3BgNf&_u#Kt#>yC=lJ4c6> zSzr0g=PrD=(?oVh;?rB#uVfw2G)vpR>Tvfqsfn}sVrKTHZsV(;sbkvEZEThuYWrB| zUKIPUh#4M2uLJL<&6^+B5X|#^o{}6xdHv5-+x5S(J-f~9-?+8)0?5yvu6{1-oD!M< DE(T{; literal 0 HcmV?d00001 diff --git a/doxygen/form_93.png b/doxygen/form_93.png new file mode 100644 index 0000000000000000000000000000000000000000..02f3b8f7d758d80c52875fb4b108d5a8a8687a6a GIT binary patch literal 685 zcmeAS@N?(olHy`uVBq!ia0vp^(}7rkgBeKbe38`#QU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW88%OfsG>jv*C{Z|9yZT5Z77YX4uF$Y}*gN3fO-1l-$38z3$Tg zgo%xh)sG2W-u=mVebCpB6N=W%yL#sPo}`uMu1c})OOx+@@~%{-LT&n{8{XGuEKZ#H zEJC+-)#Dqy@|l@+=@uV_)IQZjc&>i(f_KkT)6hR%`He?!hi5%nUu${c)54!>rEJ{> zPdMW0IyP(CoU>Ct>@#6AN7YoN4Rcv=<^+~H|@#mI?=sYz&ys=FH%i2({d^I?CC;Nr=Q(>|8#L= zy5NHzjWv9$Kh5}%#{r_Ot2+nW5@Re71-`PtPawN6Xe6wSZ6 z#Fa@h&MUlpX?kztlYKV-H-wjW@^#t23!S;Y-IV=bdPx@-oMCjzcGisLHL*0rjtL}19^Df)Rg6|03|w4S3j3^P6 z!B+Y!#^7I3XYM1%dp&x`>R-tRhGuqc+bf}VVs=F1js3#U|MVnzZB*L2OQ|};%k~!Y g%X>SRD(=|0$Io5K)GyFG^DfAHp00i_>zopr0E#_ZTL1t6 literal 0 HcmV?d00001 diff --git a/doxygen/form_95.png b/doxygen/form_95.png new file mode 100644 index 0000000000000000000000000000000000000000..506c5fa8c8ffa3122f79790509abd76ef6160962 GIT binary patch literal 617 zcmeAS@N?(olHy`uVBq!ia0vp^Wk4*z!3-q7T&Ye0QU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW88%j5j=8978G?-_E_cYqbJTYdwd8#e?7b-+D6K zy>-j>j{H77R^JHi<}YFo>>1<)8U8W6?~BZN_gv_KWH9Rv$7RLr4f74>8;8G%syq1G zZ?{I#J^hOeHEuii^q)Mjzl6c&QLovygr`ok_lLgsdFE^U`K7>?gik8BGlJ(`xo}h@ zC@C-O{FX_ZcFbu$^!!Ql&eEBN-#o%U&&x?u-e_%>$yV7jxlHuVs~d&8KVNbC>WtR+KEWG-#UW?#>H#^td0w;Vl`d-0gx6W_Hv_g`4|DC;_NOx-5- zQ!Q&wE&m$!w0q{sEvIjKsILwGIGH^S5r*dUjh=UOP>d=gYJ#;`z{#6ewmp=bqg+ z{^LhK9*yT;I{mSe_2N?b1MEADSiNsp$T046U8g+tuZs--dF})HhAH)-q7Tw{eBQs< c_t?rW{LKfsBkz}`YJn1rr>mdKI;Vst0Ft~72mk;8 literal 0 HcmV?d00001 diff --git a/doxygen/form_96.png b/doxygen/form_96.png new file mode 100644 index 0000000000000000000000000000000000000000..44bb186f1327231266122745efb815654de147b2 GIT binary patch literal 1574 zcmV+>2HE+EP)Ww>^MV z4jy}EuXgKhU2590C<2Yp_zUnC+s8(L{|B1E0elPt@B!}j7t7x>5AZSK2=E%A2RI_x z&lvl=`f>VaS%BST^zbHq6$bZdoTdQq1%?YLm()v`*TrS?EJ+BW<3 zp95Ln8q*otXeW_xSB>0~m58^|_amuue(0nL|OLvZZm$0HEZ7cK8(u_ z*R_jRlN|dKvR>a_E8{?R63u8j-L4E%ZKpf3c9I+6HWo=rvWNz{Q)X8~`n)cO%nFAk z-2pdkKB-z%Z7d%Bgsha?9KzVP?U-d*$;v*l+68n}&F;-)z3l6HS+v^x8Rj*xI?79X9y;m#$4q>7&#zGdw#(^xWdZmluo6~tPfGd;;9Zz5h}bBv z_msg6{cLxg7{GQF={f2Tzz^W9)Jau8nf3LvHvgwlbw!|r_E}T_uGnIHm)fAkT^4{} zf?y9og5CmiBol!}Vdp0(=Fl z<#_c8;1Myn=geHmhNyoTXRX}zFUZ=)$u?&c&dQ~+t{JgeV zg<+~Sct=(}aKbH1Oyrl;yZqxcv)(WSqXGUVS)+mK#RENA2gYD#Yi>}jl;7gEsEOoa zXpAkepOYF(|oP&%CZNet! zJjmw2oJdh_z&U_YAS%g0QeIB Y06+aBnB&Js$N&HU07*qoM6N<$g59m^TmS$7 literal 0 HcmV?d00001 diff --git a/doxygen/form_97.png b/doxygen/form_97.png new file mode 100644 index 0000000000000000000000000000000000000000..1d0938385d4d8fcf7fee2fc49b9a15907d4073b7 GIT binary patch literal 380 zcmeAS@N?(olHy`uVBq!ia0vp^4nQo#!3-qteAEyCQU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW9|Z*PbqpAr*{o=SELzQQ&d)uV4v~`M&=)XH(hM ztJD1cpLOp__H2#W(a6g1Ctk&+LI1<;>yosWui^ODXoT*jnTU`c=!iNkMyy71pJ2BjwFkQ0Yyh`f6s>vJoS2tv* i#ONQGss5GW{%3BJeJtYq>c>uj!qC&z&t;ucLK6TyW{95v literal 0 HcmV?d00001 diff --git a/doxygen/form_98.png b/doxygen/form_98.png new file mode 100644 index 0000000000000000000000000000000000000000..06cd02ddb18cd207f8017df718906e0ebabc8bce GIT binary patch literal 213 zcmeAS@N?(olHy`uVBq!ia0vp^JV4CF!3-p~fAT*8qznRlLR^6~Ng&Ezh8w6spd`pI zm_g4YHou{N-kP09FWr6l<^QVm4ex<+E}kxqAr*{o=LYgM7;ret^IV_tV#oj7(!($2 zn=34=t`|CS6Ek< P19F_FtDnm{r-UW|HC;R@ literal 0 HcmV?d00001 diff --git a/doxygen/form_99.png b/doxygen/form_99.png new file mode 100644 index 0000000000000000000000000000000000000000..d021c0f22e286336fde5fe0040caf174d1cae2e5 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_4!3-oHpW<@^QU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW9|ZU{4pvkP61Pa|8JfC~!E>@3^dc?zepT4xJN1 z>m4fOeWMQvGMKHHwt#Qp%GGlgZcCMljk#9D%Uz=!=KWp&bb)36lc(Q0%a@ATUSGOh fDvs%pT7xcsg+9X%#iMtYfZXco>gTe~DWM4f@-RS1 literal 0 HcmV?d00001 diff --git a/doxygen/format_8hpp_source.html b/doxygen/format_8hpp_source.html new file mode 100644 index 00000000000..d613a3ca792 --- /dev/null +++ b/doxygen/format_8hpp_source.html @@ -0,0 +1,78 @@ + + + + + + + +Caffe: include/caffe/util/format.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
format.hpp
+
+
+
1 #ifndef CAFFE_UTIL_FORMAT_H_
2 #define CAFFE_UTIL_FORMAT_H_
3 
4 #include <iomanip> // NOLINT(readability/streams)
5 #include <sstream> // NOLINT(readability/streams)
6 #include <string>
7 
8 namespace caffe {
9 
10 inline std::string format_int(int n, int numberOfLeadingZeros = 0 ) {
11  std::ostringstream s;
12  s << std::setw(numberOfLeadingZeros) << std::setfill('0') << n;
13  return s.str();
14 }
15 
16 }
17 
18 #endif // CAFFE_UTIL_FORMAT_H_
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
+ + + + diff --git a/doxygen/formula.repository b/doxygen/formula.repository new file mode 100644 index 00000000000..9b558c46cde --- /dev/null +++ b/doxygen/formula.repository @@ -0,0 +1,180 @@ +\form#0:$ K $ +\form#1:$ (C \times H \times W) $ +\form#2:$ (N \times C \times H \times W) $ +\form#3:$ x $ +\form#4:$ (N \times 1 \times K \times 1) $ +\form#5:$ (N \times 2 \times K \times 1) $ +\form#6:$ y_n = \arg\max\limits_i x_{ni} $ +\form#7:$ K = 1 $ +\form#8:$ x_1 $ +\form#9:$ x_2 $ +\form#10:$ x_K $ +\form#11:$ (KN \times C \times H \times W) $ +\form#12:$ (N \times KC \times H \times W) $ +\form#13:$ y = [\begin{array}{cccc} x_1 & x_2 & ... & x_K \end{array}] $ +\form#14:$ \frac{\partial E}{\partial y} $ +\form#15:$ y $ +\form#16:$ \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} $ +\form#17:$ (N \times CHW \times 1 \times 1) $ +\form#18:$ x = 0 $ +\form#19:$ x\sim U(a, b) $ +\form#20:$ x = a $ +\form#21:$ x \in [0, 1] $ +\form#22:$ \forall i \sum_j x_{ij} = 1 $ +\form#23:$ x \sim U(-a, +a) $ +\form#24:$ a $ +\form#25:$ E = \frac{1}{2N} \sum\limits_{n=1}^N \left(y\right) d + \left(1-y\right) \max \left(margin-d, 0\right) $ +\form#26:$ d = \left| \left| a_n - b_n \right| \right|_2^2 $ +\form#27:$ (N \times C \times 1 \times 1) $ +\form#28:$ a \in [-\infty, +\infty]$ +\form#29:$ b \in [-\infty, +\infty]$ +\form#30:$ (N \times 1 \times 1 \times 1) $ +\form#31:$ s \in [0, 1]$ +\form#32:$ (1 \times 1 \times 1 \times 1) $ +\form#33:$ E = \frac{1}{2N} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $ +\form#34:$ \hat{y} \in [-\infty, +\infty]$ +\form#35:$ y \in [-\infty, +\infty]$ +\form#36:$ E = \frac{1}{2n} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $ +\form#37:$ t $ +\form#38:$ [-\infty, +\infty] $ +\form#39:$ K = CHW $ +\form#40:$ X^T W $ +\form#41:$ X \in \mathcal{R}^{D \times N} $ +\form#42:$ W \in \mathcal{R}^{D \times K} $ +\form#43:$ l $ +\form#44:$ l_n \in [0, 1, 2, ..., K - 1] $ +\form#45:$ E = \frac{1}{N} \sum\limits_{n=1}^N \sum\limits_{k=1}^K [\max(0, 1 - \delta\{l_n = k\} t_{nk})] ^ p $ +\form#46:$ L^p $ +\form#47:$ p = 1 $ +\form#48:$ \delta\{\mathrm{condition}\} = \left\{ \begin{array}{lr} 1 & \mbox{if condition} \\ -1 & \mbox{otherwise} \end{array} \right. $ +\form#49:$ t \in \mathcal{R}^{N \times K} $ +\form#50:$k$ +\form#51:$ \hat{p} $ +\form#52:$ [0, 1] $ +\form#53:$ \hat{p}_n $ +\form#54:$ \forall n \sum\limits_{k=1}^K \hat{p}_{nk} = 1 $ +\form#55:$ (1 \times 1 \times K \times K) $ +\form#56:$ H $ +\form#57:$ H = I $ +\form#58:$ 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}) $ +\form#59:$ H_{l_n} $ +\form#60:$l_n$ +\form#61:$H$ +\form#62:$ E = \frac{-1}{N} \sum\limits_{n=1}^N \log(\hat{p}_{n,l_n}) $ +\form#63:$ 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] $ +\form#64:$ x \in [-\infty, +\infty]$ +\form#65:$ \hat{p}_n = \sigma(x_n) \in [0, 1] $ +\form#66:$ \sigma(.) $ +\form#67:$ y \in [0, 1] $ +\form#68:$ \hat{p}_{nk} = \exp(x_{nk}) / \left[\sum_{k'} \exp(x_{nk'})\right] $ +\form#69:$ k $ +\form#70:$ k = 5 $ +\form#71:$ x_n $ +\form#72:$ \hat{l}_n $ +\form#73:$ \hat{l}_n = \arg\max\limits_k x_{nk} $ +\form#74:$ \frac{1}{N} \sum\limits_{n=1}^N \delta\{ \hat{l}_n = l_n \} $ +\form#75:$ \delta\{\mathrm{condition}\} = \left\{ \begin{array}{lr} 1 & \mbox{if condition} \\ 0 & \mbox{otherwise} \end{array} \right. $ +\form#76:$ \lambda $ +\form#77:$\ell_i$ +\form#78:$ E = \lambda_i \ell_i + \mbox{other loss terms}$ +\form#79:$ \frac{\partial E}{\partial \ell_i} = \lambda_i $ +\form#80:$a$ +\form#81:$b$ +\form#82:$\hat{y}$ +\form#83:$ \frac{\partial E}{\partial \hat{y}} = \frac{1}{n} \sum\limits_{n=1}^N (\hat{y}_n - y_n) $ +\form#84:$y$ +\form#85:$ \frac{\partial E}{\partial y} = \frac{1}{n} \sum\limits_{n=1}^N (y_n - \hat{y}_n) $ +\form#86:$t$ +\form#87:$ \frac{\partial E}{\partial t} $ +\form#88:$ \frac{\partial E}{\partial \hat{p}} $ +\form#89:$x$ +\form#90:$ \frac{\partial E}{\partial x} = \frac{1}{n} \sum\limits_{n=1}^N (\hat{p}_n - p_n) $ +\form#91:$ \frac{\partial E}{\partial x} $ +\form#92:$ y = |x| $ +\form#93:$ y = x + \log(1 + \exp(-x)) $ +\form#94:$ x > 0 $ +\form#95:$ y = \log(1 + \exp(x)) $ +\form#96:$ y = \left\{ \begin{array}{ll} x + \log(1 + \exp(-x)) & \mbox{if } x > 0 \\ \log(1 + \exp(x)) & \mbox{otherwise} \end{array} \right. $ +\form#97:$ y = \gamma ^ {\alpha x + \beta} $ +\form#98:$ \alpha $ +\form#99:$ \beta $ +\form#100:$ \gamma $ +\form#101:$ y = (\alpha x + \beta) ^ \gamma $ +\form#102:$ y = \max(0, x) $ +\form#103:$ y = (1 + \exp(-x))^{-1} $ +\form#104:$ y = \frac{\exp(2x) - 1}{\exp(2x) + 1} $ +\form#105:$ \frac{\partial E}{\partial x} = \mathrm{sign}(x) \frac{\partial E}{\partial y} $ +\form#106:$ p $ +\form#107:$ y_{\mbox{train}} = \left\{ \begin{array}{ll} \frac{x}{1 - p} & \mbox{if } u > p \\ 0 & \mbox{otherwise} \end{array} \right. $ +\form#108:$ u \sim U(0, 1)$ +\form#109:$ y_{\mbox{test}} = \mathbb{E}[y_{\mbox{train}}] = x $ +\form#110:$u\sim U(0,1)$ +\form#111:$ 1 / (1 - p) $ +\form#112:$ e \approx 2.718 $ +\form#113:$ \frac{\partial E}{\partial x} = \frac{\partial E}{\partial y} y \alpha \log_e(gamma) $ +\form#114:$ \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} $ +\form#115:$ \alpha \gamma $ +\form#116:$ \nu $ +\form#117:$ y = \max(0, x) + \nu \min(0, x) $ +\form#118:$ \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. $ +\form#119:$ \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. $ +\form#120:$ \frac{\partial E}{\partial x} = \frac{\partial E}{\partial y} y (1 - y) $ +\form#121:$ \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) $ +\form#122:$ y = \left\{ \begin{array}{lr} 0 & \mathrm{if} \; x \le t \\ 1 & \mathrm{if} \; x > t \end{array} \right. $ +\form#123:$ \geq 1 $ +\form#124:$ x \sim N(0, \sigma^2) $ +\form#125:$ \sigma^2 $ +\form#126:$ y_i = \max(0, x_i) + a_i \min(0, x_i) $ +\form#127:$ (N \times C \times ...) $ +\form#128:$i$ +\form#129:$ \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. $ +\form#130:$ \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. $ +\form#131:$ (S \times C \times H \times W) $ +\form#132:$ y = log_{\gamma}(\alpha x + \beta) $ +\form#133:$ (N \times K \times H \times W) $ +\form#134:$ (N \times ...) $ +\form#135:$ (M) $ +\form#136:$ (M \times ...) $ +\form#137:$ y = x_1[x_2] $ +\form#138:$ E = \frac{1}{2N} \sum\limits_{n=1}^N \left(y\right) d + \left(1-y\right) \max \left(margin-d, 0\right)^2 $ +\form#139:$ d = \left| \left| a_n - b_n \right| \right|_2 $ +\form#140:$ (N \times 1 \times K) $ +\form#141:$ (N \times 2 \times K) $ +\form#142:$ 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 $ +\form#143:$ y = \left\{ \begin{array}{lr} x & \mathrm{if} \; x > 0 \\ \alpha (\exp(x)-1) & \mathrm{if} \; x \le 0 \end{array} \right. $ +\form#144:$ \frac{\partial E}{\partial x} = \left\{ \begin{array}{lr} 1 & \mathrm{if} \; x > 0 \\ y + \alpha & \mathrm{if} \; x \le 0 \end{array} \right. $ +\form#145:$ i $ +\form#146:$ (d_0 \times ... \times d_i \times ... \times d_j \times ... \times d_n) $ +\form#147:$ (d_i \times ... \times d_j) $ +\form#148:$ z = x y $ +\form#149:$ (1 \times N \times D) $ +\form#150:$ c_{t-1} $ +\form#151:$ (1 \times N \times 4D) $ +\form#152:$ [i_t', f_t', o_t', g_t'] $ +\form#153:$ (1 \times N) $ +\form#154:$ \delta_t $ +\form#155:$ c_t $ +\form#156:$ h_t $ +\form#157:$ \frac{\partial E}{\partial c_t} $ +\form#158:$ \frac{\partial E}{\partial h_t} $ +\form#159:$ [ \frac{\partial E}{\partial i_t} \frac{\partial E}{\partial f_t} \frac{\partial E}{\partial o_t} \frac{\partial E}{\partial g_t} ] $ +\form#160:$ (1 \times 1 \times N) $ +\form#161:$ (T \times N \times ...) $ +\form#162:$ T $ +\form#163:$ N $ +\form#164:$ (N \times T \times ...) $ +\form#165:$ (T \times N) $ +\form#166:$ \delta $ +\form#167:$ \delta_{t,n} = 0 $ +\form#168:$ n $ +\form#169:$ h_{t-1} $ +\form#170:$ \delta_t = 0 $ +\form#171:$ \delta_{t,n} = 1 $ +\form#172:$ t-1 $ +\form#173:$ x_{static} $ +\form#174:$ x'_t = [x_t; x_{static}] $ +\form#175:$ (T \times N \times D) $ +\form#176:$ D $ +\form#177:$ x_t $ +\form#178:$ h_t := \tanh[ W_{hh} h_{t_1} + W_{xh} x_t + b_h ] $ +\form#179:$ o_t := \tanh[ W_{ho} h_t + b_o ] $ diff --git a/doxygen/functions.html b/doxygen/functions.html new file mode 100644 index 00000000000..93599772827 --- /dev/null +++ b/doxygen/functions.html @@ -0,0 +1,109 @@ + + + + + + + +Caffe: Class Members + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- a -

+
+ + + + diff --git a/doxygen/functions_b.html b/doxygen/functions_b.html new file mode 100644 index 00000000000..8ccb11fb4c3 --- /dev/null +++ b/doxygen/functions_b.html @@ -0,0 +1,210 @@ + + + + + + + +Caffe: Class Members + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- b -

+
+ + + + diff --git a/doxygen/functions_c.html b/doxygen/functions_c.html new file mode 100644 index 00000000000..48d8c92253b --- /dev/null +++ b/doxygen/functions_c.html @@ -0,0 +1,118 @@ + + + + + + + +Caffe: Class Members + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- c -

+
+ + + + diff --git a/doxygen/functions_d.html b/doxygen/functions_d.html new file mode 100644 index 00000000000..3f31d9f59d7 --- /dev/null +++ b/doxygen/functions_d.html @@ -0,0 +1,89 @@ + + + + + + + +Caffe: Class Members + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- d -

+
+ + + + diff --git a/doxygen/functions_e.html b/doxygen/functions_e.html new file mode 100644 index 00000000000..2a10062603a --- /dev/null +++ b/doxygen/functions_e.html @@ -0,0 +1,157 @@ + + + + + + + +Caffe: Class Members + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- e -

+
+ + + + diff --git a/doxygen/functions_f.html b/doxygen/functions_f.html new file mode 100644 index 00000000000..a2142837139 --- /dev/null +++ b/doxygen/functions_f.html @@ -0,0 +1,209 @@ + + + + + + + +Caffe: Class Members + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- f -

+
+ + + + diff --git a/doxygen/functions_func.html b/doxygen/functions_func.html new file mode 100644 index 00000000000..51f409bc07d --- /dev/null +++ b/doxygen/functions_func.html @@ -0,0 +1,106 @@ + + + + + + + +Caffe: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/doxygen/functions_func_b.html b/doxygen/functions_func_b.html new file mode 100644 index 00000000000..df044623125 --- /dev/null +++ b/doxygen/functions_func_b.html @@ -0,0 +1,200 @@ + + + + + + + +Caffe: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- b -

+
+ + + + diff --git a/doxygen/functions_func_c.html b/doxygen/functions_func_c.html new file mode 100644 index 00000000000..d775111207f --- /dev/null +++ b/doxygen/functions_func_c.html @@ -0,0 +1,97 @@ + + + + + + + +Caffe: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- c -

+
+ + + + diff --git a/doxygen/functions_func_d.html b/doxygen/functions_func_d.html new file mode 100644 index 00000000000..13abe750c80 --- /dev/null +++ b/doxygen/functions_func_d.html @@ -0,0 +1,76 @@ + + + + + + + +Caffe: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- d -

+
+ + + + diff --git a/doxygen/functions_func_e.html b/doxygen/functions_func_e.html new file mode 100644 index 00000000000..f3ce2f22ec5 --- /dev/null +++ b/doxygen/functions_func_e.html @@ -0,0 +1,154 @@ + + + + + + + +Caffe: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- e -

+
+ + + + diff --git a/doxygen/functions_func_f.html b/doxygen/functions_func_f.html new file mode 100644 index 00000000000..274ffc1ab5b --- /dev/null +++ b/doxygen/functions_func_f.html @@ -0,0 +1,200 @@ + + + + + + + +Caffe: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- f -

+
+ + + + diff --git a/doxygen/functions_func_g.html b/doxygen/functions_func_g.html new file mode 100644 index 00000000000..760642b5269 --- /dev/null +++ b/doxygen/functions_func_g.html @@ -0,0 +1,77 @@ + + + + + + + +Caffe: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/doxygen/functions_func_h.html b/doxygen/functions_func_h.html new file mode 100644 index 00000000000..3d56d82342f --- /dev/null +++ b/doxygen/functions_func_h.html @@ -0,0 +1,76 @@ + + + + + + + +Caffe: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- h -

+
+ + + + diff --git a/doxygen/functions_func_i.html b/doxygen/functions_func_i.html new file mode 100644 index 00000000000..46ab32a36e6 --- /dev/null +++ b/doxygen/functions_func_i.html @@ -0,0 +1,88 @@ + + + + + + + +Caffe: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- i -

+
+ + + + diff --git a/doxygen/functions_func_l.html b/doxygen/functions_func_l.html new file mode 100644 index 00000000000..9546fccf01a --- /dev/null +++ b/doxygen/functions_func_l.html @@ -0,0 +1,134 @@ + + + + + + + +Caffe: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- l -

+
+ + + + diff --git a/doxygen/functions_func_m.html b/doxygen/functions_func_m.html new file mode 100644 index 00000000000..e7193131587 --- /dev/null +++ b/doxygen/functions_func_m.html @@ -0,0 +1,113 @@ + + + + + + + +Caffe: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/doxygen/functions_func_n.html b/doxygen/functions_func_n.html new file mode 100644 index 00000000000..e79ce2252e2 --- /dev/null +++ b/doxygen/functions_func_n.html @@ -0,0 +1,82 @@ + + + + + + + +Caffe: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- n -

+
+ + + + diff --git a/doxygen/functions_func_o.html b/doxygen/functions_func_o.html new file mode 100644 index 00000000000..68b0cfa00b6 --- /dev/null +++ b/doxygen/functions_func_o.html @@ -0,0 +1,78 @@ + + + + + + + +Caffe: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/doxygen/functions_func_p.html b/doxygen/functions_func_p.html new file mode 100644 index 00000000000..07043a7b5df --- /dev/null +++ b/doxygen/functions_func_p.html @@ -0,0 +1,94 @@ + + + + + + + +Caffe: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- p -

+
+ + + + diff --git a/doxygen/functions_func_r.html b/doxygen/functions_func_r.html new file mode 100644 index 00000000000..d3e16ce328e --- /dev/null +++ b/doxygen/functions_func_r.html @@ -0,0 +1,143 @@ + + + + + + + +Caffe: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- r -

+
+ + + + diff --git a/doxygen/functions_func_s.html b/doxygen/functions_func_s.html new file mode 100644 index 00000000000..2ad5a6f9a90 --- /dev/null +++ b/doxygen/functions_func_s.html @@ -0,0 +1,137 @@ + + + + + + + +Caffe: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- s -

+
+ + + + diff --git a/doxygen/functions_func_t.html b/doxygen/functions_func_t.html new file mode 100644 index 00000000000..df27736b761 --- /dev/null +++ b/doxygen/functions_func_t.html @@ -0,0 +1,162 @@ + + + + + + + +Caffe: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- t -

+
+ + + + diff --git a/doxygen/functions_func_u.html b/doxygen/functions_func_u.html new file mode 100644 index 00000000000..80ceb4fb6a7 --- /dev/null +++ b/doxygen/functions_func_u.html @@ -0,0 +1,79 @@ + + + + + + + +Caffe: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- u -

+
+ + + + diff --git a/doxygen/functions_func_w.html b/doxygen/functions_func_w.html new file mode 100644 index 00000000000..3987a7f037b --- /dev/null +++ b/doxygen/functions_func_w.html @@ -0,0 +1,76 @@ + + + + + + + +Caffe: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- w -

+
+ + + + diff --git a/doxygen/functions_g.html b/doxygen/functions_g.html new file mode 100644 index 00000000000..0535d2fb36b --- /dev/null +++ b/doxygen/functions_g.html @@ -0,0 +1,77 @@ + + + + + + + +Caffe: Class Members + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- g -

+
+ + + + diff --git a/doxygen/functions_h.html b/doxygen/functions_h.html new file mode 100644 index 00000000000..98c307c8bdd --- /dev/null +++ b/doxygen/functions_h.html @@ -0,0 +1,84 @@ + + + + + + + +Caffe: Class Members + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- h -

+
+ + + + diff --git a/doxygen/functions_i.html b/doxygen/functions_i.html new file mode 100644 index 00000000000..7ec29587197 --- /dev/null +++ b/doxygen/functions_i.html @@ -0,0 +1,96 @@ + + + + + + + +Caffe: Class Members + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- i -

+
+ + + + diff --git a/doxygen/functions_k.html b/doxygen/functions_k.html new file mode 100644 index 00000000000..21fc13f6622 --- /dev/null +++ b/doxygen/functions_k.html @@ -0,0 +1,77 @@ + + + + + + + +Caffe: Class Members + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- k -

+
+ + + + diff --git a/doxygen/functions_l.html b/doxygen/functions_l.html new file mode 100644 index 00000000000..28d1ea38b45 --- /dev/null +++ b/doxygen/functions_l.html @@ -0,0 +1,149 @@ + + + + + + + +Caffe: Class Members + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- l -

+
+ + + + diff --git a/doxygen/functions_m.html b/doxygen/functions_m.html new file mode 100644 index 00000000000..e368a38cf53 --- /dev/null +++ b/doxygen/functions_m.html @@ -0,0 +1,116 @@ + + + + + + + +Caffe: Class Members + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/doxygen/functions_n.html b/doxygen/functions_n.html new file mode 100644 index 00000000000..56b3991db39 --- /dev/null +++ b/doxygen/functions_n.html @@ -0,0 +1,101 @@ + + + + + + + +Caffe: Class Members + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- n -

+
+ + + + diff --git a/doxygen/functions_o.html b/doxygen/functions_o.html new file mode 100644 index 00000000000..775eb3f9b9a --- /dev/null +++ b/doxygen/functions_o.html @@ -0,0 +1,84 @@ + + + + + + + +Caffe: Class Members + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- o -

+
+ + + + diff --git a/doxygen/functions_p.html b/doxygen/functions_p.html new file mode 100644 index 00000000000..b05f5655ef2 --- /dev/null +++ b/doxygen/functions_p.html @@ -0,0 +1,132 @@ + + + + + + + +Caffe: Class Members + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- p -

+
+ + + + diff --git a/doxygen/functions_r.html b/doxygen/functions_r.html new file mode 100644 index 00000000000..7b263d42a17 --- /dev/null +++ b/doxygen/functions_r.html @@ -0,0 +1,149 @@ + + + + + + + +Caffe: Class Members + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- r -

+
+ + + + diff --git a/doxygen/functions_s.html b/doxygen/functions_s.html new file mode 100644 index 00000000000..48b75e30704 --- /dev/null +++ b/doxygen/functions_s.html @@ -0,0 +1,184 @@ + + + + + + + +Caffe: Class Members + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- s -

+
+ + + + diff --git a/doxygen/functions_t.html b/doxygen/functions_t.html new file mode 100644 index 00000000000..5008cac6a82 --- /dev/null +++ b/doxygen/functions_t.html @@ -0,0 +1,174 @@ + + + + + + + +Caffe: Class Members + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- t -

+
+ + + + diff --git a/doxygen/functions_u.html b/doxygen/functions_u.html new file mode 100644 index 00000000000..d214833fba6 --- /dev/null +++ b/doxygen/functions_u.html @@ -0,0 +1,82 @@ + + + + + + + +Caffe: Class Members + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- u -

+
+ + + + diff --git a/doxygen/functions_vars.html b/doxygen/functions_vars.html new file mode 100644 index 00000000000..bcced0c2869 --- /dev/null +++ b/doxygen/functions_vars.html @@ -0,0 +1,369 @@ + + + + + + + +Caffe: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- h -

+ + +

- i -

+ + +

- k -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+
+ + + + diff --git a/doxygen/functions_w.html b/doxygen/functions_w.html new file mode 100644 index 00000000000..929656ea7fa --- /dev/null +++ b/doxygen/functions_w.html @@ -0,0 +1,76 @@ + + + + + + + +Caffe: Class Members + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- w -

+
+ + + + diff --git a/doxygen/hdf5_8hpp_source.html b/doxygen/hdf5_8hpp_source.html new file mode 100644 index 00000000000..af57cd9ba7f --- /dev/null +++ b/doxygen/hdf5_8hpp_source.html @@ -0,0 +1,78 @@ + + + + + + + +Caffe: include/caffe/util/hdf5.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
hdf5.hpp
+
+
+
1 #ifndef CAFFE_UTIL_HDF5_H_
2 #define CAFFE_UTIL_HDF5_H_
3 
4 #include <string>
5 
6 #include "hdf5.h"
7 #include "hdf5_hl.h"
8 
9 #include "caffe/blob.hpp"
10 
11 namespace caffe {
12 
13 template <typename Dtype>
14 void hdf5_load_nd_dataset_helper(
15  hid_t file_id, const char* dataset_name_, int min_dim, int max_dim,
16  Blob<Dtype>* blob);
17 
18 template <typename Dtype>
19 void hdf5_load_nd_dataset(
20  hid_t file_id, const char* dataset_name_, int min_dim, int max_dim,
21  Blob<Dtype>* blob);
22 
23 template <typename Dtype>
24 void hdf5_save_nd_dataset(
25  const hid_t file_id, const string& dataset_name, const Blob<Dtype>& blob,
26  bool write_diff = false);
27 
28 int hdf5_load_int(hid_t loc_id, const string& dataset_name);
29 void hdf5_save_int(hid_t loc_id, const string& dataset_name, int i);
30 string hdf5_load_string(hid_t loc_id, const string& dataset_name);
31 void hdf5_save_string(hid_t loc_id, const string& dataset_name,
32  const string& s);
33 
34 int hdf5_get_num_links(hid_t loc_id);
35 string hdf5_get_name_by_idx(hid_t loc_id, int idx);
36 
37 } // namespace caffe
38 
39 #endif // CAFFE_UTIL_HDF5_H_
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
+ + + + diff --git a/doxygen/hdf5__data__layer_8hpp_source.html b/doxygen/hdf5__data__layer_8hpp_source.html new file mode 100644 index 00000000000..c90d37d3763 --- /dev/null +++ b/doxygen/hdf5__data__layer_8hpp_source.html @@ -0,0 +1,91 @@ + + + + + + + +Caffe: include/caffe/layers/hdf5_data_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
hdf5_data_layer.hpp
+
+
+
1 #ifndef CAFFE_HDF5_DATA_LAYER_HPP_
2 #define CAFFE_HDF5_DATA_LAYER_HPP_
3 
4 #include "hdf5.h"
5 
6 #include <string>
7 #include <vector>
8 
9 #include "caffe/blob.hpp"
10 #include "caffe/layer.hpp"
11 #include "caffe/proto/caffe.pb.h"
12 
13 #include "caffe/layers/base_data_layer.hpp"
14 
15 namespace caffe {
16 
22 template <typename Dtype>
23 class HDF5DataLayer : public Layer<Dtype> {
24  public:
25  explicit HDF5DataLayer(const LayerParameter& param)
26  : Layer<Dtype>(param) {}
27  virtual ~HDF5DataLayer();
28  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
29  const vector<Blob<Dtype>*>& top);
30  // Data layers should be shared by multiple solvers in parallel
31  virtual inline bool ShareInParallel() const { return true; }
32  // Data layers have no bottoms, so reshaping is trivial.
33  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
34  const vector<Blob<Dtype>*>& top) {}
35 
36  virtual inline const char* type() const { return "HDF5Data"; }
37  virtual inline int ExactNumBottomBlobs() const { return 0; }
38  virtual inline int MinTopBlobs() const { return 1; }
39 
40  protected:
41  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
42  const vector<Blob<Dtype>*>& top);
43  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
44  const vector<Blob<Dtype>*>& top);
45  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
46  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
47  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
48  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
49  virtual void LoadHDF5FileData(const char* filename);
50 
51  std::vector<std::string> hdf_filenames_;
52  unsigned int num_files_;
53  unsigned int current_file_;
54  hsize_t current_row_;
55  std::vector<shared_ptr<Blob<Dtype> > > hdf_blobs_;
56  std::vector<unsigned int> data_permutation_;
57  std::vector<unsigned int> file_permutation_;
58 };
59 
60 } // namespace caffe
61 
62 #endif // CAFFE_HDF5_DATA_LAYER_HPP_
virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the CPU device, compute the layer output.
Definition: hdf5_data_layer.cpp:128
+
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: hdf5_data_layer.hpp:47
+
virtual bool ShareInParallel() const
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.
Definition: hdf5_data_layer.hpp:31
+
virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: hdf5_data_layer.hpp:33
+
Provides data to the Net from HDF5 files.
Definition: hdf5_data_layer.hpp:23
+
virtual int MinTopBlobs() const
Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
Definition: hdf5_data_layer.hpp:38
+
virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: hdf5_data_layer.cpp:72
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: hdf5_data_layer.hpp:37
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: hdf5_data_layer.hpp:45
+
virtual const char * type() const
Returns the layer type.
Definition: hdf5_data_layer.hpp:36
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/hdf5__output__layer_8hpp_source.html b/doxygen/hdf5__output__layer_8hpp_source.html new file mode 100644 index 00000000000..25ae0fe233a --- /dev/null +++ b/doxygen/hdf5__output__layer_8hpp_source.html @@ -0,0 +1,91 @@ + + + + + + + +Caffe: include/caffe/layers/hdf5_output_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
hdf5_output_layer.hpp
+
+
+
1 #ifndef CAFFE_HDF5_OUTPUT_LAYER_HPP_
2 #define CAFFE_HDF5_OUTPUT_LAYER_HPP_
3 
4 #include "hdf5.h"
5 
6 #include <string>
7 #include <vector>
8 
9 #include "caffe/blob.hpp"
10 #include "caffe/layer.hpp"
11 #include "caffe/proto/caffe.pb.h"
12 
13 namespace caffe {
14 
15 #define HDF5_DATA_DATASET_NAME "data"
16 #define HDF5_DATA_LABEL_NAME "label"
17 
23 template <typename Dtype>
24 class HDF5OutputLayer : public Layer<Dtype> {
25  public:
26  explicit HDF5OutputLayer(const LayerParameter& param)
27  : Layer<Dtype>(param), file_opened_(false) {}
28  virtual ~HDF5OutputLayer();
29  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
30  const vector<Blob<Dtype>*>& top);
31  // Data layers should be shared by multiple solvers in parallel
32  virtual inline bool ShareInParallel() const { return true; }
33  // Data layers have no bottoms, so reshaping is trivial.
34  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
35  const vector<Blob<Dtype>*>& top) {}
36 
37  virtual inline const char* type() const { return "HDF5Output"; }
38  // TODO: no limit on the number of blobs
39  virtual inline int ExactNumBottomBlobs() const { return 2; }
40  virtual inline int ExactNumTopBlobs() const { return 0; }
41 
42  inline std::string file_name() const { return file_name_; }
43 
44  protected:
45  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
46  const vector<Blob<Dtype>*>& top);
47  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
48  const vector<Blob<Dtype>*>& top);
49  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
50  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
51  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
52  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
53  virtual void SaveBlobs();
54 
55  bool file_opened_;
56  std::string file_name_;
57  hid_t file_id_;
58  Blob<Dtype> data_blob_;
59  Blob<Dtype> label_blob_;
60 };
61 
62 } // namespace caffe
63 
64 #endif // CAFFE_HDF5_OUTPUT_LAYER_HPP_
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the CPU device, compute the layer output.
Definition: hdf5_output_layer.cpp:41
+
Write blobs to disk as HDF5 files.
Definition: hdf5_output_layer.hpp:24
+
virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: hdf5_output_layer.hpp:34
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: hdf5_output_layer.hpp:40
+
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: hdf5_output_layer.cpp:62
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: hdf5_output_layer.hpp:39
+
virtual const char * type() const
Returns the layer type.
Definition: hdf5_output_layer.hpp:37
+
virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: hdf5_output_layer.cpp:12
+
virtual bool ShareInParallel() const
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.
Definition: hdf5_output_layer.hpp:32
+
virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/hierarchy.html b/doxygen/hierarchy.html new file mode 100644 index 00000000000..160299fd293 --- /dev/null +++ b/doxygen/hierarchy.html @@ -0,0 +1,197 @@ + + + + + + + +Caffe: Class Hierarchy + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Ccaffe::Batch< Dtype >
 Ccaffe::Blob< Dtype >A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers, Nets, and Solvers interact
 Ccaffe::Blob< int >
 Ccaffe::Blob< unsigned int >
 Ccaffe::BlockingQueue< T >
 Ccaffe::BlockingQueue< caffe::Batch< Dtype > *>
 Ccaffe::BlockingQueue< caffe::P2PSync< Dtype > *>
 Ccaffe::BlockingQueue< Datum *>
 Ccaffe::BlockingQueue< shared_ptr< caffe::DataReader::QueuePair > >
 Ccaffe::Caffe
 Ccaffe::Solver< Dtype >::Callback
 Ccaffe::P2PSync< Dtype >
 Ccaffe::db::Cursor
 Ccaffe::DataReaderReads 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
 Ccaffe::DataTransformer< Dtype >Applies common transformations to the input data, such as scaling, mirroring, substracting the image mean..
 Ccaffe::db::DB
 Ccaffe::DevicePair
 Ccaffe::Filler< Dtype >Fills a Blob with constant or randomly-generated data
 Ccaffe::BilinearFiller< Dtype >Fills a Blob with coefficients for bilinear interpolation
 Ccaffe::ConstantFiller< Dtype >Fills a Blob with constant values $ x = 0 $
 Ccaffe::GaussianFiller< Dtype >Fills a Blob with Gaussian-distributed values $ x = a $
 Ccaffe::MSRAFiller< Dtype >Fills a Blob with values $ x \sim N(0, \sigma^2) $ where $ \sigma^2 $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average
 Ccaffe::PositiveUnitballFiller< Dtype >Fills a Blob with values $ x \in [0, 1] $ such that $ \forall i \sum_j x_{ij} = 1 $
 Ccaffe::UniformFiller< Dtype >Fills a Blob with uniformly distributed values $ x\sim U(a, b) $
 Ccaffe::XavierFiller< Dtype >Fills a Blob with values $ x \sim U(-a, +a) $ where $ a $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average
 Ccaffe::Caffe::RNG::Generator
 Ccaffe::InternalThread
 Ccaffe::BasePrefetchingDataLayer< Dtype >
 Ccaffe::DataReader::Body
 Ccaffe::P2PSync< Dtype >
 Ccaffe::Layer< Dtype >An interface for the units of computation which can be composed into a Net
 Ccaffe::AccuracyLayer< Dtype >Computes the classification accuracy for a one-of-many classification task
 Ccaffe::ArgMaxLayer< Dtype >Compute the index of the $ K $ max values for each datum across all dimensions $ (C \times H \times W) $
 Ccaffe::BaseConvolutionLayer< Dtype >Abstract base class that factors out the BLAS code common to ConvolutionLayer and DeconvolutionLayer
 Ccaffe::BaseDataLayer< Dtype >Provides base for data layers that feed blobs to the Net
 Ccaffe::BatchNormLayer< Dtype >Normalizes the input to have 0-mean and/or unit (1) variance across the batch
 Ccaffe::BatchReindexLayer< Dtype >Index into the input blob along its first axis
 Ccaffe::BiasLayer< Dtype >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
 Ccaffe::ConcatLayer< Dtype >Takes at least two Blobs and concatenates them along either the num or channel dimension, outputting the result
 Ccaffe::CropLayer< Dtype >Takes a Blob and crop it, to the shape specified by the second input Blob, across all dimensions after the specified axis
 Ccaffe::DummyDataLayer< Dtype >Provides data to the Net generated by a Filler
 Ccaffe::EltwiseLayer< Dtype >Compute elementwise operations, such as product and sum, along multiple input Blobs
 Ccaffe::EmbedLayer< Dtype >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
 Ccaffe::FilterLayer< Dtype >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)
 Ccaffe::FlattenLayer< Dtype >Reshapes the input Blob into flat vectors
 Ccaffe::HDF5DataLayer< Dtype >Provides data to the Net from HDF5 files
 Ccaffe::HDF5OutputLayer< Dtype >Write blobs to disk as HDF5 files
 Ccaffe::Im2colLayer< Dtype >A helper for image operations that rearranges image regions into column vectors. Used by ConvolutionLayer to perform convolution by matrix multiplication
 Ccaffe::InnerProductLayer< Dtype >Also known as a "fully-connected" layer, computes an inner product with a set of learned weights, and (optionally) adds biases
 Ccaffe::InputLayer< Dtype >Provides data to the Net by assigning tops directly
 Ccaffe::LossLayer< Dtype >An interface for Layers that take two Blobs as input – usually (1) predictions and (2) ground-truth labels – and output a singleton Blob representing the loss
 Ccaffe::LRNLayer< Dtype >Normalize the input in a local region across or within feature maps
 Ccaffe::LSTMUnitLayer< Dtype >A helper for LSTMLayer: computes a single timestep of the non-linearity of the LSTM, producing the updated cell and hidden states
 Ccaffe::MVNLayer< Dtype >Normalizes the input to have 0-mean and/or unit (1) variance
 Ccaffe::NeuronLayer< Dtype >An interface for layers that take one blob as input ( $ x $) and produce one equally-sized blob as output ( $ y $), where each element of the output depends only on the corresponding input element
 Ccaffe::ParameterLayer< Dtype >
 Ccaffe::PoolingLayer< Dtype >Pools the input image by taking the max, average, etc. within regions
 Ccaffe::PythonLayer< Dtype >
 Ccaffe::RecurrentLayer< Dtype >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
 Ccaffe::ReductionLayer< Dtype >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
 Ccaffe::ReshapeLayer< Dtype >
 Ccaffe::ScaleLayer< Dtype >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. Note: for efficiency and convenience, this layer can additionally perform a "broadcast" sum too when bias_term: true is set
 Ccaffe::SilenceLayer< Dtype >Ignores bottom blobs while producing no top blobs. (This is useful to suppress outputs during testing.)
 Ccaffe::SliceLayer< Dtype >Takes a Blob and slices it along either the num or channel dimension, outputting multiple sliced Blob results
 Ccaffe::SoftmaxLayer< Dtype >Computes the softmax function
 Ccaffe::SplitLayer< Dtype >Creates a "split" path in the network by copying the bottom Blob into multiple top Blobs to be used by multiple consuming layers
 Ccaffe::SPPLayer< Dtype >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
 Ccaffe::TileLayer< Dtype >Copy a Blob along specified dimensions
 Ccaffe::LayerRegisterer< Dtype >
 Ccaffe::LayerRegistry< Dtype >
 Ccaffe::Net< Dtype >Connects Layers together into a directed acyclic graph (DAG) specified by a NetParameter
 Ccaffe::Params< Dtype >
 Ccaffe::GPUParams< Dtype >
 Ccaffe::DataReader::QueuePair
 Ccaffe::Caffe::RNG
 Ccaffe::SignalHandler
 Ccaffe::Solver< Dtype >An interface for classes that perform optimization on Nets
 Ccaffe::SGDSolver< Dtype >Optimizes the parameters of a Net using stochastic gradient descent (SGD) with momentum
 Ccaffe::WorkerSolver< Dtype >Solver that only computes gradients, used as worker for multi-GPU training
 Ccaffe::SolverRegisterer< Dtype >
 Ccaffe::SolverRegistry< Dtype >
 Ccaffe::BlockingQueue< T >::sync
 Ccaffe::SyncedMemoryManages memory allocation and synchronization between the host (CPU) and device (GPU)
 Ccaffe::Timer
 Ccaffe::CPUTimer
 Ccaffe::db::Transaction
+
+
+ + + + diff --git a/doxygen/hinge__loss__layer_8hpp_source.html b/doxygen/hinge__loss__layer_8hpp_source.html new file mode 100644 index 00000000000..8ce898cdd26 --- /dev/null +++ b/doxygen/hinge__loss__layer_8hpp_source.html @@ -0,0 +1,84 @@ + + + + + + + +Caffe: include/caffe/layers/hinge_loss_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
hinge_loss_layer.hpp
+
+
+
1 #ifndef CAFFE_HINGE_LOSS_LAYER_HPP_
2 #define CAFFE_HINGE_LOSS_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 #include "caffe/layers/loss_layer.hpp"
11 
12 namespace caffe {
13 
57 template <typename Dtype>
58 class HingeLossLayer : public LossLayer<Dtype> {
59  public:
60  explicit HingeLossLayer(const LayerParameter& param)
61  : LossLayer<Dtype>(param) {}
62 
63  virtual inline const char* type() const { return "HingeLoss"; }
64 
65  protected:
67  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
68  const vector<Blob<Dtype>*>& top);
69 
97  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
98  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
99 };
100 
101 
102 } // namespace caffe
103 
104 #endif // CAFFE_HINGE_LOSS_LAYER_HPP_
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Computes the hinge loss for a one-of-many classification task.
Definition: hinge_loss_layer.cpp:10
+
Computes the hinge loss for a one-of-many classification task.
Definition: hinge_loss_layer.hpp:58
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Computes the hinge loss error gradient w.r.t. the predictions.
Definition: hinge_loss_layer.cpp:43
+
An interface for Layers that take two Blobs as input – usually (1) predictions and (2) ground-truth ...
Definition: loss_layer.hpp:23
+
virtual const char * type() const
Returns the layer type.
Definition: hinge_loss_layer.hpp:63
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/im2col_8hpp_source.html b/doxygen/im2col_8hpp_source.html new file mode 100644 index 00000000000..5c25d899b5e --- /dev/null +++ b/doxygen/im2col_8hpp_source.html @@ -0,0 +1,78 @@ + + + + + + + +Caffe: include/caffe/util/im2col.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
im2col.hpp
+
+
+
1 #ifndef _CAFFE_UTIL_IM2COL_HPP_
2 #define _CAFFE_UTIL_IM2COL_HPP_
3 
4 namespace caffe {
5 
6 template <typename Dtype>
7 void im2col_nd_cpu(const Dtype* data_im, const int num_spatial_axes,
8  const int* im_shape, const int* col_shape,
9  const int* kernel_shape, const int* pad, const int* stride,
10  const int* dilation, Dtype* data_col);
11 
12 template <typename Dtype>
13 void im2col_cpu(const Dtype* data_im, const int channels,
14  const int height, const int width, const int kernel_h, const int kernel_w,
15  const int pad_h, const int pad_w, const int stride_h,
16  const int stride_w, const int dilation_h, const int dilation_w,
17  Dtype* data_col);
18 
19 template <typename Dtype>
20 void col2im_nd_cpu(const Dtype* data_col, const int num_spatial_axes,
21  const int* im_shape, const int* col_shape,
22  const int* kernel_shape, const int* pad, const int* stride,
23  const int* dilation, Dtype* data_im);
24 
25 template <typename Dtype>
26 void col2im_cpu(const Dtype* data_col, const int channels,
27  const int height, const int width, const int kernel_h, const int kernel_w,
28  const int pad_h, const int pad_w, const int stride_h,
29  const int stride_w, const int dilation_h, const int dilation_w,
30  Dtype* data_im);
31 
32 template <typename Dtype>
33 void im2col_nd_gpu(const Dtype* data_im, const int num_spatial_axes,
34  const int col_size, const int* im_shape, const int* col_shape,
35  const int* kernel_shape, const int* pad, const int* stride,
36  const int* dilation, Dtype* data_col);
37 
38 template <typename Dtype>
39 void im2col_gpu(const Dtype* data_im, const int channels,
40  const int height, const int width, const int kernel_h, const int kernel_w,
41  const int pad_h, const int pad_w, const int stride_h,
42  const int stride_w, const int dilation_h, const int dilation_w,
43  Dtype* data_col);
44 
45 template <typename Dtype>
46 void col2im_nd_gpu(const Dtype* data_col, const int num_spatial_axes,
47  const int im_size, const int* im_shape, const int* col_shape,
48  const int* kernel_shape, const int* pad, const int* stride,
49  const int* dilation, Dtype* data_im);
50 
51 template <typename Dtype>
52 void col2im_gpu(const Dtype* data_col, const int channels,
53  const int height, const int width, const int kernel_h, const int kernel_w,
54  const int pad_h, const int pad_w, const int stride_h,
55  const int stride_w, const int dilation_h, const int dilation_w,
56  Dtype* data_im);
57 
58 } // namespace caffe
59 
60 #endif // CAFFE_UTIL_IM2COL_HPP_
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
+ + + + diff --git a/doxygen/im2col__layer_8hpp_source.html b/doxygen/im2col__layer_8hpp_source.html new file mode 100644 index 00000000000..2f317af955f --- /dev/null +++ b/doxygen/im2col__layer_8hpp_source.html @@ -0,0 +1,94 @@ + + + + + + + +Caffe: include/caffe/layers/im2col_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
im2col_layer.hpp
+
+
+
1 #ifndef CAFFE_IM2COL_LAYER_HPP_
2 #define CAFFE_IM2COL_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 namespace caffe {
11 
19 template <typename Dtype>
20 class Im2colLayer : public Layer<Dtype> {
21  public:
22  explicit Im2colLayer(const LayerParameter& param)
23  : Layer<Dtype>(param) {}
24  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
25  const vector<Blob<Dtype>*>& top);
26  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
27  const vector<Blob<Dtype>*>& top);
28 
29  virtual inline const char* type() const { return "Im2col"; }
30  virtual inline int ExactNumBottomBlobs() const { return 1; }
31  virtual inline int ExactNumTopBlobs() const { return 1; }
32 
33  protected:
34  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
35  const vector<Blob<Dtype>*>& top);
36  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
37  const vector<Blob<Dtype>*>& top);
38  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
39  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
40  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
41  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
42 
51 
52  int num_spatial_axes_;
53  int bottom_dim_;
54  int top_dim_;
55 
56  int channel_axis_;
57  int num_;
58  int channels_;
59 
60  bool force_nd_im2col_;
61 };
62 
63 } // namespace caffe
64 
65 #endif // CAFFE_IM2COL_LAYER_HPP_
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
A helper for image operations that rearranges image regions into column vectors. Used by ConvolutionL...
Definition: im2col_layer.hpp:20
+
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: im2col_layer.hpp:30
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the CPU device, compute the layer output.
Definition: im2col_layer.cpp:131
+
Blob< int > pad_
The spatial dimensions of the padding.
Definition: im2col_layer.hpp:48
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: im2col_layer.hpp:31
+
virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: im2col_layer.cpp:9
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: im2col_layer.cpp:162
+
Blob< int > kernel_shape_
The spatial dimensions of a filter kernel.
Definition: im2col_layer.hpp:44
+
virtual const char * type() const
Returns the layer type.
Definition: im2col_layer.hpp:29
+
Blob< int > dilation_
The spatial dimensions of the dilation.
Definition: im2col_layer.hpp:50
+
Blob< int > stride_
The spatial dimensions of the stride.
Definition: im2col_layer.hpp:46
+
virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: im2col_layer.cpp:107
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/image__data__layer_8hpp_source.html b/doxygen/image__data__layer_8hpp_source.html new file mode 100644 index 00000000000..395fb30fa5b --- /dev/null +++ b/doxygen/image__data__layer_8hpp_source.html @@ -0,0 +1,85 @@ + + + + + + + +Caffe: include/caffe/layers/image_data_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
image_data_layer.hpp
+
+
+
1 #ifndef CAFFE_IMAGE_DATA_LAYER_HPP_
2 #define CAFFE_IMAGE_DATA_LAYER_HPP_
3 
4 #include <string>
5 #include <utility>
6 #include <vector>
7 
8 #include "caffe/blob.hpp"
9 #include "caffe/data_transformer.hpp"
10 #include "caffe/internal_thread.hpp"
11 #include "caffe/layer.hpp"
12 #include "caffe/layers/base_data_layer.hpp"
13 #include "caffe/proto/caffe.pb.h"
14 
15 namespace caffe {
16 
22 template <typename Dtype>
24  public:
25  explicit ImageDataLayer(const LayerParameter& param)
27  virtual ~ImageDataLayer();
28  virtual void DataLayerSetUp(const vector<Blob<Dtype>*>& bottom,
29  const vector<Blob<Dtype>*>& top);
30 
31  virtual inline const char* type() const { return "ImageData"; }
32  virtual inline int ExactNumBottomBlobs() const { return 0; }
33  virtual inline int ExactNumTopBlobs() const { return 2; }
34 
35  protected:
36  shared_ptr<Caffe::RNG> prefetch_rng_;
37  virtual void ShuffleImages();
38  virtual void load_batch(Batch<Dtype>* batch);
39 
40  vector<std::pair<std::string, int> > lines_;
41  int lines_id_;
42 };
43 
44 
45 } // namespace caffe
46 
47 #endif // CAFFE_IMAGE_DATA_LAYER_HPP_
Definition: base_data_layer.hpp:49
+
Definition: base_data_layer.hpp:55
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
Provides data to the Net from image files.
Definition: image_data_layer.hpp:23
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: image_data_layer.hpp:33
+
virtual const char * type() const
Returns the layer type.
Definition: image_data_layer.hpp:31
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: image_data_layer.hpp:32
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/index.html b/doxygen/index.html new file mode 100644 index 00000000000..828fa90932d --- /dev/null +++ b/doxygen/index.html @@ -0,0 +1,73 @@ + + + + + + + +Caffe: Main Page + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Caffe Documentation
+
+
+
+ + + + diff --git a/doxygen/infogain__loss__layer_8hpp_source.html b/doxygen/infogain__loss__layer_8hpp_source.html new file mode 100644 index 00000000000..15efbc887ed --- /dev/null +++ b/doxygen/infogain__loss__layer_8hpp_source.html @@ -0,0 +1,89 @@ + + + + + + + +Caffe: include/caffe/layers/infogain_loss_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
infogain_loss_layer.hpp
+
+
+
1 #ifndef CAFFE_INFOGAIN_LOSS_LAYER_HPP_
2 #define CAFFE_INFOGAIN_LOSS_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 #include "caffe/layers/loss_layer.hpp"
11 
12 namespace caffe {
13 
46 template <typename Dtype>
47 class InfogainLossLayer : public LossLayer<Dtype> {
48  public:
49  explicit InfogainLossLayer(const LayerParameter& param)
50  : LossLayer<Dtype>(param), infogain_() {}
51  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
52  const vector<Blob<Dtype>*>& top);
53  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
54  const vector<Blob<Dtype>*>& top);
55 
56  // InfogainLossLayer takes 2-3 bottom Blobs; if there are 3 the third should
57  // be the infogain matrix. (Otherwise the infogain matrix is loaded from a
58  // file specified by LayerParameter.)
59  virtual inline int ExactNumBottomBlobs() const { return -1; }
60  virtual inline int MinBottomBlobs() const { return 2; }
61  virtual inline int MaxBottomBlobs() const { return 3; }
62 
63  virtual inline const char* type() const { return "InfogainLoss"; }
64 
65  protected:
67  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
68  const vector<Blob<Dtype>*>& top);
69 
102  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
103  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
104 
105  Blob<Dtype> infogain_;
106 };
107 
108 } // namespace caffe
109 
110 #endif // CAFFE_INFOGAIN_LOSS_LAYER_HPP_
virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: infogain_loss_layer.cpp:11
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual const char * type() const
Returns the layer type.
Definition: infogain_loss_layer.hpp:63
+
A generalization of MultinomialLogisticLossLayer that takes an "information gain" (infogain) matrix s...
Definition: infogain_loss_layer.hpp:47
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Computes the infogain loss error gradient w.r.t. the predictions.
Definition: infogain_loss_layer.cpp:71
+
virtual int MaxBottomBlobs() const
Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is requi...
Definition: infogain_loss_layer.hpp:61
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
A generalization of MultinomialLogisticLossLayer that takes an "information gain" (infogain) matrix s...
Definition: infogain_loss_layer.cpp:47
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: infogain_loss_layer.hpp:59
+
An interface for Layers that take two Blobs as input – usually (1) predictions and (2) ground-truth ...
Definition: loss_layer.hpp:23
+
virtual int MinBottomBlobs() const
Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is requi...
Definition: infogain_loss_layer.hpp:60
+
virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: infogain_loss_layer.cpp:25
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/inner__product__layer_8hpp_source.html b/doxygen/inner__product__layer_8hpp_source.html new file mode 100644 index 00000000000..94913238876 --- /dev/null +++ b/doxygen/inner__product__layer_8hpp_source.html @@ -0,0 +1,91 @@ + + + + + + + +Caffe: include/caffe/layers/inner_product_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
inner_product_layer.hpp
+
+
+
1 #ifndef CAFFE_INNER_PRODUCT_LAYER_HPP_
2 #define CAFFE_INNER_PRODUCT_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 namespace caffe {
11 
18 template <typename Dtype>
19 class InnerProductLayer : public Layer<Dtype> {
20  public:
21  explicit InnerProductLayer(const LayerParameter& param)
22  : Layer<Dtype>(param) {}
23  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
24  const vector<Blob<Dtype>*>& top);
25  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
26  const vector<Blob<Dtype>*>& top);
27 
28  virtual inline const char* type() const { return "InnerProduct"; }
29  virtual inline int ExactNumBottomBlobs() const { return 1; }
30  virtual inline int ExactNumTopBlobs() const { return 1; }
31 
32  protected:
33  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
34  const vector<Blob<Dtype>*>& top);
35  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
36  const vector<Blob<Dtype>*>& top);
37  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
38  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
39  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
40  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
41 
42  int M_;
43  int K_;
44  int N_;
45  bool bias_term_;
46  Blob<Dtype> bias_multiplier_;
47  bool transpose_;
48 };
49 
50 } // namespace caffe
51 
52 #endif // CAFFE_INNER_PRODUCT_LAYER_HPP_
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual const char * type() const
Returns the layer type.
Definition: inner_product_layer.hpp:28
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: inner_product_layer.hpp:30
+
virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: inner_product_layer.cpp:58
+
virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
bool transpose_
if true, assume transposed weights
Definition: inner_product_layer.hpp:47
+
Also known as a "fully-connected" layer, computes an inner product with a set of learned weights...
Definition: inner_product_layer.hpp:19
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: inner_product_layer.hpp:29
+
virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: inner_product_layer.cpp:10
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the CPU device, compute the layer output.
Definition: inner_product_layer.cpp:84
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: inner_product_layer.cpp:100
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/input__layer_8hpp_source.html b/doxygen/input__layer_8hpp_source.html new file mode 100644 index 00000000000..c709dacf3a7 --- /dev/null +++ b/doxygen/input__layer_8hpp_source.html @@ -0,0 +1,89 @@ + + + + + + + +Caffe: include/caffe/layers/input_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
input_layer.hpp
+
+
+
1 #ifndef CAFFE_INPUT_LAYER_HPP_
2 #define CAFFE_INPUT_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 namespace caffe {
11 
18 template <typename Dtype>
19 class InputLayer : public Layer<Dtype> {
20  public:
21  explicit InputLayer(const LayerParameter& param)
22  : Layer<Dtype>(param) {}
23  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
24  const vector<Blob<Dtype>*>& top);
25  // Data layers should be shared by multiple solvers in parallel
26  virtual inline bool ShareInParallel() const { return true; }
27  // Data layers have no bottoms, so reshaping is trivial.
28  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
29  const vector<Blob<Dtype>*>& top) {}
30 
31  virtual inline const char* type() const { return "Input"; }
32  virtual inline int ExactNumBottomBlobs() const { return 0; }
33  virtual inline int MinTopBlobs() const { return 1; }
34 
35  protected:
36  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
37  const vector<Blob<Dtype>*>& top) {}
38  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
39  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
40 };
41 
42 } // namespace caffe
43 
44 #endif // CAFFE_INPUT_LAYER_HPP_
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: input_layer.hpp:32
+
virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: input_layer.cpp:8
+
virtual bool ShareInParallel() const
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.
Definition: input_layer.hpp:26
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the CPU device, compute the layer output.
Definition: input_layer.hpp:36
+
virtual int MinTopBlobs() const
Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
Definition: input_layer.hpp:33
+
Provides data to the Net by assigning tops directly.
Definition: input_layer.hpp:19
+
virtual const char * type() const
Returns the layer type.
Definition: input_layer.hpp:31
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: input_layer.hpp:38
+
virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: input_layer.hpp:28
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/insert__splits_8hpp_source.html b/doxygen/insert__splits_8hpp_source.html new file mode 100644 index 00000000000..fbdaa672d6d --- /dev/null +++ b/doxygen/insert__splits_8hpp_source.html @@ -0,0 +1,78 @@ + + + + + + + +Caffe: include/caffe/util/insert_splits.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
insert_splits.hpp
+
+
+
1 #ifndef _CAFFE_UTIL_INSERT_SPLITS_HPP_
2 #define _CAFFE_UTIL_INSERT_SPLITS_HPP_
3 
4 #include <string>
5 
6 #include "caffe/proto/caffe.pb.h"
7 
8 namespace caffe {
9 
10 // Copy NetParameters with SplitLayers added to replace any shared bottom
11 // blobs with unique bottom blobs provided by the SplitLayer.
12 void InsertSplits(const NetParameter& param, NetParameter* param_split);
13 
14 void ConfigureSplitLayer(const string& layer_name, const string& blob_name,
15  const int blob_idx, const int split_count, const float loss_weight,
16  LayerParameter* split_layer_param);
17 
18 string SplitLayerName(const string& layer_name, const string& blob_name,
19  const int blob_idx);
20 
21 string SplitBlobName(const string& layer_name, const string& blob_name,
22  const int blob_idx, const int split_idx);
23 
24 } // namespace caffe
25 
26 #endif // CAFFE_UTIL_INSERT_SPLITS_HPP_
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
+ + + + diff --git a/doxygen/internal__thread_8hpp_source.html b/doxygen/internal__thread_8hpp_source.html new file mode 100644 index 00000000000..7424a280348 --- /dev/null +++ b/doxygen/internal__thread_8hpp_source.html @@ -0,0 +1,80 @@ + + + + + + + +Caffe: include/caffe/internal_thread.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
internal_thread.hpp
+
+
+
1 #ifndef CAFFE_INTERNAL_THREAD_HPP_
2 #define CAFFE_INTERNAL_THREAD_HPP_
3 
4 #include "caffe/common.hpp"
5 
10 namespace boost { class thread; }
11 
12 namespace caffe {
13 
20  public:
21  InternalThread() : thread_() {}
22  virtual ~InternalThread();
23 
29  void StartInternalThread();
30 
32  void StopInternalThread();
33 
34  bool is_started() const;
35 
36  protected:
37  /* Implement this method in your subclass
38  with the code you want your thread to run. */
39  virtual void InternalThreadEntry() {}
40 
41  /* Should be tested when running loops to exit when requested. */
42  bool must_stop();
43 
44  private:
45  void entry(int device, Caffe::Brew mode, int rand_seed, int solver_count,
46  bool root_solver);
47 
48  shared_ptr<boost::thread> thread_;
49 };
50 
51 } // namespace caffe
52 
53 #endif // CAFFE_INTERNAL_THREAD_HPP_
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
Definition: internal_thread.hpp:10
+
Definition: internal_thread.hpp:19
+
+ + + + diff --git a/doxygen/io_8hpp_source.html b/doxygen/io_8hpp_source.html new file mode 100644 index 00000000000..2852419fff1 --- /dev/null +++ b/doxygen/io_8hpp_source.html @@ -0,0 +1,78 @@ + + + + + + + +Caffe: include/caffe/util/io.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
io.hpp
+
+
+
1 #ifndef CAFFE_UTIL_IO_H_
2 #define CAFFE_UTIL_IO_H_
3 
4 #include <boost/filesystem.hpp>
5 #include <iomanip>
6 #include <iostream> // NOLINT(readability/streams)
7 #include <string>
8 
9 #include "google/protobuf/message.h"
10 
11 #include "caffe/common.hpp"
12 #include "caffe/proto/caffe.pb.h"
13 #include "caffe/util/format.hpp"
14 
15 #ifndef CAFFE_TMP_DIR_RETRIES
16 #define CAFFE_TMP_DIR_RETRIES 100
17 #endif
18 
19 namespace caffe {
20 
21 using ::google::protobuf::Message;
22 using ::boost::filesystem::path;
23 
24 inline void MakeTempDir(string* temp_dirname) {
25  temp_dirname->clear();
26  const path& model =
27  boost::filesystem::temp_directory_path()/"caffe_test.%%%%-%%%%";
28  for ( int i = 0; i < CAFFE_TMP_DIR_RETRIES; i++ ) {
29  const path& dir = boost::filesystem::unique_path(model).string();
30  bool done = boost::filesystem::create_directory(dir);
31  if ( done ) {
32  *temp_dirname = dir.string();
33  return;
34  }
35  }
36  LOG(FATAL) << "Failed to create a temporary directory.";
37 }
38 
39 inline void MakeTempFilename(string* temp_filename) {
40  static path temp_files_subpath;
41  static uint64_t next_temp_file = 0;
42  temp_filename->clear();
43  if ( temp_files_subpath.empty() ) {
44  string path_string="";
45  MakeTempDir(&path_string);
46  temp_files_subpath = path_string;
47  }
48  *temp_filename =
49  (temp_files_subpath/caffe::format_int(next_temp_file++, 9)).string();
50 }
51 
52 bool ReadProtoFromTextFile(const char* filename, Message* proto);
53 
54 inline bool ReadProtoFromTextFile(const string& filename, Message* proto) {
55  return ReadProtoFromTextFile(filename.c_str(), proto);
56 }
57 
58 inline void ReadProtoFromTextFileOrDie(const char* filename, Message* proto) {
59  CHECK(ReadProtoFromTextFile(filename, proto));
60 }
61 
62 inline void ReadProtoFromTextFileOrDie(const string& filename, Message* proto) {
63  ReadProtoFromTextFileOrDie(filename.c_str(), proto);
64 }
65 
66 void WriteProtoToTextFile(const Message& proto, const char* filename);
67 inline void WriteProtoToTextFile(const Message& proto, const string& filename) {
68  WriteProtoToTextFile(proto, filename.c_str());
69 }
70 
71 bool ReadProtoFromBinaryFile(const char* filename, Message* proto);
72 
73 inline bool ReadProtoFromBinaryFile(const string& filename, Message* proto) {
74  return ReadProtoFromBinaryFile(filename.c_str(), proto);
75 }
76 
77 inline void ReadProtoFromBinaryFileOrDie(const char* filename, Message* proto) {
78  CHECK(ReadProtoFromBinaryFile(filename, proto));
79 }
80 
81 inline void ReadProtoFromBinaryFileOrDie(const string& filename,
82  Message* proto) {
83  ReadProtoFromBinaryFileOrDie(filename.c_str(), proto);
84 }
85 
86 
87 void WriteProtoToBinaryFile(const Message& proto, const char* filename);
88 inline void WriteProtoToBinaryFile(
89  const Message& proto, const string& filename) {
90  WriteProtoToBinaryFile(proto, filename.c_str());
91 }
92 
93 bool ReadFileToDatum(const string& filename, const int label, Datum* datum);
94 
95 inline bool ReadFileToDatum(const string& filename, Datum* datum) {
96  return ReadFileToDatum(filename, -1, datum);
97 }
98 
99 bool ReadImageToDatum(const string& filename, const int label,
100  const int height, const int width, const bool is_color,
101  const std::string & encoding, Datum* datum);
102 
103 inline bool ReadImageToDatum(const string& filename, const int label,
104  const int height, const int width, const bool is_color, Datum* datum) {
105  return ReadImageToDatum(filename, label, height, width, is_color,
106  "", datum);
107 }
108 
109 inline bool ReadImageToDatum(const string& filename, const int label,
110  const int height, const int width, Datum* datum) {
111  return ReadImageToDatum(filename, label, height, width, true, datum);
112 }
113 
114 inline bool ReadImageToDatum(const string& filename, const int label,
115  const bool is_color, Datum* datum) {
116  return ReadImageToDatum(filename, label, 0, 0, is_color, datum);
117 }
118 
119 inline bool ReadImageToDatum(const string& filename, const int label,
120  Datum* datum) {
121  return ReadImageToDatum(filename, label, 0, 0, true, datum);
122 }
123 
124 inline bool ReadImageToDatum(const string& filename, const int label,
125  const std::string & encoding, Datum* datum) {
126  return ReadImageToDatum(filename, label, 0, 0, true, encoding, datum);
127 }
128 
129 bool DecodeDatumNative(Datum* datum);
130 bool DecodeDatum(Datum* datum, bool is_color);
131 
132 #ifdef USE_OPENCV
133 cv::Mat ReadImageToCVMat(const string& filename,
134  const int height, const int width, const bool is_color);
135 
136 cv::Mat ReadImageToCVMat(const string& filename,
137  const int height, const int width);
138 
139 cv::Mat ReadImageToCVMat(const string& filename,
140  const bool is_color);
141 
142 cv::Mat ReadImageToCVMat(const string& filename);
143 
144 cv::Mat DecodeDatumToCVMatNative(const Datum& datum);
145 cv::Mat DecodeDatumToCVMat(const Datum& datum, bool is_color);
146 
147 void CVMatToDatum(const cv::Mat& cv_img, Datum* datum);
148 #endif // USE_OPENCV
149 
150 } // namespace caffe
151 
152 #endif // CAFFE_UTIL_IO_H_
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
+ + + + diff --git a/doxygen/jquery.js b/doxygen/jquery.js new file mode 100644 index 00000000000..f5343eda922 --- /dev/null +++ b/doxygen/jquery.js @@ -0,0 +1,87 @@ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + + + +
+
+
layer.hpp
+
+
+
1 #ifndef CAFFE_LAYER_H_
2 #define CAFFE_LAYER_H_
3 
4 #include <algorithm>
5 #include <string>
6 #include <vector>
7 
8 #include "caffe/blob.hpp"
9 #include "caffe/common.hpp"
10 #include "caffe/layer_factory.hpp"
11 #include "caffe/proto/caffe.pb.h"
12 #include "caffe/util/math_functions.hpp"
13 
18 namespace boost { class mutex; }
19 
20 namespace caffe {
21 
32 template <typename Dtype>
33 class Layer {
34  public:
40  explicit Layer(const LayerParameter& param)
41  : layer_param_(param), is_shared_(false) {
42  // Set phase and copy blobs (if there are any).
43  phase_ = param.phase();
44  if (layer_param_.blobs_size() > 0) {
45  blobs_.resize(layer_param_.blobs_size());
46  for (int i = 0; i < layer_param_.blobs_size(); ++i) {
47  blobs_[i].reset(new Blob<Dtype>());
48  blobs_[i]->FromProto(layer_param_.blobs(i));
49  }
50  }
51  }
52  virtual ~Layer() {}
53 
67  void SetUp(const vector<Blob<Dtype>*>& bottom,
68  const vector<Blob<Dtype>*>& top) {
69  InitMutex();
70  CheckBlobCounts(bottom, top);
71  LayerSetUp(bottom, top);
72  Reshape(bottom, top);
73  SetLossWeights(top);
74  }
75 
92  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
93  const vector<Blob<Dtype>*>& top) {}
94 
101  virtual inline bool ShareInParallel() const { return false; }
102 
107  inline bool IsShared() const { return is_shared_; }
108 
113  inline void SetShared(bool is_shared) {
114  CHECK(ShareInParallel() || !is_shared)
115  << type() << "Layer does not support sharing.";
116  is_shared_ = is_shared;
117  }
118 
131  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
132  const vector<Blob<Dtype>*>& top) = 0;
133 
151  inline Dtype Forward(const vector<Blob<Dtype>*>& bottom,
152  const vector<Blob<Dtype>*>& top);
153 
175  inline void Backward(const vector<Blob<Dtype>*>& top,
176  const vector<bool>& propagate_down,
177  const vector<Blob<Dtype>*>& bottom);
178 
182  vector<shared_ptr<Blob<Dtype> > >& blobs() {
183  return blobs_;
184  }
185 
189  const LayerParameter& layer_param() const { return layer_param_; }
190 
194  virtual void ToProto(LayerParameter* param, bool write_diff = false);
195 
199  inline Dtype loss(const int top_index) const {
200  return (loss_.size() > top_index) ? loss_[top_index] : Dtype(0);
201  }
202 
206  inline void set_loss(const int top_index, const Dtype value) {
207  if (loss_.size() <= top_index) {
208  loss_.resize(top_index + 1, Dtype(0));
209  }
210  loss_[top_index] = value;
211  }
212 
216  virtual inline const char* type() const { return ""; }
217 
225  virtual inline int ExactNumBottomBlobs() const { return -1; }
233  virtual inline int MinBottomBlobs() const { return -1; }
241  virtual inline int MaxBottomBlobs() const { return -1; }
249  virtual inline int ExactNumTopBlobs() const { return -1; }
257  virtual inline int MinTopBlobs() const { return -1; }
265  virtual inline int MaxTopBlobs() const { return -1; }
273  virtual inline bool EqualNumBottomTopBlobs() const { return false; }
274 
283  virtual inline bool AutoTopBlobs() const { return false; }
284 
293  virtual inline bool AllowForceBackward(const int bottom_index) const {
294  return true;
295  }
296 
304  inline bool param_propagate_down(const int param_id) {
305  return (param_propagate_down_.size() > param_id) ?
306  param_propagate_down_[param_id] : false;
307  }
312  inline void set_param_propagate_down(const int param_id, const bool value) {
313  if (param_propagate_down_.size() <= param_id) {
314  param_propagate_down_.resize(param_id + 1, true);
315  }
316  param_propagate_down_[param_id] = value;
317  }
318 
319 
320  protected:
322  LayerParameter layer_param_;
324  Phase phase_;
326  vector<shared_ptr<Blob<Dtype> > > blobs_;
328  vector<bool> param_propagate_down_;
329 
332  vector<Dtype> loss_;
333 
335  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
336  const vector<Blob<Dtype>*>& top) = 0;
341  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
342  const vector<Blob<Dtype>*>& top) {
343  // LOG(WARNING) << "Using CPU code as backup.";
344  return Forward_cpu(bottom, top);
345  }
346 
351  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
352  const vector<bool>& propagate_down,
353  const vector<Blob<Dtype>*>& bottom) = 0;
359  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
360  const vector<bool>& propagate_down,
361  const vector<Blob<Dtype>*>& bottom) {
362  // LOG(WARNING) << "Using CPU code as backup.";
363  Backward_cpu(top, propagate_down, bottom);
364  }
365 
371  virtual void CheckBlobCounts(const vector<Blob<Dtype>*>& bottom,
372  const vector<Blob<Dtype>*>& top) {
373  if (ExactNumBottomBlobs() >= 0) {
374  CHECK_EQ(ExactNumBottomBlobs(), bottom.size())
375  << type() << " Layer takes " << ExactNumBottomBlobs()
376  << " bottom blob(s) as input.";
377  }
378  if (MinBottomBlobs() >= 0) {
379  CHECK_LE(MinBottomBlobs(), bottom.size())
380  << type() << " Layer takes at least " << MinBottomBlobs()
381  << " bottom blob(s) as input.";
382  }
383  if (MaxBottomBlobs() >= 0) {
384  CHECK_GE(MaxBottomBlobs(), bottom.size())
385  << type() << " Layer takes at most " << MaxBottomBlobs()
386  << " bottom blob(s) as input.";
387  }
388  if (ExactNumTopBlobs() >= 0) {
389  CHECK_EQ(ExactNumTopBlobs(), top.size())
390  << type() << " Layer produces " << ExactNumTopBlobs()
391  << " top blob(s) as output.";
392  }
393  if (MinTopBlobs() >= 0) {
394  CHECK_LE(MinTopBlobs(), top.size())
395  << type() << " Layer produces at least " << MinTopBlobs()
396  << " top blob(s) as output.";
397  }
398  if (MaxTopBlobs() >= 0) {
399  CHECK_GE(MaxTopBlobs(), top.size())
400  << type() << " Layer produces at most " << MaxTopBlobs()
401  << " top blob(s) as output.";
402  }
403  if (EqualNumBottomTopBlobs()) {
404  CHECK_EQ(bottom.size(), top.size())
405  << type() << " Layer produces one top blob as output for each "
406  << "bottom blob input.";
407  }
408  }
409 
414  inline void SetLossWeights(const vector<Blob<Dtype>*>& top) {
415  const int num_loss_weights = layer_param_.loss_weight_size();
416  if (num_loss_weights) {
417  CHECK_EQ(top.size(), num_loss_weights) << "loss_weight must be "
418  "unspecified or specified once per top blob.";
419  for (int top_id = 0; top_id < top.size(); ++top_id) {
420  const Dtype loss_weight = layer_param_.loss_weight(top_id);
421  if (loss_weight == Dtype(0)) { continue; }
422  this->set_loss(top_id, loss_weight);
423  const int count = top[top_id]->count();
424  Dtype* loss_multiplier = top[top_id]->mutable_cpu_diff();
425  caffe_set(count, loss_weight, loss_multiplier);
426  }
427  }
428  }
429 
430  private:
432  bool is_shared_;
433 
435  shared_ptr<boost::mutex> forward_mutex_;
436 
438  void InitMutex();
440  void Lock();
442  void Unlock();
443 
444  DISABLE_COPY_AND_ASSIGN(Layer);
445 }; // class Layer
446 
447 // Forward and backward wrappers. You should implement the cpu and
448 // gpu specific implementations instead, and should not change these
449 // functions.
450 template <typename Dtype>
451 inline Dtype Layer<Dtype>::Forward(const vector<Blob<Dtype>*>& bottom,
452  const vector<Blob<Dtype>*>& top) {
453  // Lock during forward to ensure sequential forward
454  Lock();
455  Dtype loss = 0;
456  Reshape(bottom, top);
457  switch (Caffe::mode()) {
458  case Caffe::CPU:
459  Forward_cpu(bottom, top);
460  for (int top_id = 0; top_id < top.size(); ++top_id) {
461  if (!this->loss(top_id)) { continue; }
462  const int count = top[top_id]->count();
463  const Dtype* data = top[top_id]->cpu_data();
464  const Dtype* loss_weights = top[top_id]->cpu_diff();
465  loss += caffe_cpu_dot(count, data, loss_weights);
466  }
467  break;
468  case Caffe::GPU:
469  Forward_gpu(bottom, top);
470 #ifndef CPU_ONLY
471  for (int top_id = 0; top_id < top.size(); ++top_id) {
472  if (!this->loss(top_id)) { continue; }
473  const int count = top[top_id]->count();
474  const Dtype* data = top[top_id]->gpu_data();
475  const Dtype* loss_weights = top[top_id]->gpu_diff();
476  Dtype blob_loss = 0;
477  caffe_gpu_dot(count, data, loss_weights, &blob_loss);
478  loss += blob_loss;
479  }
480 #endif
481  break;
482  default:
483  LOG(FATAL) << "Unknown caffe mode.";
484  }
485  Unlock();
486  return loss;
487 }
488 
489 template <typename Dtype>
490 inline void Layer<Dtype>::Backward(const vector<Blob<Dtype>*>& top,
491  const vector<bool>& propagate_down,
492  const vector<Blob<Dtype>*>& bottom) {
493  switch (Caffe::mode()) {
494  case Caffe::CPU:
495  Backward_cpu(top, propagate_down, bottom);
496  break;
497  case Caffe::GPU:
498  Backward_gpu(top, propagate_down, bottom);
499  break;
500  default:
501  LOG(FATAL) << "Unknown caffe mode.";
502  }
503 }
504 
505 // Serialize LayerParameter to protocol buffer
506 template <typename Dtype>
507 void Layer<Dtype>::ToProto(LayerParameter* param, bool write_diff) {
508  param->Clear();
509  param->CopyFrom(layer_param_);
510  param->clear_blobs();
511  for (int i = 0; i < blobs_.size(); ++i) {
512  blobs_[i]->ToProto(param->add_blobs(), write_diff);
513  }
514 }
515 
516 } // namespace caffe
517 
518 #endif // CAFFE_LAYER_H_
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: layer.hpp:359
+
vector< Dtype > loss_
Definition: layer.hpp:332
+
virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
Definition: layer.hpp:341
+
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
Definition: internal_thread.hpp:10
+
vector< shared_ptr< Blob< Dtype > > > blobs_
Definition: layer.hpp:326
+
virtual const char * type() const
Returns the layer type.
Definition: layer.hpp:216
+
vector< shared_ptr< Blob< Dtype > > > & blobs()
Returns the vector of learnable parameter blobs.
Definition: layer.hpp:182
+
virtual int MaxTopBlobs() const
Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required...
Definition: layer.hpp:265
+
void SetShared(bool is_shared)
Set whether this layer is actually shared by other nets If ShareInParallel() is true and using more t...
Definition: layer.hpp:113
+
void SetLossWeights(const vector< Blob< Dtype > *> &top)
Definition: layer.hpp:414
+
vector< bool > param_propagate_down_
Definition: layer.hpp:328
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: layer.hpp:225
+
virtual int MaxBottomBlobs() const
Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is requi...
Definition: layer.hpp:241
+
void set_param_propagate_down(const int param_id, const bool value)
Sets whether the layer should compute gradients w.r.t. a parameter at a particular index given by par...
Definition: layer.hpp:312
+
virtual bool ShareInParallel() const
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.
Definition: layer.hpp:101
+
const LayerParameter & layer_param() const
Returns the layer parameter.
Definition: layer.hpp:189
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: layer.hpp:249
+
void SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Implements common layer setup functionality.
Definition: layer.hpp:67
+
Layer(const LayerParameter &param)
Definition: layer.hpp:40
+
virtual bool AllowForceBackward(const int bottom_index) const
Return whether to allow force_backward for a given bottom blob index.
Definition: layer.hpp:293
+
virtual bool AutoTopBlobs() const
Return whether "anonymous" top blobs are created automatically by the layer.
Definition: layer.hpp:283
+
virtual int MinTopBlobs() const
Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
Definition: layer.hpp:257
+
virtual void ToProto(LayerParameter *param, bool write_diff=false)
Writes the layer parameter to a protocol buffer.
Definition: layer.hpp:507
+
Phase phase_
Definition: layer.hpp:324
+
LayerParameter layer_param_
Definition: layer.hpp:322
+
virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: layer.hpp:92
+
void set_loss(const int top_index, const Dtype value)
Sets the loss associated with a top blob at a given index.
Definition: layer.hpp:206
+
Dtype loss(const int top_index) const
Returns the scalar loss associated with a top blob at a given index.
Definition: layer.hpp:199
+
virtual int MinBottomBlobs() const
Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is requi...
Definition: layer.hpp:233
+
bool IsShared() const
Return whether this layer is actually shared by other nets. If ShareInParallel() is true and using mo...
Definition: layer.hpp:107
+
virtual void CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Definition: layer.hpp:371
+
bool param_propagate_down(const int param_id)
Specifies whether the layer should compute gradients w.r.t. a parameter at a particular index given b...
Definition: layer.hpp:304
+
virtual bool EqualNumBottomTopBlobs() const
Returns true if the layer requires an equal number of bottom and top blobs.
Definition: layer.hpp:273
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/layer__factory_8hpp_source.html b/doxygen/layer__factory_8hpp_source.html new file mode 100644 index 00000000000..7dda3d93a3e --- /dev/null +++ b/doxygen/layer__factory_8hpp_source.html @@ -0,0 +1,81 @@ + + + + + + + +Caffe: include/caffe/layer_factory.hpp Source File + + + + + + + + + +
+
+
+ + + + + +
+
Caffe +
+
+ + + + + + + + + +
+
+ + +
+ +
+ + + +
+
+
layer_factory.hpp
+
+
+
1 
39 #ifndef CAFFE_LAYER_FACTORY_H_
40 #define CAFFE_LAYER_FACTORY_H_
41 
42 #include <map>
43 #include <string>
44 #include <vector>
45 
46 #include "caffe/common.hpp"
47 #include "caffe/layer.hpp"
48 #include "caffe/proto/caffe.pb.h"
49 
50 namespace caffe {
51 
52 template <typename Dtype>
53 class Layer;
54 
55 template <typename Dtype>
57  public:
58  typedef shared_ptr<Layer<Dtype> > (*Creator)(const LayerParameter&);
59  typedef std::map<string, Creator> CreatorRegistry;
60 
61  static CreatorRegistry& Registry() {
62  static CreatorRegistry* g_registry_ = new CreatorRegistry();
63  return *g_registry_;
64  }
65 
66  // Adds a creator.
67  static void AddCreator(const string& type, Creator creator) {
68  CreatorRegistry& registry = Registry();
69  CHECK_EQ(registry.count(type), 0)
70  << "Layer type " << type << " already registered.";
71  registry[type] = creator;
72  }
73 
74  // Get a layer using a LayerParameter.
75  static shared_ptr<Layer<Dtype> > CreateLayer(const LayerParameter& param) {
76  if (Caffe::root_solver()) {
77  LOG(INFO) << "Creating layer " << param.name();
78  }
79  const string& type = param.type();
80  CreatorRegistry& registry = Registry();
81  CHECK_EQ(registry.count(type), 1) << "Unknown layer type: " << type
82  << " (known types: " << LayerTypeListString() << ")";
83  return registry[type](param);
84  }
85 
86  static vector<string> LayerTypeList() {
87  CreatorRegistry& registry = Registry();
88  vector<string> layer_types;
89  for (typename CreatorRegistry::iterator iter = registry.begin();
90  iter != registry.end(); ++iter) {
91  layer_types.push_back(iter->first);
92  }
93  return layer_types;
94  }
95 
96  private:
97  // Layer registry should never be instantiated - everything is done with its
98  // static variables.
99  LayerRegistry() {}
100 
101  static string LayerTypeListString() {
102  vector<string> layer_types = LayerTypeList();
103  string layer_types_str;
104  for (vector<string>::iterator iter = layer_types.begin();
105  iter != layer_types.end(); ++iter) {
106  if (iter != layer_types.begin()) {
107  layer_types_str += ", ";
108  }
109  layer_types_str += *iter;
110  }
111  return layer_types_str;
112  }
113 };
114 
115 
116 template <typename Dtype>
118  public:
119  LayerRegisterer(const string& type,
120  shared_ptr<Layer<Dtype> > (*creator)(const LayerParameter&)) {
121  // LOG(INFO) << "Registering layer type: " << type;
122  LayerRegistry<Dtype>::AddCreator(type, creator);
123  }
124 };
125 
126 
127 #define REGISTER_LAYER_CREATOR(type, creator) \
128  static LayerRegisterer<float> g_creator_f_##type(#type, creator<float>); \
129  static LayerRegisterer<double> g_creator_d_##type(#type, creator<double>) \
130 
131 #define REGISTER_LAYER_CLASS(type) \
132  template <typename Dtype> \
133  shared_ptr<Layer<Dtype> > Creator_##type##Layer(const LayerParameter& param) \
134  { \
135  return shared_ptr<Layer<Dtype> >(new type##Layer<Dtype>(param)); \
136  } \
137  REGISTER_LAYER_CREATOR(type, Creator_##type##Layer)
138 
139 } // namespace caffe
140 
141 #endif // CAFFE_LAYER_FACTORY_H_
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
Definition: layer_factory.hpp:117
+
Definition: layer_factory.hpp:56
+
+ + + + diff --git a/doxygen/log__layer_8hpp_source.html b/doxygen/log__layer_8hpp_source.html new file mode 100644 index 00000000000..b504f684a03 --- /dev/null +++ b/doxygen/log__layer_8hpp_source.html @@ -0,0 +1,88 @@ + + + + + + + +Caffe: include/caffe/layers/log_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
log_layer.hpp
+
+
+
1 #ifndef CAFFE_LOG_LAYER_HPP_
2 #define CAFFE_LOG_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 #include "caffe/layers/neuron_layer.hpp"
11 
12 namespace caffe {
13 
19 template <typename Dtype>
20 class LogLayer : public NeuronLayer<Dtype> {
21  public:
30  explicit LogLayer(const LayerParameter& param)
31  : NeuronLayer<Dtype>(param) {}
32  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
33  const vector<Blob<Dtype>*>& top);
34 
35  virtual inline const char* type() const { return "Log"; }
36 
37  protected:
48  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
49  const vector<Blob<Dtype>*>& top);
50  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
51  const vector<Blob<Dtype>*>& top);
52 
70  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
71  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
72  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
73  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
74 
75  Dtype base_scale_;
76  Dtype input_scale_, input_shift_;
77  Dtype backward_num_scale_;
78 };
79 
80 } // namespace caffe
81 
82 #endif // CAFFE_LOG_LAYER_HPP_
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Definition: log_layer.cpp:34
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: log_layer.cpp:9
+
Computes , as specified by the scale , shift , and base .
Definition: log_layer.hpp:20
+
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Computes the error gradient w.r.t. the exp inputs.
Definition: log_layer.cpp:57
+
An interface for layers that take one blob as input ( ) and produce one equally-sized blob as output ...
Definition: neuron_layer.hpp:19
+
LogLayer(const LayerParameter &param)
Definition: log_layer.hpp:30
+
virtual const char * type() const
Returns the layer type.
Definition: log_layer.hpp:35
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/loss__layer_8hpp_source.html b/doxygen/loss__layer_8hpp_source.html new file mode 100644 index 00000000000..b949ec7eddb --- /dev/null +++ b/doxygen/loss__layer_8hpp_source.html @@ -0,0 +1,87 @@ + + + + + + + +Caffe: include/caffe/layers/loss_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
loss_layer.hpp
+
+
+
1 #ifndef CAFFE_LOSS_LAYER_HPP_
2 #define CAFFE_LOSS_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 namespace caffe {
11 
12 const float kLOG_THRESHOLD = 1e-20;
13 
22 template <typename Dtype>
23 class LossLayer : public Layer<Dtype> {
24  public:
25  explicit LossLayer(const LayerParameter& param)
26  : Layer<Dtype>(param) {}
27  virtual void LayerSetUp(
28  const vector<Blob<Dtype>*>& bottom, const vector<Blob<Dtype>*>& top);
29  virtual void Reshape(
30  const vector<Blob<Dtype>*>& bottom, const vector<Blob<Dtype>*>& top);
31 
32  virtual inline int ExactNumBottomBlobs() const { return 2; }
33 
40  virtual inline bool AutoTopBlobs() const { return true; }
41  virtual inline int ExactNumTopBlobs() const { return 1; }
46  virtual inline bool AllowForceBackward(const int bottom_index) const {
47  return bottom_index != 1;
48  }
49 };
50 
51 } // namespace caffe
52 
53 #endif // CAFFE_LOSS_LAYER_HPP_
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual bool AutoTopBlobs() const
For convenience and backwards compatibility, instruct the Net to automatically allocate a single top ...
Definition: loss_layer.hpp:40
+
virtual bool AllowForceBackward(const int bottom_index) const
Definition: loss_layer.hpp:46
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: loss_layer.hpp:32
+
virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: loss_layer.cpp:17
+
An interface for Layers that take two Blobs as input – usually (1) predictions and (2) ground-truth ...
Definition: loss_layer.hpp:23
+
virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: loss_layer.cpp:8
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: loss_layer.hpp:41
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/loss__layers_8hpp_source.html b/doxygen/loss__layers_8hpp_source.html new file mode 100644 index 00000000000..16f743e7f36 --- /dev/null +++ b/doxygen/loss__layers_8hpp_source.html @@ -0,0 +1,456 @@ + + + + + + +Caffe: include/caffe/loss_layers.hpp Source File + + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
loss_layers.hpp
+
+
+
1 #ifndef CAFFE_LOSS_LAYERS_HPP_
+
2 #define CAFFE_LOSS_LAYERS_HPP_
+
3 
+
4 #include <string>
+
5 #include <utility>
+
6 #include <vector>
+
7 
+
8 #include "caffe/blob.hpp"
+
9 #include "caffe/common.hpp"
+
10 #include "caffe/layer.hpp"
+
11 #include "caffe/neuron_layers.hpp"
+
12 #include "caffe/proto/caffe.pb.h"
+
13 
+
14 namespace caffe {
+
15 
+
16 const float kLOG_THRESHOLD = 1e-20;
+
17 
+
22 template <typename Dtype>
+
23 class AccuracyLayer : public Layer<Dtype> {
+
24  public:
+
33  explicit AccuracyLayer(const LayerParameter& param)
+
34  : Layer<Dtype>(param) {}
+
35  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
+
36  const vector<Blob<Dtype>*>& top);
+
37  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
38  const vector<Blob<Dtype>*>& top);
+
39 
+
40  virtual inline const char* type() const { return "Accuracy"; }
+
41  virtual inline int ExactNumBottomBlobs() const { return 2; }
+
42 
+
43  // If there are two top blobs, then the second blob will contain
+
44  // accuracies per class.
+
45  virtual inline int MinTopBlobs() const { return 1; }
+
46  virtual inline int MaxTopBlos() const { return 2; }
+
47 
+
48  protected:
+
73  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
74  const vector<Blob<Dtype>*>& top);
+
75 
+
76 
+
78  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
79  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {
+
80  for (int i = 0; i < propagate_down.size(); ++i) {
+
81  if (propagate_down[i]) { NOT_IMPLEMENTED; }
+
82  }
+
83  }
+
84 
+
85  int label_axis_, outer_num_, inner_num_;
+
86 
+
87  int top_k_;
+
88 
+ + + +
95 };
+
96 
+
105 template <typename Dtype>
+
106 class LossLayer : public Layer<Dtype> {
+
107  public:
+
108  explicit LossLayer(const LayerParameter& param)
+
109  : Layer<Dtype>(param) {}
+
110  virtual void LayerSetUp(
+
111  const vector<Blob<Dtype>*>& bottom, const vector<Blob<Dtype>*>& top);
+
112  virtual void Reshape(
+
113  const vector<Blob<Dtype>*>& bottom, const vector<Blob<Dtype>*>& top);
+
114 
+
115  virtual inline int ExactNumBottomBlobs() const { return 2; }
+
116 
+
123  virtual inline bool AutoTopBlobs() const { return true; }
+
124  virtual inline int ExactNumTopBlobs() const { return 1; }
+
129  virtual inline bool AllowForceBackward(const int bottom_index) const {
+
130  return bottom_index != 1;
+
131  }
+
132 };
+
133 
+
158 template <typename Dtype>
+
159 class ContrastiveLossLayer : public LossLayer<Dtype> {
+
160  public:
+
161  explicit ContrastiveLossLayer(const LayerParameter& param)
+
162  : LossLayer<Dtype>(param), diff_() {}
+
163  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
+
164  const vector<Blob<Dtype>*>& top);
+
165 
+
166  virtual inline int ExactNumBottomBlobs() const { return 3; }
+
167  virtual inline const char* type() const { return "ContrastiveLoss"; }
+
172  virtual inline bool AllowForceBackward(const int bottom_index) const {
+
173  return bottom_index != 2;
+
174  }
+
175 
+
176  protected:
+
178  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
179  const vector<Blob<Dtype>*>& top);
+
180  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
+
181  const vector<Blob<Dtype>*>& top);
+
182 
+
208  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
209  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
210  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
+
211  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
212 
+
213  Blob<Dtype> diff_; // cached for backward pass
+
214  Blob<Dtype> dist_sq_; // cached for backward pass
+
215  Blob<Dtype> diff_sq_; // tmp storage for gpu forward pass
+
216  Blob<Dtype> summer_vec_; // tmp storage for gpu forward pass
+
217 };
+
218 
+
245 template <typename Dtype>
+
246 class EuclideanLossLayer : public LossLayer<Dtype> {
+
247  public:
+
248  explicit EuclideanLossLayer(const LayerParameter& param)
+
249  : LossLayer<Dtype>(param), diff_() {}
+
250  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
251  const vector<Blob<Dtype>*>& top);
+
252 
+
253  virtual inline const char* type() const { return "EuclideanLoss"; }
+
258  virtual inline bool AllowForceBackward(const int bottom_index) const {
+
259  return true;
+
260  }
+
261 
+
262  protected:
+
264  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
265  const vector<Blob<Dtype>*>& top);
+
266  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
+
267  const vector<Blob<Dtype>*>& top);
+
268 
+
302  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
303  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
304  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
+
305  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
306 
+
307  Blob<Dtype> diff_;
+
308 };
+
309 
+
353 template <typename Dtype>
+
354 class HingeLossLayer : public LossLayer<Dtype> {
+
355  public:
+
356  explicit HingeLossLayer(const LayerParameter& param)
+
357  : LossLayer<Dtype>(param) {}
+
358 
+
359  virtual inline const char* type() const { return "HingeLoss"; }
+
360 
+
361  protected:
+
363  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
364  const vector<Blob<Dtype>*>& top);
+
365 
+
393  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
394  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
395 };
+
396 
+
429 template <typename Dtype>
+
430 class InfogainLossLayer : public LossLayer<Dtype> {
+
431  public:
+
432  explicit InfogainLossLayer(const LayerParameter& param)
+
433  : LossLayer<Dtype>(param), infogain_() {}
+
434  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
+
435  const vector<Blob<Dtype>*>& top);
+
436  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
437  const vector<Blob<Dtype>*>& top);
+
438 
+
439  // InfogainLossLayer takes 2-3 bottom Blobs; if there are 3 the third should
+
440  // be the infogain matrix. (Otherwise the infogain matrix is loaded from a
+
441  // file specified by LayerParameter.)
+
442  virtual inline int ExactNumBottomBlobs() const { return -1; }
+
443  virtual inline int MinBottomBlobs() const { return 2; }
+
444  virtual inline int MaxBottomBlobs() const { return 3; }
+
445 
+
446  virtual inline const char* type() const { return "InfogainLoss"; }
+
447 
+
448  protected:
+
450  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
451  const vector<Blob<Dtype>*>& top);
+
452 
+
485  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
486  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
487 
+
488  Blob<Dtype> infogain_;
+
489 };
+
490 
+
520 template <typename Dtype>
+ +
522  public:
+
523  explicit MultinomialLogisticLossLayer(const LayerParameter& param)
+
524  : LossLayer<Dtype>(param) {}
+
525  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
526  const vector<Blob<Dtype>*>& top);
+
527 
+
528  virtual inline const char* type() const { return "MultinomialLogisticLoss"; }
+
529 
+
530  protected:
+
532  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
533  const vector<Blob<Dtype>*>& top);
+
534 
+
563  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
564  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
565 };
+
566 
+
596 template <typename Dtype>
+ +
598  public:
+
599  explicit SigmoidCrossEntropyLossLayer(const LayerParameter& param)
+
600  : LossLayer<Dtype>(param),
+ +
602  sigmoid_output_(new Blob<Dtype>()) {}
+
603  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
+
604  const vector<Blob<Dtype>*>& top);
+
605  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
606  const vector<Blob<Dtype>*>& top);
+
607 
+
608  virtual inline const char* type() const { return "SigmoidCrossEntropyLoss"; }
+
609 
+
610  protected:
+
612  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
613  const vector<Blob<Dtype>*>& top);
+
614 
+
645  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
646  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
647  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
+
648  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
649 
+
651  shared_ptr<SigmoidLayer<Dtype> > sigmoid_layer_;
+
653  shared_ptr<Blob<Dtype> > sigmoid_output_;
+
655  vector<Blob<Dtype>*> sigmoid_bottom_vec_;
+
657  vector<Blob<Dtype>*> sigmoid_top_vec_;
+
658 };
+
659 
+
660 // Forward declare SoftmaxLayer for use in SoftmaxWithLossLayer.
+
661 template <typename Dtype> class SoftmaxLayer;
+
662 
+
691 template <typename Dtype>
+
692 class SoftmaxWithLossLayer : public LossLayer<Dtype> {
+
693  public:
+
702  explicit SoftmaxWithLossLayer(const LayerParameter& param)
+
703  : LossLayer<Dtype>(param) {}
+
704  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
+
705  const vector<Blob<Dtype>*>& top);
+
706  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
+
707  const vector<Blob<Dtype>*>& top);
+
708 
+
709  virtual inline const char* type() const { return "SoftmaxWithLoss"; }
+
710  virtual inline int ExactNumTopBlobs() const { return -1; }
+
711  virtual inline int MinTopBlobs() const { return 1; }
+
712  virtual inline int MaxTopBlobs() const { return 2; }
+
713 
+
714  protected:
+
715  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
+
716  const vector<Blob<Dtype>*>& top);
+
717  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
+
718  const vector<Blob<Dtype>*>& top);
+
746  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
+
747  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
748  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
+
749  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
+
750 
+
751 
+
753  shared_ptr<Layer<Dtype> > softmax_layer_;
+ +
757  vector<Blob<Dtype>*> softmax_bottom_vec_;
+
759  vector<Blob<Dtype>*> softmax_top_vec_;
+ + + +
767 
+
768  int softmax_axis_, outer_num_, inner_num_;
+
769 };
+
770 
+
771 } // namespace caffe
+
772 
+
773 #endif // CAFFE_LOSS_LAYERS_HPP_
+
virtual bool AutoTopBlobs() const
For convenience and backwards compatibility, instruct the Net to automatically allocate a single top ...
Definition: loss_layers.hpp:123
+
vector< Blob< Dtype > * > sigmoid_bottom_vec_
bottom vector holder to call the underlying SigmoidLayer::Forward
Definition: loss_layers.hpp:655
+
shared_ptr< Layer< Dtype > > softmax_layer_
The internal SoftmaxLayer used to map predictions to a distribution.
Definition: loss_layers.hpp:753
+
virtual bool AllowForceBackward(const int bottom_index) const
Definition: loss_layers.hpp:172
+
virtual const char * type() const
Returns the layer type.
Definition: loss_layers.hpp:528
+
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
A layer factory that allows one to register layers. During runtime, registered layers could be called...
Definition: blob.hpp:15
+
virtual int MinTopBlobs() const
Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
Definition: loss_layers.hpp:45
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: accuracy_layer.cpp:26
+
Sigmoid function non-linearity , a classic choice in neural networks.
Definition: neuron_layers.hpp:515
+
shared_ptr< Blob< Dtype > > sigmoid_output_
sigmoid_output stores the output of the SigmoidLayer.
Definition: loss_layers.hpp:653
+
vector< Blob< Dtype > * > sigmoid_top_vec_
top vector holder to call the underlying SigmoidLayer::Forward
Definition: loss_layers.hpp:657
+
virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: infogain_loss_layer.cpp:14
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Computes the Contrastive error gradient w.r.t. the inputs.
Definition: contrastive_loss_layer.cpp:66
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: loss_layers.hpp:115
+
virtual const char * type() const
Returns the layer type.
Definition: loss_layers.hpp:446
+
Computes the hinge loss for a one-of-many classification task.
Definition: loss_layers.hpp:354
+
A generalization of MultinomialLogisticLossLayer that takes an "information gain" (infogain) matrix s...
Definition: loss_layers.hpp:430
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: sigmoid_cross_entropy_loss_layer.cpp:23
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Not implemented – AccuracyLayer cannot be used as a loss.
Definition: loss_layers.hpp:78
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: loss_layer.cpp:23
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Computes the Euclidean (L2) loss for real-valued regression tasks.
Definition: euclidean_loss_layer.cpp:20
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Computes the hinge loss for a one-of-many classification task.
Definition: hinge_loss_layer.cpp:14
+
SoftmaxWithLossLayer(const LayerParameter &param)
Definition: loss_layers.hpp:702
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: loss_layers.hpp:710
+
virtual int MinTopBlobs() const
Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
Definition: loss_layers.hpp:711
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Computes the sigmoid cross-entropy loss error gradient w.r.t. the predictions.
Definition: sigmoid_cross_entropy_loss_layer.cpp:52
+
virtual bool AllowForceBackward(const int bottom_index) const
Definition: loss_layers.hpp:129
+
vector< Blob< Dtype > * > softmax_top_vec_
top vector holder used in call to the underlying SoftmaxLayer::Forward
Definition: loss_layers.hpp:759
+
int ignore_label_
The label indicating that an instance should be ignored.
Definition: loss_layers.hpp:92
+
virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: accuracy_layer.cpp:14
+
virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
shared_ptr< SigmoidLayer< Dtype > > sigmoid_layer_
The internal SigmoidLayer used to map predictions to probabilities.
Definition: loss_layers.hpp:651
+
virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: softmax_loss_layer.cpp:13
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Definition: accuracy_layer.cpp:51
+
virtual const char * type() const
Returns the layer type.
Definition: loss_layers.hpp:40
+
Computes the softmax function.
Definition: common_layers.hpp:597
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: infogain_loss_layer.cpp:28
+
virtual int MaxTopBlobs() const
Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required...
Definition: loss_layers.hpp:712
+
Computes the classification accuracy for a one-of-many classification task.
Definition: loss_layers.hpp:23
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Computes the hinge loss error gradient w.r.t. the predictions.
Definition: hinge_loss_layer.cpp:47
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: euclidean_loss_layer.cpp:11
+
virtual const char * type() const
Returns the layer type.
Definition: loss_layers.hpp:253
+
bool has_ignore_label_
Whether to ignore instances with a certain label.
Definition: loss_layers.hpp:90
+
virtual int MinBottomBlobs() const
Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is requi...
Definition: loss_layers.hpp:443
+
virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: sigmoid_cross_entropy_loss_layer.cpp:12
+
virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: loss_layer.cpp:14
+
virtual bool AllowForceBackward(const int bottom_index) const
Definition: loss_layers.hpp:258
+
virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
Computes the multinomial logistic loss for a one-of-many classification task, directly taking a predi...
Definition: loss_layers.hpp:521
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Computes the contrastive loss where . This can be used to train siamese networks.
Definition: contrastive_loss_layer.cpp:33
+
AccuracyLayer(const LayerParameter &param)
Definition: loss_layers.hpp:33
+
virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Computes the cross-entropy (logistic) loss , often used for predicting targets interpreted as probabi...
Definition: sigmoid_cross_entropy_loss_layer.cpp:32
+
Computes the cross-entropy (logistic) loss , often used for predicting targets interpreted as probabi...
Definition: loss_layers.hpp:597
+
virtual const char * type() const
Returns the layer type.
Definition: loss_layers.hpp:608
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Computes the softmax loss error gradient w.r.t. the predictions.
Definition: softmax_loss_layer.cpp:87
+
Computes the multinomial logistic loss for a one-of-many classification task, passing real-valued pre...
Definition: loss_layers.hpp:692
+
vector< Blob< Dtype > * > softmax_bottom_vec_
bottom vector holder used in call to the underlying SoftmaxLayer::Forward
Definition: loss_layers.hpp:757
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: softmax_loss_layer.cpp:34
+
virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: loss_layers.hpp:166
+
virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
bool normalize_
Definition: loss_layers.hpp:766
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Computes the Euclidean error gradient w.r.t. the inputs.
Definition: euclidean_loss_layer.cpp:34
+
int ignore_label_
The label indicating that an instance should be ignored.
Definition: loss_layers.hpp:763
+
virtual int MaxBottomBlobs() const
Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is requi...
Definition: loss_layers.hpp:444
+
An interface for Layers that take two Blobs as input – usually (1) predictions and (2) ground-truth ...
Definition: loss_layers.hpp:106
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the CPU device, compute the layer output.
Definition: softmax_loss_layer.cpp:54
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
A generalization of MultinomialLogisticLossLayer that takes an "information gain" (infogain) matrix s...
Definition: infogain_loss_layer.cpp:50
+
virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: contrastive_loss_layer.cpp:12
+
virtual const char * type() const
Returns the layer type.
Definition: loss_layers.hpp:709
+
virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: loss_layers.hpp:124
+
Computes the contrastive loss where . This can be used to train siamese networks.
Definition: loss_layers.hpp:159
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Computes the infogain loss error gradient w.r.t. the predictions.
Definition: infogain_loss_layer.cpp:74
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: loss_layers.hpp:41
+
Blob< Dtype > nums_buffer_
Keeps counts of the number of samples per class.
Definition: loss_layers.hpp:94
+
virtual const char * type() const
Returns the layer type.
Definition: loss_layers.hpp:359
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: loss_layers.hpp:442
+
virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Computes the multinomial logistic loss for a one-of-many classification task, directly taking a predi...
Definition: multinomial_logistic_loss_layer.cpp:23
+
Computes the Euclidean (L2) loss for real-valued regression tasks.
Definition: loss_layers.hpp:246
+
Blob< Dtype > prob_
prob stores the output probability predictions from the SoftmaxLayer.
Definition: loss_layers.hpp:755
+
virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: multinomial_logistic_loss_layer.cpp:14
+
virtual const char * type() const
Returns the layer type.
Definition: loss_layers.hpp:167
+
virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
Computes the multinomial logistic loss error gradient w.r.t. the predictions.
Definition: multinomial_logistic_loss_layer.cpp:40
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:25
+
bool has_ignore_label_
Whether to ignore instances with a certain label.
Definition: loss_layers.hpp:761
+
+ + + + diff --git a/doxygen/lrn__layer_8hpp_source.html b/doxygen/lrn__layer_8hpp_source.html new file mode 100644 index 00000000000..4d742d0e6e3 --- /dev/null +++ b/doxygen/lrn__layer_8hpp_source.html @@ -0,0 +1,90 @@ + + + + + + + +Caffe: include/caffe/layers/lrn_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
lrn_layer.hpp
+
+
+
1 #ifndef CAFFE_LRN_LAYER_HPP_
2 #define CAFFE_LRN_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 #include "caffe/layers/eltwise_layer.hpp"
11 #include "caffe/layers/pooling_layer.hpp"
12 #include "caffe/layers/power_layer.hpp"
13 #include "caffe/layers/split_layer.hpp"
14 
15 namespace caffe {
16 
22 template <typename Dtype>
23 class LRNLayer : public Layer<Dtype> {
24  public:
25  explicit LRNLayer(const LayerParameter& param)
26  : Layer<Dtype>(param) {}
27  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
28  const vector<Blob<Dtype>*>& top);
29  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
30  const vector<Blob<Dtype>*>& top);
31 
32  virtual inline const char* type() const { return "LRN"; }
33  virtual inline int ExactNumBottomBlobs() const { return 1; }
34  virtual inline int ExactNumTopBlobs() const { return 1; }
35 
36  protected:
37  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
38  const vector<Blob<Dtype>*>& top);
39  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
40  const vector<Blob<Dtype>*>& top);
41  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
42  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
43  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
44  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
45 
46  virtual void CrossChannelForward_cpu(const vector<Blob<Dtype>*>& bottom,
47  const vector<Blob<Dtype>*>& top);
48  virtual void CrossChannelForward_gpu(const vector<Blob<Dtype>*>& bottom,
49  const vector<Blob<Dtype>*>& top);
50  virtual void WithinChannelForward(const vector<Blob<Dtype>*>& bottom,
51  const vector<Blob<Dtype>*>& top);
52  virtual void CrossChannelBackward_cpu(const vector<Blob<Dtype>*>& top,
53  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
54  virtual void CrossChannelBackward_gpu(const vector<Blob<Dtype>*>& top,
55  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
56  virtual void WithinChannelBackward(const vector<Blob<Dtype>*>& top,
57  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
58 
59  int size_;
60  int pre_pad_;
61  Dtype alpha_;
62  Dtype beta_;
63  Dtype k_;
64  int num_;
65  int channels_;
66  int height_;
67  int width_;
68 
69  // Fields used for normalization ACROSS_CHANNELS
70  // scale_ stores the intermediate summing results
71  Blob<Dtype> scale_;
72 
73  // Fields used for normalization WITHIN_CHANNEL
74  shared_ptr<SplitLayer<Dtype> > split_layer_;
75  vector<Blob<Dtype>*> split_top_vec_;
76  shared_ptr<PowerLayer<Dtype> > square_layer_;
77  Blob<Dtype> square_input_;
78  Blob<Dtype> square_output_;
79  vector<Blob<Dtype>*> square_bottom_vec_;
80  vector<Blob<Dtype>*> square_top_vec_;
81  shared_ptr<PoolingLayer<Dtype> > pool_layer_;
82  Blob<Dtype> pool_output_;
83  vector<Blob<Dtype>*> pool_top_vec_;
84  shared_ptr<PowerLayer<Dtype> > power_layer_;
85  Blob<Dtype> power_output_;
86  vector<Blob<Dtype>*> power_top_vec_;
87  shared_ptr<EltwiseLayer<Dtype> > product_layer_;
88  Blob<Dtype> product_input_;
89  vector<Blob<Dtype>*> product_bottom_vec_;
90 };
91 
92 } // namespace caffe
93 
94 #endif // CAFFE_LRN_LAYER_HPP_
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: lrn_layer.hpp:34
+
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
+
virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Does layer-specific setup: your layer should implement this function as well as Reshape.
Definition: lrn_layer.cpp:9
+
virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: lrn_layer.cpp:69
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: lrn_layer.cpp:165
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: lrn_layer.hpp:33
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the CPU device, compute the layer output.
Definition: lrn_layer.cpp:93
+
virtual const char * type() const
Returns the layer type.
Definition: lrn_layer.hpp:32
+
virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
Normalize the input in a local region across or within feature maps.
Definition: lrn_layer.hpp:23
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/lstm__layer_8hpp_source.html b/doxygen/lstm__layer_8hpp_source.html new file mode 100644 index 00000000000..3830807f85e --- /dev/null +++ b/doxygen/lstm__layer_8hpp_source.html @@ -0,0 +1,99 @@ + + + + + + + +Caffe: include/caffe/layers/lstm_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
lstm_layer.hpp
+
+
+
1 #ifndef CAFFE_LSTM_LAYER_HPP_
2 #define CAFFE_LSTM_LAYER_HPP_
3 
4 #include <string>
5 #include <utility>
6 #include <vector>
7 
8 #include "caffe/blob.hpp"
9 #include "caffe/common.hpp"
10 #include "caffe/layer.hpp"
11 #include "caffe/layers/recurrent_layer.hpp"
12 #include "caffe/net.hpp"
13 #include "caffe/proto/caffe.pb.h"
14 
15 namespace caffe {
16 
17 template <typename Dtype> class RecurrentLayer;
18 
47 template <typename Dtype>
48 class LSTMLayer : public RecurrentLayer<Dtype> {
49  public:
50  explicit LSTMLayer(const LayerParameter& param)
51  : RecurrentLayer<Dtype>(param) {}
52 
53  virtual inline const char* type() const { return "LSTM"; }
54 
55  protected:
56  virtual void FillUnrolledNet(NetParameter* net_param) const;
57  virtual void RecurrentInputBlobNames(vector<string>* names) const;
58  virtual void RecurrentOutputBlobNames(vector<string>* names) const;
59  virtual void RecurrentInputShapes(vector<BlobShape>* shapes) const;
60  virtual void OutputBlobNames(vector<string>* names) const;
61 };
62 
68 template <typename Dtype>
69 class LSTMUnitLayer : public Layer<Dtype> {
70  public:
71  explicit LSTMUnitLayer(const LayerParameter& param)
72  : Layer<Dtype>(param) {}
73  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
74  const vector<Blob<Dtype>*>& top);
75 
76  virtual inline const char* type() const { return "LSTMUnit"; }
77  virtual inline int ExactNumBottomBlobs() const { return 3; }
78  virtual inline int ExactNumTopBlobs() const { return 2; }
79 
80  virtual inline bool AllowForceBackward(const int bottom_index) const {
81  // Can't propagate to sequence continuation indicators.
82  return bottom_index != 2;
83  }
84 
85  protected:
106  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
107  const vector<Blob<Dtype>*>& top);
108  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
109  const vector<Blob<Dtype>*>& top);
110 
142  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
143  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
144  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
145  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
146 
149  Blob<Dtype> X_acts_;
150 };
151 
152 } // namespace caffe
153 
154 #endif // CAFFE_LSTM_LAYER_HPP_
virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: layer.hpp:359
+
Processes sequential inputs using a "Long Short-Term Memory" (LSTM) [1] style recurrent neural networ...
Definition: lstm_layer.hpp:48
+
virtual void RecurrentInputShapes(vector< BlobShape > *shapes) const
Fills shapes with the shapes of the recurrent input Blob&s. Subclasses should define this – see RNNL...
Definition: lstm_layer.cpp:28
+
An interface for the units of computation which can be composed into a Net.
Definition: layer.hpp:33
+
virtual void RecurrentOutputBlobNames(vector< string > *names) const
Fills names with the names of the Tth timestep recurrent output Blob&s. Subclasses should define this...
Definition: lstm_layer.cpp:21
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
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.
Definition: lstm_layer.hpp:17
+
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Definition: recurrent_layer.cpp:245
+
virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
+
virtual void RecurrentInputBlobNames(vector< string > *names) const
Fills names with the names of the 0th timestep recurrent input Blob&s. Subclasses should define this ...
Definition: lstm_layer.cpp:14
+
virtual void FillUnrolledNet(NetParameter *net_param) const
Fills net_param with the recurrent network architecture. Subclasses should define this – see RNNLaye...
Definition: lstm_layer.cpp:47
+
virtual const char * type() const
Returns the layer type.
Definition: lstm_layer.hpp:76
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: lstm_layer.hpp:77
+
virtual bool AllowForceBackward(const int bottom_index) const
Return whether to allow force_backward for a given bottom blob index.
Definition: lstm_layer.hpp:80
+
int hidden_dim_
The hidden and output dimension.
Definition: lstm_layer.hpp:148
+
virtual void OutputBlobNames(vector< string > *names) const
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.
Definition: lstm_layer.cpp:41
+
virtual const char * type() const
Returns the layer type.
Definition: lstm_layer.hpp:53
+
virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
Definition: recurrent_layer.cpp:183
+
virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
Definition: recurrent_layer.cpp:277
+
A helper for LSTMLayer: computes a single timestep of the non-linearity of the LSTM, producing the updated cell and hidden states.
Definition: lstm_layer.hpp:69
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: lstm_layer.hpp:78
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/math__functions_8hpp_source.html b/doxygen/math__functions_8hpp_source.html new file mode 100644 index 00000000000..3de1e659ad6 --- /dev/null +++ b/doxygen/math__functions_8hpp_source.html @@ -0,0 +1,78 @@ + + + + + + + +Caffe: include/caffe/util/math_functions.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
math_functions.hpp
+
+
+
1 #ifndef CAFFE_UTIL_MATH_FUNCTIONS_H_
2 #define CAFFE_UTIL_MATH_FUNCTIONS_H_
3 
4 #include <stdint.h>
5 #include <cmath> // for std::fabs and std::signbit
6 
7 #include "glog/logging.h"
8 
9 #include "caffe/common.hpp"
10 #include "caffe/util/device_alternate.hpp"
11 #include "caffe/util/mkl_alternate.hpp"
12 
13 namespace caffe {
14 
15 // Caffe gemm provides a simpler interface to the gemm functions, with the
16 // limitation that the data has to be contiguous in memory.
17 template <typename Dtype>
18 void caffe_cpu_gemm(const CBLAS_TRANSPOSE TransA,
19  const CBLAS_TRANSPOSE TransB, const int M, const int N, const int K,
20  const Dtype alpha, const Dtype* A, const Dtype* B, const Dtype beta,
21  Dtype* C);
22 
23 template <typename Dtype>
24 void caffe_cpu_gemv(const CBLAS_TRANSPOSE TransA, const int M, const int N,
25  const Dtype alpha, const Dtype* A, const Dtype* x, const Dtype beta,
26  Dtype* y);
27 
28 template <typename Dtype>
29 void caffe_axpy(const int N, const Dtype alpha, const Dtype* X,
30  Dtype* Y);
31 
32 template <typename Dtype>
33 void caffe_cpu_axpby(const int N, const Dtype alpha, const Dtype* X,
34  const Dtype beta, Dtype* Y);
35 
36 template <typename Dtype>
37 void caffe_copy(const int N, const Dtype *X, Dtype *Y);
38 
39 template <typename Dtype>
40 void caffe_set(const int N, const Dtype alpha, Dtype *X);
41 
42 inline void caffe_memset(const size_t N, const int alpha, void* X) {
43  memset(X, alpha, N); // NOLINT(caffe/alt_fn)
44 }
45 
46 template <typename Dtype>
47 void caffe_add_scalar(const int N, const Dtype alpha, Dtype *X);
48 
49 template <typename Dtype>
50 void caffe_scal(const int N, const Dtype alpha, Dtype *X);
51 
52 template <typename Dtype>
53 void caffe_sqr(const int N, const Dtype* a, Dtype* y);
54 
55 template <typename Dtype>
56 void caffe_add(const int N, const Dtype* a, const Dtype* b, Dtype* y);
57 
58 template <typename Dtype>
59 void caffe_sub(const int N, const Dtype* a, const Dtype* b, Dtype* y);
60 
61 template <typename Dtype>
62 void caffe_mul(const int N, const Dtype* a, const Dtype* b, Dtype* y);
63 
64 template <typename Dtype>
65 void caffe_div(const int N, const Dtype* a, const Dtype* b, Dtype* y);
66 
67 template <typename Dtype>
68 void caffe_powx(const int n, const Dtype* a, const Dtype b, Dtype* y);
69 
70 unsigned int caffe_rng_rand();
71 
72 template <typename Dtype>
73 Dtype caffe_nextafter(const Dtype b);
74 
75 template <typename Dtype>
76 void caffe_rng_uniform(const int n, const Dtype a, const Dtype b, Dtype* r);
77 
78 template <typename Dtype>
79 void caffe_rng_gaussian(const int n, const Dtype mu, const Dtype sigma,
80  Dtype* r);
81 
82 template <typename Dtype>
83 void caffe_rng_bernoulli(const int n, const Dtype p, int* r);
84 
85 template <typename Dtype>
86 void caffe_rng_bernoulli(const int n, const Dtype p, unsigned int* r);
87 
88 template <typename Dtype>
89 void caffe_exp(const int n, const Dtype* a, Dtype* y);
90 
91 template <typename Dtype>
92 void caffe_log(const int n, const Dtype* a, Dtype* y);
93 
94 template <typename Dtype>
95 void caffe_abs(const int n, const Dtype* a, Dtype* y);
96 
97 template <typename Dtype>
98 Dtype caffe_cpu_dot(const int n, const Dtype* x, const Dtype* y);
99 
100 template <typename Dtype>
101 Dtype caffe_cpu_strided_dot(const int n, const Dtype* x, const int incx,
102  const Dtype* y, const int incy);
103 
104 // Returns the sum of the absolute values of the elements of vector x
105 template <typename Dtype>
106 Dtype caffe_cpu_asum(const int n, const Dtype* x);
107 
108 // the branchless, type-safe version from
109 // http://stackoverflow.com/questions/1903954/is-there-a-standard-sign-function-signum-sgn-in-c-c
110 template<typename Dtype>
111 inline int8_t caffe_sign(Dtype val) {
112  return (Dtype(0) < val) - (val < Dtype(0));
113 }
114 
115 // The following two macros are modifications of DEFINE_VSL_UNARY_FUNC
116 // in include/caffe/util/mkl_alternate.hpp authored by @Rowland Depp.
117 // Please refer to commit 7e8ef25c7 of the boost-eigen branch.
118 // Git cherry picking that commit caused a conflict hard to resolve and
119 // copying that file in convenient for code reviewing.
120 // So they have to be pasted here temporarily.
121 #define DEFINE_CAFFE_CPU_UNARY_FUNC(name, operation) \
122  template<typename Dtype> \
123  void caffe_cpu_##name(const int n, const Dtype* x, Dtype* y) { \
124  CHECK_GT(n, 0); CHECK(x); CHECK(y); \
125  for (int i = 0; i < n; ++i) { \
126  operation; \
127  } \
128  }
129 
130 // output is 1 for the positives, 0 for zero, and -1 for the negatives
131 DEFINE_CAFFE_CPU_UNARY_FUNC(sign, y[i] = caffe_sign<Dtype>(x[i]));
132 
133 // This returns a nonzero value if the input has its sign bit set.
134 // The name sngbit is meant to avoid conflicts with std::signbit in the macro.
135 // The extra parens are needed because CUDA < 6.5 defines signbit as a macro,
136 // and we don't want that to expand here when CUDA headers are also included.
137 DEFINE_CAFFE_CPU_UNARY_FUNC(sgnbit, \
138  y[i] = static_cast<bool>((std::signbit)(x[i])));
139 
140 DEFINE_CAFFE_CPU_UNARY_FUNC(fabs, y[i] = std::fabs(x[i]));
141 
142 template <typename Dtype>
143 void caffe_cpu_scale(const int n, const Dtype alpha, const Dtype *x, Dtype* y);
144 
145 #ifndef CPU_ONLY // GPU
146 
147 // Decaf gpu gemm provides an interface that is almost the same as the cpu
148 // gemm function - following the c convention and calling the fortran-order
149 // gpu code under the hood.
150 template <typename Dtype>
151 void caffe_gpu_gemm(const CBLAS_TRANSPOSE TransA,
152  const CBLAS_TRANSPOSE TransB, const int M, const int N, const int K,
153  const Dtype alpha, const Dtype* A, const Dtype* B, const Dtype beta,
154  Dtype* C);
155 
156 template <typename Dtype>
157 void caffe_gpu_gemv(const CBLAS_TRANSPOSE TransA, const int M, const int N,
158  const Dtype alpha, const Dtype* A, const Dtype* x, const Dtype beta,
159  Dtype* y);
160 
161 template <typename Dtype>
162 void caffe_gpu_axpy(const int N, const Dtype alpha, const Dtype* X,
163  Dtype* Y);
164 
165 template <typename Dtype>
166 void caffe_gpu_axpby(const int N, const Dtype alpha, const Dtype* X,
167  const Dtype beta, Dtype* Y);
168 
169 void caffe_gpu_memcpy(const size_t N, const void *X, void *Y);
170 
171 template <typename Dtype>
172 void caffe_gpu_set(const int N, const Dtype alpha, Dtype *X);
173 
174 inline void caffe_gpu_memset(const size_t N, const int alpha, void* X) {
175 #ifndef CPU_ONLY
176  CUDA_CHECK(cudaMemset(X, alpha, N)); // NOLINT(caffe/alt_fn)
177 #else
178  NO_GPU;
179 #endif
180 }
181 
182 template <typename Dtype>
183 void caffe_gpu_add_scalar(const int N, const Dtype alpha, Dtype *X);
184 
185 template <typename Dtype>
186 void caffe_gpu_scal(const int N, const Dtype alpha, Dtype *X);
187 
188 template <typename Dtype>
189 void caffe_gpu_add(const int N, const Dtype* a, const Dtype* b, Dtype* y);
190 
191 template <typename Dtype>
192 void caffe_gpu_sub(const int N, const Dtype* a, const Dtype* b, Dtype* y);
193 
194 template <typename Dtype>
195 void caffe_gpu_mul(const int N, const Dtype* a, const Dtype* b, Dtype* y);
196 
197 template <typename Dtype>
198 void caffe_gpu_div(const int N, const Dtype* a, const Dtype* b, Dtype* y);
199 
200 template <typename Dtype>
201 void caffe_gpu_abs(const int n, const Dtype* a, Dtype* y);
202 
203 template <typename Dtype>
204 void caffe_gpu_exp(const int n, const Dtype* a, Dtype* y);
205 
206 template <typename Dtype>
207 void caffe_gpu_log(const int n, const Dtype* a, Dtype* y);
208 
209 template <typename Dtype>
210 void caffe_gpu_powx(const int n, const Dtype* a, const Dtype b, Dtype* y);
211 
212 // caffe_gpu_rng_uniform with two arguments generates integers in the range
213 // [0, UINT_MAX].
214 void caffe_gpu_rng_uniform(const int n, unsigned int* r);
215 
216 // caffe_gpu_rng_uniform with four arguments generates floats in the range
217 // (a, b] (strictly greater than a, less than or equal to b) due to the
218 // specification of curandGenerateUniform. With a = 0, b = 1, just calls
219 // curandGenerateUniform; with other limits will shift and scale the outputs
220 // appropriately after calling curandGenerateUniform.
221 template <typename Dtype>
222 void caffe_gpu_rng_uniform(const int n, const Dtype a, const Dtype b, Dtype* r);
223 
224 template <typename Dtype>
225 void caffe_gpu_rng_gaussian(const int n, const Dtype mu, const Dtype sigma,
226  Dtype* r);
227 
228 template <typename Dtype>
229 void caffe_gpu_rng_bernoulli(const int n, const Dtype p, int* r);
230 
231 template <typename Dtype>
232 void caffe_gpu_dot(const int n, const Dtype* x, const Dtype* y, Dtype* out);
233 
234 template <typename Dtype>
235 void caffe_gpu_asum(const int n, const Dtype* x, Dtype* y);
236 
237 template<typename Dtype>
238 void caffe_gpu_sign(const int n, const Dtype* x, Dtype* y);
239 
240 template<typename Dtype>
241 void caffe_gpu_sgnbit(const int n, const Dtype* x, Dtype* y);
242 
243 template <typename Dtype>
244 void caffe_gpu_fabs(const int n, const Dtype* x, Dtype* y);
245 
246 template <typename Dtype>
247 void caffe_gpu_scale(const int n, const Dtype alpha, const Dtype *x, Dtype* y);
248 
249 #define DEFINE_AND_INSTANTIATE_GPU_UNARY_FUNC(name, operation) \
250 template<typename Dtype> \
251 __global__ void name##_kernel(const int n, const Dtype* x, Dtype* y) { \
252  CUDA_KERNEL_LOOP(index, n) { \
253  operation; \
254  } \
255 } \
256 template <> \
257 void caffe_gpu_##name<float>(const int n, const float* x, float* y) { \
258  /* NOLINT_NEXT_LINE(whitespace/operators) */ \
259  name##_kernel<float><<<CAFFE_GET_BLOCKS(n), CAFFE_CUDA_NUM_THREADS>>>( \
260  n, x, y); \
261 } \
262 template <> \
263 void caffe_gpu_##name<double>(const int n, const double* x, double* y) { \
264  /* NOLINT_NEXT_LINE(whitespace/operators) */ \
265  name##_kernel<double><<<CAFFE_GET_BLOCKS(n), CAFFE_CUDA_NUM_THREADS>>>( \
266  n, x, y); \
267 }
268 
269 #endif // !CPU_ONLY
270 
271 } // namespace caffe
272 
273 #endif // CAFFE_UTIL_MATH_FUNCTIONS_H_
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
+ + + + diff --git a/doxygen/memory__data__layer_8hpp_source.html b/doxygen/memory__data__layer_8hpp_source.html new file mode 100644 index 00000000000..2138456a3cb --- /dev/null +++ b/doxygen/memory__data__layer_8hpp_source.html @@ -0,0 +1,85 @@ + + + + + + + +Caffe: include/caffe/layers/memory_data_layer.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
Caffe +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
memory_data_layer.hpp
+
+
+
1 #ifndef CAFFE_MEMORY_DATA_LAYER_HPP_
2 #define CAFFE_MEMORY_DATA_LAYER_HPP_
3 
4 #include <vector>
5 
6 #include "caffe/blob.hpp"
7 #include "caffe/layer.hpp"
8 #include "caffe/proto/caffe.pb.h"
9 
10 #include "caffe/layers/base_data_layer.hpp"
11 
12 namespace caffe {
13 
19 template <typename Dtype>
20 class MemoryDataLayer : public BaseDataLayer<Dtype> {
21  public:
22  explicit MemoryDataLayer(const LayerParameter& param)
23  : BaseDataLayer<Dtype>(param), has_new_data_(false) {}
24  virtual void DataLayerSetUp(const vector<Blob<Dtype>*>& bottom,
25  const vector<Blob<Dtype>*>& top);
26 
27  virtual inline const char* type() const { return "MemoryData"; }
28  virtual inline int ExactNumBottomBlobs() const { return 0; }
29  virtual inline int ExactNumTopBlobs() const { return 2; }
30 
31  virtual void AddDatumVector(const vector<Datum>& datum_vector);
32 #ifdef USE_OPENCV
33  virtual void AddMatVector(const vector<cv::Mat>& mat_vector,
34  const vector<int>& labels);
35 #endif // USE_OPENCV
36 
37  // Reset should accept const pointers, but can't, because the memory
38  // will be given to Blob, which is mutable
39  void Reset(Dtype* data, Dtype* label, int n);
40  void set_batch_size(int new_size);
41 
42  int batch_size() { return batch_size_; }
43  int channels() { return channels_; }
44  int height() { return height_; }
45  int width() { return width_; }
46 
47  protected:
48  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
49  const vector<Blob<Dtype>*>& top);
50 
51  int batch_size_, channels_, height_, width_, size_;
52  Dtype* data_;
53  Dtype* labels_;
54  int n_;
55  size_t pos_;
56  Blob<Dtype> added_data_;
57  Blob<Dtype> added_label_;
58  bool has_new_data_;
59 };
60 
61 } // namespace caffe
62 
63 #endif // CAFFE_MEMORY_DATA_LAYER_HPP_
virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
Using the CPU device, compute the layer output.
Definition: memory_data_layer.cpp:108
+
A layer factory that allows one to register layers. During runtime, registered layers can be called b...
Definition: blob.hpp:14
+
virtual int ExactNumBottomBlobs() const
Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
Definition: memory_data_layer.hpp:28
+
Provides base for data layers that feed blobs to the Net.
Definition: base_data_layer.hpp:21
+
virtual int ExactNumTopBlobs() const
Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
Definition: memory_data_layer.hpp:29
+
Provides data to the Net from memory.
Definition: memory_data_layer.hpp:20
+
virtual const char * type() const
Returns the layer type.
Definition: memory_data_layer.hpp:27
+
A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
Definition: blob.hpp:24
+
+ + + + diff --git a/doxygen/menu.js b/doxygen/menu.js new file mode 100644 index 00000000000..97db4c23922 --- /dev/null +++ b/doxygen/menu.js @@ -0,0 +1,26 @@ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} diff --git a/doxygen/menudata.js b/doxygen/menudata.js new file mode 100644 index 00000000000..e067d53bb7d --- /dev/null +++ b/doxygen/menudata.js @@ -0,0 +1,75 @@ +var menudata={children:[ +{text:'Main Page',url:'index.html'}, +{text:'Namespaces',url:'namespaces.html',children:[ +{text:'Namespace List',url:'namespaces.html'}, +{text:'Namespace Members',url:'namespacemembers.html',children:[ +{text:'All',url:'namespacemembers.html'}, +{text:'Functions',url:'namespacemembers_func.html'}, +{text:'Typedefs',url:'namespacemembers_type.html'}]}]}, +{text:'Classes',url:'annotated.html',children:[ +{text:'Class List',url:'annotated.html'}, +{text:'Class Index',url:'classes.html'}, +{text:'Class Hierarchy',url:'hierarchy.html'}, +{text:'Class Members',url:'functions.html',children:[ +{text:'All',url:'functions.html',children:[ +{text:'a',url:'functions.html#index_a'}, +{text:'b',url:'functions_b.html#index_b'}, +{text:'c',url:'functions_c.html#index_c'}, +{text:'d',url:'functions_d.html#index_d'}, +{text:'e',url:'functions_e.html#index_e'}, +{text:'f',url:'functions_f.html#index_f'}, +{text:'g',url:'functions_g.html#index_g'}, +{text:'h',url:'functions_h.html#index_h'}, +{text:'i',url:'functions_i.html#index_i'}, +{text:'k',url:'functions_k.html#index_k'}, +{text:'l',url:'functions_l.html#index_l'}, +{text:'m',url:'functions_m.html#index_m'}, +{text:'n',url:'functions_n.html#index_n'}, +{text:'o',url:'functions_o.html#index_o'}, +{text:'p',url:'functions_p.html#index_p'}, +{text:'r',url:'functions_r.html#index_r'}, +{text:'s',url:'functions_s.html#index_s'}, +{text:'t',url:'functions_t.html#index_t'}, +{text:'u',url:'functions_u.html#index_u'}, +{text:'w',url:'functions_w.html#index_w'}]}, +{text:'Functions',url:'functions_func.html',children:[ +{text:'a',url:'functions_func.html#index_a'}, +{text:'b',url:'functions_func_b.html#index_b'}, +{text:'c',url:'functions_func_c.html#index_c'}, +{text:'d',url:'functions_func_d.html#index_d'}, +{text:'e',url:'functions_func_e.html#index_e'}, +{text:'f',url:'functions_func_f.html#index_f'}, +{text:'g',url:'functions_func_g.html#index_g'}, +{text:'h',url:'functions_func_h.html#index_h'}, +{text:'i',url:'functions_func_i.html#index_i'}, +{text:'l',url:'functions_func_l.html#index_l'}, +{text:'m',url:'functions_func_m.html#index_m'}, +{text:'n',url:'functions_func_n.html#index_n'}, +{text:'o',url:'functions_func_o.html#index_o'}, +{text:'p',url:'functions_func_p.html#index_p'}, +{text:'r',url:'functions_func_r.html#index_r'}, +{text:'s',url:'functions_func_s.html#index_s'}, +{text:'t',url:'functions_func_t.html#index_t'}, +{text:'u',url:'functions_func_u.html#index_u'}, +{text:'w',url:'functions_func_w.html#index_w'}]}, +{text:'Variables',url:'functions_vars.html',children:[ +{text:'a',url:'functions_vars.html#index_a'}, +{text:'b',url:'functions_vars.html#index_b'}, +{text:'c',url:'functions_vars.html#index_c'}, +{text:'d',url:'functions_vars.html#index_d'}, +{text:'e',url:'functions_vars.html#index_e'}, +{text:'f',url:'functions_vars.html#index_f'}, +{text:'h',url:'functions_vars.html#index_h'}, +{text:'i',url:'functions_vars.html#index_i'}, +{text:'k',url:'functions_vars.html#index_k'}, +{text:'l',url:'functions_vars.html#index_l'}, +{text:'m',url:'functions_vars.html#index_m'}, +{text:'n',url:'functions_vars.html#index_n'}, +{text:'o',url:'functions_vars.html#index_o'}, +{text:'p',url:'functions_vars.html#index_p'}, +{text:'r',url:'functions_vars.html#index_r'}, +{text:'s',url:'functions_vars.html#index_s'}, +{text:'t',url:'functions_vars.html#index_t'}, +{text:'u',url:'functions_vars.html#index_u'}]}]}]}, +{text:'Files',url:'files.html',children:[ +{text:'File List',url:'files.html'}]}]} diff --git a/doxygen/mkl__alternate_8hpp_source.html b/doxygen/mkl__alternate_8hpp_source.html new file mode 100644 index 00000000000..90194be7732 --- /dev/null +++ b/doxygen/mkl__alternate_8hpp_source.html @@ -0,0 +1,77 @@ + + + + + + + +Caffe: include/caffe/util/mkl_alternate.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    mkl_alternate.hpp
    +
    +
    +
    1 #ifndef CAFFE_UTIL_MKL_ALTERNATE_H_
    2 #define CAFFE_UTIL_MKL_ALTERNATE_H_
    3 
    4 #ifdef USE_MKL
    5 
    6 #include <mkl.h>
    7 
    8 #else // If use MKL, simply include the MKL header
    9 
    10 #ifdef USE_ACCELERATE
    11 #include <Accelerate/Accelerate.h>
    12 #else
    13 extern "C" {
    14 #include <cblas.h>
    15 }
    16 #endif // USE_ACCELERATE
    17 
    18 #include <math.h>
    19 
    20 // Functions that caffe uses but are not present if MKL is not linked.
    21 
    22 // A simple way to define the vsl unary functions. The operation should
    23 // be in the form e.g. y[i] = sqrt(a[i])
    24 #define DEFINE_VSL_UNARY_FUNC(name, operation) \
    25  template<typename Dtype> \
    26  void v##name(const int n, const Dtype* a, Dtype* y) { \
    27  CHECK_GT(n, 0); CHECK(a); CHECK(y); \
    28  for (int i = 0; i < n; ++i) { operation; } \
    29  } \
    30  inline void vs##name( \
    31  const int n, const float* a, float* y) { \
    32  v##name<float>(n, a, y); \
    33  } \
    34  inline void vd##name( \
    35  const int n, const double* a, double* y) { \
    36  v##name<double>(n, a, y); \
    37  }
    38 
    39 DEFINE_VSL_UNARY_FUNC(Sqr, y[i] = a[i] * a[i]);
    40 DEFINE_VSL_UNARY_FUNC(Exp, y[i] = exp(a[i]));
    41 DEFINE_VSL_UNARY_FUNC(Ln, y[i] = log(a[i]));
    42 DEFINE_VSL_UNARY_FUNC(Abs, y[i] = fabs(a[i]));
    43 
    44 // A simple way to define the vsl unary functions with singular parameter b.
    45 // The operation should be in the form e.g. y[i] = pow(a[i], b)
    46 #define DEFINE_VSL_UNARY_FUNC_WITH_PARAM(name, operation) \
    47  template<typename Dtype> \
    48  void v##name(const int n, const Dtype* a, const Dtype b, Dtype* y) { \
    49  CHECK_GT(n, 0); CHECK(a); CHECK(y); \
    50  for (int i = 0; i < n; ++i) { operation; } \
    51  } \
    52  inline void vs##name( \
    53  const int n, const float* a, const float b, float* y) { \
    54  v##name<float>(n, a, b, y); \
    55  } \
    56  inline void vd##name( \
    57  const int n, const double* a, const float b, double* y) { \
    58  v##name<double>(n, a, b, y); \
    59  }
    60 
    61 DEFINE_VSL_UNARY_FUNC_WITH_PARAM(Powx, y[i] = pow(a[i], b));
    62 
    63 // A simple way to define the vsl binary functions. The operation should
    64 // be in the form e.g. y[i] = a[i] + b[i]
    65 #define DEFINE_VSL_BINARY_FUNC(name, operation) \
    66  template<typename Dtype> \
    67  void v##name(const int n, const Dtype* a, const Dtype* b, Dtype* y) { \
    68  CHECK_GT(n, 0); CHECK(a); CHECK(b); CHECK(y); \
    69  for (int i = 0; i < n; ++i) { operation; } \
    70  } \
    71  inline void vs##name( \
    72  const int n, const float* a, const float* b, float* y) { \
    73  v##name<float>(n, a, b, y); \
    74  } \
    75  inline void vd##name( \
    76  const int n, const double* a, const double* b, double* y) { \
    77  v##name<double>(n, a, b, y); \
    78  }
    79 
    80 DEFINE_VSL_BINARY_FUNC(Add, y[i] = a[i] + b[i]);
    81 DEFINE_VSL_BINARY_FUNC(Sub, y[i] = a[i] - b[i]);
    82 DEFINE_VSL_BINARY_FUNC(Mul, y[i] = a[i] * b[i]);
    83 DEFINE_VSL_BINARY_FUNC(Div, y[i] = a[i] / b[i]);
    84 
    85 // In addition, MKL comes with an additional function axpby that is not present
    86 // in standard blas. We will simply use a two-step (inefficient, of course) way
    87 // to mimic that.
    88 inline void cblas_saxpby(const int N, const float alpha, const float* X,
    89  const int incX, const float beta, float* Y,
    90  const int incY) {
    91  cblas_sscal(N, beta, Y, incY);
    92  cblas_saxpy(N, alpha, X, incX, Y, incY);
    93 }
    94 inline void cblas_daxpby(const int N, const double alpha, const double* X,
    95  const int incX, const double beta, double* Y,
    96  const int incY) {
    97  cblas_dscal(N, beta, Y, incY);
    98  cblas_daxpy(N, alpha, X, incX, Y, incY);
    99 }
    100 
    101 #endif // USE_MKL
    102 #endif // CAFFE_UTIL_MKL_ALTERNATE_H_
    + + + + diff --git a/doxygen/multinomial__logistic__loss__layer_8hpp_source.html b/doxygen/multinomial__logistic__loss__layer_8hpp_source.html new file mode 100644 index 00000000000..02524e1bc26 --- /dev/null +++ b/doxygen/multinomial__logistic__loss__layer_8hpp_source.html @@ -0,0 +1,85 @@ + + + + + + + +Caffe: include/caffe/layers/multinomial_logistic_loss_layer.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    multinomial_logistic_loss_layer.hpp
    +
    +
    +
    1 #ifndef CAFFE_MULTINOMIAL_LOGISTIC_LOSS_LAYER_HPP_
    2 #define CAFFE_MULTINOMIAL_LOGISTIC_LOSS_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/layer.hpp"
    8 #include "caffe/proto/caffe.pb.h"
    9 
    10 #include "caffe/layers/loss_layer.hpp"
    11 
    12 namespace caffe {
    13 
    43 template <typename Dtype>
    44 class MultinomialLogisticLossLayer : public LossLayer<Dtype> {
    45  public:
    46  explicit MultinomialLogisticLossLayer(const LayerParameter& param)
    47  : LossLayer<Dtype>(param) {}
    48  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    49  const vector<Blob<Dtype>*>& top);
    50 
    51  virtual inline const char* type() const { return "MultinomialLogisticLoss"; }
    52 
    53  protected:
    55  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    56  const vector<Blob<Dtype>*>& top);
    57 
    86  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    87  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    88 };
    89 
    90 } // namespace caffe
    91 
    92 #endif // CAFFE_MULTINOMIAL_LOGISTIC_LOSS_LAYER_HPP_
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Computes the multinomial logistic loss for a one-of-many classification task, directly taking a predi...
    Definition: multinomial_logistic_loss_layer.cpp:20
    +
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: multinomial_logistic_loss_layer.hpp:51
    +
    Computes the multinomial logistic loss for a one-of-many classification task, directly taking a predi...
    Definition: multinomial_logistic_loss_layer.hpp:44
    +
    virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: multinomial_logistic_loss_layer.cpp:11
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Computes the multinomial logistic loss error gradient w.r.t. the predictions.
    Definition: multinomial_logistic_loss_layer.cpp:37
    +
    An interface for Layers that take two Blobs as input – usually (1) predictions and (2) ground-truth ...
    Definition: loss_layer.hpp:23
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    +
    + + + + diff --git a/doxygen/mvn__layer_8hpp_source.html b/doxygen/mvn__layer_8hpp_source.html new file mode 100644 index 00000000000..bbed39c44a3 --- /dev/null +++ b/doxygen/mvn__layer_8hpp_source.html @@ -0,0 +1,90 @@ + + + + + + + +Caffe: include/caffe/layers/mvn_layer.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    mvn_layer.hpp
    +
    +
    +
    1 #ifndef CAFFE_MVN_LAYER_HPP_
    2 #define CAFFE_MVN_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/layer.hpp"
    8 #include "caffe/proto/caffe.pb.h"
    9 
    10 namespace caffe {
    11 
    17 template <typename Dtype>
    18 class MVNLayer : public Layer<Dtype> {
    19  public:
    20  explicit MVNLayer(const LayerParameter& param)
    21  : Layer<Dtype>(param) {}
    22  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    23  const vector<Blob<Dtype>*>& top);
    24 
    25  virtual inline const char* type() const { return "MVN"; }
    26  virtual inline int ExactNumBottomBlobs() const { return 1; }
    27  virtual inline int ExactNumTopBlobs() const { return 1; }
    28 
    29  protected:
    30  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    31  const vector<Blob<Dtype>*>& top);
    32  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    33  const vector<Blob<Dtype>*>& top);
    34  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    35  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    36  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    37  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    38 
    39  Blob<Dtype> mean_, variance_, temp_;
    40 
    43  Dtype eps_;
    44 };
    45 
    46 } // namespace caffe
    47 
    48 #endif // CAFFE_MVN_LAYER_HPP_
    An interface for the units of computation which can be composed into a Net.
    Definition: layer.hpp:33
    +
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    Normalizes the input to have 0-mean and/or unit (1) variance.
    Definition: mvn_layer.hpp:18
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: mvn_layer.cpp:74
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: mvn_layer.hpp:27
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: mvn_layer.hpp:25
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the CPU device, compute the layer output.
    Definition: mvn_layer.cpp:31
    +
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: mvn_layer.hpp:26
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    Blob< Dtype > sum_multiplier_
    sum_multiplier is used to carry out sum using BLAS
    Definition: mvn_layer.hpp:42
    +
    virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: mvn_layer.cpp:9
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    +
    + + + + diff --git a/doxygen/namespaceboost.html b/doxygen/namespaceboost.html new file mode 100644 index 00000000000..bf6b4dd4579 --- /dev/null +++ b/doxygen/namespaceboost.html @@ -0,0 +1,75 @@ + + + + + + + +Caffe: boost Namespace Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    boost Namespace Reference
    +
    +
    +

    Detailed Description

    +

    Forward declare boost::thread instead of including boost/thread.hpp to avoid a boost/NVCC issues (#1009, #1010) on OSX.

    +
    + + + + diff --git a/doxygen/namespacecaffe.html b/doxygen/namespacecaffe.html new file mode 100644 index 00000000000..c9fa050a416 --- /dev/null +++ b/doxygen/namespacecaffe.html @@ -0,0 +1,1666 @@ + + + + + + + +Caffe: caffe Namespace Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    caffe Namespace Reference
    +
    +
    + +

    A layer factory that allows one to register layers. During runtime, registered layers can be called by passing a LayerParameter protobuffer to the CreateLayer function: +More...

    + + + + + +

    +Namespaces

     SolverAction
     Enumeration of actions that a client of the Solver may request by implementing the Solver's action request function, which a 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).
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    class  AbsValLayer
     Computes $ y = |x| $. More...
     
    class  AccuracyLayer
     Computes the classification accuracy for a one-of-many classification task. More...
     
    class  AdaDeltaSolver
     
    class  AdaGradSolver
     
    class  AdamSolver
     AdamSolver, an algorithm for first-order gradient-based optimization of stochastic objective functions, based on adaptive estimates of lower-order moments. Described in [1]. More...
     
    class  ArgMaxLayer
     Compute the index of the $ K $ max values for each datum across all dimensions $ (C \times H \times W) $. More...
     
    class  BaseConvolutionLayer
     Abstract base class that factors out the BLAS code common to ConvolutionLayer and DeconvolutionLayer. More...
     
    class  BaseDataLayer
     Provides base for data layers that feed blobs to the Net. More...
     
    class  BasePrefetchingDataLayer
     
    class  Batch
     
    class  BatchNormLayer
     Normalizes the input to have 0-mean and/or unit (1) variance across the batch. More...
     
    class  BatchReindexLayer
     Index into the input blob along its first axis. More...
     
    class  BiasLayer
     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. More...
     
    class  BilinearFiller
     Fills a Blob with coefficients for bilinear interpolation. More...
     
    class  Blob
     A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers, Nets, and Solvers interact. More...
     
    class  BlockingQueue
     
    class  BNLLLayer
     Computes $ y = x + \log(1 + \exp(-x)) $ if $ x > 0 $; $ y = \log(1 + \exp(x)) $ otherwise. More...
     
    class  Caffe
     
    class  ConcatLayer
     Takes at least two Blobs and concatenates them along either the num or channel dimension, outputting the result. More...
     
    class  ConstantFiller
     Fills a Blob with constant values $ x = 0 $. More...
     
    class  ContrastiveLossLayer
     Computes the contrastive loss $ 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 $ where $ d = \left| \left| a_n - b_n \right| \right|_2 $. This can be used to train siamese networks. More...
     
    class  ConvolutionLayer
     Convolves the input image with a bank of learned filters, and (optionally) adds biases. More...
     
    class  CPUTimer
     
    class  CropLayer
     Takes a Blob and crop it, to the shape specified by the second input Blob, across all dimensions after the specified axis. More...
     
    class  DataLayer
     
    class  DataReader
     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. More...
     
    class  DataTransformer
     Applies common transformations to the input data, such as scaling, mirroring, substracting the image mean... More...
     
    class  DeconvolutionLayer
     Convolve the input with a bank of learned filters, and (optionally) add biases, treating filters and convolution parameters in the opposite sense as ConvolutionLayer. More...
     
    class  DevicePair
     
    class  DropoutLayer
     During training only, sets a random portion of $x$ to 0, adjusting the rest of the vector magnitude accordingly. More...
     
    class  DummyDataLayer
     Provides data to the Net generated by a Filler. More...
     
    class  EltwiseLayer
     Compute elementwise operations, such as product and sum, along multiple input Blobs. More...
     
    class  ELULayer
     Exponential Linear Unit non-linearity $ y = \left\{ \begin{array}{lr} x & \mathrm{if} \; x > 0 \\ \alpha (\exp(x)-1) & \mathrm{if} \; x \le 0 \end{array} \right. $. More...
     
    class  EmbedLayer
     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. More...
     
    class  EuclideanLossLayer
     Computes the Euclidean (L2) loss $ E = \frac{1}{2N} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $ for real-valued regression tasks. More...
     
    class  ExpLayer
     Computes $ y = \gamma ^ {\alpha x + \beta} $, as specified by the scale $ \alpha $, shift $ \beta $, and base $ \gamma $. More...
     
    class  Filler
     Fills a Blob with constant or randomly-generated data. More...
     
    class  FilterLayer
     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). More...
     
    class  FlattenLayer
     Reshapes the input Blob into flat vectors. More...
     
    class  GaussianFiller
     Fills a Blob with Gaussian-distributed values $ x = a $. More...
     
    class  GPUParams
     
    class  HDF5DataLayer
     Provides data to the Net from HDF5 files. More...
     
    class  HDF5OutputLayer
     Write blobs to disk as HDF5 files. More...
     
    class  HingeLossLayer
     Computes the hinge loss for a one-of-many classification task. More...
     
    class  Im2colLayer
     A helper for image operations that rearranges image regions into column vectors. Used by ConvolutionLayer to perform convolution by matrix multiplication. More...
     
    class  ImageDataLayer
     Provides data to the Net from image files. More...
     
    class  InfogainLossLayer
     A generalization of MultinomialLogisticLossLayer that takes an "information gain" (infogain) matrix specifying the "value" of all label pairs. More...
     
    class  InnerProductLayer
     Also known as a "fully-connected" layer, computes an inner product with a set of learned weights, and (optionally) adds biases. More...
     
    class  InputLayer
     Provides data to the Net by assigning tops directly. More...
     
    class  InternalThread
     
    class  Layer
     An interface for the units of computation which can be composed into a Net. More...
     
    class  LayerRegisterer
     
    class  LayerRegistry
     
    class  LogLayer
     Computes $ y = log_{\gamma}(\alpha x + \beta) $, as specified by the scale $ \alpha $, shift $ \beta $, and base $ \gamma $. More...
     
    class  LossLayer
     An interface for Layers that take two Blobs as input – usually (1) predictions and (2) ground-truth labels – and output a singleton Blob representing the loss. More...
     
    class  LRNLayer
     Normalize the input in a local region across or within feature maps. More...
     
    class  LSTMLayer
     Processes sequential inputs using a "Long Short-Term Memory" (LSTM) [1] style recurrent neural network (RNN). Implemented by unrolling the LSTM computation through time. More...
     
    class  LSTMUnitLayer
     A helper for LSTMLayer: computes a single timestep of the non-linearity of the LSTM, producing the updated cell and hidden states. More...
     
    class  MemoryDataLayer
     Provides data to the Net from memory. More...
     
    class  MSRAFiller
     Fills a Blob with values $ x \sim N(0, \sigma^2) $ where $ \sigma^2 $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average. More...
     
    class  MultinomialLogisticLossLayer
     Computes the multinomial logistic loss for a one-of-many classification task, directly taking a predicted probability distribution as input. More...
     
    class  MVNLayer
     Normalizes the input to have 0-mean and/or unit (1) variance. More...
     
    class  NesterovSolver
     
    class  Net
     Connects Layers together into a directed acyclic graph (DAG) specified by a NetParameter. More...
     
    class  NeuronLayer
     An interface for layers that take one blob as input ( $ x $) and produce one equally-sized blob as output ( $ y $), where each element of the output depends only on the corresponding input element. More...
     
    class  P2PSync
     
    class  ParameterLayer
     
    class  Params
     
    class  PoolingLayer
     Pools the input image by taking the max, average, etc. within regions. More...
     
    class  PositiveUnitballFiller
     Fills a Blob with values $ x \in [0, 1] $ such that $ \forall i \sum_j x_{ij} = 1 $. More...
     
    class  PowerLayer
     Computes $ y = (\alpha x + \beta) ^ \gamma $, as specified by the scale $ \alpha $, shift $ \beta $, and power $ \gamma $. More...
     
    class  PReLULayer
     Parameterized Rectified Linear Unit non-linearity $ y_i = \max(0, x_i) + a_i \min(0, x_i) $. 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. More...
     
    class  PythonLayer
     
    class  RecurrentLayer
     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. More...
     
    class  ReductionLayer
     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. More...
     
    class  ReLULayer
     Rectified Linear Unit non-linearity $ y = \max(0, x) $. The simple max is fast to compute, and the function does not saturate. More...
     
    class  ReshapeLayer
     
    class  RMSPropSolver
     
    class  RNNLayer
     Processes time-varying inputs using a simple recurrent neural network (RNN). Implemented as a network unrolling the RNN computation in time. More...
     
    class  ScaleLayer
     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. Note: for efficiency and convenience, this layer can additionally perform a "broadcast" sum too when bias_term: true is set. More...
     
    class  SGDSolver
     Optimizes the parameters of a Net using stochastic gradient descent (SGD) with momentum. More...
     
    class  SigmoidCrossEntropyLossLayer
     Computes the cross-entropy (logistic) loss $ 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] $, often used for predicting targets interpreted as probabilities. More...
     
    class  SigmoidLayer
     Sigmoid function non-linearity $ y = (1 + \exp(-x))^{-1} $, a classic choice in neural networks. More...
     
    class  SignalHandler
     
    class  SilenceLayer
     Ignores bottom blobs while producing no top blobs. (This is useful to suppress outputs during testing.) More...
     
    class  SliceLayer
     Takes a Blob and slices it along either the num or channel dimension, outputting multiple sliced Blob results. More...
     
    class  SoftmaxLayer
     Computes the softmax function. More...
     
    class  SoftmaxWithLossLayer
     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. More...
     
    class  Solver
     An interface for classes that perform optimization on Nets. More...
     
    class  SolverRegisterer
     
    class  SolverRegistry
     
    class  SplitLayer
     Creates a "split" path in the network by copying the bottom Blob into multiple top Blobs to be used by multiple consuming layers. More...
     
    class  SPPLayer
     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. More...
     
    class  SyncedMemory
     Manages memory allocation and synchronization between the host (CPU) and device (GPU). More...
     
    class  TanHLayer
     TanH hyperbolic tangent non-linearity $ y = \frac{\exp(2x) - 1}{\exp(2x) + 1} $, popular in auto-encoders. More...
     
    class  ThresholdLayer
     Tests whether the input exceeds a threshold: outputs 1 for inputs above threshold; 0 otherwise. More...
     
    class  TileLayer
     Copy a Blob along specified dimensions. More...
     
    class  Timer
     
    class  UniformFiller
     Fills a Blob with uniformly distributed values $ x\sim U(a, b) $. More...
     
    class  WindowDataLayer
     Provides data to the Net from windows of images files, specified by a window data file. More...
     
    class  WorkerSolver
     Solver that only computes gradients, used as worker for multi-GPU training. More...
     
    class  XavierFiller
     Fills a Blob with values $ x \sim U(-a, +a) $ where $ a $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average. More...
     
    + + + + + + +

    +Typedefs

    +typedef boost::function< SolverAction::Enum()> ActionCallback
     Type of a function that returns a Solver Action enumeration.
     
    +typedef boost::mt19937 rng_t
     
    + + + +

    +Enumerations

    enum  Op {
    +  copy, +replace_cpu, +replace_gpu, +replace_cpu_diff, +
    +  replace_gpu_diff +
    + }
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    +void GlobalInit (int *pargc, char ***pargv)
     
    template<typename Dtype >
    Filler< Dtype > * GetFiller (const FillerParameter &param)
     Get a specific filler from the specification given in FillerParameter. More...
     
    +void CaffeMallocHost (void **ptr, size_t size, bool *use_cuda)
     
    +void CaffeFreeHost (void *ptr, bool use_cuda)
     
    +const char * cublasGetErrorString (cublasStatus_t error)
     
    +const char * curandGetErrorString (curandStatus_t error)
     
    +int CAFFE_GET_BLOCKS (const int N)
     
    +std::string format_int (int n, int numberOfLeadingZeros=0)
     
    +template<typename Dtype >
    void hdf5_load_nd_dataset_helper (hid_t file_id, const char *dataset_name_, int min_dim, int max_dim, Blob< Dtype > *blob)
     
    +template<typename Dtype >
    void hdf5_load_nd_dataset (hid_t file_id, const char *dataset_name_, int min_dim, int max_dim, Blob< Dtype > *blob)
     
    +template<typename Dtype >
    void hdf5_save_nd_dataset (const hid_t file_id, const string &dataset_name, const Blob< Dtype > &blob, bool write_diff=false)
     
    +int hdf5_load_int (hid_t loc_id, const string &dataset_name)
     
    +void hdf5_save_int (hid_t loc_id, const string &dataset_name, int i)
     
    +string hdf5_load_string (hid_t loc_id, const string &dataset_name)
     
    +void hdf5_save_string (hid_t loc_id, const string &dataset_name, const string &s)
     
    +int hdf5_get_num_links (hid_t loc_id)
     
    +string hdf5_get_name_by_idx (hid_t loc_id, int idx)
     
    +template<typename Dtype >
    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, const int *dilation, Dtype *data_col)
     
    +template<typename Dtype >
    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)
     
    +template<typename Dtype >
    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, const int *dilation, Dtype *data_im)
     
    +template<typename Dtype >
    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)
     
    +template<typename Dtype >
    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, const int *dilation, Dtype *data_col)
     
    +template<typename Dtype >
    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)
     
    +template<typename Dtype >
    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, const int *dilation, Dtype *data_im)
     
    +template<typename Dtype >
    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, const int dilation_h, const int dilation_w, Dtype *data_im)
     
    +void InsertSplits (const NetParameter &param, NetParameter *param_split)
     
    +void ConfigureSplitLayer (const string &layer_name, const string &blob_name, const int blob_idx, const int split_count, const float loss_weight, LayerParameter *split_layer_param)
     
    +string SplitLayerName (const string &layer_name, const string &blob_name, const int blob_idx)
     
    +string SplitBlobName (const string &layer_name, const string &blob_name, const int blob_idx, const int split_idx)
     
    +void MakeTempDir (string *temp_dirname)
     
    +void MakeTempFilename (string *temp_filename)
     
    +bool ReadProtoFromTextFile (const char *filename, Message *proto)
     
    +bool ReadProtoFromTextFile (const string &filename, Message *proto)
     
    +void ReadProtoFromTextFileOrDie (const char *filename, Message *proto)
     
    +void ReadProtoFromTextFileOrDie (const string &filename, Message *proto)
     
    +void WriteProtoToTextFile (const Message &proto, const char *filename)
     
    +void WriteProtoToTextFile (const Message &proto, const string &filename)
     
    +bool ReadProtoFromBinaryFile (const char *filename, Message *proto)
     
    +bool ReadProtoFromBinaryFile (const string &filename, Message *proto)
     
    +void ReadProtoFromBinaryFileOrDie (const char *filename, Message *proto)
     
    +void ReadProtoFromBinaryFileOrDie (const string &filename, Message *proto)
     
    +void WriteProtoToBinaryFile (const Message &proto, const char *filename)
     
    +void WriteProtoToBinaryFile (const Message &proto, const string &filename)
     
    +bool ReadFileToDatum (const string &filename, const int label, Datum *datum)
     
    +bool ReadFileToDatum (const string &filename, Datum *datum)
     
    +bool ReadImageToDatum (const string &filename, const int label, const int height, const int width, const bool is_color, const std::string &encoding, Datum *datum)
     
    +bool ReadImageToDatum (const string &filename, const int label, const int height, const int width, const bool is_color, Datum *datum)
     
    +bool ReadImageToDatum (const string &filename, const int label, const int height, const int width, Datum *datum)
     
    +bool ReadImageToDatum (const string &filename, const int label, const bool is_color, Datum *datum)
     
    +bool ReadImageToDatum (const string &filename, const int label, Datum *datum)
     
    +bool ReadImageToDatum (const string &filename, const int label, const std::string &encoding, Datum *datum)
     
    +bool DecodeDatumNative (Datum *datum)
     
    +bool DecodeDatum (Datum *datum, bool is_color)
     
    +template<typename Dtype >
    void caffe_cpu_gemm (const CBLAS_TRANSPOSE TransA, const CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const Dtype alpha, const Dtype *A, const Dtype *B, const Dtype beta, Dtype *C)
     
    +template<typename Dtype >
    void caffe_cpu_gemv (const CBLAS_TRANSPOSE TransA, const int M, const int N, const Dtype alpha, const Dtype *A, const Dtype *x, const Dtype beta, Dtype *y)
     
    +template<typename Dtype >
    void caffe_axpy (const int N, const Dtype alpha, const Dtype *X, Dtype *Y)
     
    +template<typename Dtype >
    void caffe_cpu_axpby (const int N, const Dtype alpha, const Dtype *X, const Dtype beta, Dtype *Y)
     
    +template<typename Dtype >
    void caffe_copy (const int N, const Dtype *X, Dtype *Y)
     
    +template<typename Dtype >
    void caffe_set (const int N, const Dtype alpha, Dtype *X)
     
    +void caffe_memset (const size_t N, const int alpha, void *X)
     
    +template<typename Dtype >
    void caffe_add_scalar (const int N, const Dtype alpha, Dtype *X)
     
    +template<typename Dtype >
    void caffe_scal (const int N, const Dtype alpha, Dtype *X)
     
    +template<typename Dtype >
    void caffe_sqr (const int N, const Dtype *a, Dtype *y)
     
    +template<typename Dtype >
    void caffe_add (const int N, const Dtype *a, const Dtype *b, Dtype *y)
     
    +template<typename Dtype >
    void caffe_sub (const int N, const Dtype *a, const Dtype *b, Dtype *y)
     
    +template<typename Dtype >
    void caffe_mul (const int N, const Dtype *a, const Dtype *b, Dtype *y)
     
    +template<typename Dtype >
    void caffe_div (const int N, const Dtype *a, const Dtype *b, Dtype *y)
     
    +template<typename Dtype >
    void caffe_powx (const int n, const Dtype *a, const Dtype b, Dtype *y)
     
    +unsigned int caffe_rng_rand ()
     
    +template<typename Dtype >
    Dtype caffe_nextafter (const Dtype b)
     
    +template<typename Dtype >
    void caffe_rng_uniform (const int n, const Dtype a, const Dtype b, Dtype *r)
     
    +template<typename Dtype >
    void caffe_rng_gaussian (const int n, const Dtype mu, const Dtype sigma, Dtype *r)
     
    +template<typename Dtype >
    void caffe_rng_bernoulli (const int n, const Dtype p, int *r)
     
    +template<typename Dtype >
    void caffe_rng_bernoulli (const int n, const Dtype p, unsigned int *r)
     
    +template<typename Dtype >
    void caffe_exp (const int n, const Dtype *a, Dtype *y)
     
    +template<typename Dtype >
    void caffe_log (const int n, const Dtype *a, Dtype *y)
     
    +template<typename Dtype >
    void caffe_abs (const int n, const Dtype *a, Dtype *y)
     
    +template<typename Dtype >
    Dtype caffe_cpu_dot (const int n, const Dtype *x, const Dtype *y)
     
    +template<typename Dtype >
    Dtype caffe_cpu_strided_dot (const int n, const Dtype *x, const int incx, const Dtype *y, const int incy)
     
    +template<typename Dtype >
    Dtype caffe_cpu_asum (const int n, const Dtype *x)
     
    +template<typename Dtype >
    int8_t caffe_sign (Dtype val)
     
    DEFINE_CAFFE_CPU_UNARY_FUNC (sign, y[i]=caffe_sign< Dtype >(x[i]))
     
    DEFINE_CAFFE_CPU_UNARY_FUNC (sgnbit, y[i]=static_cast< bool >((std::signbit)(x[i])))
     
    DEFINE_CAFFE_CPU_UNARY_FUNC (fabs, y[i]=std::fabs(x[i]))
     
    +template<typename Dtype >
    void caffe_cpu_scale (const int n, const Dtype alpha, const Dtype *x, Dtype *y)
     
    +template<typename Dtype >
    void caffe_gpu_gemm (const CBLAS_TRANSPOSE TransA, const CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const Dtype alpha, const Dtype *A, const Dtype *B, const Dtype beta, Dtype *C)
     
    +template<typename Dtype >
    void caffe_gpu_gemv (const CBLAS_TRANSPOSE TransA, const int M, const int N, const Dtype alpha, const Dtype *A, const Dtype *x, const Dtype beta, Dtype *y)
     
    +template<typename Dtype >
    void caffe_gpu_axpy (const int N, const Dtype alpha, const Dtype *X, Dtype *Y)
     
    +template<typename Dtype >
    void caffe_gpu_axpby (const int N, const Dtype alpha, const Dtype *X, const Dtype beta, Dtype *Y)
     
    +void caffe_gpu_memcpy (const size_t N, const void *X, void *Y)
     
    +template<typename Dtype >
    void caffe_gpu_set (const int N, const Dtype alpha, Dtype *X)
     
    +void caffe_gpu_memset (const size_t N, const int alpha, void *X)
     
    +template<typename Dtype >
    void caffe_gpu_add_scalar (const int N, const Dtype alpha, Dtype *X)
     
    +template<typename Dtype >
    void caffe_gpu_scal (const int N, const Dtype alpha, Dtype *X)
     
    +template<typename Dtype >
    void caffe_gpu_add (const int N, const Dtype *a, const Dtype *b, Dtype *y)
     
    +template<typename Dtype >
    void caffe_gpu_sub (const int N, const Dtype *a, const Dtype *b, Dtype *y)
     
    +template<typename Dtype >
    void caffe_gpu_mul (const int N, const Dtype *a, const Dtype *b, Dtype *y)
     
    +template<typename Dtype >
    void caffe_gpu_div (const int N, const Dtype *a, const Dtype *b, Dtype *y)
     
    +template<typename Dtype >
    void caffe_gpu_abs (const int n, const Dtype *a, Dtype *y)
     
    +template<typename Dtype >
    void caffe_gpu_exp (const int n, const Dtype *a, Dtype *y)
     
    +template<typename Dtype >
    void caffe_gpu_log (const int n, const Dtype *a, Dtype *y)
     
    +template<typename Dtype >
    void caffe_gpu_powx (const int n, const Dtype *a, const Dtype b, Dtype *y)
     
    +void caffe_gpu_rng_uniform (const int n, unsigned int *r)
     
    +template<typename Dtype >
    void caffe_gpu_rng_uniform (const int n, const Dtype a, const Dtype b, Dtype *r)
     
    +template<typename Dtype >
    void caffe_gpu_rng_gaussian (const int n, const Dtype mu, const Dtype sigma, Dtype *r)
     
    +template<typename Dtype >
    void caffe_gpu_rng_bernoulli (const int n, const Dtype p, int *r)
     
    +template<typename Dtype >
    void caffe_gpu_dot (const int n, const Dtype *x, const Dtype *y, Dtype *out)
     
    +template<typename Dtype >
    void caffe_gpu_asum (const int n, const Dtype *x, Dtype *y)
     
    +template<typename Dtype >
    void caffe_gpu_sign (const int n, const Dtype *x, Dtype *y)
     
    +template<typename Dtype >
    void caffe_gpu_sgnbit (const int n, const Dtype *x, Dtype *y)
     
    +template<typename Dtype >
    void caffe_gpu_fabs (const int n, const Dtype *x, Dtype *y)
     
    +template<typename Dtype >
    void caffe_gpu_scale (const int n, const Dtype alpha, const Dtype *x, Dtype *y)
     
    +rng_t * caffe_rng ()
     
    +template<class RandomAccessIterator , class RandomGenerator >
    void shuffle (RandomAccessIterator begin, RandomAccessIterator end, RandomGenerator *gen)
     
    +template<class RandomAccessIterator >
    void shuffle (RandomAccessIterator begin, RandomAccessIterator end)
     
    +bool NetNeedsUpgrade (const NetParameter &net_param)
     
    +bool UpgradeNetAsNeeded (const string &param_file, NetParameter *param)
     
    +void ReadNetParamsFromTextFileOrDie (const string &param_file, NetParameter *param)
     
    +void ReadNetParamsFromBinaryFileOrDie (const string &param_file, NetParameter *param)
     
    +bool NetNeedsV0ToV1Upgrade (const NetParameter &net_param)
     
    +bool UpgradeV0Net (const NetParameter &v0_net_param, NetParameter *net_param)
     
    +void UpgradeV0PaddingLayers (const NetParameter &param, NetParameter *param_upgraded_pad)
     
    +bool UpgradeV0LayerParameter (const V1LayerParameter &v0_layer_connection, V1LayerParameter *layer_param)
     
    +V1LayerParameter_LayerType UpgradeV0LayerType (const string &type)
     
    +bool NetNeedsDataUpgrade (const NetParameter &net_param)
     
    +void UpgradeNetDataTransformation (NetParameter *net_param)
     
    +bool NetNeedsV1ToV2Upgrade (const NetParameter &net_param)
     
    +bool UpgradeV1Net (const NetParameter &v1_net_param, NetParameter *net_param)
     
    +bool UpgradeV1LayerParameter (const V1LayerParameter &v1_layer_param, LayerParameter *layer_param)
     
    +const char * UpgradeV1LayerType (const V1LayerParameter_LayerType type)
     
    +bool NetNeedsInputUpgrade (const NetParameter &net_param)
     
    +void UpgradeNetInput (NetParameter *net_param)
     
    +bool NetNeedsBatchNormUpgrade (const NetParameter &net_param)
     
    +void UpgradeNetBatchNorm (NetParameter *net_param)
     
    +bool SolverNeedsTypeUpgrade (const SolverParameter &solver_param)
     
    +bool UpgradeSolverType (SolverParameter *solver_param)
     
    +bool UpgradeSolverAsNeeded (const string &param_file, SolverParameter *param)
     
    +void ReadSolverParamsFromTextFileOrDie (const string &param_file, SolverParameter *param)
     
    INSTANTIATE_CLASS (Blob)
     
    +int64_t cluster_seedgen (void)
     
    INSTANTIATE_CLASS (DataTransformer)
     
    INSTANTIATE_CLASS (Layer)
     
    +template<typename Dtype >
    shared_ptr< Layer< Dtype > > GetConvolutionLayer (const LayerParameter &param)
     
    REGISTER_LAYER_CREATOR (Convolution, GetConvolutionLayer)
     
    +template<typename Dtype >
    shared_ptr< Layer< Dtype > > GetPoolingLayer (const LayerParameter &param)
     
    REGISTER_LAYER_CREATOR (Pooling, GetPoolingLayer)
     
    +template<typename Dtype >
    shared_ptr< Layer< Dtype > > GetLRNLayer (const LayerParameter &param)
     
    REGISTER_LAYER_CREATOR (LRN, GetLRNLayer)
     
    +template<typename Dtype >
    shared_ptr< Layer< Dtype > > GetReLULayer (const LayerParameter &param)
     
    REGISTER_LAYER_CREATOR (ReLU, GetReLULayer)
     
    +template<typename Dtype >
    shared_ptr< Layer< Dtype > > GetSigmoidLayer (const LayerParameter &param)
     
    REGISTER_LAYER_CREATOR (Sigmoid, GetSigmoidLayer)
     
    +template<typename Dtype >
    shared_ptr< Layer< Dtype > > GetSoftmaxLayer (const LayerParameter &param)
     
    REGISTER_LAYER_CREATOR (Softmax, GetSoftmaxLayer)
     
    +template<typename Dtype >
    shared_ptr< Layer< Dtype > > GetTanHLayer (const LayerParameter &param)
     
    REGISTER_LAYER_CREATOR (TanH, GetTanHLayer)
     
    INSTANTIATE_CLASS (AbsValLayer)
     
    REGISTER_LAYER_CLASS (AbsVal)
     
    INSTANTIATE_CLASS (AccuracyLayer)
     
    REGISTER_LAYER_CLASS (Accuracy)
     
    INSTANTIATE_CLASS (ArgMaxLayer)
     
    REGISTER_LAYER_CLASS (ArgMax)
     
    INSTANTIATE_CLASS (BaseConvolutionLayer)
     
    INSTANTIATE_CLASS (BaseDataLayer)
     
    INSTANTIATE_CLASS (BasePrefetchingDataLayer)
     
    INSTANTIATE_CLASS (BatchNormLayer)
     
    REGISTER_LAYER_CLASS (BatchNorm)
     
    INSTANTIATE_CLASS (BatchReindexLayer)
     
    REGISTER_LAYER_CLASS (BatchReindex)
     
    INSTANTIATE_CLASS (BiasLayer)
     
    REGISTER_LAYER_CLASS (Bias)
     
    INSTANTIATE_CLASS (BNLLLayer)
     
    REGISTER_LAYER_CLASS (BNLL)
     
    INSTANTIATE_CLASS (ConcatLayer)
     
    REGISTER_LAYER_CLASS (Concat)
     
    INSTANTIATE_CLASS (ContrastiveLossLayer)
     
    REGISTER_LAYER_CLASS (ContrastiveLoss)
     
    INSTANTIATE_CLASS (ConvolutionLayer)
     
    INSTANTIATE_CLASS (CropLayer)
     
    REGISTER_LAYER_CLASS (Crop)
     
    INSTANTIATE_CLASS (DataLayer)
     
    REGISTER_LAYER_CLASS (Data)
     
    INSTANTIATE_CLASS (DeconvolutionLayer)
     
    REGISTER_LAYER_CLASS (Deconvolution)
     
    INSTANTIATE_CLASS (DropoutLayer)
     
    REGISTER_LAYER_CLASS (Dropout)
     
    INSTANTIATE_CLASS (DummyDataLayer)
     
    REGISTER_LAYER_CLASS (DummyData)
     
    INSTANTIATE_CLASS (EltwiseLayer)
     
    REGISTER_LAYER_CLASS (Eltwise)
     
    INSTANTIATE_CLASS (ELULayer)
     
    REGISTER_LAYER_CLASS (ELU)
     
    INSTANTIATE_CLASS (EmbedLayer)
     
    REGISTER_LAYER_CLASS (Embed)
     
    INSTANTIATE_CLASS (EuclideanLossLayer)
     
    REGISTER_LAYER_CLASS (EuclideanLoss)
     
    INSTANTIATE_CLASS (ExpLayer)
     
    REGISTER_LAYER_CLASS (Exp)
     
    INSTANTIATE_CLASS (FilterLayer)
     
    REGISTER_LAYER_CLASS (Filter)
     
    INSTANTIATE_CLASS (FlattenLayer)
     
    REGISTER_LAYER_CLASS (Flatten)
     
    INSTANTIATE_CLASS (HDF5DataLayer)
     
    REGISTER_LAYER_CLASS (HDF5Data)
     
    INSTANTIATE_CLASS (HDF5OutputLayer)
     
    REGISTER_LAYER_CLASS (HDF5Output)
     
    INSTANTIATE_CLASS (HingeLossLayer)
     
    REGISTER_LAYER_CLASS (HingeLoss)
     
    INSTANTIATE_CLASS (Im2colLayer)
     
    REGISTER_LAYER_CLASS (Im2col)
     
    INSTANTIATE_CLASS (InfogainLossLayer)
     
    REGISTER_LAYER_CLASS (InfogainLoss)
     
    INSTANTIATE_CLASS (InnerProductLayer)
     
    REGISTER_LAYER_CLASS (InnerProduct)
     
    INSTANTIATE_CLASS (InputLayer)
     
    REGISTER_LAYER_CLASS (Input)
     
    INSTANTIATE_CLASS (LogLayer)
     
    REGISTER_LAYER_CLASS (Log)
     
    INSTANTIATE_CLASS (LossLayer)
     
    INSTANTIATE_CLASS (LRNLayer)
     
    INSTANTIATE_CLASS (LSTMLayer)
     
    REGISTER_LAYER_CLASS (LSTM)
     
    +template<typename Dtype >
    Dtype sigmoid (Dtype x)
     
    +template<typename Dtype >
    Dtype tanh (Dtype x)
     
    INSTANTIATE_CLASS (LSTMUnitLayer)
     
    REGISTER_LAYER_CLASS (LSTMUnit)
     
    INSTANTIATE_CLASS (MemoryDataLayer)
     
    REGISTER_LAYER_CLASS (MemoryData)
     
    INSTANTIATE_CLASS (MultinomialLogisticLossLayer)
     
    REGISTER_LAYER_CLASS (MultinomialLogisticLoss)
     
    INSTANTIATE_CLASS (MVNLayer)
     
    REGISTER_LAYER_CLASS (MVN)
     
    INSTANTIATE_CLASS (NeuronLayer)
     
    INSTANTIATE_CLASS (ParameterLayer)
     
    REGISTER_LAYER_CLASS (Parameter)
     
    INSTANTIATE_CLASS (PoolingLayer)
     
    INSTANTIATE_CLASS (PowerLayer)
     
    REGISTER_LAYER_CLASS (Power)
     
    INSTANTIATE_CLASS (PReLULayer)
     
    REGISTER_LAYER_CLASS (PReLU)
     
    INSTANTIATE_CLASS (RecurrentLayer)
     
    INSTANTIATE_CLASS (ReductionLayer)
     
    REGISTER_LAYER_CLASS (Reduction)
     
    INSTANTIATE_CLASS (ReLULayer)
     
    INSTANTIATE_CLASS (ReshapeLayer)
     
    REGISTER_LAYER_CLASS (Reshape)
     
    INSTANTIATE_CLASS (RNNLayer)
     
    REGISTER_LAYER_CLASS (RNN)
     
    INSTANTIATE_CLASS (ScaleLayer)
     
    REGISTER_LAYER_CLASS (Scale)
     
    INSTANTIATE_CLASS (SigmoidCrossEntropyLossLayer)
     
    REGISTER_LAYER_CLASS (SigmoidCrossEntropyLoss)
     
    INSTANTIATE_CLASS (SigmoidLayer)
     
    INSTANTIATE_CLASS (SilenceLayer)
     
    REGISTER_LAYER_CLASS (Silence)
     
    INSTANTIATE_CLASS (SliceLayer)
     
    REGISTER_LAYER_CLASS (Slice)
     
    INSTANTIATE_CLASS (SoftmaxLayer)
     
    INSTANTIATE_CLASS (SoftmaxWithLossLayer)
     
    REGISTER_LAYER_CLASS (SoftmaxWithLoss)
     
    INSTANTIATE_CLASS (SplitLayer)
     
    REGISTER_LAYER_CLASS (Split)
     
    INSTANTIATE_CLASS (SPPLayer)
     
    REGISTER_LAYER_CLASS (SPP)
     
    INSTANTIATE_CLASS (TanHLayer)
     
    INSTANTIATE_CLASS (ThresholdLayer)
     
    REGISTER_LAYER_CLASS (Threshold)
     
    INSTANTIATE_CLASS (TileLayer)
     
    REGISTER_LAYER_CLASS (Tile)
     
    INSTANTIATE_CLASS (Net)
     
    INSTANTIATE_CLASS (Params)
     
    INSTANTIATE_CLASS (GPUParams)
     
    INSTANTIATE_CLASS (P2PSync)
     
    INSTANTIATE_CLASS (Solver)
     
    +template<typename Dtype >
    void adadelta_update_gpu (int N, Dtype *g, Dtype *h, Dtype *h2, Dtype momentum, Dtype delta, Dtype local_rate)
     
    INSTANTIATE_CLASS (AdaDeltaSolver)
     
    REGISTER_SOLVER_CLASS (AdaDelta)
     
    +template<typename Dtype >
    void adagrad_update_gpu (int N, Dtype *g, Dtype *h, Dtype delta, Dtype local_rate)
     
    INSTANTIATE_CLASS (AdaGradSolver)
     
    REGISTER_SOLVER_CLASS (AdaGrad)
     
    +template<typename Dtype >
    void adam_update_gpu (int N, Dtype *g, Dtype *m, Dtype *v, Dtype beta1, Dtype beta2, Dtype eps_hat, Dtype corrected_local_rate)
     
    INSTANTIATE_CLASS (AdamSolver)
     
    REGISTER_SOLVER_CLASS (Adam)
     
    +template<typename Dtype >
    void nesterov_update_gpu (int N, Dtype *g, Dtype *h, Dtype momentum, Dtype local_rate)
     
    INSTANTIATE_CLASS (NesterovSolver)
     
    REGISTER_SOLVER_CLASS (Nesterov)
     
    +template<typename Dtype >
    void rmsprop_update_gpu (int N, Dtype *g, Dtype *h, Dtype rms_decay, Dtype delta, Dtype local_rate)
     
    INSTANTIATE_CLASS (RMSPropSolver)
     
    REGISTER_SOLVER_CLASS (RMSProp)
     
    +template<typename Dtype >
    void sgd_update_gpu (int N, Dtype *g, Dtype *h, Dtype momentum, Dtype local_rate)
     
    INSTANTIATE_CLASS (SGDSolver)
     
    REGISTER_SOLVER_CLASS (SGD)
     
    +template<>
    void hdf5_load_nd_dataset< float > (hid_t file_id, const char *dataset_name_, int min_dim, int max_dim, Blob< float > *blob)
     
    +template<>
    void hdf5_load_nd_dataset< double > (hid_t file_id, const char *dataset_name_, int min_dim, int max_dim, Blob< double > *blob)
     
    +template<>
    void hdf5_save_nd_dataset< float > (const hid_t file_id, const string &dataset_name, const Blob< float > &blob, bool write_diff)
     
    +template<>
    void hdf5_save_nd_dataset< double > (hid_t file_id, const string &dataset_name, const Blob< double > &blob, bool write_diff)
     
    +bool is_a_ge_zero_and_a_lt_b (int a, int b)
     
    +template void im2col_cpu< float > (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, const int dilation_h, const int dilation_w, float *data_col)
     
    +template void im2col_cpu< double > (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, const int dilation_h, const int dilation_w, double *data_col)
     
    +template<typename Dtype >
    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, const int *dilation, Dtype *data_output)
     
    +template void im2col_nd_cpu< float > (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, const int *dilation, float *data_col)
     
    +template void im2col_nd_cpu< double > (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, const int *dilation, double *data_col)
     
    +template void col2im_cpu< float > (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, const int dilation_h, const int dilation_w, float *data_im)
     
    +template void col2im_cpu< double > (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, const int dilation_h, const int dilation_w, double *data_im)
     
    +template void col2im_nd_cpu< float > (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, const int *dilation, float *data_im)
     
    +template void col2im_nd_cpu< double > (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, const int *dilation, double *data_im)
     
    +template<>
    void caffe_cpu_gemm< float > (const CBLAS_TRANSPOSE TransA, const CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const float alpha, const float *A, const float *B, const float beta, float *C)
     
    +template<>
    void caffe_cpu_gemm< double > (const CBLAS_TRANSPOSE TransA, const CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const double alpha, const double *A, const double *B, const double beta, double *C)
     
    +template<>
    void caffe_cpu_gemv< float > (const CBLAS_TRANSPOSE TransA, const int M, const int N, const float alpha, const float *A, const float *x, const float beta, float *y)
     
    +template<>
    void caffe_cpu_gemv< double > (const CBLAS_TRANSPOSE TransA, const int M, const int N, const double alpha, const double *A, const double *x, const double beta, double *y)
     
    +template<>
    void caffe_axpy< float > (const int N, const float alpha, const float *X, float *Y)
     
    +template<>
    void caffe_axpy< double > (const int N, const double alpha, const double *X, double *Y)
     
    +template void caffe_set< int > (const int N, const int alpha, int *Y)
     
    +template void caffe_set< float > (const int N, const float alpha, float *Y)
     
    +template void caffe_set< double > (const int N, const double alpha, double *Y)
     
    +template<>
    void caffe_add_scalar (const int N, const float alpha, float *Y)
     
    +template<>
    void caffe_add_scalar (const int N, const double alpha, double *Y)
     
    +template void caffe_copy< int > (const int N, const int *X, int *Y)
     
    +template void caffe_copy< unsigned int > (const int N, const unsigned int *X, unsigned int *Y)
     
    +template void caffe_copy< float > (const int N, const float *X, float *Y)
     
    +template void caffe_copy< double > (const int N, const double *X, double *Y)
     
    +template<>
    void caffe_scal< float > (const int N, const float alpha, float *X)
     
    +template<>
    void caffe_scal< double > (const int N, const double alpha, double *X)
     
    +template<>
    void caffe_cpu_axpby< float > (const int N, const float alpha, const float *X, const float beta, float *Y)
     
    +template<>
    void caffe_cpu_axpby< double > (const int N, const double alpha, const double *X, const double beta, double *Y)
     
    +template<>
    void caffe_add< float > (const int n, const float *a, const float *b, float *y)
     
    +template<>
    void caffe_add< double > (const int n, const double *a, const double *b, double *y)
     
    +template<>
    void caffe_sub< float > (const int n, const float *a, const float *b, float *y)
     
    +template<>
    void caffe_sub< double > (const int n, const double *a, const double *b, double *y)
     
    +template<>
    void caffe_mul< float > (const int n, const float *a, const float *b, float *y)
     
    +template<>
    void caffe_mul< double > (const int n, const double *a, const double *b, double *y)
     
    +template<>
    void caffe_div< float > (const int n, const float *a, const float *b, float *y)
     
    +template<>
    void caffe_div< double > (const int n, const double *a, const double *b, double *y)
     
    +template<>
    void caffe_powx< float > (const int n, const float *a, const float b, float *y)
     
    +template<>
    void caffe_powx< double > (const int n, const double *a, const double b, double *y)
     
    +template<>
    void caffe_sqr< float > (const int n, const float *a, float *y)
     
    +template<>
    void caffe_sqr< double > (const int n, const double *a, double *y)
     
    +template<>
    void caffe_exp< float > (const int n, const float *a, float *y)
     
    +template<>
    void caffe_exp< double > (const int n, const double *a, double *y)
     
    +template<>
    void caffe_log< float > (const int n, const float *a, float *y)
     
    +template<>
    void caffe_log< double > (const int n, const double *a, double *y)
     
    +template<>
    void caffe_abs< float > (const int n, const float *a, float *y)
     
    +template<>
    void caffe_abs< double > (const int n, const double *a, double *y)
     
    +template float caffe_nextafter (const float b)
     
    +template double caffe_nextafter (const double b)
     
    +template void caffe_rng_uniform< float > (const int n, const float a, const float b, float *r)
     
    +template void caffe_rng_uniform< double > (const int n, const double a, const double b, double *r)
     
    +template void caffe_rng_gaussian< float > (const int n, const float mu, const float sigma, float *r)
     
    +template void caffe_rng_gaussian< double > (const int n, const double mu, const double sigma, double *r)
     
    +template void caffe_rng_bernoulli< double > (const int n, const double p, int *r)
     
    +template void caffe_rng_bernoulli< float > (const int n, const float p, int *r)
     
    +template void caffe_rng_bernoulli< double > (const int n, const double p, unsigned int *r)
     
    +template void caffe_rng_bernoulli< float > (const int n, const float p, unsigned int *r)
     
    +template<>
    float caffe_cpu_strided_dot< float > (const int n, const float *x, const int incx, const float *y, const int incy)
     
    +template<>
    double caffe_cpu_strided_dot< double > (const int n, const double *x, const int incx, const double *y, const int incy)
     
    +template float caffe_cpu_dot< float > (const int n, const float *x, const float *y)
     
    +template double caffe_cpu_dot< double > (const int n, const double *x, const double *y)
     
    +template<>
    float caffe_cpu_asum< float > (const int n, const float *x)
     
    +template<>
    double caffe_cpu_asum< double > (const int n, const double *x)
     
    +template<>
    void caffe_cpu_scale< float > (const int n, const float alpha, const float *x, float *y)
     
    +template<>
    void caffe_cpu_scale< double > (const int n, const double alpha, const double *x, double *y)
     
    + + + + + + + +

    +Variables

    +const float kLOG_THRESHOLD = 1e-20
     
    +const int CAFFE_CUDA_NUM_THREADS = 512
     
    +const float kBNLL_THRESHOLD = 50.
     
    +

    Detailed Description

    +

    A layer factory that allows one to register layers. During runtime, registered layers can be called by passing a LayerParameter protobuffer to the CreateLayer function:

    +

    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:

    +

    LayerRegistry<Dtype>::CreateLayer(param);

    +

    There are two ways to register a layer. Assuming that we have a layer like:

    +

    template <typename dtype>=""> class MyAwesomeLayer : public Layer<Dtype> { // your implementations };

    +

    and its type is its C++ class name, but without the "Layer" at the end ("MyAwesomeLayer" -> "MyAwesome").

    +

    If the layer is going to be created simply by its constructor, in your c++ file, add the following line:

    +

    REGISTER_LAYER_CLASS(MyAwesome);

    +

    Or, if the layer is going to be created by another creator function, in the format of:

    +

    template <typename dtype>=""> Layer<Dtype*> GetMyAwesomeLayer(const LayerParameter& param) { // your implementation }

    +

    (for example, when your layer has multiple backends, see GetConvolutionLayer for a use case), then you can register the creator function instead, like

    +

    REGISTER_LAYER_CREATOR(MyAwesome, GetMyAwesomeLayer)

    +

    Note that each layer type should only be registered once.

    +

    SolverRegistry<Dtype>::CreateSolver(param);

    +

    There are two ways to register a solver. Assuming that we have a solver like:

    +

    template <typename dtype>=""> class MyAwesomeSolver : public Solver<Dtype> { // 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 <typename dtype>=""> Solver<Dtype*> 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.

    +

    Function Documentation

    + +

    § GetFiller()

    + +
    +
    +
    +template<typename Dtype >
    + + + + + + + + +
    Filler<Dtype>* caffe::GetFiller (const FillerParameter & param)
    +
    + +

    Get a specific filler from the specification given in FillerParameter.

    +

    Ideally this would be replaced by a factory pattern, but we will leave it this way for now.

    + +
    +
    +
    + + + + diff --git a/doxygen/namespacecaffe_1_1SolverAction.html b/doxygen/namespacecaffe_1_1SolverAction.html new file mode 100644 index 00000000000..992ec98eaa0 --- /dev/null +++ b/doxygen/namespacecaffe_1_1SolverAction.html @@ -0,0 +1,93 @@ + + + + + + + +Caffe: caffe::SolverAction Namespace Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    caffe::SolverAction Namespace Reference
    +
    +
    + +

    Enumeration of actions that a client of the Solver may request by implementing the Solver's action request function, which a 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). +More...

    + + + + +

    +Enumerations

    enum  Enum { NONE = 0, +STOP = 1, +SNAPSHOT = 2 + }
     
    +

    Detailed Description

    +

    Enumeration of actions that a client of the Solver may request by implementing the Solver's action request function, which a 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).

    +
    + + + + diff --git a/doxygen/namespacemembers.html b/doxygen/namespacemembers.html new file mode 100644 index 00000000000..5926044ba80 --- /dev/null +++ b/doxygen/namespacemembers.html @@ -0,0 +1,77 @@ + + + + + + + +Caffe: Namespace Members + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
      +
    • ActionCallback +: caffe +
    • +
    • GetFiller() +: caffe +
    • +
    +
    + + + + diff --git a/doxygen/namespacemembers_func.html b/doxygen/namespacemembers_func.html new file mode 100644 index 00000000000..237733ea5d0 --- /dev/null +++ b/doxygen/namespacemembers_func.html @@ -0,0 +1,74 @@ + + + + + + + +Caffe: Namespace Members + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
      +
    • GetFiller() +: caffe +
    • +
    +
    + + + + diff --git a/doxygen/namespacemembers_type.html b/doxygen/namespacemembers_type.html new file mode 100644 index 00000000000..3820b419a99 --- /dev/null +++ b/doxygen/namespacemembers_type.html @@ -0,0 +1,74 @@ + + + + + + + +Caffe: Namespace Members + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
      +
    • ActionCallback +: caffe +
    • +
    +
    + + + + diff --git a/doxygen/namespaces.html b/doxygen/namespaces.html new file mode 100644 index 00000000000..8ff81fae45c --- /dev/null +++ b/doxygen/namespaces.html @@ -0,0 +1,80 @@ + + + + + + + +Caffe: Namespace List + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Namespace List
    +
    +
    +
    Here is a list of all documented namespaces with brief descriptions:
    +
    [detail level 12]
    + + + +
     Nboost
     NcaffeA layer factory that allows one to register layers. During runtime, registered layers can be called by passing a LayerParameter protobuffer to the CreateLayer function:
     NSolverActionEnumeration of actions that a client of the Solver may request by implementing the Solver's action request function, which a 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)
    +
    +
    + + + + diff --git a/doxygen/nav_f.png b/doxygen/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/doxygen/nav_g.png b/doxygen/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL + + + + + + +Caffe: include/caffe/net.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    net.hpp
    +
    +
    +
    1 #ifndef CAFFE_NET_HPP_
    2 #define CAFFE_NET_HPP_
    3 
    4 #include <map>
    5 #include <set>
    6 #include <string>
    7 #include <utility>
    8 #include <vector>
    9 
    10 #include "caffe/blob.hpp"
    11 #include "caffe/common.hpp"
    12 #include "caffe/layer.hpp"
    13 #include "caffe/proto/caffe.pb.h"
    14 
    15 namespace caffe {
    16 
    23 template <typename Dtype>
    24 class Net {
    25  public:
    26  explicit Net(const NetParameter& param, const Net* root_net = NULL);
    27  explicit Net(const string& param_file, Phase phase,
    28  const int level = 0, const vector<string>* stages = NULL,
    29  const Net* root_net = NULL);
    30  virtual ~Net() {}
    31 
    33  void Init(const NetParameter& param);
    34 
    39  const vector<Blob<Dtype>*>& Forward(Dtype* loss = NULL);
    41  const vector<Blob<Dtype>*>& ForwardPrefilled(Dtype* loss = NULL) {
    42  LOG_EVERY_N(WARNING, 1000) << "DEPRECATED: ForwardPrefilled() "
    43  << "will be removed in a future version. Use Forward().";
    44  return Forward(loss);
    45  }
    46 
    55  Dtype ForwardFromTo(int start, int end);
    56  Dtype ForwardFrom(int start);
    57  Dtype ForwardTo(int end);
    59  const vector<Blob<Dtype>*>& Forward(const vector<Blob<Dtype>* > & bottom,
    60  Dtype* loss = NULL);
    61 
    66  void ClearParamDiffs();
    67 
    73  void Backward();
    74  void BackwardFromTo(int start, int end);
    75  void BackwardFrom(int start);
    76  void BackwardTo(int end);
    77 
    84  void Reshape();
    85 
    86  Dtype ForwardBackward() {
    87  Dtype loss;
    88  Forward(&loss);
    89  Backward();
    90  return loss;
    91  }
    92 
    94  void Update();
    101  void ShareWeights();
    102 
    107  void ShareTrainedLayersWith(const Net* other);
    108  // For an already initialized net, CopyTrainedLayersFrom() copies the already
    109  // trained layers from another net parameter instance.
    114  void CopyTrainedLayersFrom(const NetParameter& param);
    115  void CopyTrainedLayersFrom(const string trained_filename);
    116  void CopyTrainedLayersFromBinaryProto(const string trained_filename);
    117  void CopyTrainedLayersFromHDF5(const string trained_filename);
    119  void ToProto(NetParameter* param, bool write_diff = false) const;
    121  void ToHDF5(const string& filename, bool write_diff = false) const;
    122 
    124  inline const string& name() const { return name_; }
    126  inline const vector<string>& layer_names() const { return layer_names_; }
    128  inline const vector<string>& blob_names() const { return blob_names_; }
    130  inline const vector<shared_ptr<Blob<Dtype> > >& blobs() const {
    131  return blobs_;
    132  }
    134  inline const vector<shared_ptr<Layer<Dtype> > >& layers() const {
    135  return layers_;
    136  }
    138  inline Phase phase() const { return phase_; }
    143  inline const vector<vector<Blob<Dtype>*> >& bottom_vecs() const {
    144  return bottom_vecs_;
    145  }
    150  inline const vector<vector<Blob<Dtype>*> >& top_vecs() const {
    151  return top_vecs_;
    152  }
    154  inline const vector<int> & top_ids(int i) const {
    155  CHECK_GE(i, 0) << "Invalid layer id";
    156  CHECK_LT(i, top_id_vecs_.size()) << "Invalid layer id";
    157  return top_id_vecs_[i];
    158  }
    160  inline const vector<int> & bottom_ids(int i) const {
    161  CHECK_GE(i, 0) << "Invalid layer id";
    162  CHECK_LT(i, bottom_id_vecs_.size()) << "Invalid layer id";
    163  return bottom_id_vecs_[i];
    164  }
    165  inline const vector<vector<bool> >& bottom_need_backward() const {
    166  return bottom_need_backward_;
    167  }
    168  inline const vector<Dtype>& blob_loss_weights() const {
    169  return blob_loss_weights_;
    170  }
    171  inline const vector<bool>& layer_need_backward() const {
    172  return layer_need_backward_;
    173  }
    175  inline const vector<shared_ptr<Blob<Dtype> > >& params() const {
    176  return params_;
    177  }
    178  inline const vector<Blob<Dtype>*>& learnable_params() const {
    179  return learnable_params_;
    180  }
    182  inline const vector<float>& params_lr() const { return params_lr_; }
    183  inline const vector<bool>& has_params_lr() const { return has_params_lr_; }
    185  inline const vector<float>& params_weight_decay() const {
    186  return params_weight_decay_;
    187  }
    188  inline const vector<bool>& has_params_decay() const {
    189  return has_params_decay_;
    190  }
    191  const map<string, int>& param_names_index() const {
    192  return param_names_index_;
    193  }
    194  inline const vector<int>& param_owners() const { return param_owners_; }
    195  inline const vector<string>& param_display_names() const {
    196  return param_display_names_;
    197  }
    199  inline int num_inputs() const { return net_input_blobs_.size(); }
    200  inline int num_outputs() const { return net_output_blobs_.size(); }
    201  inline const vector<Blob<Dtype>*>& input_blobs() const {
    202  return net_input_blobs_;
    203  }
    204  inline const vector<Blob<Dtype>*>& output_blobs() const {
    205  return net_output_blobs_;
    206  }
    207  inline const vector<int>& input_blob_indices() const {
    209  }
    210  inline const vector<int>& output_blob_indices() const {
    211  return net_output_blob_indices_;
    212  }
    213  bool has_blob(const string& blob_name) const;
    214  const shared_ptr<Blob<Dtype> > blob_by_name(const string& blob_name) const;
    215  bool has_layer(const string& layer_name) const;
    216  const shared_ptr<Layer<Dtype> > layer_by_name(const string& layer_name) const;
    217 
    218  void set_debug_info(const bool value) { debug_info_ = value; }
    219 
    220  // Helpers for Init.
    225  static void FilterNet(const NetParameter& param,
    226  NetParameter* param_filtered);
    228  static bool StateMeetsRule(const NetState& state, const NetStateRule& rule,
    229  const string& layer_name);
    230 
    231  protected:
    232  // Helpers for Init.
    234  void AppendTop(const NetParameter& param, const int layer_id,
    235  const int top_id, set<string>* available_blobs,
    236  map<string, int>* blob_name_to_idx);
    238  int AppendBottom(const NetParameter& param, const int layer_id,
    239  const int bottom_id, set<string>* available_blobs,
    240  map<string, int>* blob_name_to_idx);
    242  void AppendParam(const NetParameter& param, const int layer_id,
    243  const int param_id);
    244 
    246  void ForwardDebugInfo(const int layer_id);
    248  void BackwardDebugInfo(const int layer_id);
    250  void UpdateDebugInfo(const int param_id);
    251 
    253  string name_;
    255  Phase phase_;
    257  vector<shared_ptr<Layer<Dtype> > > layers_;
    258  vector<string> layer_names_;
    259  map<string, int> layer_names_index_;
    260  vector<bool> layer_need_backward_;
    262  vector<shared_ptr<Blob<Dtype> > > blobs_;
    263  vector<string> blob_names_;
    264  map<string, int> blob_names_index_;
    265  vector<bool> blob_need_backward_;
    269  vector<vector<Blob<Dtype>*> > bottom_vecs_;
    270  vector<vector<int> > bottom_id_vecs_;
    271  vector<vector<bool> > bottom_need_backward_;
    273  vector<vector<Blob<Dtype>*> > top_vecs_;
    274  vector<vector<int> > top_id_vecs_;
    277  vector<Dtype> blob_loss_weights_;
    278  vector<vector<int> > param_id_vecs_;
    279  vector<int> param_owners_;
    280  vector<string> param_display_names_;
    281  vector<pair<int, int> > param_layer_indices_;
    282  map<string, int> param_names_index_;
    285  vector<int> net_output_blob_indices_;
    286  vector<Blob<Dtype>*> net_input_blobs_;
    287  vector<Blob<Dtype>*> net_output_blobs_;
    289  vector<shared_ptr<Blob<Dtype> > > params_;
    290  vector<Blob<Dtype>*> learnable_params_;
    298  vector<int> learnable_param_ids_;
    300  vector<float> params_lr_;
    301  vector<bool> has_params_lr_;
    303  vector<float> params_weight_decay_;
    304  vector<bool> has_params_decay_;
    306  size_t memory_used_;
    310  const Net* const root_net_;
    311  DISABLE_COPY_AND_ASSIGN(Net);
    312 };
    313 
    314 
    315 } // namespace caffe
    316 
    317 #endif // CAFFE_NET_HPP_
    void AppendTop(const NetParameter &param, const int layer_id, const int top_id, set< string > *available_blobs, map< string, int > *blob_name_to_idx)
    Append a new top blob to the net.
    Definition: net.cpp:384
    +
    const vector< Blob< Dtype > * > & ForwardPrefilled(Dtype *loss=NULL)
    DEPRECATED; use Forward() instead.
    Definition: net.hpp:41
    +
    vector< shared_ptr< Layer< Dtype > > > layers_
    Individual layers in the net.
    Definition: net.hpp:257
    +
    int num_inputs() const
    Input and output blob numbers.
    Definition: net.hpp:199
    +
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    const vector< string > & blob_names() const
    returns the blob names
    Definition: net.hpp:128
    +
    vector< Dtype > blob_loss_weights_
    Definition: net.hpp:277
    +
    void AppendParam(const NetParameter &param, const int layer_id, const int param_id)
    Append a new parameter blob to the net.
    Definition: net.cpp:449
    +
    void UpdateDebugInfo(const int param_id)
    Helper for displaying debug info in Update.
    Definition: net.cpp:656
    +
    void Reshape()
    Reshape all layers from bottom to top.
    Definition: net.cpp:743
    +
    Dtype ForwardFromTo(int start, int end)
    Definition: net.cpp:544
    +
    const vector< shared_ptr< Layer< Dtype > > > & layers() const
    returns the layers
    Definition: net.hpp:134
    +
    size_t memory_used_
    The bytes of memory used by this net.
    Definition: net.hpp:306
    +
    void Update()
    Updates the network weights based on the diff values computed.
    Definition: net.cpp:925
    +
    bool debug_info_
    Whether to compute and display debug info for the net.
    Definition: net.hpp:308
    +
    const vector< shared_ptr< Blob< Dtype > > > & blobs() const
    returns the blobs
    Definition: net.hpp:130
    +
    vector< vector< Blob< Dtype > * > > top_vecs_
    top_vecs stores the vectors containing the output for each layer
    Definition: net.hpp:273
    +
    const string & name() const
    returns the network name.
    Definition: net.hpp:124
    +
    void ClearParamDiffs()
    Zeroes out the diffs of all net parameters. Should be run before Backward.
    Definition: net.cpp:932
    +
    void BackwardDebugInfo(const int layer_id)
    Helper for displaying debug info in Backward.
    Definition: net.cpp:629
    +
    void ShareWeights()
    Shares weight data of owner blobs with shared blobs.
    Definition: net.cpp:953
    +
    void Init(const NetParameter &param)
    Initialize a network with a NetParameter.
    Definition: net.cpp:49
    +
    void Backward()
    Definition: net.cpp:724
    +
    const vector< vector< Blob< Dtype > * > > & top_vecs() const
    returns the top vecs for each layer – usually you won&#39;t need this unless you do per-layer checks suc...
    Definition: net.hpp:150
    +
    void ShareTrainedLayersWith(const Net *other)
    For an already initialized net, implicitly copies (i.e., using no additional memory) the pre-trained ...
    Definition: net.cpp:682
    +
    int AppendBottom(const NetParameter &param, const int layer_id, const int bottom_id, set< string > *available_blobs, map< string, int > *blob_name_to_idx)
    Append a new bottom blob to the net.
    Definition: net.cpp:424
    +
    const vector< float > & params_weight_decay() const
    returns the learnable parameter decay multipliers
    Definition: net.hpp:185
    +
    vector< float > params_weight_decay_
    the weight decay multipliers for learnable_params_
    Definition: net.hpp:303
    +
    static void FilterNet(const NetParameter &param, NetParameter *param_filtered)
    Remove layers that the user specified should be excluded given the current phase, level...
    Definition: net.cpp:287
    +
    const vector< int > & top_ids(int i) const
    returns the ids of the top blobs of layer i
    Definition: net.hpp:154
    +
    const vector< int > & bottom_ids(int i) const
    returns the ids of the bottom blobs of layer i
    Definition: net.hpp:160
    +
    void ToProto(NetParameter *param, bool write_diff=false) const
    Writes the net to a proto.
    Definition: net.cpp:856
    +
    void ToHDF5(const string &filename, bool write_diff=false) const
    Writes the net to an HDF5 file.
    Definition: net.cpp:868
    +
    vector< int > learnable_param_ids_
    Definition: net.hpp:298
    +
    vector< shared_ptr< Blob< Dtype > > > params_
    The parameters in the network.
    Definition: net.hpp:289
    +
    Phase phase_
    The phase: TRAIN or TEST.
    Definition: net.hpp:255
    +
    void CopyTrainedLayersFrom(const NetParameter &param)
    For an already initialized net, copies the pre-trained layers from another Net.
    Definition: net.cpp:750
    +
    static bool StateMeetsRule(const NetState &state, const NetStateRule &rule, const string &layer_name)
    return whether NetState state meets NetStateRule rule
    Definition: net.cpp:317
    +
    const vector< Blob< Dtype > * > & Forward(Dtype *loss=NULL)
    Run Forward and return the result.
    Definition: net.cpp:568
    +
    const vector< shared_ptr< Blob< Dtype > > > & params() const
    returns the parameters
    Definition: net.hpp:175
    +
    void ForwardDebugInfo(const int layer_id)
    Helper for displaying debug info in Forward.
    Definition: net.cpp:603
    +
    vector< float > params_lr_
    the learning rate multipliers for learnable_params_
    Definition: net.hpp:300
    +
    const Net *const root_net_
    The root net that actually holds the shared layers in data parallelism.
    Definition: net.hpp:310
    +
    vector< int > net_input_blob_indices_
    blob indices for the input and the output of the net
    Definition: net.hpp:284
    +
    const vector< string > & layer_names() const
    returns the layer names
    Definition: net.hpp:126
    +
    const vector< float > & params_lr() const
    returns the learnable parameter learning rate multipliers
    Definition: net.hpp:182
    +
    Phase phase() const
    returns the phase: TRAIN or TEST
    Definition: net.hpp:138
    +
    Connects Layers together into a directed acyclic graph (DAG) specified by a NetParameter.
    Definition: net.hpp:24
    +
    vector< shared_ptr< Blob< Dtype > > > blobs_
    the blobs storing intermediate results between the layer.
    Definition: net.hpp:262
    +
    vector< vector< Blob< Dtype > * > > bottom_vecs_
    Definition: net.hpp:269
    +
    const vector< vector< Blob< Dtype > * > > & bottom_vecs() const
    returns the bottom vecs for each layer – usually you won&#39;t need this unless you do per-layer checks ...
    Definition: net.hpp:143
    +
    string name_
    The network name.
    Definition: net.hpp:253
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    +
    + + + + diff --git a/doxygen/neuron__layer_8hpp_source.html b/doxygen/neuron__layer_8hpp_source.html new file mode 100644 index 00000000000..fe276f33377 --- /dev/null +++ b/doxygen/neuron__layer_8hpp_source.html @@ -0,0 +1,84 @@ + + + + + + + +Caffe: include/caffe/layers/neuron_layer.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    neuron_layer.hpp
    +
    +
    +
    1 #ifndef CAFFE_NEURON_LAYER_HPP_
    2 #define CAFFE_NEURON_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/layer.hpp"
    8 #include "caffe/proto/caffe.pb.h"
    9 
    10 namespace caffe {
    11 
    18 template <typename Dtype>
    19 class NeuronLayer : public Layer<Dtype> {
    20  public:
    21  explicit NeuronLayer(const LayerParameter& param)
    22  : Layer<Dtype>(param) {}
    23  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    24  const vector<Blob<Dtype>*>& top);
    25 
    26  virtual inline int ExactNumBottomBlobs() const { return 1; }
    27  virtual inline int ExactNumTopBlobs() const { return 1; }
    28 };
    29 
    30 } // namespace caffe
    31 
    32 #endif // CAFFE_NEURON_LAYER_HPP_
    An interface for the units of computation which can be composed into a Net.
    Definition: layer.hpp:33
    +
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: neuron_layer.cpp:8
    +
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: neuron_layer.hpp:27
    +
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: neuron_layer.hpp:26
    +
    An interface for layers that take one blob as input ( ) and produce one equally-sized blob as output ...
    Definition: neuron_layer.hpp:19
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    +
    + + + + diff --git a/doxygen/neuron__layers_8hpp_source.html b/doxygen/neuron__layers_8hpp_source.html new file mode 100644 index 00000000000..0b9c643b660 --- /dev/null +++ b/doxygen/neuron__layers_8hpp_source.html @@ -0,0 +1,569 @@ + + + + + + +Caffe: include/caffe/neuron_layers.hpp Source File + + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    neuron_layers.hpp
    +
    +
    +
    1 #ifndef CAFFE_NEURON_LAYERS_HPP_
    +
    2 #define CAFFE_NEURON_LAYERS_HPP_
    +
    3 
    +
    4 #include <string>
    +
    5 #include <utility>
    +
    6 #include <vector>
    +
    7 
    +
    8 #include "caffe/blob.hpp"
    +
    9 #include "caffe/common.hpp"
    +
    10 #include "caffe/layer.hpp"
    +
    11 #include "caffe/proto/caffe.pb.h"
    +
    12 
    +
    13 #define HDF5_DATA_DATASET_NAME "data"
    +
    14 #define HDF5_DATA_LABEL_NAME "label"
    +
    15 
    +
    16 namespace caffe {
    +
    17 
    +
    24 template <typename Dtype>
    +
    25 class NeuronLayer : public Layer<Dtype> {
    +
    26  public:
    +
    27  explicit NeuronLayer(const LayerParameter& param)
    +
    28  : Layer<Dtype>(param) {}
    +
    29  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    +
    30  const vector<Blob<Dtype>*>& top);
    +
    31 
    +
    32  virtual inline int ExactNumBottomBlobs() const { return 1; }
    +
    33  virtual inline int ExactNumTopBlobs() const { return 1; }
    +
    34 };
    +
    35 
    +
    46 template <typename Dtype>
    +
    47 class AbsValLayer : public NeuronLayer<Dtype> {
    +
    48  public:
    +
    49  explicit AbsValLayer(const LayerParameter& param)
    +
    50  : NeuronLayer<Dtype>(param) {}
    +
    51  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    +
    52  const vector<Blob<Dtype>*>& top);
    +
    53 
    +
    54  virtual inline const char* type() const { return "AbsVal"; }
    +
    55  virtual inline int ExactNumBottomBlobs() const { return 1; }
    +
    56  virtual inline int ExactNumTopBlobs() const { return 1; }
    +
    57 
    +
    58  protected:
    +
    60  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    +
    61  const vector<Blob<Dtype>*>& top);
    +
    62  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    +
    63  const vector<Blob<Dtype>*>& top);
    +
    64 
    +
    82  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    +
    83  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    84  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    +
    85  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    86 };
    +
    87 
    +
    105 template <typename Dtype>
    +
    106 class BNLLLayer : public NeuronLayer<Dtype> {
    +
    107  public:
    +
    108  explicit BNLLLayer(const LayerParameter& param)
    +
    109  : NeuronLayer<Dtype>(param) {}
    +
    110 
    +
    111  virtual inline const char* type() const { return "BNLL"; }
    +
    112 
    +
    113  protected:
    +
    115  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    +
    116  const vector<Blob<Dtype>*>& top);
    +
    117  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    +
    118  const vector<Blob<Dtype>*>& top);
    +
    119 
    +
    136  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    +
    137  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    138  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    +
    139  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    140 };
    +
    141 
    +
    153 template <typename Dtype>
    +
    154 class DropoutLayer : public NeuronLayer<Dtype> {
    +
    155  public:
    +
    162  explicit DropoutLayer(const LayerParameter& param)
    +
    163  : NeuronLayer<Dtype>(param) {}
    +
    164  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    +
    165  const vector<Blob<Dtype>*>& top);
    +
    166  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    +
    167  const vector<Blob<Dtype>*>& top);
    +
    168 
    +
    169  virtual inline const char* type() const { return "Dropout"; }
    +
    170 
    +
    171  protected:
    +
    188  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    +
    189  const vector<Blob<Dtype>*>& top);
    +
    190  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    +
    191  const vector<Blob<Dtype>*>& top);
    +
    192  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    +
    193  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    194  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    +
    195  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    196 
    + +
    200  Dtype threshold_;
    +
    202  Dtype scale_;
    +
    203  unsigned int uint_thres_;
    +
    204 };
    +
    205 
    +
    211 template <typename Dtype>
    +
    212 class ExpLayer : public NeuronLayer<Dtype> {
    +
    213  public:
    +
    222  explicit ExpLayer(const LayerParameter& param)
    +
    223  : NeuronLayer<Dtype>(param) {}
    +
    224  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    +
    225  const vector<Blob<Dtype>*>& top);
    +
    226 
    +
    227  virtual inline const char* type() const { return "Exp"; }
    +
    228 
    +
    229  protected:
    +
    240  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    +
    241  const vector<Blob<Dtype>*>& top);
    +
    242  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    +
    243  const vector<Blob<Dtype>*>& top);
    +
    244 
    +
    262  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    +
    263  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    264  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    +
    265  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    266 
    +
    267  Dtype inner_scale_, outer_scale_;
    +
    268 };
    +
    269 
    +
    275 template <typename Dtype>
    +
    276 class LogLayer : public NeuronLayer<Dtype> {
    +
    277  public:
    +
    286  explicit LogLayer(const LayerParameter& param)
    +
    287  : NeuronLayer<Dtype>(param) {}
    +
    288  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    +
    289  const vector<Blob<Dtype>*>& top);
    +
    290 
    +
    291  virtual inline const char* type() const { return "Log"; }
    +
    292 
    +
    293  protected:
    +
    304  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    +
    305  const vector<Blob<Dtype>*>& top);
    +
    306  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    +
    307  const vector<Blob<Dtype>*>& top);
    +
    308 
    +
    326  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    +
    327  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    328  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    +
    329  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    330 
    +
    331  Dtype base_scale_;
    +
    332  Dtype input_scale_, input_shift_;
    +
    333  Dtype backward_num_scale_;
    +
    334 };
    +
    335 
    +
    341 template <typename Dtype>
    +
    342 class PowerLayer : public NeuronLayer<Dtype> {
    +
    343  public:
    +
    351  explicit PowerLayer(const LayerParameter& param)
    +
    352  : NeuronLayer<Dtype>(param) {}
    +
    353  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    +
    354  const vector<Blob<Dtype>*>& top);
    +
    355 
    +
    356  virtual inline const char* type() const { return "Power"; }
    +
    357 
    +
    358  protected:
    +
    369  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    +
    370  const vector<Blob<Dtype>*>& top);
    +
    371  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    +
    372  const vector<Blob<Dtype>*>& top);
    +
    373 
    +
    394  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    +
    395  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    396  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    +
    397  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    398 
    +
    400  Dtype power_;
    +
    402  Dtype scale_;
    +
    404  Dtype shift_;
    +
    406  Dtype diff_scale_;
    +
    407 };
    +
    408 
    +
    413 template <typename Dtype>
    +
    414 class ReLULayer : public NeuronLayer<Dtype> {
    +
    415  public:
    +
    422  explicit ReLULayer(const LayerParameter& param)
    +
    423  : NeuronLayer<Dtype>(param) {}
    +
    424 
    +
    425  virtual inline const char* type() const { return "ReLU"; }
    +
    426 
    +
    427  protected:
    +
    439  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    +
    440  const vector<Blob<Dtype>*>& top);
    +
    441  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    +
    442  const vector<Blob<Dtype>*>& top);
    +
    443 
    +
    472  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    +
    473  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    474  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    +
    475  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    476 };
    +
    477 
    +
    478 #ifdef USE_CUDNN
    +
    479 
    +
    482 template <typename Dtype>
    +
    483 class CuDNNReLULayer : public ReLULayer<Dtype> {
    +
    484  public:
    +
    485  explicit CuDNNReLULayer(const LayerParameter& param)
    +
    486  : ReLULayer<Dtype>(param), handles_setup_(false) {}
    +
    487  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    +
    488  const vector<Blob<Dtype>*>& top);
    +
    489  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    +
    490  const vector<Blob<Dtype>*>& top);
    +
    491  virtual ~CuDNNReLULayer();
    +
    492 
    +
    493  protected:
    +
    494  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    +
    495  const vector<Blob<Dtype>*>& top);
    +
    496  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    +
    497  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    498 
    +
    499  bool handles_setup_;
    +
    500  cudnnHandle_t handle_;
    +
    501  cudnnTensorDescriptor_t bottom_desc_;
    +
    502  cudnnTensorDescriptor_t top_desc_;
    +
    503 };
    +
    504 #endif
    +
    505 
    +
    514 template <typename Dtype>
    +
    515 class SigmoidLayer : public NeuronLayer<Dtype> {
    +
    516  public:
    +
    517  explicit SigmoidLayer(const LayerParameter& param)
    +
    518  : NeuronLayer<Dtype>(param) {}
    +
    519 
    +
    520  virtual inline const char* type() const { return "Sigmoid"; }
    +
    521 
    +
    522  protected:
    +
    533  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    +
    534  const vector<Blob<Dtype>*>& top);
    +
    535  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    +
    536  const vector<Blob<Dtype>*>& top);
    +
    537 
    +
    555  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    +
    556  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    557  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    +
    558  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    559 };
    +
    560 
    +
    561 #ifdef USE_CUDNN
    +
    562 
    +
    565 template <typename Dtype>
    +
    566 class CuDNNSigmoidLayer : public SigmoidLayer<Dtype> {
    +
    567  public:
    +
    568  explicit CuDNNSigmoidLayer(const LayerParameter& param)
    +
    569  : SigmoidLayer<Dtype>(param), handles_setup_(false) {}
    +
    570  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    +
    571  const vector<Blob<Dtype>*>& top);
    +
    572  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    +
    573  const vector<Blob<Dtype>*>& top);
    +
    574  virtual ~CuDNNSigmoidLayer();
    +
    575 
    +
    576  protected:
    +
    577  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    +
    578  const vector<Blob<Dtype>*>& top);
    +
    579  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    +
    580  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    581 
    +
    582  bool handles_setup_;
    +
    583  cudnnHandle_t handle_;
    +
    584  cudnnTensorDescriptor_t bottom_desc_;
    +
    585  cudnnTensorDescriptor_t top_desc_;
    +
    586 };
    +
    587 #endif
    +
    588 
    +
    597 template <typename Dtype>
    +
    598 class TanHLayer : public NeuronLayer<Dtype> {
    +
    599  public:
    +
    600  explicit TanHLayer(const LayerParameter& param)
    +
    601  : NeuronLayer<Dtype>(param) {}
    +
    602 
    +
    603  virtual inline const char* type() const { return "TanH"; }
    +
    604 
    +
    605  protected:
    +
    616  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    +
    617  const vector<Blob<Dtype>*>& top);
    +
    618  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    +
    619  const vector<Blob<Dtype>*>& top);
    +
    620 
    +
    640  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    +
    641  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    642  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    +
    643  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    644 };
    +
    645 
    +
    646 #ifdef USE_CUDNN
    +
    647 
    +
    650 template <typename Dtype>
    +
    651 class CuDNNTanHLayer : public TanHLayer<Dtype> {
    +
    652  public:
    +
    653  explicit CuDNNTanHLayer(const LayerParameter& param)
    +
    654  : TanHLayer<Dtype>(param), handles_setup_(false) {}
    +
    655  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    +
    656  const vector<Blob<Dtype>*>& top);
    +
    657  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    +
    658  const vector<Blob<Dtype>*>& top);
    +
    659  virtual ~CuDNNTanHLayer();
    +
    660 
    +
    661  protected:
    +
    662  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    +
    663  const vector<Blob<Dtype>*>& top);
    +
    664  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    +
    665  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    666 
    +
    667  bool handles_setup_;
    +
    668  cudnnHandle_t handle_;
    +
    669  cudnnTensorDescriptor_t bottom_desc_;
    +
    670  cudnnTensorDescriptor_t top_desc_;
    +
    671 };
    +
    672 #endif
    +
    673 
    +
    678 template <typename Dtype>
    +
    679 class ThresholdLayer : public NeuronLayer<Dtype> {
    +
    680  public:
    +
    687  explicit ThresholdLayer(const LayerParameter& param)
    +
    688  : NeuronLayer<Dtype>(param) {}
    +
    689  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    +
    690  const vector<Blob<Dtype>*>& top);
    +
    691 
    +
    692  virtual inline const char* type() const { return "Threshold"; }
    +
    693 
    +
    694  protected:
    +
    709  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    +
    710  const vector<Blob<Dtype>*>& top);
    +
    711  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    +
    712  const vector<Blob<Dtype>*>& top);
    +
    714  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    +
    715  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {
    +
    716  NOT_IMPLEMENTED;
    +
    717  }
    +
    718 
    +
    719  Dtype threshold_;
    +
    720 };
    +
    721 
    +
    730 template <typename Dtype>
    +
    731 class PReLULayer : public NeuronLayer<Dtype> {
    +
    732  public:
    +
    741  explicit PReLULayer(const LayerParameter& param)
    +
    742  : NeuronLayer<Dtype>(param) {}
    +
    743 
    +
    744  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    +
    745  const vector<Blob<Dtype>*>& top);
    +
    746 
    +
    747  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    +
    748  const vector<Blob<Dtype>*>& top);
    +
    749 
    +
    750  virtual inline const char* type() const { return "PReLU"; }
    +
    751 
    +
    752  protected:
    +
    763  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    +
    764  const vector<Blob<Dtype>*>& top);
    +
    765  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    +
    766  const vector<Blob<Dtype>*>& top);
    +
    767 
    +
    796  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    +
    797  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    798  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    +
    799  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    800 
    +
    801  bool channel_shared_;
    +
    802  Blob<Dtype> multiplier_; // dot multiplier for backward computation of params
    +
    803  Blob<Dtype> backward_buff_; // temporary buffer for backward computation
    +
    804  Blob<Dtype> bottom_memory_; // memory for in-place computation
    +
    805 };
    +
    806 
    +
    807 } // namespace caffe
    +
    808 
    +
    809 #endif // CAFFE_NEURON_LAYERS_HPP_
    +
    Tests whether the input exceeds a threshold: outputs 1 for inputs above threshold; 0 otherwise...
    Definition: neuron_layers.hpp:679
    +
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: neuron_layers.hpp:56
    +
    Blob< unsigned int > rand_vec_
    when divided by UINT_MAX, the randomly generated values
    Definition: neuron_layers.hpp:198
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Definition: sigmoid_layer.cpp:16
    +
    ThresholdLayer(const LayerParameter &param)
    Definition: neuron_layers.hpp:687
    +
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: neuron_layers.hpp:32
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    An interface for the units of computation which can be composed into a Net.
    Definition: layer.hpp:33
    +
    Dtype scale_
    the scale for undropped inputs at train time
    Definition: neuron_layers.hpp:202
    +
    A layer factory that allows one to register layers. During runtime, registered layers could be called...
    Definition: blob.hpp:15
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Definition: exp_layer.cpp:32
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: neuron_layers.hpp:520
    +
    Sigmoid function non-linearity , a classic choice in neural networks.
    Definition: neuron_layers.hpp:515
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Definition: threshold_layer.cpp:17
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Computes the error gradient w.r.t. the BNLL inputs.
    Definition: bnll_layer.cpp:25
    +
    virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: power_layer.cpp:11
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: neuron_layer.cpp:9
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Definition: tanh_layer.cpp:13
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Computes the error gradient w.r.t. the absolute value inputs.
    Definition: absval_layer.cpp:26
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    Computes .
    Definition: neuron_layers.hpp:47
    +
    Computes , as specified by the scale , shift , and base .
    Definition: neuron_layers.hpp:212
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: neuron_layers.hpp:603
    +
    Dtype power_
    from layer_param_.power_param()
    Definition: neuron_layers.hpp:400
    +
    Dtype diff_scale_
    Result of .
    Definition: neuron_layers.hpp:406
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: neuron_layers.hpp:291
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: neuron_layers.hpp:356
    +
    DropoutLayer(const LayerParameter &param)
    Definition: neuron_layers.hpp:162
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: log_layer.cpp:11
    +
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: prelu_layer.cpp:54
    +
    Rectified Linear Unit non-linearity . The simple max is fast to compute, and the function does not sa...
    Definition: neuron_layers.hpp:414
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Not implemented (non-differentiable function)
    Definition: neuron_layers.hpp:714
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    Computes , as specified by the scale , shift , and power .
    Definition: neuron_layers.hpp:342
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    ReLULayer(const LayerParameter &param)
    Definition: neuron_layers.hpp:422
    +
    virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: dropout_layer.cpp:14
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Computes the error gradient w.r.t. the sigmoid inputs.
    Definition: sigmoid_layer.cpp:27
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: prelu_layer.cpp:11
    +
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: neuron_layers.hpp:33
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: neuron_layers.hpp:750
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Computes the error gradient w.r.t. the ReLU inputs.
    Definition: relu_layer.cpp:23
    +
    Dtype shift_
    from layer_param_.power_param()
    Definition: neuron_layers.hpp:404
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Computes the error gradient w.r.t. the power inputs.
    Definition: power_layer.cpp:46
    +
    Computes if ; otherwise.
    Definition: neuron_layers.hpp:106
    +
    Computes , as specified by the scale , shift , and base .
    Definition: neuron_layers.hpp:276
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Definition: dropout_layer.cpp:34
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: neuron_layers.hpp:425
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: neuron_layers.hpp:169
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Computes the error gradient w.r.t. the PReLU inputs.
    Definition: prelu_layer.cpp:91
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Computes the error gradient w.r.t. the exp inputs.
    Definition: exp_layer.cpp:49
    +
    An interface for layers that take one blob as input ( ) and produce one equally-sized blob as output ...
    Definition: neuron_layers.hpp:25
    +
    Dtype scale_
    from layer_param_.power_param()
    Definition: neuron_layers.hpp:402
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: dropout_layer.cpp:52
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    Parameterized Rectified Linear Unit non-linearity . The differences from ReLULayer are 1) negative sl...
    Definition: neuron_layers.hpp:731
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    PowerLayer(const LayerParameter &param)
    Definition: neuron_layers.hpp:351
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    LogLayer(const LayerParameter &param)
    Definition: neuron_layers.hpp:286
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: absval_layer.cpp:10
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: neuron_layers.hpp:692
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: neuron_layers.hpp:227
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Definition: prelu_layer.cpp:66
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Computes .
    Definition: absval_layer.cpp:18
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Definition: power_layer.cpp:22
    +
    PReLULayer(const LayerParameter &param)
    Definition: neuron_layers.hpp:741
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Definition: relu_layer.cpp:10
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Definition: log_layer.cpp:36
    +
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: dropout_layer.cpp:25
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Computes if ; otherwise.
    Definition: bnll_layer.cpp:12
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: neuron_layers.hpp:54
    +
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: neuron_layers.hpp:55
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    ExpLayer(const LayerParameter &param)
    Definition: neuron_layers.hpp:222
    +
    During training only, sets a random portion of to 0, adjusting the rest of the vector magnitude acco...
    Definition: neuron_layers.hpp:154
    +
    virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: threshold_layer.cpp:10
    +
    Dtype threshold_
    the probability of dropping any input
    Definition: neuron_layers.hpp:200
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Computes the error gradient w.r.t. the sigmoid inputs.
    Definition: tanh_layer.cpp:24
    +
    virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: exp_layer.cpp:11
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Computes the error gradient w.r.t. the exp inputs.
    Definition: log_layer.cpp:59
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: neuron_layers.hpp:111
    +
    TanH hyperbolic tangent non-linearity , popular in auto-encoders.
    Definition: neuron_layers.hpp:598
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:25
    +
    + + + + diff --git a/doxygen/open.png b/doxygen/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +Caffe: include/caffe/parallel.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    parallel.hpp
    +
    +
    +
    1 #ifndef CAFFE_PARALLEL_HPP_
    2 #define CAFFE_PARALLEL_HPP_
    3 
    4 #include <boost/date_time/posix_time/posix_time.hpp>
    5 
    6 #include <vector>
    7 
    8 #include "caffe/blob.hpp"
    9 #include "caffe/common.hpp"
    10 #include "caffe/internal_thread.hpp"
    11 #include "caffe/layer.hpp"
    12 #include "caffe/proto/caffe.pb.h"
    13 #include "caffe/solver.hpp"
    14 #include "caffe/syncedmem.hpp"
    15 #include "caffe/util/blocking_queue.hpp"
    16 
    17 namespace caffe {
    18 
    19 // Represents a net parameters. Once a net is created, its parameter buffers can
    20 // be replaced by ones from Params, to allow parallelization. Params ensures
    21 // parameters are allocated in one consecutive array.
    22 template<typename Dtype>
    23 class Params {
    24  public:
    25  explicit Params(shared_ptr<Solver<Dtype> > root_solver);
    26  virtual ~Params() {
    27  }
    28 
    29  inline size_t size() const {
    30  return size_;
    31  }
    32  inline Dtype* data() const {
    33  return data_;
    34  }
    35  inline Dtype* diff() const {
    36  return diff_;
    37  }
    38 
    39  protected:
    40  const size_t size_; // Size of buffers
    41  Dtype* data_; // Network parameters
    42  Dtype* diff_; // Gradient
    43 
    44 DISABLE_COPY_AND_ASSIGN(Params);
    45 };
    46 
    47 // Params stored in GPU memory.
    48 template<typename Dtype>
    49 class GPUParams : public Params<Dtype> {
    50  public:
    51  GPUParams(shared_ptr<Solver<Dtype> > root_solver, int device);
    52  virtual ~GPUParams();
    53 
    54  void configure(Solver<Dtype>* solver) const;
    55 
    56  protected:
    60 };
    61 
    62 class DevicePair {
    63  public:
    64  DevicePair(int parent, int device)
    65  : parent_(parent),
    66  device_(device) {
    67  }
    68  inline int parent() {
    69  return parent_;
    70  }
    71  inline int device() {
    72  return device_;
    73  }
    74 
    75  // Group GPUs in pairs, by proximity depending on machine's topology
    76  static void compute(const vector<int> devices, vector<DevicePair>* pairs);
    77 
    78  protected:
    79  int parent_;
    80  int device_;
    81 };
    82 
    83 // Synchronous data parallelism using map-reduce between local GPUs.
    84 template<typename Dtype>
    85 class P2PSync : public GPUParams<Dtype>, public Solver<Dtype>::Callback,
    86  public InternalThread {
    87  public:
    88  explicit P2PSync(shared_ptr<Solver<Dtype> > root_solver,
    89  P2PSync<Dtype>* parent, const SolverParameter& param);
    90  virtual ~P2PSync();
    91 
    92  inline const shared_ptr<Solver<Dtype> >& solver() const {
    93  return solver_;
    94  }
    95 
    96  void Run(const vector<int>& gpus);
    97  void Prepare(const vector<int>& gpus,
    98  vector<shared_ptr<P2PSync<Dtype> > >* syncs);
    99  inline const int initial_iter() const { return initial_iter_; }
    100 
    101  protected:
    102  void on_start();
    103  void on_gradients_ready();
    104 
    105  void InternalThreadEntry();
    106 
    107  P2PSync<Dtype>* parent_;
    108  vector<P2PSync<Dtype>*> children_;
    110  const int initial_iter_;
    111  Dtype* parent_grads_;
    112  shared_ptr<Solver<Dtype> > solver_;
    113 
    114  using Params<Dtype>::size_;
    115  using Params<Dtype>::data_;
    116  using Params<Dtype>::diff_;
    117 };
    118 
    119 } // namespace caffe
    120 
    121 #endif
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    Definition: parallel.hpp:23
    +
    An interface for classes that perform optimization on Nets.
    Definition: solver.hpp:41
    +
    Definition: parallel.hpp:49
    +
    Definition: parallel.hpp:85
    +
    Definition: parallel.hpp:62
    +
    Definition: internal_thread.hpp:19
    +
    Definition: blocking_queue.hpp:10
    +
    + + + + diff --git a/doxygen/parameter__layer_8hpp_source.html b/doxygen/parameter__layer_8hpp_source.html new file mode 100644 index 00000000000..4148684bb81 --- /dev/null +++ b/doxygen/parameter__layer_8hpp_source.html @@ -0,0 +1,90 @@ + + + + + + + +Caffe: include/caffe/layers/parameter_layer.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    parameter_layer.hpp
    +
    +
    +
    1 #ifndef CAFFE_PARAMETER_LAYER_HPP_
    2 #define CAFFE_PARAMETER_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/layer.hpp"
    7 
    8 namespace caffe {
    9 
    10 template <typename Dtype>
    11 class ParameterLayer : public Layer<Dtype> {
    12  public:
    13  explicit ParameterLayer(const LayerParameter& param)
    14  : Layer<Dtype>(param) {}
    15  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    16  const vector<Blob<Dtype>*>& top) {
    17  if (this->blobs_.size() > 0) {
    18  LOG(INFO) << "Skipping parameter initialization";
    19  } else {
    20  this->blobs_.resize(1);
    21  this->blobs_[0].reset(new Blob<Dtype>());
    22  this->blobs_[0]->Reshape(this->layer_param_.parameter_param().shape());
    23  }
    24  top[0]->Reshape(this->layer_param_.parameter_param().shape());
    25  }
    26  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    27  const vector<Blob<Dtype>*>& top) { }
    28  virtual inline const char* type() const { return "Parameter"; }
    29  virtual inline int ExactNumBottomBlobs() const { return 0; }
    30  virtual inline int ExactNumTopBlobs() const { return 1; }
    31 
    32  protected:
    33  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    34  const vector<Blob<Dtype>*>& top) {
    35  top[0]->ShareData(*(this->blobs_[0]));
    36  top[0]->ShareDiff(*(this->blobs_[0]));
    37  }
    38  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    39  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom)
    40  { }
    41 };
    42 
    43 } // namespace caffe
    44 
    45 #endif
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: parameter_layer.hpp:29
    +
    An interface for the units of computation which can be composed into a Net.
    Definition: layer.hpp:33
    +
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    vector< shared_ptr< Blob< Dtype > > > blobs_
    Definition: layer.hpp:326
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: parameter_layer.hpp:28
    +
    virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: parameter_layer.hpp:15
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the CPU device, compute the layer output.
    Definition: parameter_layer.hpp:33
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: parameter_layer.hpp:38
    +
    virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: parameter_layer.hpp:26
    +
    LayerParameter layer_param_
    Definition: layer.hpp:322
    +
    Definition: parameter_layer.hpp:11
    +
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: parameter_layer.hpp:30
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    +
    + + + + diff --git a/doxygen/pooling__layer_8hpp_source.html b/doxygen/pooling__layer_8hpp_source.html new file mode 100644 index 00000000000..96baf126806 --- /dev/null +++ b/doxygen/pooling__layer_8hpp_source.html @@ -0,0 +1,92 @@ + + + + + + + +Caffe: include/caffe/layers/pooling_layer.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    pooling_layer.hpp
    +
    +
    +
    1 #ifndef CAFFE_POOLING_LAYER_HPP_
    2 #define CAFFE_POOLING_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/layer.hpp"
    8 #include "caffe/proto/caffe.pb.h"
    9 
    10 namespace caffe {
    11 
    17 template <typename Dtype>
    18 class PoolingLayer : public Layer<Dtype> {
    19  public:
    20  explicit PoolingLayer(const LayerParameter& param)
    21  : Layer<Dtype>(param) {}
    22  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    23  const vector<Blob<Dtype>*>& top);
    24  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    25  const vector<Blob<Dtype>*>& top);
    26 
    27  virtual inline const char* type() const { return "Pooling"; }
    28  virtual inline int ExactNumBottomBlobs() const { return 1; }
    29  virtual inline int MinTopBlobs() const { return 1; }
    30  // MAX POOL layers can output an extra top blob for the mask;
    31  // others can only output the pooled inputs.
    32  virtual inline int MaxTopBlobs() const {
    33  return (this->layer_param_.pooling_param().pool() ==
    34  PoolingParameter_PoolMethod_MAX) ? 2 : 1;
    35  }
    36 
    37  protected:
    38  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    39  const vector<Blob<Dtype>*>& top);
    40  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    41  const vector<Blob<Dtype>*>& top);
    42  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    43  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    44  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    45  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    46 
    47  int kernel_h_, kernel_w_;
    48  int stride_h_, stride_w_;
    49  int pad_h_, pad_w_;
    50  int channels_;
    51  int height_, width_;
    52  int pooled_height_, pooled_width_;
    53  bool global_pooling_;
    54  Blob<Dtype> rand_idx_;
    55  Blob<int> max_idx_;
    56 };
    57 
    58 } // namespace caffe
    59 
    60 #endif // CAFFE_POOLING_LAYER_HPP_
    virtual int MaxTopBlobs() const
    Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required...
    Definition: pooling_layer.hpp:32
    +
    virtual int MinTopBlobs() const
    Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
    Definition: pooling_layer.hpp:29
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the CPU device, compute the layer output.
    Definition: pooling_layer.cpp:128
    +
    An interface for the units of computation which can be composed into a Net.
    Definition: layer.hpp:33
    +
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: pooling_layer.cpp:79
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: pooling_layer.cpp:230
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: pooling_layer.hpp:27
    +
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: pooling_layer.hpp:28
    +
    virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: pooling_layer.cpp:14
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    LayerParameter layer_param_
    Definition: layer.hpp:322
    +
    Pools the input image by taking the max, average, etc. within regions.
    Definition: pooling_layer.hpp:18
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    +
    + + + + diff --git a/doxygen/power__layer_8hpp_source.html b/doxygen/power__layer_8hpp_source.html new file mode 100644 index 00000000000..20522248440 --- /dev/null +++ b/doxygen/power__layer_8hpp_source.html @@ -0,0 +1,92 @@ + + + + + + + +Caffe: include/caffe/layers/power_layer.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    power_layer.hpp
    +
    +
    +
    1 #ifndef CAFFE_POWER_LAYER_HPP_
    2 #define CAFFE_POWER_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/layer.hpp"
    8 #include "caffe/proto/caffe.pb.h"
    9 
    10 #include "caffe/layers/neuron_layer.hpp"
    11 
    12 namespace caffe {
    13 
    19 template <typename Dtype>
    20 class PowerLayer : public NeuronLayer<Dtype> {
    21  public:
    29  explicit PowerLayer(const LayerParameter& param)
    30  : NeuronLayer<Dtype>(param) {}
    31  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    32  const vector<Blob<Dtype>*>& top);
    33 
    34  virtual inline const char* type() const { return "Power"; }
    35 
    36  protected:
    47  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    48  const vector<Blob<Dtype>*>& top);
    49  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    50  const vector<Blob<Dtype>*>& top);
    51 
    72  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    73  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    74  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    75  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    76 
    78  Dtype power_;
    80  Dtype scale_;
    82  Dtype shift_;
    84  Dtype diff_scale_;
    85 };
    86 
    87 } // namespace caffe
    88 
    89 #endif // CAFFE_POWER_LAYER_HPP_
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    Dtype power_
    from layer_param_.power_param()
    Definition: power_layer.hpp:78
    +
    Dtype diff_scale_
    Result of .
    Definition: power_layer.hpp:84
    +
    Computes , as specified by the scale , shift , and power .
    Definition: power_layer.hpp:20
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: power_layer.hpp:34
    +
    virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: power_layer.cpp:9
    +
    Dtype shift_
    from layer_param_.power_param()
    Definition: power_layer.hpp:82
    +
    An interface for layers that take one blob as input ( ) and produce one equally-sized blob as output ...
    Definition: neuron_layer.hpp:19
    +
    Dtype scale_
    from layer_param_.power_param()
    Definition: power_layer.hpp:80
    +
    PowerLayer(const LayerParameter &param)
    Definition: power_layer.hpp:29
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Definition: power_layer.cpp:20
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Computes the error gradient w.r.t. the power inputs.
    Definition: power_layer.cpp:44
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    +
    + + + + diff --git a/doxygen/prelu__layer_8hpp_source.html b/doxygen/prelu__layer_8hpp_source.html new file mode 100644 index 00000000000..21fbd6efc46 --- /dev/null +++ b/doxygen/prelu__layer_8hpp_source.html @@ -0,0 +1,89 @@ + + + + + + + +Caffe: include/caffe/layers/prelu_layer.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    prelu_layer.hpp
    +
    +
    +
    1 #ifndef CAFFE_PRELU_LAYER_HPP_
    2 #define CAFFE_PRELU_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/layer.hpp"
    8 #include "caffe/proto/caffe.pb.h"
    9 
    10 #include "caffe/layers/neuron_layer.hpp"
    11 
    12 namespace caffe {
    13 
    22 template <typename Dtype>
    23 class PReLULayer : public NeuronLayer<Dtype> {
    24  public:
    33  explicit PReLULayer(const LayerParameter& param)
    34  : NeuronLayer<Dtype>(param) {}
    35 
    36  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    37  const vector<Blob<Dtype>*>& top);
    38 
    39  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    40  const vector<Blob<Dtype>*>& top);
    41 
    42  virtual inline const char* type() const { return "PReLU"; }
    43 
    44  protected:
    55  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    56  const vector<Blob<Dtype>*>& top);
    57  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    58  const vector<Blob<Dtype>*>& top);
    59 
    88  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    89  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    90  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    91  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    92 
    93  bool channel_shared_;
    94  Blob<Dtype> multiplier_; // dot multiplier for backward computation of params
    95  Blob<Dtype> backward_buff_; // temporary buffer for backward computation
    96  Blob<Dtype> bottom_memory_; // memory for in-place computation
    97 };
    98 
    99 } // namespace caffe
    100 
    101 #endif // CAFFE_PRELU_LAYER_HPP_
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Definition: prelu_layer.cpp:67
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: prelu_layer.cpp:55
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Computes the error gradient w.r.t. the PReLU inputs.
    Definition: prelu_layer.cpp:92
    +
    An interface for layers that take one blob as input ( ) and produce one equally-sized blob as output ...
    Definition: neuron_layer.hpp:19
    +
    Parameterized Rectified Linear Unit non-linearity . The differences from ReLULayer are 1) negative sl...
    Definition: prelu_layer.hpp:23
    +
    virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: prelu_layer.cpp:12
    +
    PReLULayer(const LayerParameter &param)
    Definition: prelu_layer.hpp:33
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: prelu_layer.hpp:42
    +
    + + + + diff --git a/doxygen/python__layer_8hpp_source.html b/doxygen/python__layer_8hpp_source.html new file mode 100644 index 00000000000..f511d8cf130 --- /dev/null +++ b/doxygen/python__layer_8hpp_source.html @@ -0,0 +1,89 @@ + + + + + + + +Caffe: include/caffe/layers/python_layer.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    python_layer.hpp
    +
    +
    +
    1 #ifndef CAFFE_PYTHON_LAYER_HPP_
    2 #define CAFFE_PYTHON_LAYER_HPP_
    3 
    4 #include <boost/python.hpp>
    5 #include <vector>
    6 
    7 #include "caffe/layer.hpp"
    8 
    9 namespace bp = boost::python;
    10 
    11 namespace caffe {
    12 
    13 template <typename Dtype>
    14 class PythonLayer : public Layer<Dtype> {
    15  public:
    16  PythonLayer(PyObject* self, const LayerParameter& param)
    17  : Layer<Dtype>(param), self_(bp::handle<>(bp::borrowed(self))) { }
    18 
    19  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    20  const vector<Blob<Dtype>*>& top) {
    21  // Disallow PythonLayer in MultiGPU training stage, due to GIL issues
    22  // Details: https://github.com/BVLC/caffe/issues/2936
    23  if (this->phase_ == TRAIN && Caffe::solver_count() > 1
    24  && !ShareInParallel()) {
    25  LOG(FATAL) << "PythonLayer is not implemented in Multi-GPU training";
    26  }
    27  self_.attr("param_str") = bp::str(
    28  this->layer_param_.python_param().param_str());
    29  self_.attr("phase") = static_cast<int>(this->phase_);
    30  self_.attr("setup")(bottom, top);
    31  }
    32  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    33  const vector<Blob<Dtype>*>& top) {
    34  self_.attr("reshape")(bottom, top);
    35  }
    36 
    37  virtual inline bool ShareInParallel() const {
    38  return this->layer_param_.python_param().share_in_parallel();
    39  }
    40 
    41  virtual inline const char* type() const { return "Python"; }
    42 
    43  protected:
    44  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    45  const vector<Blob<Dtype>*>& top) {
    46  self_.attr("forward")(bottom, top);
    47  }
    48  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    49  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {
    50  self_.attr("backward")(top, propagate_down, bottom);
    51  }
    52 
    53  private:
    54  bp::object self_;
    55 };
    56 
    57 } // namespace caffe
    58 
    59 #endif
    An interface for the units of computation which can be composed into a Net.
    Definition: layer.hpp:33
    +
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: python_layer.hpp:48
    +
    virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: python_layer.hpp:19
    +
    virtual bool ShareInParallel() const
    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.
    Definition: python_layer.hpp:37
    +
    Definition: python_layer.hpp:14
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the CPU device, compute the layer output.
    Definition: python_layer.hpp:44
    +
    Phase phase_
    Definition: layer.hpp:324
    +
    LayerParameter layer_param_
    Definition: layer.hpp:322
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: python_layer.hpp:41
    +
    virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: python_layer.hpp:32
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    +
    + + + + diff --git a/doxygen/recurrent__layer_8hpp_source.html b/doxygen/recurrent__layer_8hpp_source.html new file mode 100644 index 00000000000..28f2e45fe71 --- /dev/null +++ b/doxygen/recurrent__layer_8hpp_source.html @@ -0,0 +1,102 @@ + + + + + + + +Caffe: include/caffe/layers/recurrent_layer.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    recurrent_layer.hpp
    +
    +
    +
    1 #ifndef CAFFE_RECURRENT_LAYER_HPP_
    2 #define CAFFE_RECURRENT_LAYER_HPP_
    3 
    4 #include <string>
    5 #include <utility>
    6 #include <vector>
    7 
    8 #include "caffe/blob.hpp"
    9 #include "caffe/common.hpp"
    10 #include "caffe/layer.hpp"
    11 #include "caffe/net.hpp"
    12 #include "caffe/proto/caffe.pb.h"
    13 #include "caffe/util/format.hpp"
    14 
    15 namespace caffe {
    16 
    17 template <typename Dtype> class RecurrentLayer;
    18 
    25 template <typename Dtype>
    26 class RecurrentLayer : public Layer<Dtype> {
    27  public:
    28  explicit RecurrentLayer(const LayerParameter& param)
    29  : Layer<Dtype>(param) {}
    30  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    31  const vector<Blob<Dtype>*>& top);
    32  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    33  const vector<Blob<Dtype>*>& top);
    34  virtual void Reset();
    35 
    36  virtual inline const char* type() const { return "Recurrent"; }
    37  virtual inline int MinBottomBlobs() const {
    38  int min_bottoms = 2;
    39  if (this->layer_param_.recurrent_param().expose_hidden()) {
    40  vector<string> inputs;
    41  this->RecurrentInputBlobNames(&inputs);
    42  min_bottoms += inputs.size();
    43  }
    44  return min_bottoms;
    45  }
    46  virtual inline int MaxBottomBlobs() const { return MinBottomBlobs() + 1; }
    47  virtual inline int ExactNumTopBlobs() const {
    48  int num_tops = 1;
    49  if (this->layer_param_.recurrent_param().expose_hidden()) {
    50  vector<string> outputs;
    51  this->RecurrentOutputBlobNames(&outputs);
    52  num_tops += outputs.size();
    53  }
    54  return num_tops;
    55  }
    56 
    57  virtual inline bool AllowForceBackward(const int bottom_index) const {
    58  // Can't propagate to sequence continuation indicators.
    59  return bottom_index != 1;
    60  }
    61 
    62  protected:
    67  virtual void FillUnrolledNet(NetParameter* net_param) const = 0;
    68 
    74  virtual void RecurrentInputBlobNames(vector<string>* names) const = 0;
    75 
    81  virtual void RecurrentInputShapes(vector<BlobShape>* shapes) const = 0;
    82 
    88  virtual void RecurrentOutputBlobNames(vector<string>* names) const = 0;
    89 
    96  virtual void OutputBlobNames(vector<string>* names) const = 0;
    97 
    143  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    144  const vector<Blob<Dtype>*>& top);
    145  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    146  const vector<Blob<Dtype>*>& top);
    147  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    148  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    149 
    151  shared_ptr<Net<Dtype> > unrolled_net_;
    152 
    154  int N_;
    155 
    160  int T_;
    161 
    164 
    170 
    176 
    177  vector<Blob<Dtype>* > recur_input_blobs_;
    178  vector<Blob<Dtype>* > recur_output_blobs_;
    179  vector<Blob<Dtype>* > output_blobs_;
    180  Blob<Dtype>* x_input_blob_;
    181  Blob<Dtype>* x_static_input_blob_;
    182  Blob<Dtype>* cont_input_blob_;
    183 };
    184 
    185 } // namespace caffe
    186 
    187 #endif // CAFFE_RECURRENT_LAYER_HPP_
    virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: recurrent_layer.cpp:14
    +
    bool static_input_
    Whether the layer has a "static" input copied across all timesteps.
    Definition: recurrent_layer.hpp:163
    +
    virtual int MinBottomBlobs() const
    Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is requi...
    Definition: recurrent_layer.hpp:37
    +
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    virtual bool AllowForceBackward(const int bottom_index) const
    Return whether to allow force_backward for a given bottom blob index.
    Definition: recurrent_layer.hpp:57
    +
    int last_layer_index_
    The last layer to run in the network. (Any later layers are losses added to force the recurrent net t...
    Definition: recurrent_layer.hpp:169
    +
    virtual void RecurrentInputBlobNames(vector< string > *names) const =0
    Fills names with the names of the 0th timestep recurrent input Blob&s. Subclasses should define this ...
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Definition: recurrent_layer.cpp:245
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    int T_
    The number of timesteps in the layer&#39;s input, and the number of timesteps over which to backpropagate...
    Definition: recurrent_layer.hpp:160
    +
    virtual void RecurrentOutputBlobNames(vector< string > *names) const =0
    Fills names with the names of the Tth timestep recurrent output Blob&s. Subclasses should define this...
    +
    virtual void RecurrentInputShapes(vector< BlobShape > *shapes) const =0
    Fills shapes with the shapes of the recurrent input Blob&s. Subclasses should define this – see RNNL...
    +
    shared_ptr< Net< Dtype > > unrolled_net_
    A Net to implement the Recurrent functionality.
    Definition: recurrent_layer.hpp:151
    +
    virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: recurrent_layer.cpp:183
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: recurrent_layer.cpp:277
    +
    virtual void OutputBlobNames(vector< string > *names) const =0
    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 const char * type() const
    Returns the layer type.
    Definition: recurrent_layer.hpp:36
    +
    Layer(const LayerParameter &param)
    Definition: layer.hpp:40
    +
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: recurrent_layer.hpp:47
    +
    bool expose_hidden_
    Whether the layer&#39;s hidden state at the first and last timesteps are layer inputs and outputs...
    Definition: recurrent_layer.hpp:175
    +
    LayerParameter layer_param_
    Definition: layer.hpp:322
    +
    virtual int MaxBottomBlobs() const
    Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is requi...
    Definition: recurrent_layer.hpp:46
    +
    int N_
    The number of independent streams to process simultaneously.
    Definition: recurrent_layer.hpp:154
    +
    virtual void FillUnrolledNet(NetParameter *net_param) const =0
    Fills net_param with the recurrent network architecture. Subclasses should define this – see RNNLaye...
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    +
    + + + + diff --git a/doxygen/reduction__layer_8hpp_source.html b/doxygen/reduction__layer_8hpp_source.html new file mode 100644 index 00000000000..1d9b927346a --- /dev/null +++ b/doxygen/reduction__layer_8hpp_source.html @@ -0,0 +1,96 @@ + + + + + + + +Caffe: include/caffe/layers/reduction_layer.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    reduction_layer.hpp
    +
    +
    +
    1 #ifndef CAFFE_REDUCTION_LAYER_HPP_
    2 #define CAFFE_REDUCTION_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/layer.hpp"
    8 #include "caffe/proto/caffe.pb.h"
    9 
    10 namespace caffe {
    11 
    19 template <typename Dtype>
    20 class ReductionLayer : public Layer<Dtype> {
    21  public:
    22  explicit ReductionLayer(const LayerParameter& param)
    23  : Layer<Dtype>(param) {}
    24  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    25  const vector<Blob<Dtype>*>& top);
    26  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    27  const vector<Blob<Dtype>*>& top);
    28 
    29  virtual inline const char* type() const { return "Reduction"; }
    30  virtual inline int ExactNumBottomBlobs() const { return 1; }
    31  virtual inline int ExactNumTopBlobs() const { return 1; }
    32 
    33  protected:
    34  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    35  const vector<Blob<Dtype>*>& top);
    36  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    37  const vector<Blob<Dtype>*>& top);
    38  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    39  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    40  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    41  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    42 
    44  ReductionParameter_ReductionOp op_;
    46  Dtype coeff_;
    48  int axis_;
    50  int num_;
    52  int dim_;
    55 };
    56 
    57 } // namespace caffe
    58 
    59 #endif // CAFFE_REDUCTION_LAYER_HPP_
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: reduction_layer.cpp:77
    +
    virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: reduction_layer.cpp:9
    +
    An interface for the units of computation which can be composed into a Net.
    Definition: layer.hpp:33
    +
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the CPU device, compute the layer output.
    Definition: reduction_layer.cpp:42
    +
    int dim_
    the input size of each reduction
    Definition: reduction_layer.hpp:52
    +
    virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: reduction_layer.cpp:15
    +
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: reduction_layer.hpp:31
    +
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: reduction_layer.hpp:30
    +
    Blob< Dtype > sum_multiplier_
    a helper Blob used for summation (op_ == SUM)
    Definition: reduction_layer.hpp:54
    +
    ReductionParameter_ReductionOp op_
    the reduction operation performed by the layer
    Definition: reduction_layer.hpp:44
    +
    Compute "reductions" – operations that return a scalar output Blob for an input Blob of arbitrary si...
    Definition: reduction_layer.hpp:20
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: reduction_layer.hpp:29
    +
    Dtype coeff_
    a scalar coefficient applied to all outputs
    Definition: reduction_layer.hpp:46
    +
    int num_
    the number of reductions performed
    Definition: reduction_layer.hpp:50
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    int axis_
    the index of the first input axis to reduce
    Definition: reduction_layer.hpp:48
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    +
    + + + + diff --git a/doxygen/relu__layer_8hpp_source.html b/doxygen/relu__layer_8hpp_source.html new file mode 100644 index 00000000000..637722a2590 --- /dev/null +++ b/doxygen/relu__layer_8hpp_source.html @@ -0,0 +1,87 @@ + + + + + + + +Caffe: include/caffe/layers/relu_layer.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    relu_layer.hpp
    +
    +
    +
    1 #ifndef CAFFE_RELU_LAYER_HPP_
    2 #define CAFFE_RELU_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/layer.hpp"
    8 #include "caffe/proto/caffe.pb.h"
    9 
    10 #include "caffe/layers/neuron_layer.hpp"
    11 
    12 namespace caffe {
    13 
    18 template <typename Dtype>
    19 class ReLULayer : public NeuronLayer<Dtype> {
    20  public:
    27  explicit ReLULayer(const LayerParameter& param)
    28  : NeuronLayer<Dtype>(param) {}
    29 
    30  virtual inline const char* type() const { return "ReLU"; }
    31 
    32  protected:
    44  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    45  const vector<Blob<Dtype>*>& top);
    46  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    47  const vector<Blob<Dtype>*>& top);
    48 
    77  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    78  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    79  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    80  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    81 };
    82 
    83 } // namespace caffe
    84 
    85 #endif // CAFFE_RELU_LAYER_HPP_
    virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Definition: relu_layer.cpp:9
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Computes the error gradient w.r.t. the ReLU inputs.
    Definition: relu_layer.cpp:22
    +
    Rectified Linear Unit non-linearity . The simple max is fast to compute, and the function does not sa...
    Definition: relu_layer.hpp:19
    +
    ReLULayer(const LayerParameter &param)
    Definition: relu_layer.hpp:27
    +
    An interface for layers that take one blob as input ( ) and produce one equally-sized blob as output ...
    Definition: neuron_layer.hpp:19
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: relu_layer.hpp:30
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    +
    + + + + diff --git a/doxygen/reshape__layer_8hpp_source.html b/doxygen/reshape__layer_8hpp_source.html new file mode 100644 index 00000000000..911d553f0d6 --- /dev/null +++ b/doxygen/reshape__layer_8hpp_source.html @@ -0,0 +1,93 @@ + + + + + + + +Caffe: include/caffe/layers/reshape_layer.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    reshape_layer.hpp
    +
    +
    +
    1 #ifndef CAFFE_XXX_LAYER_HPP_
    2 #define CAFFE_XXX_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/layer.hpp"
    8 #include "caffe/proto/caffe.pb.h"
    9 
    10 namespace caffe {
    11 
    12 /*
    13  * @brief Reshapes the input Blob into an arbitrary-sized output Blob.
    14  *
    15  * Note: similarly to FlattenLayer, this layer does not change the input values
    16  * (see FlattenLayer, Blob::ShareData and Blob::ShareDiff).
    17  */
    18 template <typename Dtype>
    19 class ReshapeLayer : public Layer<Dtype> {
    20  public:
    21  explicit ReshapeLayer(const LayerParameter& param)
    22  : Layer<Dtype>(param) {}
    23  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    24  const vector<Blob<Dtype>*>& top);
    25  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    26  const vector<Blob<Dtype>*>& top);
    27 
    28  virtual inline const char* type() const { return "Reshape"; }
    29  virtual inline int ExactNumBottomBlobs() const { return 1; }
    30  virtual inline int ExactNumTopBlobs() const { return 1; }
    31 
    32  protected:
    33  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    34  const vector<Blob<Dtype>*>& top) {}
    35  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    36  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
    37  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    38  const vector<Blob<Dtype>*>& top) {}
    39  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    40  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
    41 
    43  vector<int> copy_axes_;
    48 };
    49 
    50 } // namespace caffe
    51 
    52 #endif // CAFFE_XXX_LAYER_HPP_
    virtual const char * type() const
    Returns the layer type.
    Definition: reshape_layer.hpp:28
    +
    An interface for the units of computation which can be composed into a Net.
    Definition: layer.hpp:33
    +
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the CPU device, compute the layer output.
    Definition: reshape_layer.hpp:33
    +
    int constant_count_
    the product of the "constant" output dimensions
    Definition: reshape_layer.hpp:47
    +
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: reshape_layer.hpp:30
    +
    int inferred_axis_
    the index of the axis whose dimension we infer, or -1 if none
    Definition: reshape_layer.hpp:45
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: reshape_layer.hpp:39
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: reshape_layer.hpp:35
    +
    Definition: reshape_layer.hpp:19
    +
    vector< int > copy_axes_
    vector of axes indices whose dimensions we&#39;ll copy from the bottom
    Definition: reshape_layer.hpp:43
    +
    virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: reshape_layer.cpp:32
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    Definition: reshape_layer.hpp:37
    +
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: reshape_layer.hpp:29
    +
    virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: reshape_layer.cpp:8
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    +
    + + + + diff --git a/doxygen/rng_8hpp_source.html b/doxygen/rng_8hpp_source.html new file mode 100644 index 00000000000..9339f7f68eb --- /dev/null +++ b/doxygen/rng_8hpp_source.html @@ -0,0 +1,78 @@ + + + + + + + +Caffe: include/caffe/util/rng.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    rng.hpp
    +
    +
    +
    1 #ifndef CAFFE_RNG_CPP_HPP_
    2 #define CAFFE_RNG_CPP_HPP_
    3 
    4 #include <algorithm>
    5 #include <iterator>
    6 
    7 #include "boost/random/mersenne_twister.hpp"
    8 #include "boost/random/uniform_int.hpp"
    9 
    10 #include "caffe/common.hpp"
    11 
    12 namespace caffe {
    13 
    14 typedef boost::mt19937 rng_t;
    15 
    16 inline rng_t* caffe_rng() {
    17  return static_cast<caffe::rng_t*>(Caffe::rng_stream().generator());
    18 }
    19 
    20 // Fisher–Yates algorithm
    21 template <class RandomAccessIterator, class RandomGenerator>
    22 inline void shuffle(RandomAccessIterator begin, RandomAccessIterator end,
    23  RandomGenerator* gen) {
    24  typedef typename std::iterator_traits<RandomAccessIterator>::difference_type
    25  difference_type;
    26  typedef typename boost::uniform_int<difference_type> dist_type;
    27 
    28  difference_type length = std::distance(begin, end);
    29  if (length <= 0) return;
    30 
    31  for (difference_type i = length - 1; i > 0; --i) {
    32  dist_type dist(0, i);
    33  std::iter_swap(begin + i, begin + dist(*gen));
    34  }
    35 }
    36 
    37 template <class RandomAccessIterator>
    38 inline void shuffle(RandomAccessIterator begin, RandomAccessIterator end) {
    39  shuffle(begin, end, caffe_rng());
    40 }
    41 } // namespace caffe
    42 
    43 #endif // CAFFE_RNG_HPP_
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    + + + + diff --git a/doxygen/rnn__layer_8hpp_source.html b/doxygen/rnn__layer_8hpp_source.html new file mode 100644 index 00000000000..4ebd705a733 --- /dev/null +++ b/doxygen/rnn__layer_8hpp_source.html @@ -0,0 +1,86 @@ + + + + + + + +Caffe: include/caffe/layers/rnn_layer.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    rnn_layer.hpp
    +
    +
    +
    1 #ifndef CAFFE_RNN_LAYER_HPP_
    2 #define CAFFE_RNN_LAYER_HPP_
    3 
    4 #include <string>
    5 #include <utility>
    6 #include <vector>
    7 
    8 #include "caffe/blob.hpp"
    9 #include "caffe/common.hpp"
    10 #include "caffe/layer.hpp"
    11 #include "caffe/layers/recurrent_layer.hpp"
    12 #include "caffe/net.hpp"
    13 #include "caffe/proto/caffe.pb.h"
    14 
    15 namespace caffe {
    16 
    17 template <typename Dtype> class RecurrentLayer;
    18 
    29 template <typename Dtype>
    30 class RNNLayer : public RecurrentLayer<Dtype> {
    31  public:
    32  explicit RNNLayer(const LayerParameter& param)
    33  : RecurrentLayer<Dtype>(param) {}
    34 
    35  virtual inline const char* type() const { return "RNN"; }
    36 
    37  protected:
    38  virtual void FillUnrolledNet(NetParameter* net_param) const;
    39  virtual void RecurrentInputBlobNames(vector<string>* names) const;
    40  virtual void RecurrentOutputBlobNames(vector<string>* names) const;
    41  virtual void RecurrentInputShapes(vector<BlobShape>* shapes) const;
    42  virtual void OutputBlobNames(vector<string>* names) const;
    43 };
    44 
    45 } // namespace caffe
    46 
    47 #endif // CAFFE_RNN_LAYER_HPP_
    virtual void OutputBlobNames(vector< string > *names) const
    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.
    Definition: rnn_layer.cpp:36
    +
    virtual void RecurrentInputShapes(vector< BlobShape > *shapes) const
    Fills shapes with the shapes of the recurrent input Blob&s. Subclasses should define this – see RNNL...
    Definition: rnn_layer.cpp:26
    +
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    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.
    Definition: lstm_layer.hpp:17
    +
    virtual void FillUnrolledNet(NetParameter *net_param) const
    Fills net_param with the recurrent network architecture. Subclasses should define this – see RNNLaye...
    Definition: rnn_layer.cpp:42
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: rnn_layer.hpp:35
    +
    virtual void RecurrentOutputBlobNames(vector< string > *names) const
    Fills names with the names of the Tth timestep recurrent output Blob&s. Subclasses should define this...
    Definition: rnn_layer.cpp:20
    +
    Processes time-varying inputs using a simple recurrent neural network (RNN). Implemented as a network...
    Definition: rnn_layer.hpp:30
    +
    virtual void RecurrentInputBlobNames(vector< string > *names) const
    Fills names with the names of the 0th timestep recurrent input Blob&s. Subclasses should define this ...
    Definition: rnn_layer.cpp:14
    +
    + + + + diff --git a/doxygen/scale__layer_8hpp_source.html b/doxygen/scale__layer_8hpp_source.html new file mode 100644 index 00000000000..4127a24345f --- /dev/null +++ b/doxygen/scale__layer_8hpp_source.html @@ -0,0 +1,91 @@ + + + + + + + +Caffe: include/caffe/layers/scale_layer.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    scale_layer.hpp
    +
    +
    +
    1 #ifndef CAFFE_SCALE_LAYER_HPP_
    2 #define CAFFE_SCALE_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/layer.hpp"
    8 #include "caffe/proto/caffe.pb.h"
    9 
    10 #include "caffe/layers/bias_layer.hpp"
    11 
    12 namespace caffe {
    13 
    25 template <typename Dtype>
    26 class ScaleLayer: public Layer<Dtype> {
    27  public:
    28  explicit ScaleLayer(const LayerParameter& param)
    29  : Layer<Dtype>(param) {}
    30  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    31  const vector<Blob<Dtype>*>& top);
    32  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    33  const vector<Blob<Dtype>*>& top);
    34 
    35  virtual inline const char* type() const { return "Scale"; }
    36  // Scale
    37  virtual inline int MinBottomBlobs() const { return 1; }
    38  virtual inline int MaxBottomBlobs() const { return 2; }
    39  virtual inline int ExactNumTopBlobs() const { return 1; }
    40 
    41  protected:
    61  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    62  const vector<Blob<Dtype>*>& top);
    63  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    64  const vector<Blob<Dtype>*>& top);
    65  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    66  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    67  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    68  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    69 
    70  shared_ptr<Layer<Dtype> > bias_layer_;
    71  vector<Blob<Dtype>*> bias_bottom_vec_;
    72  vector<bool> bias_propagate_down_;
    73  int bias_param_id_;
    74 
    75  Blob<Dtype> sum_multiplier_;
    76  Blob<Dtype> sum_result_;
    77  Blob<Dtype> temp_;
    78  int axis_;
    79  int outer_dim_, scale_dim_, inner_dim_;
    80 };
    81 
    82 
    83 } // namespace caffe
    84 
    85 #endif // CAFFE_SCALE_LAYER_HPP_
    virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    An interface for the units of computation which can be composed into a Net.
    Definition: layer.hpp:33
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: scale_layer.hpp:39
    +
    virtual int MinBottomBlobs() const
    Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is requi...
    Definition: scale_layer.hpp:37
    +
    virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: scale_layer.cpp:12
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: scale_layer.cpp:145
    +
    Computes the elementwise product of two input Blobs, with the shape of the latter Blob "broadcast" to...
    Definition: scale_layer.hpp:26
    +
    virtual int MaxBottomBlobs() const
    Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is requi...
    Definition: scale_layer.hpp:38
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: scale_layer.hpp:35
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Definition: scale_layer.cpp:117
    +
    virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: scale_layer.cpp:76
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    +
    + + + + diff --git a/doxygen/search/all_0.html b/doxygen/search/all_0.html new file mode 100644 index 00000000000..43594633a43 --- /dev/null +++ b/doxygen/search/all_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/all_0.js b/doxygen/search/all_0.js new file mode 100644 index 00000000000..9283c90fbba --- /dev/null +++ b/doxygen/search/all_0.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['absvallayer',['AbsValLayer',['../classcaffe_1_1AbsValLayer.html',1,'caffe']]], + ['accuracylayer',['AccuracyLayer',['../classcaffe_1_1AccuracyLayer.html',1,'caffe']]], + ['accuracylayer',['AccuracyLayer',['../classcaffe_1_1AccuracyLayer.html#a362ab61d1961c1b408f84a956f6e598d',1,'caffe::AccuracyLayer']]], + ['actioncallback',['ActionCallback',['../namespacecaffe.html#a79ce9ffbdd44b367252e0b8cf99bf430',1,'caffe']]], + ['adadeltasolver',['AdaDeltaSolver',['../classcaffe_1_1AdaDeltaSolver.html',1,'caffe']]], + ['adagradsolver',['AdaGradSolver',['../classcaffe_1_1AdaGradSolver.html',1,'caffe']]], + ['adamsolver',['AdamSolver',['../classcaffe_1_1AdamSolver.html',1,'caffe']]], + ['allowforcebackward',['AllowForceBackward',['../classcaffe_1_1Layer.html#a1c0b2bffcd6d57e4bd49f820941badb6',1,'caffe::Layer::AllowForceBackward()'],['../classcaffe_1_1ContrastiveLossLayer.html#af0f16d5119ac6118b670c1966c38fd7d',1,'caffe::ContrastiveLossLayer::AllowForceBackward()'],['../classcaffe_1_1EuclideanLossLayer.html#a76dd3fde9f09cb9840f05ee035b5a2c5',1,'caffe::EuclideanLossLayer::AllowForceBackward()'],['../classcaffe_1_1LossLayer.html#a36d35155bfe0de53a79c517f33759612',1,'caffe::LossLayer::AllowForceBackward()'],['../classcaffe_1_1LSTMUnitLayer.html#a9c46167bc8b96b28196bc24a5515b531',1,'caffe::LSTMUnitLayer::AllowForceBackward()'],['../classcaffe_1_1RecurrentLayer.html#a8d91610cc8b9615a1db4f07fe5590a37',1,'caffe::RecurrentLayer::AllowForceBackward()']]], + ['appendbottom',['AppendBottom',['../classcaffe_1_1Net.html#a6ef3482f4e882e437c81affa77d91f32',1,'caffe::Net']]], + ['appendparam',['AppendParam',['../classcaffe_1_1Net.html#a1fce7e829c10750543f3a79819d49393',1,'caffe::Net']]], + ['appendtop',['AppendTop',['../classcaffe_1_1Net.html#a3aab736bc72b29c84dc3ee765ee453c4',1,'caffe::Net']]], + ['argmaxlayer',['ArgMaxLayer',['../classcaffe_1_1ArgMaxLayer.html',1,'caffe']]], + ['argmaxlayer',['ArgMaxLayer',['../classcaffe_1_1ArgMaxLayer.html#a77429601f3d7f27b48720a1b703491be',1,'caffe::ArgMaxLayer']]], + ['asum_5fdata',['asum_data',['../classcaffe_1_1Blob.html#aa06094adb9337a7d67f7049a1f2ede54',1,'caffe::Blob']]], + ['asum_5fdiff',['asum_diff',['../classcaffe_1_1Blob.html#a1bf366edeb71ae6a76d4177fef3879ec',1,'caffe::Blob']]], + ['autotopblobs',['AutoTopBlobs',['../classcaffe_1_1Layer.html#a50130669e230a168d1f8fbbb8171f054',1,'caffe::Layer::AutoTopBlobs()'],['../classcaffe_1_1LossLayer.html#ae98a9942cdb1c67e09d45cc2d876618e',1,'caffe::LossLayer::AutoTopBlobs()']]], + ['axis_5f',['axis_',['../classcaffe_1_1ReductionLayer.html#ac42612a3e9d6fadcb2a57041595033bf',1,'caffe::ReductionLayer']]] +]; diff --git a/doxygen/search/all_1.html b/doxygen/search/all_1.html new file mode 100644 index 00000000000..bc87ea8cf21 --- /dev/null +++ b/doxygen/search/all_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/all_1.js b/doxygen/search/all_1.js new file mode 100644 index 00000000000..257996182b3 --- /dev/null +++ b/doxygen/search/all_1.js @@ -0,0 +1,34 @@ +var searchData= +[ + ['backward',['Backward',['../classcaffe_1_1Layer.html#a183d343f5183a4762307f2c5e6ed1e12',1,'caffe::Layer::Backward()'],['../classcaffe_1_1Net.html#a7a1a6d17347106dd1284b1b6d28cb4e9',1,'caffe::Net::Backward()']]], + ['backward_5fcpu',['Backward_cpu',['../classcaffe_1_1Layer.html#a75c9b2a321dc713e0eaef530d02dc37f',1,'caffe::Layer::Backward_cpu()'],['../classcaffe_1_1AbsValLayer.html#abac024a0ee583ecc7d83311363bcfa72',1,'caffe::AbsValLayer::Backward_cpu()'],['../classcaffe_1_1AccuracyLayer.html#a8084d42629a751f5b6322d9cb3f5986c',1,'caffe::AccuracyLayer::Backward_cpu()'],['../classcaffe_1_1ArgMaxLayer.html#a763be1ca5815fbe1eec62ec206ae3f6e',1,'caffe::ArgMaxLayer::Backward_cpu()'],['../classcaffe_1_1BaseDataLayer.html#a9d2c7a18383ff7625d80806ede1d9e3b',1,'caffe::BaseDataLayer::Backward_cpu()'],['../classcaffe_1_1BatchNormLayer.html#aa781fae1f9e901398cbab994678a558f',1,'caffe::BatchNormLayer::Backward_cpu()'],['../classcaffe_1_1BatchReindexLayer.html#a8306bf8f4c49c33fc2a7cecbb436e5dc',1,'caffe::BatchReindexLayer::Backward_cpu()'],['../classcaffe_1_1BiasLayer.html#a644c6ae32fde130475b8de04db36ea5b',1,'caffe::BiasLayer::Backward_cpu()'],['../classcaffe_1_1BNLLLayer.html#a014a52e7ba756d94d2af865dc6c855dc',1,'caffe::BNLLLayer::Backward_cpu()'],['../classcaffe_1_1ConcatLayer.html#a928a320b29e3f72ffcc661d00534f760',1,'caffe::ConcatLayer::Backward_cpu()'],['../classcaffe_1_1ContrastiveLossLayer.html#a60af9729fe340be3ae0f87737215d9d0',1,'caffe::ContrastiveLossLayer::Backward_cpu()'],['../classcaffe_1_1ConvolutionLayer.html#a11279ea7bea3843a776a766b93e27e50',1,'caffe::ConvolutionLayer::Backward_cpu()'],['../classcaffe_1_1CropLayer.html#ab73f11ec5c3927435ab9c7e1706919cd',1,'caffe::CropLayer::Backward_cpu()'],['../classcaffe_1_1DeconvolutionLayer.html#a43c00eac97e8c9b3cfb0de0b5904b43f',1,'caffe::DeconvolutionLayer::Backward_cpu()'],['../classcaffe_1_1DropoutLayer.html#afd94f3c55768f4847956c01bce88f9c1',1,'caffe::DropoutLayer::Backward_cpu()'],['../classcaffe_1_1DummyDataLayer.html#ac62a3b84e25b23ad3aa7c19409282188',1,'caffe::DummyDataLayer::Backward_cpu()'],['../classcaffe_1_1EltwiseLayer.html#a4d2c0401680daae53654aeb2cc6983a4',1,'caffe::EltwiseLayer::Backward_cpu()'],['../classcaffe_1_1ELULayer.html#a606284cd2e5ff40154ff0865a100b940',1,'caffe::ELULayer::Backward_cpu()'],['../classcaffe_1_1EmbedLayer.html#a0584f1e1429283eb9ddf4c5bbb897a2d',1,'caffe::EmbedLayer::Backward_cpu()'],['../classcaffe_1_1EuclideanLossLayer.html#a577f5dad9889d01461348a4c89277089',1,'caffe::EuclideanLossLayer::Backward_cpu()'],['../classcaffe_1_1ExpLayer.html#a3629dc4ebe692252f28edc204b8bf435',1,'caffe::ExpLayer::Backward_cpu()'],['../classcaffe_1_1FilterLayer.html#a11e002d2b3294ca185a01c007995711d',1,'caffe::FilterLayer::Backward_cpu()'],['../classcaffe_1_1FlattenLayer.html#a784fce9e05617701403f3a955fdca2a8',1,'caffe::FlattenLayer::Backward_cpu()'],['../classcaffe_1_1HDF5DataLayer.html#ab2a3379c83003ab3fa19848fbc57d30a',1,'caffe::HDF5DataLayer::Backward_cpu()'],['../classcaffe_1_1HDF5OutputLayer.html#a1acb4098d879c5fb6646ef097ef15713',1,'caffe::HDF5OutputLayer::Backward_cpu()'],['../classcaffe_1_1HingeLossLayer.html#a4eb93cbad1070ce4e6e4de8fa1eb01ab',1,'caffe::HingeLossLayer::Backward_cpu()'],['../classcaffe_1_1Im2colLayer.html#a9c88593258502ae30aeec7be76225b61',1,'caffe::Im2colLayer::Backward_cpu()'],['../classcaffe_1_1InfogainLossLayer.html#a6d8fc17daa7233fb96629b641fbc46ac',1,'caffe::InfogainLossLayer::Backward_cpu()'],['../classcaffe_1_1InnerProductLayer.html#aabc0f2f914ad3efae81cefed30392f04',1,'caffe::InnerProductLayer::Backward_cpu()'],['../classcaffe_1_1InputLayer.html#a01bc41ff8690c2b2c5eec026a7bc3188',1,'caffe::InputLayer::Backward_cpu()'],['../classcaffe_1_1LogLayer.html#a79f6398d807b7d751820528d5a68faa7',1,'caffe::LogLayer::Backward_cpu()'],['../classcaffe_1_1LRNLayer.html#ac3f419feedaf79fc42d79af0d0f530ef',1,'caffe::LRNLayer::Backward_cpu()'],['../classcaffe_1_1LSTMUnitLayer.html#aab97af46aeebdae3d7f7046aa6ba5f7f',1,'caffe::LSTMUnitLayer::Backward_cpu()'],['../classcaffe_1_1MultinomialLogisticLossLayer.html#a817e9cb16c4af367edf6941f6009a74d',1,'caffe::MultinomialLogisticLossLayer::Backward_cpu()'],['../classcaffe_1_1MVNLayer.html#af86a0165418a7623b3aa0dc2d5f29182',1,'caffe::MVNLayer::Backward_cpu()'],['../classcaffe_1_1ParameterLayer.html#ab8fe6b9f7b8bb1997bd3b6f8d574710b',1,'caffe::ParameterLayer::Backward_cpu()'],['../classcaffe_1_1PoolingLayer.html#ace4f4a1f9342b719e4e1a80721dbf97a',1,'caffe::PoolingLayer::Backward_cpu()'],['../classcaffe_1_1PowerLayer.html#a98e5481671ca13339f888cad61b3d515',1,'caffe::PowerLayer::Backward_cpu()'],['../classcaffe_1_1PReLULayer.html#ab2e8ecd631bc37fdabecefbc91ee21a0',1,'caffe::PReLULayer::Backward_cpu()'],['../classcaffe_1_1PythonLayer.html#a07eb970edebba16324ee35e06be04587',1,'caffe::PythonLayer::Backward_cpu()'],['../classcaffe_1_1RecurrentLayer.html#a634f73d33c81cc8f8486659998ed45c6',1,'caffe::RecurrentLayer::Backward_cpu()'],['../classcaffe_1_1ReductionLayer.html#aeff33bdb244f2e93eef7ba78b795db45',1,'caffe::ReductionLayer::Backward_cpu()'],['../classcaffe_1_1ReLULayer.html#a4f278f1aca7a380a24b61be5429808a4',1,'caffe::ReLULayer::Backward_cpu()'],['../classcaffe_1_1ReshapeLayer.html#a8baafe3b84c6eee7709071a944355286',1,'caffe::ReshapeLayer::Backward_cpu()'],['../classcaffe_1_1ScaleLayer.html#a4b41188afeb445da06721fdf80526cf0',1,'caffe::ScaleLayer::Backward_cpu()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#a025360b1de1fefbc4684e43603394a22',1,'caffe::SigmoidCrossEntropyLossLayer::Backward_cpu()'],['../classcaffe_1_1SigmoidLayer.html#a14561ff9802e8d8bf8f148c18a91d73e',1,'caffe::SigmoidLayer::Backward_cpu()'],['../classcaffe_1_1SilenceLayer.html#a15ba1bd65230fda33662b23195aeaaf8',1,'caffe::SilenceLayer::Backward_cpu()'],['../classcaffe_1_1SliceLayer.html#aa6a718baa3285540f2b2d17ebf39447e',1,'caffe::SliceLayer::Backward_cpu()'],['../classcaffe_1_1SoftmaxLayer.html#a399c09698af3820903c01732061dbba9',1,'caffe::SoftmaxLayer::Backward_cpu()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a39d8b7d59f2c951ac2573827f181284f',1,'caffe::SoftmaxWithLossLayer::Backward_cpu()'],['../classcaffe_1_1SplitLayer.html#a8a4a5231eafdf8c35596de50cac9185c',1,'caffe::SplitLayer::Backward_cpu()'],['../classcaffe_1_1SPPLayer.html#a0ad4bf01671eec91fc6fa9732f721555',1,'caffe::SPPLayer::Backward_cpu()'],['../classcaffe_1_1TanHLayer.html#a5406381416c42097befd8bf1922af12b',1,'caffe::TanHLayer::Backward_cpu()'],['../classcaffe_1_1ThresholdLayer.html#a5df4d0e3da5e80d83c5853da0f018db6',1,'caffe::ThresholdLayer::Backward_cpu()'],['../classcaffe_1_1TileLayer.html#a3ca5872f38d740aabf9b132470e9217b',1,'caffe::TileLayer::Backward_cpu()']]], + ['backward_5fgpu',['Backward_gpu',['../classcaffe_1_1Layer.html#a6faee52af6250a38d1b879008257f5a7',1,'caffe::Layer::Backward_gpu()'],['../classcaffe_1_1AbsValLayer.html#aff44062e9eb243c195285bee25b1eefb',1,'caffe::AbsValLayer::Backward_gpu()'],['../classcaffe_1_1BaseDataLayer.html#a537656c76260c7f669c713506a5f4651',1,'caffe::BaseDataLayer::Backward_gpu()'],['../classcaffe_1_1BatchNormLayer.html#a3d48a811fe3adf0c189d976a2ae7f7d8',1,'caffe::BatchNormLayer::Backward_gpu()'],['../classcaffe_1_1BatchReindexLayer.html#a2d561aef5ce7e09115af143c553e7af5',1,'caffe::BatchReindexLayer::Backward_gpu()'],['../classcaffe_1_1BiasLayer.html#a879d979171c8f79f7b5b07b4d9e7945d',1,'caffe::BiasLayer::Backward_gpu()'],['../classcaffe_1_1BNLLLayer.html#ac8a7f10b887b59194694f14e887fc6a6',1,'caffe::BNLLLayer::Backward_gpu()'],['../classcaffe_1_1ConcatLayer.html#ac26a8bdde04bc090183194972d524e09',1,'caffe::ConcatLayer::Backward_gpu()'],['../classcaffe_1_1ContrastiveLossLayer.html#a1501e5437e3f0929da03a1046559dd06',1,'caffe::ContrastiveLossLayer::Backward_gpu()'],['../classcaffe_1_1ConvolutionLayer.html#a2584d7e32e5bb3a9f959aed8e5086575',1,'caffe::ConvolutionLayer::Backward_gpu()'],['../classcaffe_1_1CropLayer.html#a5797567b3f3c31a4b59b636f80c0040e',1,'caffe::CropLayer::Backward_gpu()'],['../classcaffe_1_1DeconvolutionLayer.html#ab7c4889f3460d4ca2c291c2d10de0d98',1,'caffe::DeconvolutionLayer::Backward_gpu()'],['../classcaffe_1_1DropoutLayer.html#a018a322f4e9e2604d9d55d9c85512600',1,'caffe::DropoutLayer::Backward_gpu()'],['../classcaffe_1_1DummyDataLayer.html#a6e9d7a207d517c4e6727e6f9792c414c',1,'caffe::DummyDataLayer::Backward_gpu()'],['../classcaffe_1_1EltwiseLayer.html#a105035776ca3c3d81957e86eff6a54b0',1,'caffe::EltwiseLayer::Backward_gpu()'],['../classcaffe_1_1ELULayer.html#a0dc9a42bb095c77df19118da60198a1e',1,'caffe::ELULayer::Backward_gpu()'],['../classcaffe_1_1EmbedLayer.html#a87bab7b95ab417077a06cf8ad329f908',1,'caffe::EmbedLayer::Backward_gpu()'],['../classcaffe_1_1EuclideanLossLayer.html#aa22a0ef4e0ab9d6a77be67c3d967b648',1,'caffe::EuclideanLossLayer::Backward_gpu()'],['../classcaffe_1_1ExpLayer.html#aa5c6dde86812f0103ab153293c0f68b0',1,'caffe::ExpLayer::Backward_gpu()'],['../classcaffe_1_1FilterLayer.html#a3114666280a8c406779753525c4846c7',1,'caffe::FilterLayer::Backward_gpu()'],['../classcaffe_1_1HDF5DataLayer.html#af8bba12ab79b135944ab57ac58ff2128',1,'caffe::HDF5DataLayer::Backward_gpu()'],['../classcaffe_1_1HDF5OutputLayer.html#a7b6f29bc5aaaf64bf90206c01f34ac4f',1,'caffe::HDF5OutputLayer::Backward_gpu()'],['../classcaffe_1_1Im2colLayer.html#a7424d962a0a88bb5a44454a836c46f5f',1,'caffe::Im2colLayer::Backward_gpu()'],['../classcaffe_1_1InnerProductLayer.html#af91de30f371ece2c02da28bbc963bec9',1,'caffe::InnerProductLayer::Backward_gpu()'],['../classcaffe_1_1LogLayer.html#ac31070a5303ee3e4c04b01326cb0c40a',1,'caffe::LogLayer::Backward_gpu()'],['../classcaffe_1_1LRNLayer.html#a11e0ab3313651275345a043bf2321f95',1,'caffe::LRNLayer::Backward_gpu()'],['../classcaffe_1_1LSTMUnitLayer.html#ad89dd388a2e1067d654d866436508964',1,'caffe::LSTMUnitLayer::Backward_gpu()'],['../classcaffe_1_1MVNLayer.html#a8fa79d2ac331d8b49d390df3a83d43d4',1,'caffe::MVNLayer::Backward_gpu()'],['../classcaffe_1_1PoolingLayer.html#a8c81922065487a94b8159815f77c5e62',1,'caffe::PoolingLayer::Backward_gpu()'],['../classcaffe_1_1PowerLayer.html#a72c15e7b1a1907746bf74db86435d181',1,'caffe::PowerLayer::Backward_gpu()'],['../classcaffe_1_1PReLULayer.html#a16aa9d25c3ba6af789a7e1fee8ae1dfa',1,'caffe::PReLULayer::Backward_gpu()'],['../classcaffe_1_1ReductionLayer.html#aca954f31af8b853bce619eef3f3027e8',1,'caffe::ReductionLayer::Backward_gpu()'],['../classcaffe_1_1ReLULayer.html#a292000d3ed5d63a5a28b5a580fffc61b',1,'caffe::ReLULayer::Backward_gpu()'],['../classcaffe_1_1ReshapeLayer.html#a7f433223bdd7d5e8aa9e73ee9dbea836',1,'caffe::ReshapeLayer::Backward_gpu()'],['../classcaffe_1_1ScaleLayer.html#aa0a2e96ec16cc61a2d8a9d47b729bee4',1,'caffe::ScaleLayer::Backward_gpu()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#a3e1aa9138092aad788dc72fef27041f2',1,'caffe::SigmoidCrossEntropyLossLayer::Backward_gpu()'],['../classcaffe_1_1SigmoidLayer.html#af3043b2aee3cb29727a70f0a5265d84b',1,'caffe::SigmoidLayer::Backward_gpu()'],['../classcaffe_1_1SilenceLayer.html#a803c2b6a1064e885ef5f7bd08eabab55',1,'caffe::SilenceLayer::Backward_gpu()'],['../classcaffe_1_1SliceLayer.html#a6daa65218a8bfaa3337800730ba67977',1,'caffe::SliceLayer::Backward_gpu()'],['../classcaffe_1_1SoftmaxLayer.html#aaade0af85fe0565f788164f3e92ee919',1,'caffe::SoftmaxLayer::Backward_gpu()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#ac6ae6482673cab4933ceb67972f80ee7',1,'caffe::SoftmaxWithLossLayer::Backward_gpu()'],['../classcaffe_1_1SplitLayer.html#adfdd98a92c7e0eed33c1fa77d2852a33',1,'caffe::SplitLayer::Backward_gpu()'],['../classcaffe_1_1TanHLayer.html#a168f97ed32aaf7b67d75868f46229db1',1,'caffe::TanHLayer::Backward_gpu()'],['../classcaffe_1_1TileLayer.html#ad8ed67bfc8dad624a42a874897714cb2',1,'caffe::TileLayer::Backward_gpu()']]], + ['backwarddebuginfo',['BackwardDebugInfo',['../classcaffe_1_1Net.html#a0ddec52928f0488e1b1136a0d72db0a1',1,'caffe::Net']]], + ['baseconvolutionlayer',['BaseConvolutionLayer',['../classcaffe_1_1BaseConvolutionLayer.html',1,'caffe']]], + ['basedatalayer',['BaseDataLayer',['../classcaffe_1_1BaseDataLayer.html',1,'caffe']]], + ['baseprefetchingdatalayer',['BasePrefetchingDataLayer',['../classcaffe_1_1BasePrefetchingDataLayer.html',1,'caffe']]], + ['batch',['Batch',['../classcaffe_1_1Batch.html',1,'caffe']]], + ['batchnormlayer',['BatchNormLayer',['../classcaffe_1_1BatchNormLayer.html',1,'caffe']]], + ['batchreindexlayer',['BatchReindexLayer',['../classcaffe_1_1BatchReindexLayer.html',1,'caffe']]], + ['biaslayer',['BiasLayer',['../classcaffe_1_1BiasLayer.html',1,'caffe']]], + ['bilinearfiller',['BilinearFiller',['../classcaffe_1_1BilinearFiller.html',1,'caffe']]], + ['blob',['Blob',['../classcaffe_1_1Blob.html',1,'caffe']]], + ['blob',['Blob',['../classcaffe_1_1Blob.html#a379df830aad9b3cae253e1ddb0863844',1,'caffe::Blob']]], + ['blob_3c_20int_20_3e',['Blob< int >',['../classcaffe_1_1Blob.html',1,'caffe']]], + ['blob_3c_20unsigned_20int_20_3e',['Blob< unsigned int >',['../classcaffe_1_1Blob.html',1,'caffe']]], + ['blob_5floss_5fweights_5f',['blob_loss_weights_',['../classcaffe_1_1Net.html#a3eef6ff47640210c6d8d6affb1fd86f8',1,'caffe::Net']]], + ['blob_5fnames',['blob_names',['../classcaffe_1_1Net.html#aeaf1e942f1552b9c48bd9e834ede20e6',1,'caffe::Net']]], + ['blobs',['blobs',['../classcaffe_1_1Layer.html#aaf4524ce8641a30a8a4784aee1b2b4c8',1,'caffe::Layer::blobs()'],['../classcaffe_1_1Net.html#ab64573aa9187fb7540825d9338807a79',1,'caffe::Net::blobs()']]], + ['blobs_5f',['blobs_',['../classcaffe_1_1Layer.html#a8073fcf2c139b47eb99ce71b346b1321',1,'caffe::Layer::blobs_()'],['../classcaffe_1_1Net.html#ab033c0574fcbf1e67e22b9682677c64d',1,'caffe::Net::blobs_()']]], + ['blockingqueue',['BlockingQueue',['../classcaffe_1_1BlockingQueue.html',1,'caffe']]], + ['blockingqueue_3c_20caffe_3a_3abatch_3c_20dtype_20_3e_20_2a_3e',['BlockingQueue< caffe::Batch< Dtype > *>',['../classcaffe_1_1BlockingQueue.html',1,'caffe']]], + ['blockingqueue_3c_20caffe_3a_3ap2psync_3c_20dtype_20_3e_20_2a_3e',['BlockingQueue< caffe::P2PSync< Dtype > *>',['../classcaffe_1_1BlockingQueue.html',1,'caffe']]], + ['blockingqueue_3c_20datum_20_2a_3e',['BlockingQueue< Datum *>',['../classcaffe_1_1BlockingQueue.html',1,'caffe']]], + ['blockingqueue_3c_20shared_5fptr_3c_20caffe_3a_3adatareader_3a_3aqueuepair_20_3e_20_3e',['BlockingQueue< shared_ptr< caffe::DataReader::QueuePair > >',['../classcaffe_1_1BlockingQueue.html',1,'caffe']]], + ['bnlllayer',['BNLLLayer',['../classcaffe_1_1BNLLLayer.html',1,'caffe']]], + ['body',['Body',['../classcaffe_1_1DataReader_1_1Body.html',1,'caffe::DataReader']]], + ['boost',['boost',['../namespaceboost.html',1,'']]], + ['bottom_5fids',['bottom_ids',['../classcaffe_1_1Net.html#a7ccd2bf8a1684171b7d7603cf20c0251',1,'caffe::Net']]], + ['bottom_5fvecs',['bottom_vecs',['../classcaffe_1_1Net.html#a25c25c31ddf7a78c7dfded318798764c',1,'caffe::Net']]], + ['bottom_5fvecs_5f',['bottom_vecs_',['../classcaffe_1_1Net.html#ac5bf2007047f749d9d111b0dfa220afc',1,'caffe::Net']]] +]; diff --git a/doxygen/search/all_10.html b/doxygen/search/all_10.html new file mode 100644 index 00000000000..16ffd9a0c0d --- /dev/null +++ b/doxygen/search/all_10.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/all_10.js b/doxygen/search/all_10.js new file mode 100644 index 00000000000..e9820c46017 --- /dev/null +++ b/doxygen/search/all_10.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['rand',['Rand',['../classcaffe_1_1DataTransformer.html#ac3e52731074a73b05ff0527d2febc8f2',1,'caffe::DataTransformer']]], + ['rand_5fvec_5f',['rand_vec_',['../classcaffe_1_1DropoutLayer.html#a7a2c28420611a960a964e56acdbe2b47',1,'caffe::DropoutLayer']]], + ['recurrentinputblobnames',['RecurrentInputBlobNames',['../classcaffe_1_1LSTMLayer.html#a03c6f191bd5a314981514b9bbd3ce450',1,'caffe::LSTMLayer::RecurrentInputBlobNames()'],['../classcaffe_1_1RecurrentLayer.html#a9d9dab800f838e38651678718adfbbf6',1,'caffe::RecurrentLayer::RecurrentInputBlobNames()'],['../classcaffe_1_1RNNLayer.html#a1d753540adb5718db6b66e0aa2c0c4fb',1,'caffe::RNNLayer::RecurrentInputBlobNames()']]], + ['recurrentinputshapes',['RecurrentInputShapes',['../classcaffe_1_1LSTMLayer.html#ab3978704db58d6f2a43d3cfccec9853b',1,'caffe::LSTMLayer::RecurrentInputShapes()'],['../classcaffe_1_1RecurrentLayer.html#ad2c2427c11960e0b8961c31ff2f74c03',1,'caffe::RecurrentLayer::RecurrentInputShapes()'],['../classcaffe_1_1RNNLayer.html#a586b4a2bb8959315d55c34704325bae6',1,'caffe::RNNLayer::RecurrentInputShapes()']]], + ['recurrentlayer',['RecurrentLayer',['../classcaffe_1_1RecurrentLayer.html',1,'caffe']]], + ['recurrentoutputblobnames',['RecurrentOutputBlobNames',['../classcaffe_1_1LSTMLayer.html#a1ea6a5c2801b1463604bc67c4dbf1df1',1,'caffe::LSTMLayer::RecurrentOutputBlobNames()'],['../classcaffe_1_1RecurrentLayer.html#a5fd43ae201c4284a1cc3d93f72702bbe',1,'caffe::RecurrentLayer::RecurrentOutputBlobNames()'],['../classcaffe_1_1RNNLayer.html#a57d105b9599c294d05fe25b8542e1031',1,'caffe::RNNLayer::RecurrentOutputBlobNames()']]], + ['reductionlayer',['ReductionLayer',['../classcaffe_1_1ReductionLayer.html',1,'caffe']]], + ['relulayer',['ReLULayer',['../classcaffe_1_1ReLULayer.html#aa6770fbbfd5e6f564c2ca19de7f7e712',1,'caffe::ReLULayer']]], + ['relulayer',['ReLULayer',['../classcaffe_1_1ReLULayer.html',1,'caffe']]], + ['reshape',['Reshape',['../classcaffe_1_1Blob.html#ad0e0a9a4f49478e89161c6afe4e341a0',1,'caffe::Blob::Reshape(const int num, const int channels, const int height, const int width)'],['../classcaffe_1_1Blob.html#ac9ce456aa623ff3f4d24225a0db14404',1,'caffe::Blob::Reshape(const vector< int > &shape)'],['../classcaffe_1_1Layer.html#a7fe981e8af8d93d587acf2a952be563d',1,'caffe::Layer::Reshape()'],['../classcaffe_1_1AccuracyLayer.html#aa2b680fc1e754440c2babd150e09f2f6',1,'caffe::AccuracyLayer::Reshape()'],['../classcaffe_1_1ArgMaxLayer.html#a291a2c548c28e7ab02ddac0cfd3cbdad',1,'caffe::ArgMaxLayer::Reshape()'],['../classcaffe_1_1BaseConvolutionLayer.html#aa215338f200c832081f2719a54bc5256',1,'caffe::BaseConvolutionLayer::Reshape()'],['../classcaffe_1_1BaseDataLayer.html#a2955d06a5e67609582fb293a0a37673f',1,'caffe::BaseDataLayer::Reshape()'],['../classcaffe_1_1BatchNormLayer.html#a1acd542fe8fe89d88db9050d048fc7d2',1,'caffe::BatchNormLayer::Reshape()'],['../classcaffe_1_1BatchReindexLayer.html#a7f69b6b19387959bf0926dde7a7922a4',1,'caffe::BatchReindexLayer::Reshape()'],['../classcaffe_1_1BiasLayer.html#aff9bd5f76055189c5ec66f43faf17660',1,'caffe::BiasLayer::Reshape()'],['../classcaffe_1_1ConcatLayer.html#a3c7cbd500d3a15cfbdbf33479c4fb228',1,'caffe::ConcatLayer::Reshape()'],['../classcaffe_1_1CropLayer.html#a195d2e437a70b0139411c1dd22b08120',1,'caffe::CropLayer::Reshape()'],['../classcaffe_1_1DropoutLayer.html#a8ddbd583b7430f228506954910935505',1,'caffe::DropoutLayer::Reshape()'],['../classcaffe_1_1DummyDataLayer.html#ae72f2ea80339981bf925f0291f62d527',1,'caffe::DummyDataLayer::Reshape()'],['../classcaffe_1_1EltwiseLayer.html#a17b4cb0842a154224bab9733e77e07b9',1,'caffe::EltwiseLayer::Reshape()'],['../classcaffe_1_1EmbedLayer.html#ac7c19a708d491f9fe161c78348ec794b',1,'caffe::EmbedLayer::Reshape()'],['../classcaffe_1_1EuclideanLossLayer.html#a9cbe90ea0130c31bd5b9419a1bbaa555',1,'caffe::EuclideanLossLayer::Reshape()'],['../classcaffe_1_1FilterLayer.html#ade673aa44e466adbe3aa79531a7c7484',1,'caffe::FilterLayer::Reshape()'],['../classcaffe_1_1FlattenLayer.html#a3b459231a94176753d0cb1ae94bc942f',1,'caffe::FlattenLayer::Reshape()'],['../classcaffe_1_1HDF5DataLayer.html#a38b8924648ba4ab2933fe389fa608cad',1,'caffe::HDF5DataLayer::Reshape()'],['../classcaffe_1_1HDF5OutputLayer.html#afaed17dc14251e627764334d54e55c4d',1,'caffe::HDF5OutputLayer::Reshape()'],['../classcaffe_1_1Im2colLayer.html#a119c9e1965e219be1ccb719821d4542f',1,'caffe::Im2colLayer::Reshape()'],['../classcaffe_1_1InfogainLossLayer.html#a83ed478450bc7f629499fed37f654c5c',1,'caffe::InfogainLossLayer::Reshape()'],['../classcaffe_1_1InnerProductLayer.html#a1c823624ec9286477db7caa5188152b8',1,'caffe::InnerProductLayer::Reshape()'],['../classcaffe_1_1InputLayer.html#a4c2028f829734a202263725d8aa41152',1,'caffe::InputLayer::Reshape()'],['../classcaffe_1_1LossLayer.html#abf00412194f5413ea9468ee44b0d986f',1,'caffe::LossLayer::Reshape()'],['../classcaffe_1_1LRNLayer.html#aa002dacb2f69d2b500227f938a957a81',1,'caffe::LRNLayer::Reshape()'],['../classcaffe_1_1LSTMUnitLayer.html#a795bd455f4635e876de32323e9cee96d',1,'caffe::LSTMUnitLayer::Reshape()'],['../classcaffe_1_1MultinomialLogisticLossLayer.html#a979be47987712c02dfb57a88b2a69f11',1,'caffe::MultinomialLogisticLossLayer::Reshape()'],['../classcaffe_1_1MVNLayer.html#a48aafabe729bb3b22171cfdbda6e6073',1,'caffe::MVNLayer::Reshape()'],['../classcaffe_1_1NeuronLayer.html#a6d0facf4a5e6f459cf1cb8b28d945790',1,'caffe::NeuronLayer::Reshape()'],['../classcaffe_1_1ParameterLayer.html#acc7cf7e2dea7e254717b13980fdf6c1a',1,'caffe::ParameterLayer::Reshape()'],['../classcaffe_1_1PoolingLayer.html#ac652e08deffb0eeb6c3113abb55eb641',1,'caffe::PoolingLayer::Reshape()'],['../classcaffe_1_1PReLULayer.html#a50ad2070e060093556d1fc12f31e33b1',1,'caffe::PReLULayer::Reshape()'],['../classcaffe_1_1PythonLayer.html#aa6597e54cd5fea5b5c7b67299b74a72c',1,'caffe::PythonLayer::Reshape()'],['../classcaffe_1_1RecurrentLayer.html#aba6011a9cbb18e38a8596aa5dbb44723',1,'caffe::RecurrentLayer::Reshape()'],['../classcaffe_1_1ReductionLayer.html#a0f6594ec41a0556e9fcfb9af0ae86c8a',1,'caffe::ReductionLayer::Reshape()'],['../classcaffe_1_1ReshapeLayer.html#a5b85ce44e23b4f958a60ff2b2c43e61f',1,'caffe::ReshapeLayer::Reshape()'],['../classcaffe_1_1ScaleLayer.html#aeafe805a68903bae9a7f2b98bf453e22',1,'caffe::ScaleLayer::Reshape()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#a305423abeea4bd1652ff7e696aaba808',1,'caffe::SigmoidCrossEntropyLossLayer::Reshape()'],['../classcaffe_1_1SilenceLayer.html#a96a47a49a103e60a681f97eff7bf42f2',1,'caffe::SilenceLayer::Reshape()'],['../classcaffe_1_1SliceLayer.html#af9fa49d54abf1cb090cfc772eb4acc4d',1,'caffe::SliceLayer::Reshape()'],['../classcaffe_1_1SoftmaxLayer.html#a756fd5ad3af07d019b5f2247f38b4496',1,'caffe::SoftmaxLayer::Reshape()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a2821b89b0f46a5e2ddaccb2708ab237b',1,'caffe::SoftmaxWithLossLayer::Reshape()'],['../classcaffe_1_1SplitLayer.html#a4e978965461dedcc2fbb905e4910c0b1',1,'caffe::SplitLayer::Reshape()'],['../classcaffe_1_1SPPLayer.html#a3ba65e459c1bde4f772d545efb43a2f2',1,'caffe::SPPLayer::Reshape()'],['../classcaffe_1_1TileLayer.html#a593f5b8342f1b092633d2a1f7e4a6843',1,'caffe::TileLayer::Reshape()'],['../classcaffe_1_1Net.html#a8417af82aa83be45d39aab735bdead1d',1,'caffe::Net::Reshape()']]], + ['reshapelayer',['ReshapeLayer',['../classcaffe_1_1ReshapeLayer.html',1,'caffe']]], + ['rmspropsolver',['RMSPropSolver',['../classcaffe_1_1RMSPropSolver.html',1,'caffe']]], + ['rng',['RNG',['../classcaffe_1_1Caffe_1_1RNG.html',1,'caffe::Caffe']]], + ['rnnlayer',['RNNLayer',['../classcaffe_1_1RNNLayer.html',1,'caffe']]], + ['root_5fnet_5f',['root_net_',['../classcaffe_1_1Net.html#ae416aa859aa21df6ee9db0cd5b988e15',1,'caffe::Net']]] +]; diff --git a/doxygen/search/all_11.html b/doxygen/search/all_11.html new file mode 100644 index 00000000000..d689820da3c --- /dev/null +++ b/doxygen/search/all_11.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/all_11.js b/doxygen/search/all_11.js new file mode 100644 index 00000000000..4002f441532 --- /dev/null +++ b/doxygen/search/all_11.js @@ -0,0 +1,52 @@ +var searchData= +[ + ['scale_5f',['scale_',['../classcaffe_1_1DropoutLayer.html#ac8702c053de0fea389f5a0ded8cdc544',1,'caffe::DropoutLayer::scale_()'],['../classcaffe_1_1PowerLayer.html#a6684b2c6c2b2047d58c9d2809b86c39c',1,'caffe::PowerLayer::scale_()'],['../classcaffe_1_1SoftmaxLayer.html#a22a5348d7a31c512ac9d5dcfc066d4b1',1,'caffe::SoftmaxLayer::scale_()']]], + ['scale_5fdata',['scale_data',['../classcaffe_1_1Blob.html#a535dd556e777f2e13b8c7438f40749a0',1,'caffe::Blob']]], + ['scale_5fdiff',['scale_diff',['../classcaffe_1_1Blob.html#a6d2d83920d961fff033434347f64a3b0',1,'caffe::Blob']]], + ['scalelayer',['ScaleLayer',['../classcaffe_1_1ScaleLayer.html',1,'caffe']]], + ['set_5floss',['set_loss',['../classcaffe_1_1Layer.html#a899b09f4b91ada8545b3a43ee91e0d69',1,'caffe::Layer']]], + ['set_5fparam_5fpropagate_5fdown',['set_param_propagate_down',['../classcaffe_1_1Layer.html#a9a6fcb843803ed556f0a69cc2864379b',1,'caffe::Layer']]], + ['setlossweights',['SetLossWeights',['../classcaffe_1_1Layer.html#a04eb2a3d1d59c64cd64c233217d5d6fc',1,'caffe::Layer']]], + ['setshared',['SetShared',['../classcaffe_1_1Layer.html#a6d4caf38c9f0f31c9c92af1bbefc04e4',1,'caffe::Layer']]], + ['setup',['SetUp',['../classcaffe_1_1Layer.html#a18d6bfdb535ab8e96a971dec4ae39a84',1,'caffe::Layer']]], + ['sgdsolver',['SGDSolver',['../classcaffe_1_1SGDSolver.html',1,'caffe']]], + ['shape',['shape',['../classcaffe_1_1Blob.html#a807f4da98e8e0d1f60badb1f540fe010',1,'caffe::Blob']]], + ['sharedata',['ShareData',['../classcaffe_1_1Blob.html#a8fce5a816a2b9629686db69108610d93',1,'caffe::Blob']]], + ['sharediff',['ShareDiff',['../classcaffe_1_1Blob.html#a004781965b09f94c409cec9a6fc7c35c',1,'caffe::Blob']]], + ['shareinparallel',['ShareInParallel',['../classcaffe_1_1Layer.html#a03c5d6a726e141ff520d36e21f07ffb4',1,'caffe::Layer::ShareInParallel()'],['../classcaffe_1_1BaseDataLayer.html#a7930a9362b8a442cd2bb0b74e486cd05',1,'caffe::BaseDataLayer::ShareInParallel()'],['../classcaffe_1_1DataLayer.html#aa635a59a3a1dea346e5941e5f11849f8',1,'caffe::DataLayer::ShareInParallel()'],['../classcaffe_1_1DummyDataLayer.html#a964cc3d4880456f7e2b69d7d5fd77529',1,'caffe::DummyDataLayer::ShareInParallel()'],['../classcaffe_1_1HDF5DataLayer.html#a02e655b5556653616fc3c9837d177834',1,'caffe::HDF5DataLayer::ShareInParallel()'],['../classcaffe_1_1HDF5OutputLayer.html#a47a335fc0ac97dc79b11b1336cd7f293',1,'caffe::HDF5OutputLayer::ShareInParallel()'],['../classcaffe_1_1InputLayer.html#a2350ca7b0220eb805aab91f4cf2b08a8',1,'caffe::InputLayer::ShareInParallel()'],['../classcaffe_1_1PythonLayer.html#a0968d030265fdda91af057b8ab6db3ca',1,'caffe::PythonLayer::ShareInParallel()']]], + ['sharetrainedlayerswith',['ShareTrainedLayersWith',['../classcaffe_1_1Net.html#a3661ca5f30bf8e731cb54cfc3c320023',1,'caffe::Net']]], + ['shareweights',['ShareWeights',['../classcaffe_1_1Net.html#a4850fdb3eea1b04c97642546c0dcccf7',1,'caffe::Net']]], + ['shift_5f',['shift_',['../classcaffe_1_1PowerLayer.html#a3a3143c4d6735d12cb5a41b1cb623bc9',1,'caffe::PowerLayer']]], + ['sigmoid_5fbottom_5fvec_5f',['sigmoid_bottom_vec_',['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#a52c3183799d44aa9e581992aee502409',1,'caffe::SigmoidCrossEntropyLossLayer']]], + ['sigmoid_5flayer_5f',['sigmoid_layer_',['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#a69e0c8d2106b4b06c7c896e3069f531c',1,'caffe::SigmoidCrossEntropyLossLayer']]], + ['sigmoid_5foutput_5f',['sigmoid_output_',['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#a1eb4c2e90dd4807dbfb0806a411a7bea',1,'caffe::SigmoidCrossEntropyLossLayer']]], + ['sigmoid_5ftop_5fvec_5f',['sigmoid_top_vec_',['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#af6719c9685fcf910129db20cceb47be5',1,'caffe::SigmoidCrossEntropyLossLayer']]], + ['sigmoidcrossentropylosslayer',['SigmoidCrossEntropyLossLayer',['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html',1,'caffe']]], + ['sigmoidlayer',['SigmoidLayer',['../classcaffe_1_1SigmoidLayer.html',1,'caffe']]], + ['signalhandler',['SignalHandler',['../classcaffe_1_1SignalHandler.html',1,'caffe']]], + ['silencelayer',['SilenceLayer',['../classcaffe_1_1SilenceLayer.html',1,'caffe']]], + ['slicelayer',['SliceLayer',['../classcaffe_1_1SliceLayer.html',1,'caffe']]], + ['softmax_5fbottom_5fvec_5f',['softmax_bottom_vec_',['../classcaffe_1_1SoftmaxWithLossLayer.html#aa39f89b673da5e6f86c6b1f79ced1270',1,'caffe::SoftmaxWithLossLayer']]], + ['softmax_5flayer_5f',['softmax_layer_',['../classcaffe_1_1SoftmaxWithLossLayer.html#a886b9e8c044917b03e7d2d04e713a05b',1,'caffe::SoftmaxWithLossLayer']]], + ['softmax_5ftop_5fvec_5f',['softmax_top_vec_',['../classcaffe_1_1SoftmaxWithLossLayer.html#a0fd219e185b46acce8fd74cb71dabf44',1,'caffe::SoftmaxWithLossLayer']]], + ['softmaxlayer',['SoftmaxLayer',['../classcaffe_1_1SoftmaxLayer.html',1,'caffe']]], + ['softmaxwithlosslayer',['SoftmaxWithLossLayer',['../classcaffe_1_1SoftmaxWithLossLayer.html#ac3a01d6846a9b62c1790635d53185e81',1,'caffe::SoftmaxWithLossLayer']]], + ['softmaxwithlosslayer',['SoftmaxWithLossLayer',['../classcaffe_1_1SoftmaxWithLossLayer.html',1,'caffe']]], + ['solver',['Solver',['../classcaffe_1_1Solver.html',1,'caffe']]], + ['solverregisterer',['SolverRegisterer',['../classcaffe_1_1SolverRegisterer.html',1,'caffe']]], + ['solverregistry',['SolverRegistry',['../classcaffe_1_1SolverRegistry.html',1,'caffe']]], + ['split_5flayer_5f',['split_layer_',['../classcaffe_1_1SPPLayer.html#a9312cb2eb190ce25d9269d9319cf5e4b',1,'caffe::SPPLayer']]], + ['split_5ftop_5fvec_5f',['split_top_vec_',['../classcaffe_1_1SPPLayer.html#aa4c2a009d84367e72b98b3b8542e3a0f',1,'caffe::SPPLayer']]], + ['splitlayer',['SplitLayer',['../classcaffe_1_1SplitLayer.html',1,'caffe']]], + ['spplayer',['SPPLayer',['../classcaffe_1_1SPPLayer.html',1,'caffe']]], + ['startinternalthread',['StartInternalThread',['../classcaffe_1_1InternalThread.html#acffc1d9bc9e78f4146ba2d16f593fca7',1,'caffe::InternalThread']]], + ['statemeetsrule',['StateMeetsRule',['../classcaffe_1_1Net.html#a54e8c43fe3a0cd9bbbcfdefd2b1603d2',1,'caffe::Net']]], + ['static_5finput_5f',['static_input_',['../classcaffe_1_1RecurrentLayer.html#a7da45d2f90a99fe6e4250ffa6a533d97',1,'caffe::RecurrentLayer']]], + ['stopinternalthread',['StopInternalThread',['../classcaffe_1_1InternalThread.html#ac72d8e2a23dbbe5203d5003dd67af73e',1,'caffe::InternalThread']]], + ['stride_5f',['stride_',['../classcaffe_1_1BaseConvolutionLayer.html#af638d3d8e67c33443cb11cb000368e73',1,'caffe::BaseConvolutionLayer::stride_()'],['../classcaffe_1_1Im2colLayer.html#afb9baa8216b65a8124d4d1d2b719da0f',1,'caffe::Im2colLayer::stride_()']]], + ['sum_5fmultiplier_5f',['sum_multiplier_',['../classcaffe_1_1MVNLayer.html#ade50bbee48a55e637e8c3e3f44f9618a',1,'caffe::MVNLayer::sum_multiplier_()'],['../classcaffe_1_1ReductionLayer.html#a141288e2904ab45831a6af704561b473',1,'caffe::ReductionLayer::sum_multiplier_()'],['../classcaffe_1_1SoftmaxLayer.html#a3bfc4000b464ab32c73060a2d5c4e426',1,'caffe::SoftmaxLayer::sum_multiplier_()']]], + ['sumsq_5fdata',['sumsq_data',['../classcaffe_1_1Blob.html#a2ea640466fc339a02dabba4e8a1f0de2',1,'caffe::Blob']]], + ['sumsq_5fdiff',['sumsq_diff',['../classcaffe_1_1Blob.html#a2df1894f11323235f9d7c7a1f0fe010f',1,'caffe::Blob']]], + ['sync',['sync',['../classcaffe_1_1BlockingQueue_1_1sync.html',1,'caffe::BlockingQueue']]], + ['syncedmemory',['SyncedMemory',['../classcaffe_1_1SyncedMemory.html',1,'caffe']]] +]; diff --git a/doxygen/search/all_12.html b/doxygen/search/all_12.html new file mode 100644 index 00000000000..698e2c5b634 --- /dev/null +++ b/doxygen/search/all_12.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/all_12.js b/doxygen/search/all_12.js new file mode 100644 index 00000000000..11a15ca96ff --- /dev/null +++ b/doxygen/search/all_12.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['t_5f',['T_',['../classcaffe_1_1RecurrentLayer.html#a02f79bca0ccde7543ecf172b328c860f',1,'caffe::RecurrentLayer']]], + ['tanhlayer',['TanHLayer',['../classcaffe_1_1TanHLayer.html',1,'caffe']]], + ['threshold_5f',['threshold_',['../classcaffe_1_1DropoutLayer.html#a8e9d88e6128a97101c27ce8a11158ca6',1,'caffe::DropoutLayer']]], + ['thresholdlayer',['ThresholdLayer',['../classcaffe_1_1ThresholdLayer.html',1,'caffe']]], + ['thresholdlayer',['ThresholdLayer',['../classcaffe_1_1ThresholdLayer.html#a18883bf3cb9c29828acd59b8216ba1de',1,'caffe::ThresholdLayer']]], + ['tilelayer',['TileLayer',['../classcaffe_1_1TileLayer.html',1,'caffe']]], + ['timer',['Timer',['../classcaffe_1_1Timer.html',1,'caffe']]], + ['tohdf5',['ToHDF5',['../classcaffe_1_1Net.html#ad3ac317bbc872bc6ed48d19f4d986ecc',1,'caffe::Net']]], + ['top_5fids',['top_ids',['../classcaffe_1_1Net.html#a8e42b5eba7886385d2d4b6f457314968',1,'caffe::Net']]], + ['top_5fvecs',['top_vecs',['../classcaffe_1_1Net.html#ad9aace0b6b268d391101f0ce31be9fd1',1,'caffe::Net']]], + ['top_5fvecs_5f',['top_vecs_',['../classcaffe_1_1Net.html#aa834096a02382d9a881bf33694e72564',1,'caffe::Net']]], + ['toproto',['ToProto',['../classcaffe_1_1Layer.html#a4a1754828dda22cc8daa2f63377f3579',1,'caffe::Layer::ToProto()'],['../classcaffe_1_1Net.html#a6ce42e3be6f7b495fe2fea85db2e99f8',1,'caffe::Net::ToProto()']]], + ['transaction',['Transaction',['../classcaffe_1_1db_1_1Transaction.html',1,'caffe::db']]], + ['transform',['Transform',['../classcaffe_1_1DataTransformer.html#a1626db49587d506a91e7b70373ace816',1,'caffe::DataTransformer::Transform(const Datum &datum, Blob< Dtype > *transformed_blob)'],['../classcaffe_1_1DataTransformer.html#a082cad626c5f51c9f8d93bb88cca1bd0',1,'caffe::DataTransformer::Transform(const vector< Datum > &datum_vector, Blob< Dtype > *transformed_blob)'],['../classcaffe_1_1DataTransformer.html#a168abf1bf9466420da6968178c6edb4d',1,'caffe::DataTransformer::Transform(Blob< Dtype > *input_blob, Blob< Dtype > *transformed_blob)']]], + ['transpose_5f',['transpose_',['../classcaffe_1_1InnerProductLayer.html#a3d881acc0f3bbfb2edb37576592d5c14',1,'caffe::InnerProductLayer']]], + ['type',['type',['../classcaffe_1_1Layer.html#a8952bff6bc4c2a96d8ea30d8ff65b198',1,'caffe::Layer::type()'],['../classcaffe_1_1AbsValLayer.html#aae782c69f757eacf4cec30131726e29d',1,'caffe::AbsValLayer::type()'],['../classcaffe_1_1AccuracyLayer.html#a6039b0528a2017c4f9d32ad2c67a9ef2',1,'caffe::AccuracyLayer::type()'],['../classcaffe_1_1ArgMaxLayer.html#af4826eb75118ddf465b7c2ab99b10b45',1,'caffe::ArgMaxLayer::type()'],['../classcaffe_1_1BatchNormLayer.html#a58c9860015d3527ba1df35520a9d9cfc',1,'caffe::BatchNormLayer::type()'],['../classcaffe_1_1BatchReindexLayer.html#ab2a8d8b1a7953ca031d7638f1223b6c7',1,'caffe::BatchReindexLayer::type()'],['../classcaffe_1_1BiasLayer.html#a5d2e82265dde2cda44e30c052babef9b',1,'caffe::BiasLayer::type()'],['../classcaffe_1_1BNLLLayer.html#a6a44de21163e4a9bead5bc5b2851d191',1,'caffe::BNLLLayer::type()'],['../classcaffe_1_1ConcatLayer.html#a3e7f83937180cbf11c60146b44b1a044',1,'caffe::ConcatLayer::type()'],['../classcaffe_1_1ContrastiveLossLayer.html#ab88839b44729c1bd11de97a44011aaa9',1,'caffe::ContrastiveLossLayer::type()'],['../classcaffe_1_1ConvolutionLayer.html#a43668ecdc0a579dd44fd9efbdfa076a9',1,'caffe::ConvolutionLayer::type()'],['../classcaffe_1_1CropLayer.html#af2261efb4a0861a1db4f8620fe4914de',1,'caffe::CropLayer::type()'],['../classcaffe_1_1DataLayer.html#a6a5198f51cb51854be3d2d1e7891eeae',1,'caffe::DataLayer::type()'],['../classcaffe_1_1DeconvolutionLayer.html#acc0d5ad1c1c4f20e6bdca42fc37fbfe3',1,'caffe::DeconvolutionLayer::type()'],['../classcaffe_1_1DropoutLayer.html#a95456634a033d94c23ef0db3679ccbc9',1,'caffe::DropoutLayer::type()'],['../classcaffe_1_1DummyDataLayer.html#ac41023bacefdb067d6ab153f10e486d4',1,'caffe::DummyDataLayer::type()'],['../classcaffe_1_1EltwiseLayer.html#a2942edf636e0a740d718781325912693',1,'caffe::EltwiseLayer::type()'],['../classcaffe_1_1ELULayer.html#a438ef94c0d5040335f5b095f0f864f07',1,'caffe::ELULayer::type()'],['../classcaffe_1_1EmbedLayer.html#adf4e7eb6e6fa3722ba00b877f43a96db',1,'caffe::EmbedLayer::type()'],['../classcaffe_1_1EuclideanLossLayer.html#afe52ebbfc18c5cc36e0bdc35445c82e5',1,'caffe::EuclideanLossLayer::type()'],['../classcaffe_1_1ExpLayer.html#a1f99d76f8356e7698f7a2e0f70fa5b85',1,'caffe::ExpLayer::type()'],['../classcaffe_1_1FilterLayer.html#ade903bde57d67d6980b1608bf146fd30',1,'caffe::FilterLayer::type()'],['../classcaffe_1_1FlattenLayer.html#ab136e266a840c618abc3daa12f1b4650',1,'caffe::FlattenLayer::type()'],['../classcaffe_1_1HDF5DataLayer.html#a717c78e3de84c43061f5a6d7421104d1',1,'caffe::HDF5DataLayer::type()'],['../classcaffe_1_1HDF5OutputLayer.html#aebde1cfc48583ce0d2e85ea0542a7077',1,'caffe::HDF5OutputLayer::type()'],['../classcaffe_1_1HingeLossLayer.html#a9bee53540accf1ad93e68bfcf0302c1f',1,'caffe::HingeLossLayer::type()'],['../classcaffe_1_1Im2colLayer.html#a8f3b31bc7134edbc8e3286b2c65e294e',1,'caffe::Im2colLayer::type()'],['../classcaffe_1_1ImageDataLayer.html#ac856b2705f2b8f46669d66c7cca2e9ed',1,'caffe::ImageDataLayer::type()'],['../classcaffe_1_1InfogainLossLayer.html#aada26ffd60207582fe2af602004e271b',1,'caffe::InfogainLossLayer::type()'],['../classcaffe_1_1InnerProductLayer.html#af10fcfd9a34e23809c4374633c174bee',1,'caffe::InnerProductLayer::type()'],['../classcaffe_1_1InputLayer.html#a44fd054aabf86e5b1e1137c3e9d0f091',1,'caffe::InputLayer::type()'],['../classcaffe_1_1LogLayer.html#aec4c7354215da16156bdc3c966ba311f',1,'caffe::LogLayer::type()'],['../classcaffe_1_1LRNLayer.html#aaa924f8eed5e6300efdb6bc594a29497',1,'caffe::LRNLayer::type()'],['../classcaffe_1_1LSTMLayer.html#a971791d82dee1ec9cdd0625ee1579e22',1,'caffe::LSTMLayer::type()'],['../classcaffe_1_1LSTMUnitLayer.html#a684fc0eb2d2277651b26609ec7314747',1,'caffe::LSTMUnitLayer::type()'],['../classcaffe_1_1MemoryDataLayer.html#a374835f9df814ef78e3f4a4d640f0d35',1,'caffe::MemoryDataLayer::type()'],['../classcaffe_1_1MultinomialLogisticLossLayer.html#a024d90a0acee12dbec6c640fe709d5ea',1,'caffe::MultinomialLogisticLossLayer::type()'],['../classcaffe_1_1MVNLayer.html#af32c09dc68d5a12dd2111ff07b373e8a',1,'caffe::MVNLayer::type()'],['../classcaffe_1_1ParameterLayer.html#a420c30294be98af9ad75c27c75a7bae7',1,'caffe::ParameterLayer::type()'],['../classcaffe_1_1PoolingLayer.html#a630cde9866e35304372f3f93d7f6a307',1,'caffe::PoolingLayer::type()'],['../classcaffe_1_1PowerLayer.html#ac6d6a562dc64397092a1216bc20d92d5',1,'caffe::PowerLayer::type()'],['../classcaffe_1_1PReLULayer.html#a9ce1a8cd35e8b7a891f6cb2646fc79b9',1,'caffe::PReLULayer::type()'],['../classcaffe_1_1PythonLayer.html#ab7a2b0dcfcc8dd74794675ce3761e614',1,'caffe::PythonLayer::type()'],['../classcaffe_1_1RecurrentLayer.html#afc0b925b8bf94a795c9ff84f411e70a3',1,'caffe::RecurrentLayer::type()'],['../classcaffe_1_1ReductionLayer.html#aafc754e45877961380a214e5410033ed',1,'caffe::ReductionLayer::type()'],['../classcaffe_1_1ReLULayer.html#ace58f9f5cf8bf4d0b14b24d598914144',1,'caffe::ReLULayer::type()'],['../classcaffe_1_1ReshapeLayer.html#a127379b9839d0f8f464d78cae28a6118',1,'caffe::ReshapeLayer::type()'],['../classcaffe_1_1RNNLayer.html#a4c0d018f595c6627de34555dc0fc553c',1,'caffe::RNNLayer::type()'],['../classcaffe_1_1ScaleLayer.html#a73f354bbf33da4836b4816f4df6bd7cf',1,'caffe::ScaleLayer::type()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#a38dd36e04f37f4692446b057a48e96e1',1,'caffe::SigmoidCrossEntropyLossLayer::type()'],['../classcaffe_1_1SigmoidLayer.html#a820deac6605e5048cd15e00d7602b101',1,'caffe::SigmoidLayer::type()'],['../classcaffe_1_1SilenceLayer.html#a15c82cb3f0f3da19c07cc9878aa8d6cf',1,'caffe::SilenceLayer::type()'],['../classcaffe_1_1SliceLayer.html#a61b1bf3326b7aaa1d984bcb8ce692f43',1,'caffe::SliceLayer::type()'],['../classcaffe_1_1SoftmaxLayer.html#ab2481d025d184bff73c6ae5a5fa29ac1',1,'caffe::SoftmaxLayer::type()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a79aad991f6c56097068ccca031f1288a',1,'caffe::SoftmaxWithLossLayer::type()'],['../classcaffe_1_1SplitLayer.html#a69113b39e1f3f1ad83b5765496fcdb35',1,'caffe::SplitLayer::type()'],['../classcaffe_1_1SPPLayer.html#aafd1daca2ac42380582cad761bc6d57b',1,'caffe::SPPLayer::type()'],['../classcaffe_1_1TanHLayer.html#aab1526c84cd67d0de49bf2a1ee6b1bf6',1,'caffe::TanHLayer::type()'],['../classcaffe_1_1ThresholdLayer.html#ad1be0a529b7f18cc483115afe845ed59',1,'caffe::ThresholdLayer::type()'],['../classcaffe_1_1TileLayer.html#a1ef109677c3dd7fb9963a69c633585e8',1,'caffe::TileLayer::type()'],['../classcaffe_1_1WindowDataLayer.html#abbe9d7bd1141bf0492eeca4bb1d7b7c3',1,'caffe::WindowDataLayer::type()'],['../classcaffe_1_1SGDSolver.html#afea4a316da9b743353d6d381d3ffce24',1,'caffe::SGDSolver::type()'],['../classcaffe_1_1NesterovSolver.html#a034bfdd0f75b9f29ec0b61393aea8387',1,'caffe::NesterovSolver::type()'],['../classcaffe_1_1AdaGradSolver.html#a8d1731c3c53568344ba2745e3d9aa8d9',1,'caffe::AdaGradSolver::type()'],['../classcaffe_1_1RMSPropSolver.html#a3be4ffd28e5aed1e2c02c5f9225986ba',1,'caffe::RMSPropSolver::type()'],['../classcaffe_1_1AdaDeltaSolver.html#a645d215770c417a00f9d38482adb2ec0',1,'caffe::AdaDeltaSolver::type()'],['../classcaffe_1_1AdamSolver.html#a3ad927ab9d19ebf2fe2b8a2e9101cb3e',1,'caffe::AdamSolver::type()'],['../classcaffe_1_1Solver.html#a733bef9a2e7dea29f52ed46a922d96f7',1,'caffe::Solver::type()']]] +]; diff --git a/doxygen/search/all_13.html b/doxygen/search/all_13.html new file mode 100644 index 00000000000..516a9b63456 --- /dev/null +++ b/doxygen/search/all_13.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/all_13.js b/doxygen/search/all_13.js new file mode 100644 index 00000000000..c58336dcef9 --- /dev/null +++ b/doxygen/search/all_13.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['uniformfiller',['UniformFiller',['../classcaffe_1_1UniformFiller.html',1,'caffe']]], + ['unrolled_5fnet_5f',['unrolled_net_',['../classcaffe_1_1RecurrentLayer.html#aa9b6cb6658e3bc8bfdf39441e751919a',1,'caffe::RecurrentLayer']]], + ['update',['Update',['../classcaffe_1_1Net.html#a8a2544cefc59d6cbe1bf634f5d5be1c5',1,'caffe::Net']]], + ['updatedebuginfo',['UpdateDebugInfo',['../classcaffe_1_1Net.html#a93a439c92c9218f1dfff16f76d617faa',1,'caffe::Net']]] +]; diff --git a/doxygen/search/all_14.html b/doxygen/search/all_14.html new file mode 100644 index 00000000000..6f35c2831f4 --- /dev/null +++ b/doxygen/search/all_14.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/all_14.js b/doxygen/search/all_14.js new file mode 100644 index 00000000000..6df67cc68f5 --- /dev/null +++ b/doxygen/search/all_14.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['width',['width',['../classcaffe_1_1Blob.html#afbdc067c69e6b9bd6880a73c13db2ec6',1,'caffe::Blob']]], + ['windowdatalayer',['WindowDataLayer',['../classcaffe_1_1WindowDataLayer.html',1,'caffe']]], + ['workersolver',['WorkerSolver',['../classcaffe_1_1WorkerSolver.html',1,'caffe']]] +]; diff --git a/doxygen/search/all_15.html b/doxygen/search/all_15.html new file mode 100644 index 00000000000..05b90eafe96 --- /dev/null +++ b/doxygen/search/all_15.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/all_15.js b/doxygen/search/all_15.js new file mode 100644 index 00000000000..c34a910afad --- /dev/null +++ b/doxygen/search/all_15.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['xavierfiller',['XavierFiller',['../classcaffe_1_1XavierFiller.html',1,'caffe']]] +]; diff --git a/doxygen/search/all_2.html b/doxygen/search/all_2.html new file mode 100644 index 00000000000..0f777c2993c --- /dev/null +++ b/doxygen/search/all_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/all_2.js b/doxygen/search/all_2.js new file mode 100644 index 00000000000..5a5facac03c --- /dev/null +++ b/doxygen/search/all_2.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['caffe',['Caffe',['../classcaffe_1_1Caffe.html',1,'caffe']]], + ['caffe',['caffe',['../namespacecaffe.html',1,'']]], + ['callback',['Callback',['../classcaffe_1_1Solver_1_1Callback.html',1,'caffe::Solver']]], + ['canonicalaxisindex',['CanonicalAxisIndex',['../classcaffe_1_1Blob.html#ad686f5ed9994046f2c741bfa81118509',1,'caffe::Blob']]], + ['channels',['channels',['../classcaffe_1_1Blob.html#ae48c8e9f0a0b66b041e47bf37ed04471',1,'caffe::Blob']]], + ['checkblobcounts',['CheckBlobCounts',['../classcaffe_1_1Layer.html#a55c8036130225fbc874a986bdf4b27e2',1,'caffe::Layer']]], + ['clearparamdiffs',['ClearParamDiffs',['../classcaffe_1_1Net.html#a3d251c397f812a6d8e162db3a82bb198',1,'caffe::Net']]], + ['coeff_5f',['coeff_',['../classcaffe_1_1ReductionLayer.html#a7aeb19ec25f01d4df995ba2122fbfeb3',1,'caffe::ReductionLayer']]], + ['col_5fbuffer_5fshape_5f',['col_buffer_shape_',['../classcaffe_1_1BaseConvolutionLayer.html#a9dd3f4ea6e17fe155efe537c120a3de4',1,'caffe::BaseConvolutionLayer']]], + ['concat_5fbottom_5fvec_5f',['concat_bottom_vec_',['../classcaffe_1_1SPPLayer.html#a2874ca5b0c4d8f7d970c5a30768d2bc0',1,'caffe::SPPLayer']]], + ['concat_5flayer_5f',['concat_layer_',['../classcaffe_1_1SPPLayer.html#a02a9d50a48983fa0c6e42cafa85c1eb8',1,'caffe::SPPLayer']]], + ['concatlayer',['ConcatLayer',['../classcaffe_1_1ConcatLayer.html',1,'caffe']]], + ['constant_5fcount_5f',['constant_count_',['../classcaffe_1_1ReshapeLayer.html#abbb071bc8398e2b0442302e51c644c28',1,'caffe::ReshapeLayer']]], + ['constantfiller',['ConstantFiller',['../classcaffe_1_1ConstantFiller.html',1,'caffe']]], + ['contrastivelosslayer',['ContrastiveLossLayer',['../classcaffe_1_1ContrastiveLossLayer.html',1,'caffe']]], + ['conv_5finput_5fshape_5f',['conv_input_shape_',['../classcaffe_1_1BaseConvolutionLayer.html#a63756d6ef00f6491939e539094c21397',1,'caffe::BaseConvolutionLayer']]], + ['convolutionlayer',['ConvolutionLayer',['../classcaffe_1_1ConvolutionLayer.html#ad27360afd7729001b9e4f1d8c8401866',1,'caffe::ConvolutionLayer']]], + ['convolutionlayer',['ConvolutionLayer',['../classcaffe_1_1ConvolutionLayer.html',1,'caffe']]], + ['copy_5faxes_5f',['copy_axes_',['../classcaffe_1_1ReshapeLayer.html#ace08e8747c8d4562fbc26ca789681a4a',1,'caffe::ReshapeLayer']]], + ['copyfrom',['CopyFrom',['../classcaffe_1_1Blob.html#a64ad51f99e88233f43a21a85ebe10284',1,'caffe::Blob']]], + ['copytrainedlayersfrom',['CopyTrainedLayersFrom',['../classcaffe_1_1Net.html#a4ac2b69748470f54d530bc5dfa05b9c3',1,'caffe::Net']]], + ['count',['count',['../classcaffe_1_1Blob.html#a8674686a97c961b309b4420ead6626b5',1,'caffe::Blob::count(int start_axis, int end_axis) const'],['../classcaffe_1_1Blob.html#aab573b2a70c26bf3b2ae65e42706003e',1,'caffe::Blob::count(int start_axis) const']]], + ['cputimer',['CPUTimer',['../classcaffe_1_1CPUTimer.html',1,'caffe']]], + ['croplayer',['CropLayer',['../classcaffe_1_1CropLayer.html',1,'caffe']]], + ['cursor',['Cursor',['../classcaffe_1_1db_1_1Cursor.html',1,'caffe::db']]], + ['solveraction',['SolverAction',['../namespacecaffe_1_1SolverAction.html',1,'caffe']]] +]; diff --git a/doxygen/search/all_3.html b/doxygen/search/all_3.html new file mode 100644 index 00000000000..ac9dbf9fe87 --- /dev/null +++ b/doxygen/search/all_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/all_3.js b/doxygen/search/all_3.js new file mode 100644 index 00000000000..d8ab8326424 --- /dev/null +++ b/doxygen/search/all_3.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['datalayer',['DataLayer',['../classcaffe_1_1DataLayer.html',1,'caffe']]], + ['datareader',['DataReader',['../classcaffe_1_1DataReader.html',1,'caffe']]], + ['datatransformer',['DataTransformer',['../classcaffe_1_1DataTransformer.html',1,'caffe']]], + ['db',['DB',['../classcaffe_1_1db_1_1DB.html',1,'caffe::db']]], + ['debug_5finfo_5f',['debug_info_',['../classcaffe_1_1Net.html#addc4e5501070ede24155d4c1bf9928a2',1,'caffe::Net']]], + ['deconvolutionlayer',['DeconvolutionLayer',['../classcaffe_1_1DeconvolutionLayer.html',1,'caffe']]], + ['devicepair',['DevicePair',['../classcaffe_1_1DevicePair.html',1,'caffe']]], + ['diff_5fscale_5f',['diff_scale_',['../classcaffe_1_1PowerLayer.html#aa83169eaa1b573137aa6ed2b526879f0',1,'caffe::PowerLayer']]], + ['dilation_5f',['dilation_',['../classcaffe_1_1BaseConvolutionLayer.html#a91f929109b5c05ba6086d4c2a741ad4a',1,'caffe::BaseConvolutionLayer::dilation_()'],['../classcaffe_1_1Im2colLayer.html#a3420f6068a4befb3b0ed1ffe5ff0e84c',1,'caffe::Im2colLayer::dilation_()']]], + ['dim_5f',['dim_',['../classcaffe_1_1ReductionLayer.html#a5d0cdd8ca00e6bbd425a51bef2214a7e',1,'caffe::ReductionLayer']]], + ['dropoutlayer',['DropoutLayer',['../classcaffe_1_1DropoutLayer.html',1,'caffe']]], + ['dropoutlayer',['DropoutLayer',['../classcaffe_1_1DropoutLayer.html#a24cbddd4699b102a9555d3b8013c16d0',1,'caffe::DropoutLayer']]], + ['dummydatalayer',['DummyDataLayer',['../classcaffe_1_1DummyDataLayer.html',1,'caffe']]] +]; diff --git a/doxygen/search/all_4.html b/doxygen/search/all_4.html new file mode 100644 index 00000000000..8308168cd29 --- /dev/null +++ b/doxygen/search/all_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/all_4.js b/doxygen/search/all_4.js new file mode 100644 index 00000000000..200292d267b --- /dev/null +++ b/doxygen/search/all_4.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['eltwiselayer',['EltwiseLayer',['../classcaffe_1_1EltwiseLayer.html',1,'caffe']]], + ['elulayer',['ELULayer',['../classcaffe_1_1ELULayer.html',1,'caffe']]], + ['elulayer',['ELULayer',['../classcaffe_1_1ELULayer.html#af0b475c3d3b68f6daf7e2edcb7d5b97a',1,'caffe::ELULayer']]], + ['embedlayer',['EmbedLayer',['../classcaffe_1_1EmbedLayer.html',1,'caffe']]], + ['equalnumbottomtopblobs',['EqualNumBottomTopBlobs',['../classcaffe_1_1Layer.html#af452a938bc7596f9b5e9900c8dc4ab3d',1,'caffe::Layer::EqualNumBottomTopBlobs()'],['../classcaffe_1_1BaseConvolutionLayer.html#ad8e839460bf52abe3df2008b99a1810d',1,'caffe::BaseConvolutionLayer::EqualNumBottomTopBlobs()']]], + ['euclideanlosslayer',['EuclideanLossLayer',['../classcaffe_1_1EuclideanLossLayer.html',1,'caffe']]], + ['exactnumbottomblobs',['ExactNumBottomBlobs',['../classcaffe_1_1Layer.html#a8e5ee0494d85f5f55fc4396537cbc60f',1,'caffe::Layer::ExactNumBottomBlobs()'],['../classcaffe_1_1AbsValLayer.html#acac806dbc6d3fa3dd7daae00caabd731',1,'caffe::AbsValLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1AccuracyLayer.html#afb0d3db8e4a18bec0e05d54d11453ef1',1,'caffe::AccuracyLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1ArgMaxLayer.html#a786fb4163cd0a31a564100ce7e4b74b2',1,'caffe::ArgMaxLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1BatchNormLayer.html#a5b87980f25eea544ebff916586c870e6',1,'caffe::BatchNormLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1BatchReindexLayer.html#a4120d2fd610655c7ad3d846637564bc6',1,'caffe::BatchReindexLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1ContrastiveLossLayer.html#aa6f3ad6918e64ffa1828e821accf25e9',1,'caffe::ContrastiveLossLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1CropLayer.html#ac6386917437ef54003bb7f8c2618f5fe',1,'caffe::CropLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1DataLayer.html#a2b6fa99ededf0863d8bab4a7a46addae',1,'caffe::DataLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1DummyDataLayer.html#a73101a8ace6de2b179e36c13be17cb17',1,'caffe::DummyDataLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1EmbedLayer.html#a0634500a12e1d2299b7c8556976e4529',1,'caffe::EmbedLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1FlattenLayer.html#a0b0f583d8952d7cd45cbf4bae2a38548',1,'caffe::FlattenLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1HDF5DataLayer.html#a4eb72974cea32c84acb6b8012a0d326b',1,'caffe::HDF5DataLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1HDF5OutputLayer.html#a92fb5561414d7e8b8845b0279b1ee847',1,'caffe::HDF5OutputLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1Im2colLayer.html#a35772d667af49afe707c7b1db881c573',1,'caffe::Im2colLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1ImageDataLayer.html#a6776c86faf14e35ae7be9848c7012aa5',1,'caffe::ImageDataLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1InfogainLossLayer.html#aa03732f381764180748479c83b289869',1,'caffe::InfogainLossLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1InnerProductLayer.html#a5afdeb6b448b2f7d0637afa554381500',1,'caffe::InnerProductLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1InputLayer.html#ac4c1f2f0444a103727d793a6ae410e67',1,'caffe::InputLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1LossLayer.html#af1620064baefb711e2c767bdc92b6fb1',1,'caffe::LossLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1LRNLayer.html#a32be44f9f361d29f05261bd174d92321',1,'caffe::LRNLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1LSTMUnitLayer.html#a087f5f5b0e6c50d98e7a7d04aa35f1b9',1,'caffe::LSTMUnitLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1MemoryDataLayer.html#a05a867526de7e0c6ec4851a97f52a47b',1,'caffe::MemoryDataLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1MVNLayer.html#afd9b078a1bb48de9b91f3766edbbf058',1,'caffe::MVNLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1NeuronLayer.html#abb6c0e6acd2863baf47d6e6acda6f55f',1,'caffe::NeuronLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1ParameterLayer.html#a0acd33d14dd208c5a439940c50c6d3d3',1,'caffe::ParameterLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1PoolingLayer.html#a07dc8b1c3bfa3a997dd86b4e53f54019',1,'caffe::PoolingLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1ReductionLayer.html#a64694af2e56723590072cac88bf825c7',1,'caffe::ReductionLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1ReshapeLayer.html#ad97ea6043b01351e85b39b512ae0e489',1,'caffe::ReshapeLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1SliceLayer.html#abfc6e86b0b22c156ddc350168cd7757b',1,'caffe::SliceLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1SoftmaxLayer.html#afe44488dde78e6bcf6d4bdad97ee4986',1,'caffe::SoftmaxLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1SplitLayer.html#a8ff310ac37e1e79ce6ef8fbc95be0cd9',1,'caffe::SplitLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1SPPLayer.html#a0fcc7996823cba1a468e82b3f9058ff0',1,'caffe::SPPLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1TileLayer.html#ac7e0da0e543f134e04b00d8625132b71',1,'caffe::TileLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1WindowDataLayer.html#ac982c8170a7f899366321412a7bb91d7',1,'caffe::WindowDataLayer::ExactNumBottomBlobs()']]], + ['exactnumtopblobs',['ExactNumTopBlobs',['../classcaffe_1_1Layer.html#a64e2ca72c719e4b2f1f9216ccfb0d37f',1,'caffe::Layer::ExactNumTopBlobs()'],['../classcaffe_1_1AbsValLayer.html#aaf18bf4b77994475e8b55e5cefaa654a',1,'caffe::AbsValLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ArgMaxLayer.html#a45e9c6e7b572b915be8731fcb6403695',1,'caffe::ArgMaxLayer::ExactNumTopBlobs()'],['../classcaffe_1_1BatchNormLayer.html#ab8575decdd0c5c42e24b9c3424f708ad',1,'caffe::BatchNormLayer::ExactNumTopBlobs()'],['../classcaffe_1_1BatchReindexLayer.html#a7d5c537334359c2a83cce489fb534342',1,'caffe::BatchReindexLayer::ExactNumTopBlobs()'],['../classcaffe_1_1BiasLayer.html#a9552dc137a5bcbdd17bdb3321d678595',1,'caffe::BiasLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ConcatLayer.html#a0f19a4cac8676927f9c83010957a2921',1,'caffe::ConcatLayer::ExactNumTopBlobs()'],['../classcaffe_1_1CropLayer.html#a7e4a9aa634577308bc189adcf0ac22ed',1,'caffe::CropLayer::ExactNumTopBlobs()'],['../classcaffe_1_1EltwiseLayer.html#a60ae4a38cade1cc7f6111e51cabb441b',1,'caffe::EltwiseLayer::ExactNumTopBlobs()'],['../classcaffe_1_1EmbedLayer.html#af02f4561fa25a979e523aae851bed39d',1,'caffe::EmbedLayer::ExactNumTopBlobs()'],['../classcaffe_1_1FlattenLayer.html#a09d5ccd980598cce0472b3bd66316c08',1,'caffe::FlattenLayer::ExactNumTopBlobs()'],['../classcaffe_1_1HDF5OutputLayer.html#ad11b8da0a6217a0f9a63789b360b1c99',1,'caffe::HDF5OutputLayer::ExactNumTopBlobs()'],['../classcaffe_1_1Im2colLayer.html#ab2cf1f7dd41b801ed32471ec492d423c',1,'caffe::Im2colLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ImageDataLayer.html#aa9182d46877b8514fca86e3588249567',1,'caffe::ImageDataLayer::ExactNumTopBlobs()'],['../classcaffe_1_1InnerProductLayer.html#a652d8a5b07b72938a81f50305c1a8ee1',1,'caffe::InnerProductLayer::ExactNumTopBlobs()'],['../classcaffe_1_1LossLayer.html#aa5d5ab714a14082f5343dc9c49025b23',1,'caffe::LossLayer::ExactNumTopBlobs()'],['../classcaffe_1_1LRNLayer.html#ac0ee88b119c38749c50e914521cdc148',1,'caffe::LRNLayer::ExactNumTopBlobs()'],['../classcaffe_1_1LSTMUnitLayer.html#a5f56fd304b6581697cbf309ebb8bc9b7',1,'caffe::LSTMUnitLayer::ExactNumTopBlobs()'],['../classcaffe_1_1MemoryDataLayer.html#af714b4cbc022be1592ad26c300b63ae4',1,'caffe::MemoryDataLayer::ExactNumTopBlobs()'],['../classcaffe_1_1MVNLayer.html#ae10d9ef135adf3cd25e86ce06188c814',1,'caffe::MVNLayer::ExactNumTopBlobs()'],['../classcaffe_1_1NeuronLayer.html#a47ac5e7208e4b14ad1e4040a621dbfbc',1,'caffe::NeuronLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ParameterLayer.html#aeb70ea5cec478f098259356690b01c9b',1,'caffe::ParameterLayer::ExactNumTopBlobs()'],['../classcaffe_1_1RecurrentLayer.html#a4cb9032f0942c0fef5f6c7094c7b2ab8',1,'caffe::RecurrentLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ReductionLayer.html#a14224774af732030c5f1c8a3d79e1fc3',1,'caffe::ReductionLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ReshapeLayer.html#a3318c2404c6072ba07178b48d39ef0f5',1,'caffe::ReshapeLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ScaleLayer.html#aeffb8fcfc522f7365c23b0e6ae5c232e',1,'caffe::ScaleLayer::ExactNumTopBlobs()'],['../classcaffe_1_1SilenceLayer.html#a1e072cbda98dbc57001ce92432b045b8',1,'caffe::SilenceLayer::ExactNumTopBlobs()'],['../classcaffe_1_1SoftmaxLayer.html#a6bc4748c20e0940e5367ed4d50f4a11b',1,'caffe::SoftmaxLayer::ExactNumTopBlobs()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a9035d000b2ce51a973f255a5eb2df8e3',1,'caffe::SoftmaxWithLossLayer::ExactNumTopBlobs()'],['../classcaffe_1_1SPPLayer.html#a345f640e6c1d3e9ee929d706b68300e9',1,'caffe::SPPLayer::ExactNumTopBlobs()'],['../classcaffe_1_1TileLayer.html#a1040cc3b4fb028d54f67a685513d745b',1,'caffe::TileLayer::ExactNumTopBlobs()'],['../classcaffe_1_1WindowDataLayer.html#a7bd9264758f462b3392d2eedec8b1c99',1,'caffe::WindowDataLayer::ExactNumTopBlobs()']]], + ['explayer',['ExpLayer',['../classcaffe_1_1ExpLayer.html#a87a0fae261ad3d2c8947f463686a6de0',1,'caffe::ExpLayer']]], + ['explayer',['ExpLayer',['../classcaffe_1_1ExpLayer.html',1,'caffe']]], + ['expose_5fhidden_5f',['expose_hidden_',['../classcaffe_1_1RecurrentLayer.html#abfafaacb1fece0309e750e0d307fb76e',1,'caffe::RecurrentLayer']]] +]; diff --git a/doxygen/search/all_5.html b/doxygen/search/all_5.html new file mode 100644 index 00000000000..7919cd4d85c --- /dev/null +++ b/doxygen/search/all_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/all_5.js b/doxygen/search/all_5.js new file mode 100644 index 00000000000..4638324d406 --- /dev/null +++ b/doxygen/search/all_5.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['filler',['Filler',['../classcaffe_1_1Filler.html',1,'caffe']]], + ['fillunrollednet',['FillUnrolledNet',['../classcaffe_1_1LSTMLayer.html#a66285fd55798aa17b8d5d0b7f30f8346',1,'caffe::LSTMLayer::FillUnrolledNet()'],['../classcaffe_1_1RecurrentLayer.html#a04a3a032c4d0be559d88865a13a2d927',1,'caffe::RecurrentLayer::FillUnrolledNet()'],['../classcaffe_1_1RNNLayer.html#a2869101eb6b9c472f9d78b9149246729',1,'caffe::RNNLayer::FillUnrolledNet()']]], + ['filterlayer',['FilterLayer',['../classcaffe_1_1FilterLayer.html',1,'caffe']]], + ['filternet',['FilterNet',['../classcaffe_1_1Net.html#a4a38a77b5f01ba4754e6007b9f1214f8',1,'caffe::Net']]], + ['flatten_5flayers_5f',['flatten_layers_',['../classcaffe_1_1SPPLayer.html#a765c32194d96177869e2b9028b1ff0d4',1,'caffe::SPPLayer']]], + ['flatten_5foutputs_5f',['flatten_outputs_',['../classcaffe_1_1SPPLayer.html#afd42f96c91f26fe32427865a16796503',1,'caffe::SPPLayer']]], + ['flatten_5ftop_5fvecs_5f',['flatten_top_vecs_',['../classcaffe_1_1SPPLayer.html#a7460ba8ed098335de91cd8cab363d365',1,'caffe::SPPLayer']]], + ['flattenlayer',['FlattenLayer',['../classcaffe_1_1FlattenLayer.html',1,'caffe']]], + ['forward',['Forward',['../classcaffe_1_1Layer.html#ab57d272dabe8c709d2a785eebe72ca57',1,'caffe::Layer::Forward()'],['../classcaffe_1_1Net.html#a6f6cf9d40637f7576828d856bb1b1826',1,'caffe::Net::Forward(Dtype *loss=NULL)'],['../classcaffe_1_1Net.html#ac78806e7aa069439622de4177323c46c',1,'caffe::Net::Forward(const vector< Blob< Dtype > * > &bottom, Dtype *loss=NULL)']]], + ['forward_5fcpu',['Forward_cpu',['../classcaffe_1_1Layer.html#a576ac6a60b1e99fe383831f52a6cea77',1,'caffe::Layer::Forward_cpu()'],['../classcaffe_1_1AbsValLayer.html#a094d7da8c6d6eeebc7db189f4cd258f9',1,'caffe::AbsValLayer::Forward_cpu()'],['../classcaffe_1_1AccuracyLayer.html#ad61bb4c6984d9df6a61562cd5c19ff6d',1,'caffe::AccuracyLayer::Forward_cpu()'],['../classcaffe_1_1ArgMaxLayer.html#a0e4cb76ff1796b71079f83335f033c44',1,'caffe::ArgMaxLayer::Forward_cpu()'],['../classcaffe_1_1BasePrefetchingDataLayer.html#a21fea2e38602ff125fceafe2feece212',1,'caffe::BasePrefetchingDataLayer::Forward_cpu()'],['../classcaffe_1_1BatchNormLayer.html#ae289cca53d6f5a6803f6377aacfc99e2',1,'caffe::BatchNormLayer::Forward_cpu()'],['../classcaffe_1_1BatchReindexLayer.html#af7de3792af32dc8025c359700bd40b5e',1,'caffe::BatchReindexLayer::Forward_cpu()'],['../classcaffe_1_1BiasLayer.html#abbab2f856ed656aefc4fa7049c77d008',1,'caffe::BiasLayer::Forward_cpu()'],['../classcaffe_1_1BNLLLayer.html#ad85abcd4d6afd609be859f0360525102',1,'caffe::BNLLLayer::Forward_cpu()'],['../classcaffe_1_1ConcatLayer.html#a619c378faa120012f06bfc1065b89ae2',1,'caffe::ConcatLayer::Forward_cpu()'],['../classcaffe_1_1ContrastiveLossLayer.html#ae55966330621c1a2bd5a0012f2b09fe4',1,'caffe::ContrastiveLossLayer::Forward_cpu()'],['../classcaffe_1_1ConvolutionLayer.html#aee44e1abace0f8827db48632b62efc22',1,'caffe::ConvolutionLayer::Forward_cpu()'],['../classcaffe_1_1CropLayer.html#ace1eb45b15e9e9f304966ac13152cb59',1,'caffe::CropLayer::Forward_cpu()'],['../classcaffe_1_1DeconvolutionLayer.html#a32782e43a4e5edaa7743359f49fda563',1,'caffe::DeconvolutionLayer::Forward_cpu()'],['../classcaffe_1_1DropoutLayer.html#af3d3f94306230950edf514e0fbb8f710',1,'caffe::DropoutLayer::Forward_cpu()'],['../classcaffe_1_1DummyDataLayer.html#a4bcc61f06b232601fa4ea4fb4789db2c',1,'caffe::DummyDataLayer::Forward_cpu()'],['../classcaffe_1_1EltwiseLayer.html#aea612d32d1e61df7f7e9bfa2965c0ac4',1,'caffe::EltwiseLayer::Forward_cpu()'],['../classcaffe_1_1ELULayer.html#a041f6109649dfb97dff80c0d6364c20d',1,'caffe::ELULayer::Forward_cpu()'],['../classcaffe_1_1EmbedLayer.html#a142d3411d5c20deafca282d60c9d0975',1,'caffe::EmbedLayer::Forward_cpu()'],['../classcaffe_1_1EuclideanLossLayer.html#a3bc5a947caadac1a352a89b08720c7e7',1,'caffe::EuclideanLossLayer::Forward_cpu()'],['../classcaffe_1_1ExpLayer.html#af623edf2518145ad490baebdda9efe92',1,'caffe::ExpLayer::Forward_cpu()'],['../classcaffe_1_1FilterLayer.html#a67a110cc4062500dcfdb539e3ba9154b',1,'caffe::FilterLayer::Forward_cpu()'],['../classcaffe_1_1FlattenLayer.html#ae42cce73862d196614e1ea9808a3813a',1,'caffe::FlattenLayer::Forward_cpu()'],['../classcaffe_1_1HDF5DataLayer.html#a6ee944e4d80a76a13e955c36f33a2cee',1,'caffe::HDF5DataLayer::Forward_cpu()'],['../classcaffe_1_1HDF5OutputLayer.html#a9bab1f9fd935b4e5f90e6cdb2e86c8c3',1,'caffe::HDF5OutputLayer::Forward_cpu()'],['../classcaffe_1_1HingeLossLayer.html#ab10e623d1ffbef7ba7ceeaf225bca428',1,'caffe::HingeLossLayer::Forward_cpu()'],['../classcaffe_1_1Im2colLayer.html#af011dfac92219df578dea8a30a76bb01',1,'caffe::Im2colLayer::Forward_cpu()'],['../classcaffe_1_1InfogainLossLayer.html#a134b51c126eb4b62fac804965f8d8327',1,'caffe::InfogainLossLayer::Forward_cpu()'],['../classcaffe_1_1InnerProductLayer.html#a52dfe331693c6fa9925f70b53d55ce0e',1,'caffe::InnerProductLayer::Forward_cpu()'],['../classcaffe_1_1InputLayer.html#a0037e83e3052b20280cd508a50c30fe1',1,'caffe::InputLayer::Forward_cpu()'],['../classcaffe_1_1LogLayer.html#a407de9bdb364ed170a73c6eebc74dce9',1,'caffe::LogLayer::Forward_cpu()'],['../classcaffe_1_1LRNLayer.html#a48782b435dbe9f6caba856521d4ea322',1,'caffe::LRNLayer::Forward_cpu()'],['../classcaffe_1_1LSTMUnitLayer.html#ad44e302db28f57bfdfbbbde452deb4fd',1,'caffe::LSTMUnitLayer::Forward_cpu()'],['../classcaffe_1_1MemoryDataLayer.html#a4a573b91dfe4e83cce4bc311355e9af3',1,'caffe::MemoryDataLayer::Forward_cpu()'],['../classcaffe_1_1MultinomialLogisticLossLayer.html#a7192a16a5b051f93d784be269d7bfcb3',1,'caffe::MultinomialLogisticLossLayer::Forward_cpu()'],['../classcaffe_1_1MVNLayer.html#a48344a0a68ba16fb4cc88c13797a65b6',1,'caffe::MVNLayer::Forward_cpu()'],['../classcaffe_1_1ParameterLayer.html#a3e39615f143ecbd12b45eb29701ff2d9',1,'caffe::ParameterLayer::Forward_cpu()'],['../classcaffe_1_1PoolingLayer.html#aef6342f42e3834cb050b7fc19808090f',1,'caffe::PoolingLayer::Forward_cpu()'],['../classcaffe_1_1PowerLayer.html#a3f0196eab7b1f374a4705426d42b0711',1,'caffe::PowerLayer::Forward_cpu()'],['../classcaffe_1_1PReLULayer.html#ab29811e077cc15d6751366d3f918acd6',1,'caffe::PReLULayer::Forward_cpu()'],['../classcaffe_1_1PythonLayer.html#ad6ca840f04bd9a4823260c9e8641224b',1,'caffe::PythonLayer::Forward_cpu()'],['../classcaffe_1_1RecurrentLayer.html#a9f0e34d7534fac027c640e66f55a18d2',1,'caffe::RecurrentLayer::Forward_cpu()'],['../classcaffe_1_1ReductionLayer.html#aa378b271b6082975ae9037f4c530fb7e',1,'caffe::ReductionLayer::Forward_cpu()'],['../classcaffe_1_1ReLULayer.html#ab9c29de12e2fac75843fe97f16fe14ba',1,'caffe::ReLULayer::Forward_cpu()'],['../classcaffe_1_1ReshapeLayer.html#a0529c00e9d2fa47943ba5292cfdcb6db',1,'caffe::ReshapeLayer::Forward_cpu()'],['../classcaffe_1_1ScaleLayer.html#a517d8eb2816c79daa1454ef5c7de065b',1,'caffe::ScaleLayer::Forward_cpu()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#aa3e7f285742d862435d5e49d13e05064',1,'caffe::SigmoidCrossEntropyLossLayer::Forward_cpu()'],['../classcaffe_1_1SigmoidLayer.html#a172178732461d3785b1ca0ad0bbdf1f0',1,'caffe::SigmoidLayer::Forward_cpu()'],['../classcaffe_1_1SilenceLayer.html#addaeabb81732686b6367147395dbf466',1,'caffe::SilenceLayer::Forward_cpu()'],['../classcaffe_1_1SliceLayer.html#add08039f334b7b962883f2cb60dd7051',1,'caffe::SliceLayer::Forward_cpu()'],['../classcaffe_1_1SoftmaxLayer.html#ab3105dbc12da4099090847e1fa4ed356',1,'caffe::SoftmaxLayer::Forward_cpu()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a093493e6f87ee7a411e4c468b5fa9f9c',1,'caffe::SoftmaxWithLossLayer::Forward_cpu()'],['../classcaffe_1_1SplitLayer.html#af8acf13304b849d888510470a76f9e76',1,'caffe::SplitLayer::Forward_cpu()'],['../classcaffe_1_1SPPLayer.html#a8012e099ec860c310a3b9e64c365b872',1,'caffe::SPPLayer::Forward_cpu()'],['../classcaffe_1_1TanHLayer.html#a87e32c406aafb7995e16009e856a818a',1,'caffe::TanHLayer::Forward_cpu()'],['../classcaffe_1_1ThresholdLayer.html#a7aa846dd532cfeb41b09671bd975d120',1,'caffe::ThresholdLayer::Forward_cpu()'],['../classcaffe_1_1TileLayer.html#a08f9c2ae4de617e5a4f03909740a3284',1,'caffe::TileLayer::Forward_cpu()']]], + ['forward_5fgpu',['Forward_gpu',['../classcaffe_1_1Layer.html#af3a88d8fb290877b4c7eb37daa3499de',1,'caffe::Layer::Forward_gpu()'],['../classcaffe_1_1AbsValLayer.html#a12283057a144e9ff648a583de36b7fbd',1,'caffe::AbsValLayer::Forward_gpu()'],['../classcaffe_1_1BasePrefetchingDataLayer.html#a3cc79458a096ec130139b92f4f379aa2',1,'caffe::BasePrefetchingDataLayer::Forward_gpu()'],['../classcaffe_1_1BatchNormLayer.html#ad2d02d7e52628b9ab8de5ba9b93a6ed0',1,'caffe::BatchNormLayer::Forward_gpu()'],['../classcaffe_1_1BatchReindexLayer.html#aa1535f3f9332348dee1a491465f495ed',1,'caffe::BatchReindexLayer::Forward_gpu()'],['../classcaffe_1_1BiasLayer.html#aa767113391a272912043f77d5acccb3e',1,'caffe::BiasLayer::Forward_gpu()'],['../classcaffe_1_1BNLLLayer.html#a1bc9ed3e2ea19df546e070975ddee29b',1,'caffe::BNLLLayer::Forward_gpu()'],['../classcaffe_1_1ConcatLayer.html#ae86c2ad93bac4790fec2c9dcfcba269c',1,'caffe::ConcatLayer::Forward_gpu()'],['../classcaffe_1_1ContrastiveLossLayer.html#abf66587f81d75255e4619c09a95da566',1,'caffe::ContrastiveLossLayer::Forward_gpu()'],['../classcaffe_1_1ConvolutionLayer.html#ae144ebb7d760ed4cfef8ec7bcb8fde22',1,'caffe::ConvolutionLayer::Forward_gpu()'],['../classcaffe_1_1CropLayer.html#a507c00c0d53094e5e885ba9c22028ebb',1,'caffe::CropLayer::Forward_gpu()'],['../classcaffe_1_1DeconvolutionLayer.html#a7cc6c8c75dc09c0e990135a175f84f02',1,'caffe::DeconvolutionLayer::Forward_gpu()'],['../classcaffe_1_1DropoutLayer.html#aec676b1d329ed969ea71b32d595e6201',1,'caffe::DropoutLayer::Forward_gpu()'],['../classcaffe_1_1EltwiseLayer.html#a28e5d5d4c96b091dae743cac1bdded96',1,'caffe::EltwiseLayer::Forward_gpu()'],['../classcaffe_1_1ELULayer.html#adf358202203d0735dff3275d6f668a00',1,'caffe::ELULayer::Forward_gpu()'],['../classcaffe_1_1EmbedLayer.html#a5cb8915c48efcc739211835f6be1a077',1,'caffe::EmbedLayer::Forward_gpu()'],['../classcaffe_1_1EuclideanLossLayer.html#a35f3694e9dd7e1920e26158e761fd8a0',1,'caffe::EuclideanLossLayer::Forward_gpu()'],['../classcaffe_1_1ExpLayer.html#a5e4d78781ca2c27bce9c45601ffdb2ca',1,'caffe::ExpLayer::Forward_gpu()'],['../classcaffe_1_1FilterLayer.html#ae533ee2002b14016ee57daf7a9f6e8d6',1,'caffe::FilterLayer::Forward_gpu()'],['../classcaffe_1_1HDF5DataLayer.html#a9147be08e6e0c9b0300ddad220903fc6',1,'caffe::HDF5DataLayer::Forward_gpu()'],['../classcaffe_1_1HDF5OutputLayer.html#a01983e66527c733011027e86186f0268',1,'caffe::HDF5OutputLayer::Forward_gpu()'],['../classcaffe_1_1Im2colLayer.html#a795d646cb42a7c35e31f0ad2f9afd0f8',1,'caffe::Im2colLayer::Forward_gpu()'],['../classcaffe_1_1InnerProductLayer.html#abee6c2efea84f5124e3745e3c8aeb043',1,'caffe::InnerProductLayer::Forward_gpu()'],['../classcaffe_1_1LogLayer.html#a37ec5bf1dc1a00c1830ec92fcf22fe09',1,'caffe::LogLayer::Forward_gpu()'],['../classcaffe_1_1LRNLayer.html#a7bc44b9640ef0f24e393f77f35df1abb',1,'caffe::LRNLayer::Forward_gpu()'],['../classcaffe_1_1LSTMUnitLayer.html#a20c18c7fe0a8a8fdd6cd700a420ecc1f',1,'caffe::LSTMUnitLayer::Forward_gpu()'],['../classcaffe_1_1MVNLayer.html#a8a4d8c392e4f559f1ac90387b8039015',1,'caffe::MVNLayer::Forward_gpu()'],['../classcaffe_1_1PoolingLayer.html#a9f22c281f8765196b6d113f6a5315409',1,'caffe::PoolingLayer::Forward_gpu()'],['../classcaffe_1_1PowerLayer.html#a0b68dfd6ade0964fcfa58c0997c59db0',1,'caffe::PowerLayer::Forward_gpu()'],['../classcaffe_1_1PReLULayer.html#a5f87617dbd3f561a6f7548dd09d5f486',1,'caffe::PReLULayer::Forward_gpu()'],['../classcaffe_1_1RecurrentLayer.html#afb4cdbb38b24d2a2ccb14cebc4e1018b',1,'caffe::RecurrentLayer::Forward_gpu()'],['../classcaffe_1_1ReductionLayer.html#a54f77eed7da1f4ccf5a10e05efaa7198',1,'caffe::ReductionLayer::Forward_gpu()'],['../classcaffe_1_1ReLULayer.html#abaf3326b871e295c943fc0668b2f5e4e',1,'caffe::ReLULayer::Forward_gpu()'],['../classcaffe_1_1ReshapeLayer.html#a2b75e7b2d96b46b2fbdbab0ff238a1ad',1,'caffe::ReshapeLayer::Forward_gpu()'],['../classcaffe_1_1ScaleLayer.html#abff4005ecb550f54dc86f163ca9f26db',1,'caffe::ScaleLayer::Forward_gpu()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#a3a973821a2a73fd8bf4c2e474b2ad5d8',1,'caffe::SigmoidCrossEntropyLossLayer::Forward_gpu()'],['../classcaffe_1_1SigmoidLayer.html#a197ee39f11f77806565e3938e17dcb63',1,'caffe::SigmoidLayer::Forward_gpu()'],['../classcaffe_1_1SilenceLayer.html#ab3cf88c321128d511b3afa34b3640c6c',1,'caffe::SilenceLayer::Forward_gpu()'],['../classcaffe_1_1SliceLayer.html#af5a87c7f7822b6612eb7e6b09600b68d',1,'caffe::SliceLayer::Forward_gpu()'],['../classcaffe_1_1SoftmaxLayer.html#a9f450daa90f5c066527cfb5a76372783',1,'caffe::SoftmaxLayer::Forward_gpu()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a558fbaaf863070caac03c7566aefdf11',1,'caffe::SoftmaxWithLossLayer::Forward_gpu()'],['../classcaffe_1_1SplitLayer.html#a14f3583f574d20b4169d3859b32f5c0c',1,'caffe::SplitLayer::Forward_gpu()'],['../classcaffe_1_1TanHLayer.html#a5233182369d5ec3fe31be7228b4a409a',1,'caffe::TanHLayer::Forward_gpu()'],['../classcaffe_1_1ThresholdLayer.html#aded9ca701625d915984c9f5ef754ba66',1,'caffe::ThresholdLayer::Forward_gpu()'],['../classcaffe_1_1TileLayer.html#a83d8071de28203a9932f9aa41f7250b6',1,'caffe::TileLayer::Forward_gpu()']]], + ['forwarddebuginfo',['ForwardDebugInfo',['../classcaffe_1_1Net.html#a3751d6095c3d4f4384c52ad80bbd0d88',1,'caffe::Net']]], + ['forwardfromto',['ForwardFromTo',['../classcaffe_1_1Net.html#ae5354c03371d4cb7b18988561790e676',1,'caffe::Net']]], + ['forwardprefilled',['ForwardPrefilled',['../classcaffe_1_1Net.html#a12f8c6cf9f453cdbc9fa8149986303c6',1,'caffe::Net']]] +]; diff --git a/doxygen/search/all_6.html b/doxygen/search/all_6.html new file mode 100644 index 00000000000..89d590c492d --- /dev/null +++ b/doxygen/search/all_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/all_6.js b/doxygen/search/all_6.js new file mode 100644 index 00000000000..3beed638bd2 --- /dev/null +++ b/doxygen/search/all_6.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['gaussianfiller',['GaussianFiller',['../classcaffe_1_1GaussianFiller.html',1,'caffe']]], + ['generator',['Generator',['../classcaffe_1_1Caffe_1_1RNG_1_1Generator.html',1,'caffe::Caffe::RNG']]], + ['get_5fnormalizer',['get_normalizer',['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#af8ce9b84227c0be01d4a1cc248a7aa52',1,'caffe::SigmoidCrossEntropyLossLayer::get_normalizer()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#aef4567bafcd7b1665f2a2cc71ea02ff4',1,'caffe::SoftmaxWithLossLayer::get_normalizer()']]], + ['getfiller',['GetFiller',['../namespacecaffe.html#a819e1b2fe30b54d6df0fd88e646ec126',1,'caffe']]], + ['gpuparams',['GPUParams',['../classcaffe_1_1GPUParams.html',1,'caffe']]] +]; diff --git a/doxygen/search/all_7.html b/doxygen/search/all_7.html new file mode 100644 index 00000000000..0e8c527eea2 --- /dev/null +++ b/doxygen/search/all_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/all_7.js b/doxygen/search/all_7.js new file mode 100644 index 00000000000..e13baaaf800 --- /dev/null +++ b/doxygen/search/all_7.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['has_5fignore_5flabel_5f',['has_ignore_label_',['../classcaffe_1_1AccuracyLayer.html#a4acdfaf6db79fbe1983b8439391ad15e',1,'caffe::AccuracyLayer::has_ignore_label_()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#a7e2ebf45542532439096caaec42a2a85',1,'caffe::SigmoidCrossEntropyLossLayer::has_ignore_label_()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#ad77bc32fa576ad025102d29acf79aefb',1,'caffe::SoftmaxWithLossLayer::has_ignore_label_()']]], + ['hdf5datalayer',['HDF5DataLayer',['../classcaffe_1_1HDF5DataLayer.html',1,'caffe']]], + ['hdf5outputlayer',['HDF5OutputLayer',['../classcaffe_1_1HDF5OutputLayer.html',1,'caffe']]], + ['height',['height',['../classcaffe_1_1Blob.html#a18af535af43f4e9f85bd1e520886276f',1,'caffe::Blob']]], + ['hidden_5fdim_5f',['hidden_dim_',['../classcaffe_1_1LSTMUnitLayer.html#a7ffcad2a4e6ca83f03cc88dffa32b7ca',1,'caffe::LSTMUnitLayer']]], + ['hingelosslayer',['HingeLossLayer',['../classcaffe_1_1HingeLossLayer.html',1,'caffe']]] +]; diff --git a/doxygen/search/all_8.html b/doxygen/search/all_8.html new file mode 100644 index 00000000000..80bda06772e --- /dev/null +++ b/doxygen/search/all_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/all_8.js b/doxygen/search/all_8.js new file mode 100644 index 00000000000..def9702a693 --- /dev/null +++ b/doxygen/search/all_8.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['ignore_5flabel_5f',['ignore_label_',['../classcaffe_1_1AccuracyLayer.html#a2b8c2d647f43ffd6aa14e81f1c5b2bde',1,'caffe::AccuracyLayer::ignore_label_()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#ab99d98ce823df6c90cd4c3cf8b0a793f',1,'caffe::SigmoidCrossEntropyLossLayer::ignore_label_()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a117d31c7ac538dd7851fb493bfc75d95',1,'caffe::SoftmaxWithLossLayer::ignore_label_()']]], + ['im2collayer',['Im2colLayer',['../classcaffe_1_1Im2colLayer.html',1,'caffe']]], + ['imagedatalayer',['ImageDataLayer',['../classcaffe_1_1ImageDataLayer.html',1,'caffe']]], + ['inferblobshape',['InferBlobShape',['../classcaffe_1_1DataTransformer.html#a1e43b0fb80cded5bb854e1a06004bebf',1,'caffe::DataTransformer::InferBlobShape(const Datum &datum)'],['../classcaffe_1_1DataTransformer.html#ac829dd6448dcce67acb1e22a2554db4b',1,'caffe::DataTransformer::InferBlobShape(const vector< Datum > &datum_vector)']]], + ['inferred_5faxis_5f',['inferred_axis_',['../classcaffe_1_1ReshapeLayer.html#a41111d585f1a9a64fd774ca1bf7d4160',1,'caffe::ReshapeLayer']]], + ['infogainlosslayer',['InfogainLossLayer',['../classcaffe_1_1InfogainLossLayer.html',1,'caffe']]], + ['init',['Init',['../classcaffe_1_1Net.html#ae9fcfaabc89165d6c0cb4b14b4c6b584',1,'caffe::Net']]], + ['initrand',['InitRand',['../classcaffe_1_1DataTransformer.html#a6d807c7dc250e66b62d97d9847278e68',1,'caffe::DataTransformer']]], + ['innerproductlayer',['InnerProductLayer',['../classcaffe_1_1InnerProductLayer.html',1,'caffe']]], + ['input_5fshape',['input_shape',['../classcaffe_1_1BaseConvolutionLayer.html#a6324d4ab918a7b09399aa85a8a03737d',1,'caffe::BaseConvolutionLayer']]], + ['inputlayer',['InputLayer',['../classcaffe_1_1InputLayer.html',1,'caffe']]], + ['internalthread',['InternalThread',['../classcaffe_1_1InternalThread.html',1,'caffe']]], + ['isshared',['IsShared',['../classcaffe_1_1Layer.html#a3ca48aa0ad6c40888baa659d8c2cfbc5',1,'caffe::Layer']]] +]; diff --git a/doxygen/search/all_9.html b/doxygen/search/all_9.html new file mode 100644 index 00000000000..8ebc8a2aaaa --- /dev/null +++ b/doxygen/search/all_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/all_9.js b/doxygen/search/all_9.js new file mode 100644 index 00000000000..da5bfe78538 --- /dev/null +++ b/doxygen/search/all_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['kernel_5fshape_5f',['kernel_shape_',['../classcaffe_1_1BaseConvolutionLayer.html#a0a2f112eec8a7cbd13888185d4fb36b0',1,'caffe::BaseConvolutionLayer::kernel_shape_()'],['../classcaffe_1_1Im2colLayer.html#a188e9ea1225c7f373f4d50e2a78dcec7',1,'caffe::Im2colLayer::kernel_shape_()']]] +]; diff --git a/doxygen/search/all_a.html b/doxygen/search/all_a.html new file mode 100644 index 00000000000..f17bf66a3c5 --- /dev/null +++ b/doxygen/search/all_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/all_a.js b/doxygen/search/all_a.js new file mode 100644 index 00000000000..81d68733eb1 --- /dev/null +++ b/doxygen/search/all_a.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['last_5flayer_5findex_5f',['last_layer_index_',['../classcaffe_1_1RecurrentLayer.html#a0a7a7d94ed74d4199b9d7b8445d5aadb',1,'caffe::RecurrentLayer']]], + ['layer',['Layer',['../classcaffe_1_1Layer.html',1,'caffe']]], + ['layer',['Layer',['../classcaffe_1_1Layer.html#a7b4e4ccea08c7b8b15acc6829d5735f6',1,'caffe::Layer']]], + ['layer_5fnames',['layer_names',['../classcaffe_1_1Net.html#aa550ba424fc7b90f2ccbbaa175c1ec18',1,'caffe::Net']]], + ['layer_5fparam',['layer_param',['../classcaffe_1_1Layer.html#adff82274f146e2b6922d0ebac2aaf215',1,'caffe::Layer']]], + ['layer_5fparam_5f',['layer_param_',['../classcaffe_1_1Layer.html#a7ed12bb2df25c887e41d7ea9557fc701',1,'caffe::Layer']]], + ['layerregisterer',['LayerRegisterer',['../classcaffe_1_1LayerRegisterer.html',1,'caffe']]], + ['layerregistry',['LayerRegistry',['../classcaffe_1_1LayerRegistry.html',1,'caffe']]], + ['layers',['layers',['../classcaffe_1_1Net.html#a174e8bb96b67f423f8c405dac2334a5a',1,'caffe::Net']]], + ['layers_5f',['layers_',['../classcaffe_1_1Net.html#ab9e30392aa01dcf182d1a5cbd34ec45e',1,'caffe::Net']]], + ['layersetup',['LayerSetUp',['../classcaffe_1_1Layer.html#a481323a3e0972c682787f2137468c29f',1,'caffe::Layer::LayerSetUp()'],['../classcaffe_1_1AbsValLayer.html#a4ef25e7d0cbe06404948d7e763bf0f84',1,'caffe::AbsValLayer::LayerSetUp()'],['../classcaffe_1_1AccuracyLayer.html#a1f2447583c670d92ff6e2c8d53fb4dd9',1,'caffe::AccuracyLayer::LayerSetUp()'],['../classcaffe_1_1ArgMaxLayer.html#a53069bd5efc4639de93a8111da772572',1,'caffe::ArgMaxLayer::LayerSetUp()'],['../classcaffe_1_1BaseConvolutionLayer.html#a422e1ef9e6c8b4574f7677bb125e234a',1,'caffe::BaseConvolutionLayer::LayerSetUp()'],['../classcaffe_1_1BaseDataLayer.html#a7028919adf87326b808a2c7b21e8e927',1,'caffe::BaseDataLayer::LayerSetUp()'],['../classcaffe_1_1BasePrefetchingDataLayer.html#ad3b7914abaa6d46c148864c0e28204ad',1,'caffe::BasePrefetchingDataLayer::LayerSetUp()'],['../classcaffe_1_1BatchNormLayer.html#a259d8b26c05450339b33ad024f356b6a',1,'caffe::BatchNormLayer::LayerSetUp()'],['../classcaffe_1_1BiasLayer.html#aa62a9554bf4fc3eb4db124da0d89fd85',1,'caffe::BiasLayer::LayerSetUp()'],['../classcaffe_1_1ConcatLayer.html#af4fc13f4977f84a30af260096ffd55d2',1,'caffe::ConcatLayer::LayerSetUp()'],['../classcaffe_1_1ContrastiveLossLayer.html#a943e67e7bb9c2362ec20ce44c777beac',1,'caffe::ContrastiveLossLayer::LayerSetUp()'],['../classcaffe_1_1CropLayer.html#a59dcb04b78d55f666b69ff001c90caa7',1,'caffe::CropLayer::LayerSetUp()'],['../classcaffe_1_1DropoutLayer.html#addcfd0822c1c5e3591bc7001a034b167',1,'caffe::DropoutLayer::LayerSetUp()'],['../classcaffe_1_1DummyDataLayer.html#a43b495bfead8d18bf1d8eaf7bf91e3e4',1,'caffe::DummyDataLayer::LayerSetUp()'],['../classcaffe_1_1EltwiseLayer.html#a02516b6e7b1b0d032e586785687bcabc',1,'caffe::EltwiseLayer::LayerSetUp()'],['../classcaffe_1_1EmbedLayer.html#aaace16d2beba7db887c7b59213268bc2',1,'caffe::EmbedLayer::LayerSetUp()'],['../classcaffe_1_1ExpLayer.html#a45ec267bdfd48e8aa34490e146405b9e',1,'caffe::ExpLayer::LayerSetUp()'],['../classcaffe_1_1FilterLayer.html#a26a302fd9629af812e7d0714db79bb53',1,'caffe::FilterLayer::LayerSetUp()'],['../classcaffe_1_1HDF5DataLayer.html#afcd473ff34b4035122ba9119fc67498c',1,'caffe::HDF5DataLayer::LayerSetUp()'],['../classcaffe_1_1HDF5OutputLayer.html#aed2dea5250c86c46dd866fbb241dd9f6',1,'caffe::HDF5OutputLayer::LayerSetUp()'],['../classcaffe_1_1Im2colLayer.html#ac4d6f34378681fa197546468b5aa6fd6',1,'caffe::Im2colLayer::LayerSetUp()'],['../classcaffe_1_1InfogainLossLayer.html#a772be3f4074c72b3cf9214bda3422402',1,'caffe::InfogainLossLayer::LayerSetUp()'],['../classcaffe_1_1InnerProductLayer.html#a4adc29913343ddec1813f3a899e449cc',1,'caffe::InnerProductLayer::LayerSetUp()'],['../classcaffe_1_1InputLayer.html#a58be7dd9b52c1a98a872300e5108e065',1,'caffe::InputLayer::LayerSetUp()'],['../classcaffe_1_1LogLayer.html#a87e062000908b474ac4cda3b2f3c6f1e',1,'caffe::LogLayer::LayerSetUp()'],['../classcaffe_1_1LossLayer.html#aa6fc7c2e90be66f1c1f0683637c949da',1,'caffe::LossLayer::LayerSetUp()'],['../classcaffe_1_1LRNLayer.html#ac7ae4b839d952b785b9911c258bd5b48',1,'caffe::LRNLayer::LayerSetUp()'],['../classcaffe_1_1ParameterLayer.html#a1485ccdbd01513b89b29a79df7cda6ee',1,'caffe::ParameterLayer::LayerSetUp()'],['../classcaffe_1_1PoolingLayer.html#aa310fbe7d766ac96a1957aca6a3c4469',1,'caffe::PoolingLayer::LayerSetUp()'],['../classcaffe_1_1PowerLayer.html#a954ad3da9a5fd54665de1181b6165796',1,'caffe::PowerLayer::LayerSetUp()'],['../classcaffe_1_1PReLULayer.html#a85e7207b664a4db8eb718f2075f44920',1,'caffe::PReLULayer::LayerSetUp()'],['../classcaffe_1_1PythonLayer.html#ae5baf7b7552ff0113c174b0e77db5f4c',1,'caffe::PythonLayer::LayerSetUp()'],['../classcaffe_1_1RecurrentLayer.html#a4eec13bfbe23b1e3eb2bbc4652bd6952',1,'caffe::RecurrentLayer::LayerSetUp()'],['../classcaffe_1_1ReductionLayer.html#aafe0aa825e019ea35225a8e493e4e919',1,'caffe::ReductionLayer::LayerSetUp()'],['../classcaffe_1_1ReshapeLayer.html#a99db2601ec64ff20880641b6f6429947',1,'caffe::ReshapeLayer::LayerSetUp()'],['../classcaffe_1_1ScaleLayer.html#a9781f923f1ff0aad8549e0e93eebb941',1,'caffe::ScaleLayer::LayerSetUp()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#aa1535140dd4eb94557c3afc89076d56d',1,'caffe::SigmoidCrossEntropyLossLayer::LayerSetUp()'],['../classcaffe_1_1SliceLayer.html#a92c1cdabdce4c92b9a4ee58e2ceb601e',1,'caffe::SliceLayer::LayerSetUp()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a96cd04896d4b805fcaf36c2c6522ae10',1,'caffe::SoftmaxWithLossLayer::LayerSetUp()'],['../classcaffe_1_1SPPLayer.html#a7241f9c4dfba841bc76a93298a3d28ee',1,'caffe::SPPLayer::LayerSetUp()'],['../classcaffe_1_1ThresholdLayer.html#a14e3782a6bea7bba511f3d6f23344037',1,'caffe::ThresholdLayer::LayerSetUp()']]], + ['learnable_5fparam_5fids_5f',['learnable_param_ids_',['../classcaffe_1_1Net.html#adf8dfb59e46d62c9333f322cea631bd8',1,'caffe::Net']]], + ['loglayer',['LogLayer',['../classcaffe_1_1LogLayer.html',1,'caffe']]], + ['loglayer',['LogLayer',['../classcaffe_1_1LogLayer.html#aa6f92a0b12140d70a44a2bcb71bab552',1,'caffe::LogLayer']]], + ['loss',['loss',['../classcaffe_1_1Layer.html#a899410336f30821644c8bd6c69a070c9',1,'caffe::Layer']]], + ['loss_5f',['loss_',['../classcaffe_1_1Layer.html#af6d347229a139500994e7a926c680486',1,'caffe::Layer']]], + ['losslayer',['LossLayer',['../classcaffe_1_1LossLayer.html',1,'caffe']]], + ['lrnlayer',['LRNLayer',['../classcaffe_1_1LRNLayer.html',1,'caffe']]], + ['lstmlayer',['LSTMLayer',['../classcaffe_1_1LSTMLayer.html',1,'caffe']]], + ['lstmunitlayer',['LSTMUnitLayer',['../classcaffe_1_1LSTMUnitLayer.html',1,'caffe']]] +]; diff --git a/doxygen/search/all_b.html b/doxygen/search/all_b.html new file mode 100644 index 00000000000..6ef469ecc43 --- /dev/null +++ b/doxygen/search/all_b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/all_b.js b/doxygen/search/all_b.js new file mode 100644 index 00000000000..c37bfd4078d --- /dev/null +++ b/doxygen/search/all_b.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['maxbottomblobs',['MaxBottomBlobs',['../classcaffe_1_1Layer.html#af8bdc989053e0363ab032026b46de7c3',1,'caffe::Layer::MaxBottomBlobs()'],['../classcaffe_1_1BiasLayer.html#abdb89e3bc940f999d1d4da83de90a97c',1,'caffe::BiasLayer::MaxBottomBlobs()'],['../classcaffe_1_1InfogainLossLayer.html#a9b2372959a16da1e80ae7a98b7689a4c',1,'caffe::InfogainLossLayer::MaxBottomBlobs()'],['../classcaffe_1_1RecurrentLayer.html#a983e1ead91884f9d2049a3000254961c',1,'caffe::RecurrentLayer::MaxBottomBlobs()'],['../classcaffe_1_1ScaleLayer.html#a7867d035776f78fe486ce633ec0520ad',1,'caffe::ScaleLayer::MaxBottomBlobs()']]], + ['maxtopblobs',['MaxTopBlobs',['../classcaffe_1_1Layer.html#ac6c03df0b6e40e776c94001e19994a2e',1,'caffe::Layer::MaxTopBlobs()'],['../classcaffe_1_1AccuracyLayer.html#a7591ae6d50dd7d96b91241b5b0368997',1,'caffe::AccuracyLayer::MaxTopBlobs()'],['../classcaffe_1_1DataLayer.html#ac47e9f3bff3db9d7364f6c392427745c',1,'caffe::DataLayer::MaxTopBlobs()'],['../classcaffe_1_1PoolingLayer.html#a76539d04ef7252c12e932ea703f8246b',1,'caffe::PoolingLayer::MaxTopBlobs()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a5a0b4c02fe76ae9087cd8b1b9edd9910',1,'caffe::SoftmaxWithLossLayer::MaxTopBlobs()']]], + ['memory_5fused_5f',['memory_used_',['../classcaffe_1_1Net.html#a84349f399faa4246f8395e63c9334d56',1,'caffe::Net']]], + ['memorydatalayer',['MemoryDataLayer',['../classcaffe_1_1MemoryDataLayer.html',1,'caffe']]], + ['minbottomblobs',['MinBottomBlobs',['../classcaffe_1_1Layer.html#aca3cb2bafaefda5d4760aaebd0b72def',1,'caffe::Layer::MinBottomBlobs()'],['../classcaffe_1_1BaseConvolutionLayer.html#aa3d861ed15f6e41c6257d6a10defa7eb',1,'caffe::BaseConvolutionLayer::MinBottomBlobs()'],['../classcaffe_1_1BiasLayer.html#ab75a2e05bbb1eb37bed5995288143f67',1,'caffe::BiasLayer::MinBottomBlobs()'],['../classcaffe_1_1ConcatLayer.html#a314de9eb00a296ffd3cf84120bd1601e',1,'caffe::ConcatLayer::MinBottomBlobs()'],['../classcaffe_1_1EltwiseLayer.html#a802079d89e0f007c15b39e0c1fb0d275',1,'caffe::EltwiseLayer::MinBottomBlobs()'],['../classcaffe_1_1FilterLayer.html#af4c97961e859653ef0fa21d796af0259',1,'caffe::FilterLayer::MinBottomBlobs()'],['../classcaffe_1_1InfogainLossLayer.html#ad8a1ef702a695e379e5d0450369b4a0c',1,'caffe::InfogainLossLayer::MinBottomBlobs()'],['../classcaffe_1_1RecurrentLayer.html#ac31b705bc02d333ae768f7c2184fbfae',1,'caffe::RecurrentLayer::MinBottomBlobs()'],['../classcaffe_1_1ScaleLayer.html#a12c10840f0fc3327854864a12054beb2',1,'caffe::ScaleLayer::MinBottomBlobs()'],['../classcaffe_1_1SilenceLayer.html#af916fa4138f5d8761ec4490588eeccd1',1,'caffe::SilenceLayer::MinBottomBlobs()']]], + ['mintopblobs',['MinTopBlobs',['../classcaffe_1_1Layer.html#ab9e4c8d642e413948b131d851a8462a4',1,'caffe::Layer::MinTopBlobs()'],['../classcaffe_1_1AccuracyLayer.html#a568dd59acff7a172fa614c88ac56aff7',1,'caffe::AccuracyLayer::MinTopBlobs()'],['../classcaffe_1_1BaseConvolutionLayer.html#ae4092cf1b48e18e5d82cd714ae6e8547',1,'caffe::BaseConvolutionLayer::MinTopBlobs()'],['../classcaffe_1_1DataLayer.html#ab0c5a7504085a6699272cdcfa8611887',1,'caffe::DataLayer::MinTopBlobs()'],['../classcaffe_1_1DummyDataLayer.html#a2a63e36dd6b39287981d0bee466975aa',1,'caffe::DummyDataLayer::MinTopBlobs()'],['../classcaffe_1_1FilterLayer.html#af8c6eb9b1986e03dd14a907b5caa1324',1,'caffe::FilterLayer::MinTopBlobs()'],['../classcaffe_1_1HDF5DataLayer.html#a6833e081c29049b1392eb98fb4451697',1,'caffe::HDF5DataLayer::MinTopBlobs()'],['../classcaffe_1_1InputLayer.html#a5d0512129e9c2955dde297a2f15595d2',1,'caffe::InputLayer::MinTopBlobs()'],['../classcaffe_1_1PoolingLayer.html#abb61ab67b2bd809c5633a2722b83feeb',1,'caffe::PoolingLayer::MinTopBlobs()'],['../classcaffe_1_1SliceLayer.html#a2673c06234a234362c1e2592880567a1',1,'caffe::SliceLayer::MinTopBlobs()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a9969336702fb1bbf31750629fb38fb45',1,'caffe::SoftmaxWithLossLayer::MinTopBlobs()'],['../classcaffe_1_1SplitLayer.html#a48dafac272f2f098798e3caa09afbabe',1,'caffe::SplitLayer::MinTopBlobs()']]], + ['msrafiller',['MSRAFiller',['../classcaffe_1_1MSRAFiller.html',1,'caffe']]], + ['multinomiallogisticlosslayer',['MultinomialLogisticLossLayer',['../classcaffe_1_1MultinomialLogisticLossLayer.html',1,'caffe']]], + ['mvnlayer',['MVNLayer',['../classcaffe_1_1MVNLayer.html',1,'caffe']]] +]; diff --git a/doxygen/search/all_c.html b/doxygen/search/all_c.html new file mode 100644 index 00000000000..4ca7bb9e568 --- /dev/null +++ b/doxygen/search/all_c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/all_c.js b/doxygen/search/all_c.js new file mode 100644 index 00000000000..6f0e996b3e2 --- /dev/null +++ b/doxygen/search/all_c.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['n_5f',['N_',['../classcaffe_1_1RecurrentLayer.html#a4bf3c3a87b2a740987aec46e40717907',1,'caffe::RecurrentLayer']]], + ['name',['name',['../classcaffe_1_1Net.html#a521c084f91eefc041bd53f30f1cc1097',1,'caffe::Net']]], + ['name_5f',['name_',['../classcaffe_1_1Net.html#aef7021f31e355ab8f8991755125f6b2b',1,'caffe::Net']]], + ['nesterovsolver',['NesterovSolver',['../classcaffe_1_1NesterovSolver.html',1,'caffe']]], + ['net',['Net',['../classcaffe_1_1Net.html',1,'caffe']]], + ['net_5finput_5fblob_5findices_5f',['net_input_blob_indices_',['../classcaffe_1_1Net.html#a083a9a4c3919721c833b53d5571a7400',1,'caffe::Net']]], + ['neuronlayer',['NeuronLayer',['../classcaffe_1_1NeuronLayer.html',1,'caffe']]], + ['normalization_5f',['normalization_',['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#ad4e3c7105f896bd7792e53ef3a0a2dd8',1,'caffe::SigmoidCrossEntropyLossLayer::normalization_()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a4b1fa348fc885339931f132573467b81',1,'caffe::SoftmaxWithLossLayer::normalization_()']]], + ['num',['num',['../classcaffe_1_1Blob.html#a80ed3eddf98ffd408e9a627b1a7c2a9e',1,'caffe::Blob']]], + ['num_5f',['num_',['../classcaffe_1_1ReductionLayer.html#a7c336b1554118959a13cecfd9701998e',1,'caffe::ReductionLayer']]], + ['num_5finputs',['num_inputs',['../classcaffe_1_1Net.html#a6b04ab79ff08386d5a6fd167fd7696a3',1,'caffe::Net']]], + ['nums_5fbuffer_5f',['nums_buffer_',['../classcaffe_1_1AccuracyLayer.html#a9acf4fa826e787fe64a55bcd2c62e66c',1,'caffe::AccuracyLayer']]] +]; diff --git a/doxygen/search/all_d.html b/doxygen/search/all_d.html new file mode 100644 index 00000000000..fedf606a725 --- /dev/null +++ b/doxygen/search/all_d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/all_d.js b/doxygen/search/all_d.js new file mode 100644 index 00000000000..aa74f83a188 --- /dev/null +++ b/doxygen/search/all_d.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['op_5f',['op_',['../classcaffe_1_1ReductionLayer.html#aa65f46eaf24eca2948592bcb9e127346',1,'caffe::ReductionLayer']]], + ['output_5fshape_5f',['output_shape_',['../classcaffe_1_1BaseConvolutionLayer.html#af0892b61454ba086c4c74b78d910bf31',1,'caffe::BaseConvolutionLayer']]], + ['outputblobnames',['OutputBlobNames',['../classcaffe_1_1LSTMLayer.html#a86acb620f5a10c6caa2661398e0b4f5a',1,'caffe::LSTMLayer::OutputBlobNames()'],['../classcaffe_1_1RecurrentLayer.html#af0b87f8e9a422338243ffeb7f16121fa',1,'caffe::RecurrentLayer::OutputBlobNames()'],['../classcaffe_1_1RNNLayer.html#a553fdd0dadf2a0cd9e5de265bd65da52',1,'caffe::RNNLayer::OutputBlobNames()']]] +]; diff --git a/doxygen/search/all_e.html b/doxygen/search/all_e.html new file mode 100644 index 00000000000..9b780860996 --- /dev/null +++ b/doxygen/search/all_e.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/all_e.js b/doxygen/search/all_e.js new file mode 100644 index 00000000000..0c0fc98e7dc --- /dev/null +++ b/doxygen/search/all_e.js @@ -0,0 +1,30 @@ +var searchData= +[ + ['p2psync',['P2PSync',['../classcaffe_1_1P2PSync.html',1,'caffe']]], + ['pad_5f',['pad_',['../classcaffe_1_1BaseConvolutionLayer.html#a897ead2823e9031863e2151e71229e35',1,'caffe::BaseConvolutionLayer::pad_()'],['../classcaffe_1_1Im2colLayer.html#a55c335fac2a25ba438a8bf94497c53ec',1,'caffe::Im2colLayer::pad_()']]], + ['param_5fpropagate_5fdown',['param_propagate_down',['../classcaffe_1_1Layer.html#a1a3708013b0231e71d725252e10ce6e3',1,'caffe::Layer']]], + ['param_5fpropagate_5fdown_5f',['param_propagate_down_',['../classcaffe_1_1Layer.html#acd4a05def9ff3b42ad72404210613ef7',1,'caffe::Layer']]], + ['parameterlayer',['ParameterLayer',['../classcaffe_1_1ParameterLayer.html',1,'caffe']]], + ['params',['Params',['../classcaffe_1_1Params.html',1,'caffe']]], + ['params',['params',['../classcaffe_1_1Net.html#a4df30bbef7db3a6069d4ab3d9238cb40',1,'caffe::Net']]], + ['params_5f',['params_',['../classcaffe_1_1Net.html#accf52332675952dd27dfc8d3c27fa583',1,'caffe::Net']]], + ['params_5flr',['params_lr',['../classcaffe_1_1Net.html#ae902a7a461c0a693ba1f0d4186ef8e42',1,'caffe::Net']]], + ['params_5flr_5f',['params_lr_',['../classcaffe_1_1Net.html#aeb1f85c97372f57336e4e1af3eb7b9db',1,'caffe::Net']]], + ['params_5fweight_5fdecay',['params_weight_decay',['../classcaffe_1_1Net.html#a1bc1091f0033a8b6c321f1b50c931996',1,'caffe::Net']]], + ['params_5fweight_5fdecay_5f',['params_weight_decay_',['../classcaffe_1_1Net.html#ad337cf5b16e69533f605dbe1f6932bc9',1,'caffe::Net']]], + ['phase',['phase',['../classcaffe_1_1Net.html#a9418aee447ff6e847fd1a5e7be3d7a44',1,'caffe::Net']]], + ['phase_5f',['phase_',['../classcaffe_1_1Layer.html#a1d04ad7f595a82a1c811f102d68b8a19',1,'caffe::Layer::phase_()'],['../classcaffe_1_1Net.html#a1fe921a602b4f96602702a13ad605693',1,'caffe::Net::phase_()']]], + ['pooling_5fbottom_5fvecs_5f',['pooling_bottom_vecs_',['../classcaffe_1_1SPPLayer.html#a2c9e8e5e918431ccc43e8578419357c9',1,'caffe::SPPLayer']]], + ['pooling_5flayers_5f',['pooling_layers_',['../classcaffe_1_1SPPLayer.html#a4cde4ff418007bcbdd34f91c6abbea1f',1,'caffe::SPPLayer']]], + ['pooling_5foutputs_5f',['pooling_outputs_',['../classcaffe_1_1SPPLayer.html#aed09b8f30c285651c726ac7ca186f93f',1,'caffe::SPPLayer']]], + ['pooling_5ftop_5fvecs_5f',['pooling_top_vecs_',['../classcaffe_1_1SPPLayer.html#a4bddcb27cbc0e9e2d153d134d5f9d760',1,'caffe::SPPLayer']]], + ['poolinglayer',['PoolingLayer',['../classcaffe_1_1PoolingLayer.html',1,'caffe']]], + ['positiveunitballfiller',['PositiveUnitballFiller',['../classcaffe_1_1PositiveUnitballFiller.html',1,'caffe']]], + ['power_5f',['power_',['../classcaffe_1_1PowerLayer.html#a882ce133988e4dd72a10d87fec4c04c3',1,'caffe::PowerLayer']]], + ['powerlayer',['PowerLayer',['../classcaffe_1_1PowerLayer.html',1,'caffe']]], + ['powerlayer',['PowerLayer',['../classcaffe_1_1PowerLayer.html#ab008c03c36436e1a0dac0fe1faa53c6d',1,'caffe::PowerLayer']]], + ['prelulayer',['PReLULayer',['../classcaffe_1_1PReLULayer.html',1,'caffe']]], + ['prelulayer',['PReLULayer',['../classcaffe_1_1PReLULayer.html#a9d164a537a2f77b4143d2491f4809732',1,'caffe::PReLULayer']]], + ['prob_5f',['prob_',['../classcaffe_1_1SoftmaxWithLossLayer.html#a02669f20097006452d877ea05e98b775',1,'caffe::SoftmaxWithLossLayer']]], + ['pythonlayer',['PythonLayer',['../classcaffe_1_1PythonLayer.html',1,'caffe']]] +]; diff --git a/doxygen/search/all_f.html b/doxygen/search/all_f.html new file mode 100644 index 00000000000..3bf97c66fbd --- /dev/null +++ b/doxygen/search/all_f.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/all_f.js b/doxygen/search/all_f.js new file mode 100644 index 00000000000..176b0e75f66 --- /dev/null +++ b/doxygen/search/all_f.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['queuepair',['QueuePair',['../classcaffe_1_1DataReader_1_1QueuePair.html',1,'caffe::DataReader']]] +]; diff --git a/doxygen/search/classes_0.html b/doxygen/search/classes_0.html new file mode 100644 index 00000000000..2e45b2cb48c --- /dev/null +++ b/doxygen/search/classes_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/classes_0.js b/doxygen/search/classes_0.js new file mode 100644 index 00000000000..35cadb56c40 --- /dev/null +++ b/doxygen/search/classes_0.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['absvallayer',['AbsValLayer',['../classcaffe_1_1AbsValLayer.html',1,'caffe']]], + ['accuracylayer',['AccuracyLayer',['../classcaffe_1_1AccuracyLayer.html',1,'caffe']]], + ['adadeltasolver',['AdaDeltaSolver',['../classcaffe_1_1AdaDeltaSolver.html',1,'caffe']]], + ['adagradsolver',['AdaGradSolver',['../classcaffe_1_1AdaGradSolver.html',1,'caffe']]], + ['adamsolver',['AdamSolver',['../classcaffe_1_1AdamSolver.html',1,'caffe']]], + ['argmaxlayer',['ArgMaxLayer',['../classcaffe_1_1ArgMaxLayer.html',1,'caffe']]] +]; diff --git a/doxygen/search/classes_1.html b/doxygen/search/classes_1.html new file mode 100644 index 00000000000..5f1bc63bb04 --- /dev/null +++ b/doxygen/search/classes_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/classes_1.js b/doxygen/search/classes_1.js new file mode 100644 index 00000000000..1d579f48f93 --- /dev/null +++ b/doxygen/search/classes_1.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['baseconvolutionlayer',['BaseConvolutionLayer',['../classcaffe_1_1BaseConvolutionLayer.html',1,'caffe']]], + ['basedatalayer',['BaseDataLayer',['../classcaffe_1_1BaseDataLayer.html',1,'caffe']]], + ['baseprefetchingdatalayer',['BasePrefetchingDataLayer',['../classcaffe_1_1BasePrefetchingDataLayer.html',1,'caffe']]], + ['batch',['Batch',['../classcaffe_1_1Batch.html',1,'caffe']]], + ['batchnormlayer',['BatchNormLayer',['../classcaffe_1_1BatchNormLayer.html',1,'caffe']]], + ['batchreindexlayer',['BatchReindexLayer',['../classcaffe_1_1BatchReindexLayer.html',1,'caffe']]], + ['biaslayer',['BiasLayer',['../classcaffe_1_1BiasLayer.html',1,'caffe']]], + ['bilinearfiller',['BilinearFiller',['../classcaffe_1_1BilinearFiller.html',1,'caffe']]], + ['blob',['Blob',['../classcaffe_1_1Blob.html',1,'caffe']]], + ['blob_3c_20int_20_3e',['Blob< int >',['../classcaffe_1_1Blob.html',1,'caffe']]], + ['blob_3c_20unsigned_20int_20_3e',['Blob< unsigned int >',['../classcaffe_1_1Blob.html',1,'caffe']]], + ['blockingqueue',['BlockingQueue',['../classcaffe_1_1BlockingQueue.html',1,'caffe']]], + ['blockingqueue_3c_20caffe_3a_3abatch_3c_20dtype_20_3e_20_2a_3e',['BlockingQueue< caffe::Batch< Dtype > *>',['../classcaffe_1_1BlockingQueue.html',1,'caffe']]], + ['blockingqueue_3c_20caffe_3a_3ap2psync_3c_20dtype_20_3e_20_2a_3e',['BlockingQueue< caffe::P2PSync< Dtype > *>',['../classcaffe_1_1BlockingQueue.html',1,'caffe']]], + ['blockingqueue_3c_20datum_20_2a_3e',['BlockingQueue< Datum *>',['../classcaffe_1_1BlockingQueue.html',1,'caffe']]], + ['blockingqueue_3c_20shared_5fptr_3c_20caffe_3a_3adatareader_3a_3aqueuepair_20_3e_20_3e',['BlockingQueue< shared_ptr< caffe::DataReader::QueuePair > >',['../classcaffe_1_1BlockingQueue.html',1,'caffe']]], + ['bnlllayer',['BNLLLayer',['../classcaffe_1_1BNLLLayer.html',1,'caffe']]], + ['body',['Body',['../classcaffe_1_1DataReader_1_1Body.html',1,'caffe::DataReader']]] +]; diff --git a/doxygen/search/classes_10.html b/doxygen/search/classes_10.html new file mode 100644 index 00000000000..d9261c94140 --- /dev/null +++ b/doxygen/search/classes_10.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/classes_10.js b/doxygen/search/classes_10.js new file mode 100644 index 00000000000..7da2e736774 --- /dev/null +++ b/doxygen/search/classes_10.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['tanhlayer',['TanHLayer',['../classcaffe_1_1TanHLayer.html',1,'caffe']]], + ['thresholdlayer',['ThresholdLayer',['../classcaffe_1_1ThresholdLayer.html',1,'caffe']]], + ['tilelayer',['TileLayer',['../classcaffe_1_1TileLayer.html',1,'caffe']]], + ['timer',['Timer',['../classcaffe_1_1Timer.html',1,'caffe']]], + ['transaction',['Transaction',['../classcaffe_1_1db_1_1Transaction.html',1,'caffe::db']]] +]; diff --git a/doxygen/search/classes_11.html b/doxygen/search/classes_11.html new file mode 100644 index 00000000000..1169783c967 --- /dev/null +++ b/doxygen/search/classes_11.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/classes_11.js b/doxygen/search/classes_11.js new file mode 100644 index 00000000000..84c40ae907e --- /dev/null +++ b/doxygen/search/classes_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['uniformfiller',['UniformFiller',['../classcaffe_1_1UniformFiller.html',1,'caffe']]] +]; diff --git a/doxygen/search/classes_12.html b/doxygen/search/classes_12.html new file mode 100644 index 00000000000..179dc81c938 --- /dev/null +++ b/doxygen/search/classes_12.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/classes_12.js b/doxygen/search/classes_12.js new file mode 100644 index 00000000000..daf66ef1b4d --- /dev/null +++ b/doxygen/search/classes_12.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['windowdatalayer',['WindowDataLayer',['../classcaffe_1_1WindowDataLayer.html',1,'caffe']]], + ['workersolver',['WorkerSolver',['../classcaffe_1_1WorkerSolver.html',1,'caffe']]] +]; diff --git a/doxygen/search/classes_13.html b/doxygen/search/classes_13.html new file mode 100644 index 00000000000..0cddd5f06e9 --- /dev/null +++ b/doxygen/search/classes_13.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/classes_13.js b/doxygen/search/classes_13.js new file mode 100644 index 00000000000..c34a910afad --- /dev/null +++ b/doxygen/search/classes_13.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['xavierfiller',['XavierFiller',['../classcaffe_1_1XavierFiller.html',1,'caffe']]] +]; diff --git a/doxygen/search/classes_2.html b/doxygen/search/classes_2.html new file mode 100644 index 00000000000..e3a6f9c0142 --- /dev/null +++ b/doxygen/search/classes_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/classes_2.js b/doxygen/search/classes_2.js new file mode 100644 index 00000000000..51cb5042575 --- /dev/null +++ b/doxygen/search/classes_2.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['caffe',['Caffe',['../classcaffe_1_1Caffe.html',1,'caffe']]], + ['callback',['Callback',['../classcaffe_1_1Solver_1_1Callback.html',1,'caffe::Solver']]], + ['concatlayer',['ConcatLayer',['../classcaffe_1_1ConcatLayer.html',1,'caffe']]], + ['constantfiller',['ConstantFiller',['../classcaffe_1_1ConstantFiller.html',1,'caffe']]], + ['contrastivelosslayer',['ContrastiveLossLayer',['../classcaffe_1_1ContrastiveLossLayer.html',1,'caffe']]], + ['convolutionlayer',['ConvolutionLayer',['../classcaffe_1_1ConvolutionLayer.html',1,'caffe']]], + ['cputimer',['CPUTimer',['../classcaffe_1_1CPUTimer.html',1,'caffe']]], + ['croplayer',['CropLayer',['../classcaffe_1_1CropLayer.html',1,'caffe']]], + ['cursor',['Cursor',['../classcaffe_1_1db_1_1Cursor.html',1,'caffe::db']]] +]; diff --git a/doxygen/search/classes_3.html b/doxygen/search/classes_3.html new file mode 100644 index 00000000000..ed4b46eaf1e --- /dev/null +++ b/doxygen/search/classes_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/classes_3.js b/doxygen/search/classes_3.js new file mode 100644 index 00000000000..222ede13656 --- /dev/null +++ b/doxygen/search/classes_3.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['datalayer',['DataLayer',['../classcaffe_1_1DataLayer.html',1,'caffe']]], + ['datareader',['DataReader',['../classcaffe_1_1DataReader.html',1,'caffe']]], + ['datatransformer',['DataTransformer',['../classcaffe_1_1DataTransformer.html',1,'caffe']]], + ['db',['DB',['../classcaffe_1_1db_1_1DB.html',1,'caffe::db']]], + ['deconvolutionlayer',['DeconvolutionLayer',['../classcaffe_1_1DeconvolutionLayer.html',1,'caffe']]], + ['devicepair',['DevicePair',['../classcaffe_1_1DevicePair.html',1,'caffe']]], + ['dropoutlayer',['DropoutLayer',['../classcaffe_1_1DropoutLayer.html',1,'caffe']]], + ['dummydatalayer',['DummyDataLayer',['../classcaffe_1_1DummyDataLayer.html',1,'caffe']]] +]; diff --git a/doxygen/search/classes_4.html b/doxygen/search/classes_4.html new file mode 100644 index 00000000000..b1f5f93aeeb --- /dev/null +++ b/doxygen/search/classes_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/classes_4.js b/doxygen/search/classes_4.js new file mode 100644 index 00000000000..dd94d4688eb --- /dev/null +++ b/doxygen/search/classes_4.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['eltwiselayer',['EltwiseLayer',['../classcaffe_1_1EltwiseLayer.html',1,'caffe']]], + ['elulayer',['ELULayer',['../classcaffe_1_1ELULayer.html',1,'caffe']]], + ['embedlayer',['EmbedLayer',['../classcaffe_1_1EmbedLayer.html',1,'caffe']]], + ['euclideanlosslayer',['EuclideanLossLayer',['../classcaffe_1_1EuclideanLossLayer.html',1,'caffe']]], + ['explayer',['ExpLayer',['../classcaffe_1_1ExpLayer.html',1,'caffe']]] +]; diff --git a/doxygen/search/classes_5.html b/doxygen/search/classes_5.html new file mode 100644 index 00000000000..7f718b394b7 --- /dev/null +++ b/doxygen/search/classes_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/classes_5.js b/doxygen/search/classes_5.js new file mode 100644 index 00000000000..618fee26ef4 --- /dev/null +++ b/doxygen/search/classes_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['filler',['Filler',['../classcaffe_1_1Filler.html',1,'caffe']]], + ['filterlayer',['FilterLayer',['../classcaffe_1_1FilterLayer.html',1,'caffe']]], + ['flattenlayer',['FlattenLayer',['../classcaffe_1_1FlattenLayer.html',1,'caffe']]] +]; diff --git a/doxygen/search/classes_6.html b/doxygen/search/classes_6.html new file mode 100644 index 00000000000..1c02825c67e --- /dev/null +++ b/doxygen/search/classes_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/classes_6.js b/doxygen/search/classes_6.js new file mode 100644 index 00000000000..88fa5b57225 --- /dev/null +++ b/doxygen/search/classes_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['gaussianfiller',['GaussianFiller',['../classcaffe_1_1GaussianFiller.html',1,'caffe']]], + ['generator',['Generator',['../classcaffe_1_1Caffe_1_1RNG_1_1Generator.html',1,'caffe::Caffe::RNG']]], + ['gpuparams',['GPUParams',['../classcaffe_1_1GPUParams.html',1,'caffe']]] +]; diff --git a/doxygen/search/classes_7.html b/doxygen/search/classes_7.html new file mode 100644 index 00000000000..2af8b706d90 --- /dev/null +++ b/doxygen/search/classes_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/classes_7.js b/doxygen/search/classes_7.js new file mode 100644 index 00000000000..a55bf66e21a --- /dev/null +++ b/doxygen/search/classes_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['hdf5datalayer',['HDF5DataLayer',['../classcaffe_1_1HDF5DataLayer.html',1,'caffe']]], + ['hdf5outputlayer',['HDF5OutputLayer',['../classcaffe_1_1HDF5OutputLayer.html',1,'caffe']]], + ['hingelosslayer',['HingeLossLayer',['../classcaffe_1_1HingeLossLayer.html',1,'caffe']]] +]; diff --git a/doxygen/search/classes_8.html b/doxygen/search/classes_8.html new file mode 100644 index 00000000000..a57aeaeca03 --- /dev/null +++ b/doxygen/search/classes_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/classes_8.js b/doxygen/search/classes_8.js new file mode 100644 index 00000000000..6daef7a1c75 --- /dev/null +++ b/doxygen/search/classes_8.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['im2collayer',['Im2colLayer',['../classcaffe_1_1Im2colLayer.html',1,'caffe']]], + ['imagedatalayer',['ImageDataLayer',['../classcaffe_1_1ImageDataLayer.html',1,'caffe']]], + ['infogainlosslayer',['InfogainLossLayer',['../classcaffe_1_1InfogainLossLayer.html',1,'caffe']]], + ['innerproductlayer',['InnerProductLayer',['../classcaffe_1_1InnerProductLayer.html',1,'caffe']]], + ['inputlayer',['InputLayer',['../classcaffe_1_1InputLayer.html',1,'caffe']]], + ['internalthread',['InternalThread',['../classcaffe_1_1InternalThread.html',1,'caffe']]] +]; diff --git a/doxygen/search/classes_9.html b/doxygen/search/classes_9.html new file mode 100644 index 00000000000..59ec04485b7 --- /dev/null +++ b/doxygen/search/classes_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/classes_9.js b/doxygen/search/classes_9.js new file mode 100644 index 00000000000..05ca4a1e94d --- /dev/null +++ b/doxygen/search/classes_9.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['layer',['Layer',['../classcaffe_1_1Layer.html',1,'caffe']]], + ['layerregisterer',['LayerRegisterer',['../classcaffe_1_1LayerRegisterer.html',1,'caffe']]], + ['layerregistry',['LayerRegistry',['../classcaffe_1_1LayerRegistry.html',1,'caffe']]], + ['loglayer',['LogLayer',['../classcaffe_1_1LogLayer.html',1,'caffe']]], + ['losslayer',['LossLayer',['../classcaffe_1_1LossLayer.html',1,'caffe']]], + ['lrnlayer',['LRNLayer',['../classcaffe_1_1LRNLayer.html',1,'caffe']]], + ['lstmlayer',['LSTMLayer',['../classcaffe_1_1LSTMLayer.html',1,'caffe']]], + ['lstmunitlayer',['LSTMUnitLayer',['../classcaffe_1_1LSTMUnitLayer.html',1,'caffe']]] +]; diff --git a/doxygen/search/classes_a.html b/doxygen/search/classes_a.html new file mode 100644 index 00000000000..aaef5a5326b --- /dev/null +++ b/doxygen/search/classes_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/classes_a.js b/doxygen/search/classes_a.js new file mode 100644 index 00000000000..a6e89f727c3 --- /dev/null +++ b/doxygen/search/classes_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['memorydatalayer',['MemoryDataLayer',['../classcaffe_1_1MemoryDataLayer.html',1,'caffe']]], + ['msrafiller',['MSRAFiller',['../classcaffe_1_1MSRAFiller.html',1,'caffe']]], + ['multinomiallogisticlosslayer',['MultinomialLogisticLossLayer',['../classcaffe_1_1MultinomialLogisticLossLayer.html',1,'caffe']]], + ['mvnlayer',['MVNLayer',['../classcaffe_1_1MVNLayer.html',1,'caffe']]] +]; diff --git a/doxygen/search/classes_b.html b/doxygen/search/classes_b.html new file mode 100644 index 00000000000..e0416e61471 --- /dev/null +++ b/doxygen/search/classes_b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/classes_b.js b/doxygen/search/classes_b.js new file mode 100644 index 00000000000..1a19d399330 --- /dev/null +++ b/doxygen/search/classes_b.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['nesterovsolver',['NesterovSolver',['../classcaffe_1_1NesterovSolver.html',1,'caffe']]], + ['net',['Net',['../classcaffe_1_1Net.html',1,'caffe']]], + ['neuronlayer',['NeuronLayer',['../classcaffe_1_1NeuronLayer.html',1,'caffe']]] +]; diff --git a/doxygen/search/classes_c.html b/doxygen/search/classes_c.html new file mode 100644 index 00000000000..88047d3a32e --- /dev/null +++ b/doxygen/search/classes_c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/classes_c.js b/doxygen/search/classes_c.js new file mode 100644 index 00000000000..282db2b02d9 --- /dev/null +++ b/doxygen/search/classes_c.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['p2psync',['P2PSync',['../classcaffe_1_1P2PSync.html',1,'caffe']]], + ['parameterlayer',['ParameterLayer',['../classcaffe_1_1ParameterLayer.html',1,'caffe']]], + ['params',['Params',['../classcaffe_1_1Params.html',1,'caffe']]], + ['poolinglayer',['PoolingLayer',['../classcaffe_1_1PoolingLayer.html',1,'caffe']]], + ['positiveunitballfiller',['PositiveUnitballFiller',['../classcaffe_1_1PositiveUnitballFiller.html',1,'caffe']]], + ['powerlayer',['PowerLayer',['../classcaffe_1_1PowerLayer.html',1,'caffe']]], + ['prelulayer',['PReLULayer',['../classcaffe_1_1PReLULayer.html',1,'caffe']]], + ['pythonlayer',['PythonLayer',['../classcaffe_1_1PythonLayer.html',1,'caffe']]] +]; diff --git a/doxygen/search/classes_d.html b/doxygen/search/classes_d.html new file mode 100644 index 00000000000..f3a3ef9ef17 --- /dev/null +++ b/doxygen/search/classes_d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/classes_d.js b/doxygen/search/classes_d.js new file mode 100644 index 00000000000..176b0e75f66 --- /dev/null +++ b/doxygen/search/classes_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['queuepair',['QueuePair',['../classcaffe_1_1DataReader_1_1QueuePair.html',1,'caffe::DataReader']]] +]; diff --git a/doxygen/search/classes_e.html b/doxygen/search/classes_e.html new file mode 100644 index 00000000000..5e33956ce5e --- /dev/null +++ b/doxygen/search/classes_e.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/classes_e.js b/doxygen/search/classes_e.js new file mode 100644 index 00000000000..2d7555b9751 --- /dev/null +++ b/doxygen/search/classes_e.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['recurrentlayer',['RecurrentLayer',['../classcaffe_1_1RecurrentLayer.html',1,'caffe']]], + ['reductionlayer',['ReductionLayer',['../classcaffe_1_1ReductionLayer.html',1,'caffe']]], + ['relulayer',['ReLULayer',['../classcaffe_1_1ReLULayer.html',1,'caffe']]], + ['reshapelayer',['ReshapeLayer',['../classcaffe_1_1ReshapeLayer.html',1,'caffe']]], + ['rmspropsolver',['RMSPropSolver',['../classcaffe_1_1RMSPropSolver.html',1,'caffe']]], + ['rng',['RNG',['../classcaffe_1_1Caffe_1_1RNG.html',1,'caffe::Caffe']]], + ['rnnlayer',['RNNLayer',['../classcaffe_1_1RNNLayer.html',1,'caffe']]] +]; diff --git a/doxygen/search/classes_f.html b/doxygen/search/classes_f.html new file mode 100644 index 00000000000..3ce6361630d --- /dev/null +++ b/doxygen/search/classes_f.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/classes_f.js b/doxygen/search/classes_f.js new file mode 100644 index 00000000000..a7c3d6178dd --- /dev/null +++ b/doxygen/search/classes_f.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['scalelayer',['ScaleLayer',['../classcaffe_1_1ScaleLayer.html',1,'caffe']]], + ['sgdsolver',['SGDSolver',['../classcaffe_1_1SGDSolver.html',1,'caffe']]], + ['sigmoidcrossentropylosslayer',['SigmoidCrossEntropyLossLayer',['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html',1,'caffe']]], + ['sigmoidlayer',['SigmoidLayer',['../classcaffe_1_1SigmoidLayer.html',1,'caffe']]], + ['signalhandler',['SignalHandler',['../classcaffe_1_1SignalHandler.html',1,'caffe']]], + ['silencelayer',['SilenceLayer',['../classcaffe_1_1SilenceLayer.html',1,'caffe']]], + ['slicelayer',['SliceLayer',['../classcaffe_1_1SliceLayer.html',1,'caffe']]], + ['softmaxlayer',['SoftmaxLayer',['../classcaffe_1_1SoftmaxLayer.html',1,'caffe']]], + ['softmaxwithlosslayer',['SoftmaxWithLossLayer',['../classcaffe_1_1SoftmaxWithLossLayer.html',1,'caffe']]], + ['solver',['Solver',['../classcaffe_1_1Solver.html',1,'caffe']]], + ['solverregisterer',['SolverRegisterer',['../classcaffe_1_1SolverRegisterer.html',1,'caffe']]], + ['solverregistry',['SolverRegistry',['../classcaffe_1_1SolverRegistry.html',1,'caffe']]], + ['splitlayer',['SplitLayer',['../classcaffe_1_1SplitLayer.html',1,'caffe']]], + ['spplayer',['SPPLayer',['../classcaffe_1_1SPPLayer.html',1,'caffe']]], + ['sync',['sync',['../classcaffe_1_1BlockingQueue_1_1sync.html',1,'caffe::BlockingQueue']]], + ['syncedmemory',['SyncedMemory',['../classcaffe_1_1SyncedMemory.html',1,'caffe']]] +]; diff --git a/doxygen/search/close.png b/doxygen/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/doxygen/search/functions_0.html b/doxygen/search/functions_0.html new file mode 100644 index 00000000000..03cae5d9b90 --- /dev/null +++ b/doxygen/search/functions_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/functions_0.js b/doxygen/search/functions_0.js new file mode 100644 index 00000000000..c7ea0ab0079 --- /dev/null +++ b/doxygen/search/functions_0.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['accuracylayer',['AccuracyLayer',['../classcaffe_1_1AccuracyLayer.html#a362ab61d1961c1b408f84a956f6e598d',1,'caffe::AccuracyLayer']]], + ['allowforcebackward',['AllowForceBackward',['../classcaffe_1_1Layer.html#a1c0b2bffcd6d57e4bd49f820941badb6',1,'caffe::Layer::AllowForceBackward()'],['../classcaffe_1_1ContrastiveLossLayer.html#af0f16d5119ac6118b670c1966c38fd7d',1,'caffe::ContrastiveLossLayer::AllowForceBackward()'],['../classcaffe_1_1EuclideanLossLayer.html#a76dd3fde9f09cb9840f05ee035b5a2c5',1,'caffe::EuclideanLossLayer::AllowForceBackward()'],['../classcaffe_1_1LossLayer.html#a36d35155bfe0de53a79c517f33759612',1,'caffe::LossLayer::AllowForceBackward()'],['../classcaffe_1_1LSTMUnitLayer.html#a9c46167bc8b96b28196bc24a5515b531',1,'caffe::LSTMUnitLayer::AllowForceBackward()'],['../classcaffe_1_1RecurrentLayer.html#a8d91610cc8b9615a1db4f07fe5590a37',1,'caffe::RecurrentLayer::AllowForceBackward()']]], + ['appendbottom',['AppendBottom',['../classcaffe_1_1Net.html#a6ef3482f4e882e437c81affa77d91f32',1,'caffe::Net']]], + ['appendparam',['AppendParam',['../classcaffe_1_1Net.html#a1fce7e829c10750543f3a79819d49393',1,'caffe::Net']]], + ['appendtop',['AppendTop',['../classcaffe_1_1Net.html#a3aab736bc72b29c84dc3ee765ee453c4',1,'caffe::Net']]], + ['argmaxlayer',['ArgMaxLayer',['../classcaffe_1_1ArgMaxLayer.html#a77429601f3d7f27b48720a1b703491be',1,'caffe::ArgMaxLayer']]], + ['asum_5fdata',['asum_data',['../classcaffe_1_1Blob.html#aa06094adb9337a7d67f7049a1f2ede54',1,'caffe::Blob']]], + ['asum_5fdiff',['asum_diff',['../classcaffe_1_1Blob.html#a1bf366edeb71ae6a76d4177fef3879ec',1,'caffe::Blob']]], + ['autotopblobs',['AutoTopBlobs',['../classcaffe_1_1Layer.html#a50130669e230a168d1f8fbbb8171f054',1,'caffe::Layer::AutoTopBlobs()'],['../classcaffe_1_1LossLayer.html#ae98a9942cdb1c67e09d45cc2d876618e',1,'caffe::LossLayer::AutoTopBlobs()']]] +]; diff --git a/doxygen/search/functions_1.html b/doxygen/search/functions_1.html new file mode 100644 index 00000000000..5d7a2e30052 --- /dev/null +++ b/doxygen/search/functions_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/functions_1.js b/doxygen/search/functions_1.js new file mode 100644 index 00000000000..83cf5d90879 --- /dev/null +++ b/doxygen/search/functions_1.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['backward',['Backward',['../classcaffe_1_1Layer.html#a183d343f5183a4762307f2c5e6ed1e12',1,'caffe::Layer::Backward()'],['../classcaffe_1_1Net.html#a7a1a6d17347106dd1284b1b6d28cb4e9',1,'caffe::Net::Backward()']]], + ['backward_5fcpu',['Backward_cpu',['../classcaffe_1_1Layer.html#a75c9b2a321dc713e0eaef530d02dc37f',1,'caffe::Layer::Backward_cpu()'],['../classcaffe_1_1AbsValLayer.html#abac024a0ee583ecc7d83311363bcfa72',1,'caffe::AbsValLayer::Backward_cpu()'],['../classcaffe_1_1AccuracyLayer.html#a8084d42629a751f5b6322d9cb3f5986c',1,'caffe::AccuracyLayer::Backward_cpu()'],['../classcaffe_1_1ArgMaxLayer.html#a763be1ca5815fbe1eec62ec206ae3f6e',1,'caffe::ArgMaxLayer::Backward_cpu()'],['../classcaffe_1_1BaseDataLayer.html#a9d2c7a18383ff7625d80806ede1d9e3b',1,'caffe::BaseDataLayer::Backward_cpu()'],['../classcaffe_1_1BatchNormLayer.html#aa781fae1f9e901398cbab994678a558f',1,'caffe::BatchNormLayer::Backward_cpu()'],['../classcaffe_1_1BatchReindexLayer.html#a8306bf8f4c49c33fc2a7cecbb436e5dc',1,'caffe::BatchReindexLayer::Backward_cpu()'],['../classcaffe_1_1BiasLayer.html#a644c6ae32fde130475b8de04db36ea5b',1,'caffe::BiasLayer::Backward_cpu()'],['../classcaffe_1_1BNLLLayer.html#a014a52e7ba756d94d2af865dc6c855dc',1,'caffe::BNLLLayer::Backward_cpu()'],['../classcaffe_1_1ConcatLayer.html#a928a320b29e3f72ffcc661d00534f760',1,'caffe::ConcatLayer::Backward_cpu()'],['../classcaffe_1_1ContrastiveLossLayer.html#a60af9729fe340be3ae0f87737215d9d0',1,'caffe::ContrastiveLossLayer::Backward_cpu()'],['../classcaffe_1_1ConvolutionLayer.html#a11279ea7bea3843a776a766b93e27e50',1,'caffe::ConvolutionLayer::Backward_cpu()'],['../classcaffe_1_1CropLayer.html#ab73f11ec5c3927435ab9c7e1706919cd',1,'caffe::CropLayer::Backward_cpu()'],['../classcaffe_1_1DeconvolutionLayer.html#a43c00eac97e8c9b3cfb0de0b5904b43f',1,'caffe::DeconvolutionLayer::Backward_cpu()'],['../classcaffe_1_1DropoutLayer.html#afd94f3c55768f4847956c01bce88f9c1',1,'caffe::DropoutLayer::Backward_cpu()'],['../classcaffe_1_1DummyDataLayer.html#ac62a3b84e25b23ad3aa7c19409282188',1,'caffe::DummyDataLayer::Backward_cpu()'],['../classcaffe_1_1EltwiseLayer.html#a4d2c0401680daae53654aeb2cc6983a4',1,'caffe::EltwiseLayer::Backward_cpu()'],['../classcaffe_1_1ELULayer.html#a606284cd2e5ff40154ff0865a100b940',1,'caffe::ELULayer::Backward_cpu()'],['../classcaffe_1_1EmbedLayer.html#a0584f1e1429283eb9ddf4c5bbb897a2d',1,'caffe::EmbedLayer::Backward_cpu()'],['../classcaffe_1_1EuclideanLossLayer.html#a577f5dad9889d01461348a4c89277089',1,'caffe::EuclideanLossLayer::Backward_cpu()'],['../classcaffe_1_1ExpLayer.html#a3629dc4ebe692252f28edc204b8bf435',1,'caffe::ExpLayer::Backward_cpu()'],['../classcaffe_1_1FilterLayer.html#a11e002d2b3294ca185a01c007995711d',1,'caffe::FilterLayer::Backward_cpu()'],['../classcaffe_1_1FlattenLayer.html#a784fce9e05617701403f3a955fdca2a8',1,'caffe::FlattenLayer::Backward_cpu()'],['../classcaffe_1_1HDF5DataLayer.html#ab2a3379c83003ab3fa19848fbc57d30a',1,'caffe::HDF5DataLayer::Backward_cpu()'],['../classcaffe_1_1HDF5OutputLayer.html#a1acb4098d879c5fb6646ef097ef15713',1,'caffe::HDF5OutputLayer::Backward_cpu()'],['../classcaffe_1_1HingeLossLayer.html#a4eb93cbad1070ce4e6e4de8fa1eb01ab',1,'caffe::HingeLossLayer::Backward_cpu()'],['../classcaffe_1_1Im2colLayer.html#a9c88593258502ae30aeec7be76225b61',1,'caffe::Im2colLayer::Backward_cpu()'],['../classcaffe_1_1InfogainLossLayer.html#a6d8fc17daa7233fb96629b641fbc46ac',1,'caffe::InfogainLossLayer::Backward_cpu()'],['../classcaffe_1_1InnerProductLayer.html#aabc0f2f914ad3efae81cefed30392f04',1,'caffe::InnerProductLayer::Backward_cpu()'],['../classcaffe_1_1InputLayer.html#a01bc41ff8690c2b2c5eec026a7bc3188',1,'caffe::InputLayer::Backward_cpu()'],['../classcaffe_1_1LogLayer.html#a79f6398d807b7d751820528d5a68faa7',1,'caffe::LogLayer::Backward_cpu()'],['../classcaffe_1_1LRNLayer.html#ac3f419feedaf79fc42d79af0d0f530ef',1,'caffe::LRNLayer::Backward_cpu()'],['../classcaffe_1_1LSTMUnitLayer.html#aab97af46aeebdae3d7f7046aa6ba5f7f',1,'caffe::LSTMUnitLayer::Backward_cpu()'],['../classcaffe_1_1MultinomialLogisticLossLayer.html#a817e9cb16c4af367edf6941f6009a74d',1,'caffe::MultinomialLogisticLossLayer::Backward_cpu()'],['../classcaffe_1_1MVNLayer.html#af86a0165418a7623b3aa0dc2d5f29182',1,'caffe::MVNLayer::Backward_cpu()'],['../classcaffe_1_1ParameterLayer.html#ab8fe6b9f7b8bb1997bd3b6f8d574710b',1,'caffe::ParameterLayer::Backward_cpu()'],['../classcaffe_1_1PoolingLayer.html#ace4f4a1f9342b719e4e1a80721dbf97a',1,'caffe::PoolingLayer::Backward_cpu()'],['../classcaffe_1_1PowerLayer.html#a98e5481671ca13339f888cad61b3d515',1,'caffe::PowerLayer::Backward_cpu()'],['../classcaffe_1_1PReLULayer.html#ab2e8ecd631bc37fdabecefbc91ee21a0',1,'caffe::PReLULayer::Backward_cpu()'],['../classcaffe_1_1PythonLayer.html#a07eb970edebba16324ee35e06be04587',1,'caffe::PythonLayer::Backward_cpu()'],['../classcaffe_1_1RecurrentLayer.html#a634f73d33c81cc8f8486659998ed45c6',1,'caffe::RecurrentLayer::Backward_cpu()'],['../classcaffe_1_1ReductionLayer.html#aeff33bdb244f2e93eef7ba78b795db45',1,'caffe::ReductionLayer::Backward_cpu()'],['../classcaffe_1_1ReLULayer.html#a4f278f1aca7a380a24b61be5429808a4',1,'caffe::ReLULayer::Backward_cpu()'],['../classcaffe_1_1ReshapeLayer.html#a8baafe3b84c6eee7709071a944355286',1,'caffe::ReshapeLayer::Backward_cpu()'],['../classcaffe_1_1ScaleLayer.html#a4b41188afeb445da06721fdf80526cf0',1,'caffe::ScaleLayer::Backward_cpu()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#a025360b1de1fefbc4684e43603394a22',1,'caffe::SigmoidCrossEntropyLossLayer::Backward_cpu()'],['../classcaffe_1_1SigmoidLayer.html#a14561ff9802e8d8bf8f148c18a91d73e',1,'caffe::SigmoidLayer::Backward_cpu()'],['../classcaffe_1_1SilenceLayer.html#a15ba1bd65230fda33662b23195aeaaf8',1,'caffe::SilenceLayer::Backward_cpu()'],['../classcaffe_1_1SliceLayer.html#aa6a718baa3285540f2b2d17ebf39447e',1,'caffe::SliceLayer::Backward_cpu()'],['../classcaffe_1_1SoftmaxLayer.html#a399c09698af3820903c01732061dbba9',1,'caffe::SoftmaxLayer::Backward_cpu()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a39d8b7d59f2c951ac2573827f181284f',1,'caffe::SoftmaxWithLossLayer::Backward_cpu()'],['../classcaffe_1_1SplitLayer.html#a8a4a5231eafdf8c35596de50cac9185c',1,'caffe::SplitLayer::Backward_cpu()'],['../classcaffe_1_1SPPLayer.html#a0ad4bf01671eec91fc6fa9732f721555',1,'caffe::SPPLayer::Backward_cpu()'],['../classcaffe_1_1TanHLayer.html#a5406381416c42097befd8bf1922af12b',1,'caffe::TanHLayer::Backward_cpu()'],['../classcaffe_1_1ThresholdLayer.html#a5df4d0e3da5e80d83c5853da0f018db6',1,'caffe::ThresholdLayer::Backward_cpu()'],['../classcaffe_1_1TileLayer.html#a3ca5872f38d740aabf9b132470e9217b',1,'caffe::TileLayer::Backward_cpu()']]], + ['backward_5fgpu',['Backward_gpu',['../classcaffe_1_1Layer.html#a6faee52af6250a38d1b879008257f5a7',1,'caffe::Layer::Backward_gpu()'],['../classcaffe_1_1AbsValLayer.html#aff44062e9eb243c195285bee25b1eefb',1,'caffe::AbsValLayer::Backward_gpu()'],['../classcaffe_1_1BaseDataLayer.html#a537656c76260c7f669c713506a5f4651',1,'caffe::BaseDataLayer::Backward_gpu()'],['../classcaffe_1_1BatchNormLayer.html#a3d48a811fe3adf0c189d976a2ae7f7d8',1,'caffe::BatchNormLayer::Backward_gpu()'],['../classcaffe_1_1BatchReindexLayer.html#a2d561aef5ce7e09115af143c553e7af5',1,'caffe::BatchReindexLayer::Backward_gpu()'],['../classcaffe_1_1BiasLayer.html#a879d979171c8f79f7b5b07b4d9e7945d',1,'caffe::BiasLayer::Backward_gpu()'],['../classcaffe_1_1BNLLLayer.html#ac8a7f10b887b59194694f14e887fc6a6',1,'caffe::BNLLLayer::Backward_gpu()'],['../classcaffe_1_1ConcatLayer.html#ac26a8bdde04bc090183194972d524e09',1,'caffe::ConcatLayer::Backward_gpu()'],['../classcaffe_1_1ContrastiveLossLayer.html#a1501e5437e3f0929da03a1046559dd06',1,'caffe::ContrastiveLossLayer::Backward_gpu()'],['../classcaffe_1_1ConvolutionLayer.html#a2584d7e32e5bb3a9f959aed8e5086575',1,'caffe::ConvolutionLayer::Backward_gpu()'],['../classcaffe_1_1CropLayer.html#a5797567b3f3c31a4b59b636f80c0040e',1,'caffe::CropLayer::Backward_gpu()'],['../classcaffe_1_1DeconvolutionLayer.html#ab7c4889f3460d4ca2c291c2d10de0d98',1,'caffe::DeconvolutionLayer::Backward_gpu()'],['../classcaffe_1_1DropoutLayer.html#a018a322f4e9e2604d9d55d9c85512600',1,'caffe::DropoutLayer::Backward_gpu()'],['../classcaffe_1_1DummyDataLayer.html#a6e9d7a207d517c4e6727e6f9792c414c',1,'caffe::DummyDataLayer::Backward_gpu()'],['../classcaffe_1_1EltwiseLayer.html#a105035776ca3c3d81957e86eff6a54b0',1,'caffe::EltwiseLayer::Backward_gpu()'],['../classcaffe_1_1ELULayer.html#a0dc9a42bb095c77df19118da60198a1e',1,'caffe::ELULayer::Backward_gpu()'],['../classcaffe_1_1EmbedLayer.html#a87bab7b95ab417077a06cf8ad329f908',1,'caffe::EmbedLayer::Backward_gpu()'],['../classcaffe_1_1EuclideanLossLayer.html#aa22a0ef4e0ab9d6a77be67c3d967b648',1,'caffe::EuclideanLossLayer::Backward_gpu()'],['../classcaffe_1_1ExpLayer.html#aa5c6dde86812f0103ab153293c0f68b0',1,'caffe::ExpLayer::Backward_gpu()'],['../classcaffe_1_1FilterLayer.html#a3114666280a8c406779753525c4846c7',1,'caffe::FilterLayer::Backward_gpu()'],['../classcaffe_1_1HDF5DataLayer.html#af8bba12ab79b135944ab57ac58ff2128',1,'caffe::HDF5DataLayer::Backward_gpu()'],['../classcaffe_1_1HDF5OutputLayer.html#a7b6f29bc5aaaf64bf90206c01f34ac4f',1,'caffe::HDF5OutputLayer::Backward_gpu()'],['../classcaffe_1_1Im2colLayer.html#a7424d962a0a88bb5a44454a836c46f5f',1,'caffe::Im2colLayer::Backward_gpu()'],['../classcaffe_1_1InnerProductLayer.html#af91de30f371ece2c02da28bbc963bec9',1,'caffe::InnerProductLayer::Backward_gpu()'],['../classcaffe_1_1LogLayer.html#ac31070a5303ee3e4c04b01326cb0c40a',1,'caffe::LogLayer::Backward_gpu()'],['../classcaffe_1_1LRNLayer.html#a11e0ab3313651275345a043bf2321f95',1,'caffe::LRNLayer::Backward_gpu()'],['../classcaffe_1_1LSTMUnitLayer.html#ad89dd388a2e1067d654d866436508964',1,'caffe::LSTMUnitLayer::Backward_gpu()'],['../classcaffe_1_1MVNLayer.html#a8fa79d2ac331d8b49d390df3a83d43d4',1,'caffe::MVNLayer::Backward_gpu()'],['../classcaffe_1_1PoolingLayer.html#a8c81922065487a94b8159815f77c5e62',1,'caffe::PoolingLayer::Backward_gpu()'],['../classcaffe_1_1PowerLayer.html#a72c15e7b1a1907746bf74db86435d181',1,'caffe::PowerLayer::Backward_gpu()'],['../classcaffe_1_1PReLULayer.html#a16aa9d25c3ba6af789a7e1fee8ae1dfa',1,'caffe::PReLULayer::Backward_gpu()'],['../classcaffe_1_1ReductionLayer.html#aca954f31af8b853bce619eef3f3027e8',1,'caffe::ReductionLayer::Backward_gpu()'],['../classcaffe_1_1ReLULayer.html#a292000d3ed5d63a5a28b5a580fffc61b',1,'caffe::ReLULayer::Backward_gpu()'],['../classcaffe_1_1ReshapeLayer.html#a7f433223bdd7d5e8aa9e73ee9dbea836',1,'caffe::ReshapeLayer::Backward_gpu()'],['../classcaffe_1_1ScaleLayer.html#aa0a2e96ec16cc61a2d8a9d47b729bee4',1,'caffe::ScaleLayer::Backward_gpu()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#a3e1aa9138092aad788dc72fef27041f2',1,'caffe::SigmoidCrossEntropyLossLayer::Backward_gpu()'],['../classcaffe_1_1SigmoidLayer.html#af3043b2aee3cb29727a70f0a5265d84b',1,'caffe::SigmoidLayer::Backward_gpu()'],['../classcaffe_1_1SilenceLayer.html#a803c2b6a1064e885ef5f7bd08eabab55',1,'caffe::SilenceLayer::Backward_gpu()'],['../classcaffe_1_1SliceLayer.html#a6daa65218a8bfaa3337800730ba67977',1,'caffe::SliceLayer::Backward_gpu()'],['../classcaffe_1_1SoftmaxLayer.html#aaade0af85fe0565f788164f3e92ee919',1,'caffe::SoftmaxLayer::Backward_gpu()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#ac6ae6482673cab4933ceb67972f80ee7',1,'caffe::SoftmaxWithLossLayer::Backward_gpu()'],['../classcaffe_1_1SplitLayer.html#adfdd98a92c7e0eed33c1fa77d2852a33',1,'caffe::SplitLayer::Backward_gpu()'],['../classcaffe_1_1TanHLayer.html#a168f97ed32aaf7b67d75868f46229db1',1,'caffe::TanHLayer::Backward_gpu()'],['../classcaffe_1_1TileLayer.html#ad8ed67bfc8dad624a42a874897714cb2',1,'caffe::TileLayer::Backward_gpu()']]], + ['backwarddebuginfo',['BackwardDebugInfo',['../classcaffe_1_1Net.html#a0ddec52928f0488e1b1136a0d72db0a1',1,'caffe::Net']]], + ['blob',['Blob',['../classcaffe_1_1Blob.html#a379df830aad9b3cae253e1ddb0863844',1,'caffe::Blob']]], + ['blob_5fnames',['blob_names',['../classcaffe_1_1Net.html#aeaf1e942f1552b9c48bd9e834ede20e6',1,'caffe::Net']]], + ['blobs',['blobs',['../classcaffe_1_1Layer.html#aaf4524ce8641a30a8a4784aee1b2b4c8',1,'caffe::Layer::blobs()'],['../classcaffe_1_1Net.html#ab64573aa9187fb7540825d9338807a79',1,'caffe::Net::blobs()']]], + ['bottom_5fids',['bottom_ids',['../classcaffe_1_1Net.html#a7ccd2bf8a1684171b7d7603cf20c0251',1,'caffe::Net']]], + ['bottom_5fvecs',['bottom_vecs',['../classcaffe_1_1Net.html#a25c25c31ddf7a78c7dfded318798764c',1,'caffe::Net']]] +]; diff --git a/doxygen/search/functions_10.html b/doxygen/search/functions_10.html new file mode 100644 index 00000000000..c78227c88ac --- /dev/null +++ b/doxygen/search/functions_10.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/functions_10.js b/doxygen/search/functions_10.js new file mode 100644 index 00000000000..372b97e7239 --- /dev/null +++ b/doxygen/search/functions_10.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['thresholdlayer',['ThresholdLayer',['../classcaffe_1_1ThresholdLayer.html#a18883bf3cb9c29828acd59b8216ba1de',1,'caffe::ThresholdLayer']]], + ['tohdf5',['ToHDF5',['../classcaffe_1_1Net.html#ad3ac317bbc872bc6ed48d19f4d986ecc',1,'caffe::Net']]], + ['top_5fids',['top_ids',['../classcaffe_1_1Net.html#a8e42b5eba7886385d2d4b6f457314968',1,'caffe::Net']]], + ['top_5fvecs',['top_vecs',['../classcaffe_1_1Net.html#ad9aace0b6b268d391101f0ce31be9fd1',1,'caffe::Net']]], + ['toproto',['ToProto',['../classcaffe_1_1Layer.html#a4a1754828dda22cc8daa2f63377f3579',1,'caffe::Layer::ToProto()'],['../classcaffe_1_1Net.html#a6ce42e3be6f7b495fe2fea85db2e99f8',1,'caffe::Net::ToProto()']]], + ['transform',['Transform',['../classcaffe_1_1DataTransformer.html#a1626db49587d506a91e7b70373ace816',1,'caffe::DataTransformer::Transform(const Datum &datum, Blob< Dtype > *transformed_blob)'],['../classcaffe_1_1DataTransformer.html#a082cad626c5f51c9f8d93bb88cca1bd0',1,'caffe::DataTransformer::Transform(const vector< Datum > &datum_vector, Blob< Dtype > *transformed_blob)'],['../classcaffe_1_1DataTransformer.html#a168abf1bf9466420da6968178c6edb4d',1,'caffe::DataTransformer::Transform(Blob< Dtype > *input_blob, Blob< Dtype > *transformed_blob)']]], + ['type',['type',['../classcaffe_1_1Layer.html#a8952bff6bc4c2a96d8ea30d8ff65b198',1,'caffe::Layer::type()'],['../classcaffe_1_1AbsValLayer.html#aae782c69f757eacf4cec30131726e29d',1,'caffe::AbsValLayer::type()'],['../classcaffe_1_1AccuracyLayer.html#a6039b0528a2017c4f9d32ad2c67a9ef2',1,'caffe::AccuracyLayer::type()'],['../classcaffe_1_1ArgMaxLayer.html#af4826eb75118ddf465b7c2ab99b10b45',1,'caffe::ArgMaxLayer::type()'],['../classcaffe_1_1BatchNormLayer.html#a58c9860015d3527ba1df35520a9d9cfc',1,'caffe::BatchNormLayer::type()'],['../classcaffe_1_1BatchReindexLayer.html#ab2a8d8b1a7953ca031d7638f1223b6c7',1,'caffe::BatchReindexLayer::type()'],['../classcaffe_1_1BiasLayer.html#a5d2e82265dde2cda44e30c052babef9b',1,'caffe::BiasLayer::type()'],['../classcaffe_1_1BNLLLayer.html#a6a44de21163e4a9bead5bc5b2851d191',1,'caffe::BNLLLayer::type()'],['../classcaffe_1_1ConcatLayer.html#a3e7f83937180cbf11c60146b44b1a044',1,'caffe::ConcatLayer::type()'],['../classcaffe_1_1ContrastiveLossLayer.html#ab88839b44729c1bd11de97a44011aaa9',1,'caffe::ContrastiveLossLayer::type()'],['../classcaffe_1_1ConvolutionLayer.html#a43668ecdc0a579dd44fd9efbdfa076a9',1,'caffe::ConvolutionLayer::type()'],['../classcaffe_1_1CropLayer.html#af2261efb4a0861a1db4f8620fe4914de',1,'caffe::CropLayer::type()'],['../classcaffe_1_1DataLayer.html#a6a5198f51cb51854be3d2d1e7891eeae',1,'caffe::DataLayer::type()'],['../classcaffe_1_1DeconvolutionLayer.html#acc0d5ad1c1c4f20e6bdca42fc37fbfe3',1,'caffe::DeconvolutionLayer::type()'],['../classcaffe_1_1DropoutLayer.html#a95456634a033d94c23ef0db3679ccbc9',1,'caffe::DropoutLayer::type()'],['../classcaffe_1_1DummyDataLayer.html#ac41023bacefdb067d6ab153f10e486d4',1,'caffe::DummyDataLayer::type()'],['../classcaffe_1_1EltwiseLayer.html#a2942edf636e0a740d718781325912693',1,'caffe::EltwiseLayer::type()'],['../classcaffe_1_1ELULayer.html#a438ef94c0d5040335f5b095f0f864f07',1,'caffe::ELULayer::type()'],['../classcaffe_1_1EmbedLayer.html#adf4e7eb6e6fa3722ba00b877f43a96db',1,'caffe::EmbedLayer::type()'],['../classcaffe_1_1EuclideanLossLayer.html#afe52ebbfc18c5cc36e0bdc35445c82e5',1,'caffe::EuclideanLossLayer::type()'],['../classcaffe_1_1ExpLayer.html#a1f99d76f8356e7698f7a2e0f70fa5b85',1,'caffe::ExpLayer::type()'],['../classcaffe_1_1FilterLayer.html#ade903bde57d67d6980b1608bf146fd30',1,'caffe::FilterLayer::type()'],['../classcaffe_1_1FlattenLayer.html#ab136e266a840c618abc3daa12f1b4650',1,'caffe::FlattenLayer::type()'],['../classcaffe_1_1HDF5DataLayer.html#a717c78e3de84c43061f5a6d7421104d1',1,'caffe::HDF5DataLayer::type()'],['../classcaffe_1_1HDF5OutputLayer.html#aebde1cfc48583ce0d2e85ea0542a7077',1,'caffe::HDF5OutputLayer::type()'],['../classcaffe_1_1HingeLossLayer.html#a9bee53540accf1ad93e68bfcf0302c1f',1,'caffe::HingeLossLayer::type()'],['../classcaffe_1_1Im2colLayer.html#a8f3b31bc7134edbc8e3286b2c65e294e',1,'caffe::Im2colLayer::type()'],['../classcaffe_1_1ImageDataLayer.html#ac856b2705f2b8f46669d66c7cca2e9ed',1,'caffe::ImageDataLayer::type()'],['../classcaffe_1_1InfogainLossLayer.html#aada26ffd60207582fe2af602004e271b',1,'caffe::InfogainLossLayer::type()'],['../classcaffe_1_1InnerProductLayer.html#af10fcfd9a34e23809c4374633c174bee',1,'caffe::InnerProductLayer::type()'],['../classcaffe_1_1InputLayer.html#a44fd054aabf86e5b1e1137c3e9d0f091',1,'caffe::InputLayer::type()'],['../classcaffe_1_1LogLayer.html#aec4c7354215da16156bdc3c966ba311f',1,'caffe::LogLayer::type()'],['../classcaffe_1_1LRNLayer.html#aaa924f8eed5e6300efdb6bc594a29497',1,'caffe::LRNLayer::type()'],['../classcaffe_1_1LSTMLayer.html#a971791d82dee1ec9cdd0625ee1579e22',1,'caffe::LSTMLayer::type()'],['../classcaffe_1_1LSTMUnitLayer.html#a684fc0eb2d2277651b26609ec7314747',1,'caffe::LSTMUnitLayer::type()'],['../classcaffe_1_1MemoryDataLayer.html#a374835f9df814ef78e3f4a4d640f0d35',1,'caffe::MemoryDataLayer::type()'],['../classcaffe_1_1MultinomialLogisticLossLayer.html#a024d90a0acee12dbec6c640fe709d5ea',1,'caffe::MultinomialLogisticLossLayer::type()'],['../classcaffe_1_1MVNLayer.html#af32c09dc68d5a12dd2111ff07b373e8a',1,'caffe::MVNLayer::type()'],['../classcaffe_1_1ParameterLayer.html#a420c30294be98af9ad75c27c75a7bae7',1,'caffe::ParameterLayer::type()'],['../classcaffe_1_1PoolingLayer.html#a630cde9866e35304372f3f93d7f6a307',1,'caffe::PoolingLayer::type()'],['../classcaffe_1_1PowerLayer.html#ac6d6a562dc64397092a1216bc20d92d5',1,'caffe::PowerLayer::type()'],['../classcaffe_1_1PReLULayer.html#a9ce1a8cd35e8b7a891f6cb2646fc79b9',1,'caffe::PReLULayer::type()'],['../classcaffe_1_1PythonLayer.html#ab7a2b0dcfcc8dd74794675ce3761e614',1,'caffe::PythonLayer::type()'],['../classcaffe_1_1RecurrentLayer.html#afc0b925b8bf94a795c9ff84f411e70a3',1,'caffe::RecurrentLayer::type()'],['../classcaffe_1_1ReductionLayer.html#aafc754e45877961380a214e5410033ed',1,'caffe::ReductionLayer::type()'],['../classcaffe_1_1ReLULayer.html#ace58f9f5cf8bf4d0b14b24d598914144',1,'caffe::ReLULayer::type()'],['../classcaffe_1_1ReshapeLayer.html#a127379b9839d0f8f464d78cae28a6118',1,'caffe::ReshapeLayer::type()'],['../classcaffe_1_1RNNLayer.html#a4c0d018f595c6627de34555dc0fc553c',1,'caffe::RNNLayer::type()'],['../classcaffe_1_1ScaleLayer.html#a73f354bbf33da4836b4816f4df6bd7cf',1,'caffe::ScaleLayer::type()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#a38dd36e04f37f4692446b057a48e96e1',1,'caffe::SigmoidCrossEntropyLossLayer::type()'],['../classcaffe_1_1SigmoidLayer.html#a820deac6605e5048cd15e00d7602b101',1,'caffe::SigmoidLayer::type()'],['../classcaffe_1_1SilenceLayer.html#a15c82cb3f0f3da19c07cc9878aa8d6cf',1,'caffe::SilenceLayer::type()'],['../classcaffe_1_1SliceLayer.html#a61b1bf3326b7aaa1d984bcb8ce692f43',1,'caffe::SliceLayer::type()'],['../classcaffe_1_1SoftmaxLayer.html#ab2481d025d184bff73c6ae5a5fa29ac1',1,'caffe::SoftmaxLayer::type()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a79aad991f6c56097068ccca031f1288a',1,'caffe::SoftmaxWithLossLayer::type()'],['../classcaffe_1_1SplitLayer.html#a69113b39e1f3f1ad83b5765496fcdb35',1,'caffe::SplitLayer::type()'],['../classcaffe_1_1SPPLayer.html#aafd1daca2ac42380582cad761bc6d57b',1,'caffe::SPPLayer::type()'],['../classcaffe_1_1TanHLayer.html#aab1526c84cd67d0de49bf2a1ee6b1bf6',1,'caffe::TanHLayer::type()'],['../classcaffe_1_1ThresholdLayer.html#ad1be0a529b7f18cc483115afe845ed59',1,'caffe::ThresholdLayer::type()'],['../classcaffe_1_1TileLayer.html#a1ef109677c3dd7fb9963a69c633585e8',1,'caffe::TileLayer::type()'],['../classcaffe_1_1WindowDataLayer.html#abbe9d7bd1141bf0492eeca4bb1d7b7c3',1,'caffe::WindowDataLayer::type()'],['../classcaffe_1_1SGDSolver.html#afea4a316da9b743353d6d381d3ffce24',1,'caffe::SGDSolver::type()'],['../classcaffe_1_1NesterovSolver.html#a034bfdd0f75b9f29ec0b61393aea8387',1,'caffe::NesterovSolver::type()'],['../classcaffe_1_1AdaGradSolver.html#a8d1731c3c53568344ba2745e3d9aa8d9',1,'caffe::AdaGradSolver::type()'],['../classcaffe_1_1RMSPropSolver.html#a3be4ffd28e5aed1e2c02c5f9225986ba',1,'caffe::RMSPropSolver::type()'],['../classcaffe_1_1AdaDeltaSolver.html#a645d215770c417a00f9d38482adb2ec0',1,'caffe::AdaDeltaSolver::type()'],['../classcaffe_1_1AdamSolver.html#a3ad927ab9d19ebf2fe2b8a2e9101cb3e',1,'caffe::AdamSolver::type()'],['../classcaffe_1_1Solver.html#a733bef9a2e7dea29f52ed46a922d96f7',1,'caffe::Solver::type()']]] +]; diff --git a/doxygen/search/functions_11.html b/doxygen/search/functions_11.html new file mode 100644 index 00000000000..3ab653ee73c --- /dev/null +++ b/doxygen/search/functions_11.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/functions_11.js b/doxygen/search/functions_11.js new file mode 100644 index 00000000000..6330621886d --- /dev/null +++ b/doxygen/search/functions_11.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['update',['Update',['../classcaffe_1_1Net.html#a8a2544cefc59d6cbe1bf634f5d5be1c5',1,'caffe::Net']]], + ['updatedebuginfo',['UpdateDebugInfo',['../classcaffe_1_1Net.html#a93a439c92c9218f1dfff16f76d617faa',1,'caffe::Net']]] +]; diff --git a/doxygen/search/functions_12.html b/doxygen/search/functions_12.html new file mode 100644 index 00000000000..cacca935a0e --- /dev/null +++ b/doxygen/search/functions_12.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/functions_12.js b/doxygen/search/functions_12.js new file mode 100644 index 00000000000..b7c75af4b04 --- /dev/null +++ b/doxygen/search/functions_12.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['width',['width',['../classcaffe_1_1Blob.html#afbdc067c69e6b9bd6880a73c13db2ec6',1,'caffe::Blob']]] +]; diff --git a/doxygen/search/functions_2.html b/doxygen/search/functions_2.html new file mode 100644 index 00000000000..c21af161378 --- /dev/null +++ b/doxygen/search/functions_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/functions_2.js b/doxygen/search/functions_2.js new file mode 100644 index 00000000000..787d0923b44 --- /dev/null +++ b/doxygen/search/functions_2.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['canonicalaxisindex',['CanonicalAxisIndex',['../classcaffe_1_1Blob.html#ad686f5ed9994046f2c741bfa81118509',1,'caffe::Blob']]], + ['channels',['channels',['../classcaffe_1_1Blob.html#ae48c8e9f0a0b66b041e47bf37ed04471',1,'caffe::Blob']]], + ['checkblobcounts',['CheckBlobCounts',['../classcaffe_1_1Layer.html#a55c8036130225fbc874a986bdf4b27e2',1,'caffe::Layer']]], + ['clearparamdiffs',['ClearParamDiffs',['../classcaffe_1_1Net.html#a3d251c397f812a6d8e162db3a82bb198',1,'caffe::Net']]], + ['convolutionlayer',['ConvolutionLayer',['../classcaffe_1_1ConvolutionLayer.html#ad27360afd7729001b9e4f1d8c8401866',1,'caffe::ConvolutionLayer']]], + ['copyfrom',['CopyFrom',['../classcaffe_1_1Blob.html#a64ad51f99e88233f43a21a85ebe10284',1,'caffe::Blob']]], + ['copytrainedlayersfrom',['CopyTrainedLayersFrom',['../classcaffe_1_1Net.html#a4ac2b69748470f54d530bc5dfa05b9c3',1,'caffe::Net']]], + ['count',['count',['../classcaffe_1_1Blob.html#a8674686a97c961b309b4420ead6626b5',1,'caffe::Blob::count(int start_axis, int end_axis) const'],['../classcaffe_1_1Blob.html#aab573b2a70c26bf3b2ae65e42706003e',1,'caffe::Blob::count(int start_axis) const']]] +]; diff --git a/doxygen/search/functions_3.html b/doxygen/search/functions_3.html new file mode 100644 index 00000000000..e6f4744248b --- /dev/null +++ b/doxygen/search/functions_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/functions_3.js b/doxygen/search/functions_3.js new file mode 100644 index 00000000000..979ff8bc99d --- /dev/null +++ b/doxygen/search/functions_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['dropoutlayer',['DropoutLayer',['../classcaffe_1_1DropoutLayer.html#a24cbddd4699b102a9555d3b8013c16d0',1,'caffe::DropoutLayer']]] +]; diff --git a/doxygen/search/functions_4.html b/doxygen/search/functions_4.html new file mode 100644 index 00000000000..9ae34ff2e68 --- /dev/null +++ b/doxygen/search/functions_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/functions_4.js b/doxygen/search/functions_4.js new file mode 100644 index 00000000000..8e7e049ad85 --- /dev/null +++ b/doxygen/search/functions_4.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['elulayer',['ELULayer',['../classcaffe_1_1ELULayer.html#af0b475c3d3b68f6daf7e2edcb7d5b97a',1,'caffe::ELULayer']]], + ['equalnumbottomtopblobs',['EqualNumBottomTopBlobs',['../classcaffe_1_1Layer.html#af452a938bc7596f9b5e9900c8dc4ab3d',1,'caffe::Layer::EqualNumBottomTopBlobs()'],['../classcaffe_1_1BaseConvolutionLayer.html#ad8e839460bf52abe3df2008b99a1810d',1,'caffe::BaseConvolutionLayer::EqualNumBottomTopBlobs()']]], + ['exactnumbottomblobs',['ExactNumBottomBlobs',['../classcaffe_1_1Layer.html#a8e5ee0494d85f5f55fc4396537cbc60f',1,'caffe::Layer::ExactNumBottomBlobs()'],['../classcaffe_1_1AbsValLayer.html#acac806dbc6d3fa3dd7daae00caabd731',1,'caffe::AbsValLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1AccuracyLayer.html#afb0d3db8e4a18bec0e05d54d11453ef1',1,'caffe::AccuracyLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1ArgMaxLayer.html#a786fb4163cd0a31a564100ce7e4b74b2',1,'caffe::ArgMaxLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1BatchNormLayer.html#a5b87980f25eea544ebff916586c870e6',1,'caffe::BatchNormLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1BatchReindexLayer.html#a4120d2fd610655c7ad3d846637564bc6',1,'caffe::BatchReindexLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1ContrastiveLossLayer.html#aa6f3ad6918e64ffa1828e821accf25e9',1,'caffe::ContrastiveLossLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1CropLayer.html#ac6386917437ef54003bb7f8c2618f5fe',1,'caffe::CropLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1DataLayer.html#a2b6fa99ededf0863d8bab4a7a46addae',1,'caffe::DataLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1DummyDataLayer.html#a73101a8ace6de2b179e36c13be17cb17',1,'caffe::DummyDataLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1EmbedLayer.html#a0634500a12e1d2299b7c8556976e4529',1,'caffe::EmbedLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1FlattenLayer.html#a0b0f583d8952d7cd45cbf4bae2a38548',1,'caffe::FlattenLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1HDF5DataLayer.html#a4eb72974cea32c84acb6b8012a0d326b',1,'caffe::HDF5DataLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1HDF5OutputLayer.html#a92fb5561414d7e8b8845b0279b1ee847',1,'caffe::HDF5OutputLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1Im2colLayer.html#a35772d667af49afe707c7b1db881c573',1,'caffe::Im2colLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1ImageDataLayer.html#a6776c86faf14e35ae7be9848c7012aa5',1,'caffe::ImageDataLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1InfogainLossLayer.html#aa03732f381764180748479c83b289869',1,'caffe::InfogainLossLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1InnerProductLayer.html#a5afdeb6b448b2f7d0637afa554381500',1,'caffe::InnerProductLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1InputLayer.html#ac4c1f2f0444a103727d793a6ae410e67',1,'caffe::InputLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1LossLayer.html#af1620064baefb711e2c767bdc92b6fb1',1,'caffe::LossLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1LRNLayer.html#a32be44f9f361d29f05261bd174d92321',1,'caffe::LRNLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1LSTMUnitLayer.html#a087f5f5b0e6c50d98e7a7d04aa35f1b9',1,'caffe::LSTMUnitLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1MemoryDataLayer.html#a05a867526de7e0c6ec4851a97f52a47b',1,'caffe::MemoryDataLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1MVNLayer.html#afd9b078a1bb48de9b91f3766edbbf058',1,'caffe::MVNLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1NeuronLayer.html#abb6c0e6acd2863baf47d6e6acda6f55f',1,'caffe::NeuronLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1ParameterLayer.html#a0acd33d14dd208c5a439940c50c6d3d3',1,'caffe::ParameterLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1PoolingLayer.html#a07dc8b1c3bfa3a997dd86b4e53f54019',1,'caffe::PoolingLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1ReductionLayer.html#a64694af2e56723590072cac88bf825c7',1,'caffe::ReductionLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1ReshapeLayer.html#ad97ea6043b01351e85b39b512ae0e489',1,'caffe::ReshapeLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1SliceLayer.html#abfc6e86b0b22c156ddc350168cd7757b',1,'caffe::SliceLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1SoftmaxLayer.html#afe44488dde78e6bcf6d4bdad97ee4986',1,'caffe::SoftmaxLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1SplitLayer.html#a8ff310ac37e1e79ce6ef8fbc95be0cd9',1,'caffe::SplitLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1SPPLayer.html#a0fcc7996823cba1a468e82b3f9058ff0',1,'caffe::SPPLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1TileLayer.html#ac7e0da0e543f134e04b00d8625132b71',1,'caffe::TileLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1WindowDataLayer.html#ac982c8170a7f899366321412a7bb91d7',1,'caffe::WindowDataLayer::ExactNumBottomBlobs()']]], + ['exactnumtopblobs',['ExactNumTopBlobs',['../classcaffe_1_1Layer.html#a64e2ca72c719e4b2f1f9216ccfb0d37f',1,'caffe::Layer::ExactNumTopBlobs()'],['../classcaffe_1_1AbsValLayer.html#aaf18bf4b77994475e8b55e5cefaa654a',1,'caffe::AbsValLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ArgMaxLayer.html#a45e9c6e7b572b915be8731fcb6403695',1,'caffe::ArgMaxLayer::ExactNumTopBlobs()'],['../classcaffe_1_1BatchNormLayer.html#ab8575decdd0c5c42e24b9c3424f708ad',1,'caffe::BatchNormLayer::ExactNumTopBlobs()'],['../classcaffe_1_1BatchReindexLayer.html#a7d5c537334359c2a83cce489fb534342',1,'caffe::BatchReindexLayer::ExactNumTopBlobs()'],['../classcaffe_1_1BiasLayer.html#a9552dc137a5bcbdd17bdb3321d678595',1,'caffe::BiasLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ConcatLayer.html#a0f19a4cac8676927f9c83010957a2921',1,'caffe::ConcatLayer::ExactNumTopBlobs()'],['../classcaffe_1_1CropLayer.html#a7e4a9aa634577308bc189adcf0ac22ed',1,'caffe::CropLayer::ExactNumTopBlobs()'],['../classcaffe_1_1EltwiseLayer.html#a60ae4a38cade1cc7f6111e51cabb441b',1,'caffe::EltwiseLayer::ExactNumTopBlobs()'],['../classcaffe_1_1EmbedLayer.html#af02f4561fa25a979e523aae851bed39d',1,'caffe::EmbedLayer::ExactNumTopBlobs()'],['../classcaffe_1_1FlattenLayer.html#a09d5ccd980598cce0472b3bd66316c08',1,'caffe::FlattenLayer::ExactNumTopBlobs()'],['../classcaffe_1_1HDF5OutputLayer.html#ad11b8da0a6217a0f9a63789b360b1c99',1,'caffe::HDF5OutputLayer::ExactNumTopBlobs()'],['../classcaffe_1_1Im2colLayer.html#ab2cf1f7dd41b801ed32471ec492d423c',1,'caffe::Im2colLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ImageDataLayer.html#aa9182d46877b8514fca86e3588249567',1,'caffe::ImageDataLayer::ExactNumTopBlobs()'],['../classcaffe_1_1InnerProductLayer.html#a652d8a5b07b72938a81f50305c1a8ee1',1,'caffe::InnerProductLayer::ExactNumTopBlobs()'],['../classcaffe_1_1LossLayer.html#aa5d5ab714a14082f5343dc9c49025b23',1,'caffe::LossLayer::ExactNumTopBlobs()'],['../classcaffe_1_1LRNLayer.html#ac0ee88b119c38749c50e914521cdc148',1,'caffe::LRNLayer::ExactNumTopBlobs()'],['../classcaffe_1_1LSTMUnitLayer.html#a5f56fd304b6581697cbf309ebb8bc9b7',1,'caffe::LSTMUnitLayer::ExactNumTopBlobs()'],['../classcaffe_1_1MemoryDataLayer.html#af714b4cbc022be1592ad26c300b63ae4',1,'caffe::MemoryDataLayer::ExactNumTopBlobs()'],['../classcaffe_1_1MVNLayer.html#ae10d9ef135adf3cd25e86ce06188c814',1,'caffe::MVNLayer::ExactNumTopBlobs()'],['../classcaffe_1_1NeuronLayer.html#a47ac5e7208e4b14ad1e4040a621dbfbc',1,'caffe::NeuronLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ParameterLayer.html#aeb70ea5cec478f098259356690b01c9b',1,'caffe::ParameterLayer::ExactNumTopBlobs()'],['../classcaffe_1_1RecurrentLayer.html#a4cb9032f0942c0fef5f6c7094c7b2ab8',1,'caffe::RecurrentLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ReductionLayer.html#a14224774af732030c5f1c8a3d79e1fc3',1,'caffe::ReductionLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ReshapeLayer.html#a3318c2404c6072ba07178b48d39ef0f5',1,'caffe::ReshapeLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ScaleLayer.html#aeffb8fcfc522f7365c23b0e6ae5c232e',1,'caffe::ScaleLayer::ExactNumTopBlobs()'],['../classcaffe_1_1SilenceLayer.html#a1e072cbda98dbc57001ce92432b045b8',1,'caffe::SilenceLayer::ExactNumTopBlobs()'],['../classcaffe_1_1SoftmaxLayer.html#a6bc4748c20e0940e5367ed4d50f4a11b',1,'caffe::SoftmaxLayer::ExactNumTopBlobs()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a9035d000b2ce51a973f255a5eb2df8e3',1,'caffe::SoftmaxWithLossLayer::ExactNumTopBlobs()'],['../classcaffe_1_1SPPLayer.html#a345f640e6c1d3e9ee929d706b68300e9',1,'caffe::SPPLayer::ExactNumTopBlobs()'],['../classcaffe_1_1TileLayer.html#a1040cc3b4fb028d54f67a685513d745b',1,'caffe::TileLayer::ExactNumTopBlobs()'],['../classcaffe_1_1WindowDataLayer.html#a7bd9264758f462b3392d2eedec8b1c99',1,'caffe::WindowDataLayer::ExactNumTopBlobs()']]], + ['explayer',['ExpLayer',['../classcaffe_1_1ExpLayer.html#a87a0fae261ad3d2c8947f463686a6de0',1,'caffe::ExpLayer']]] +]; diff --git a/doxygen/search/functions_5.html b/doxygen/search/functions_5.html new file mode 100644 index 00000000000..54f53d07228 --- /dev/null +++ b/doxygen/search/functions_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/functions_5.js b/doxygen/search/functions_5.js new file mode 100644 index 00000000000..243e2b79267 --- /dev/null +++ b/doxygen/search/functions_5.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['fillunrollednet',['FillUnrolledNet',['../classcaffe_1_1LSTMLayer.html#a66285fd55798aa17b8d5d0b7f30f8346',1,'caffe::LSTMLayer::FillUnrolledNet()'],['../classcaffe_1_1RecurrentLayer.html#a04a3a032c4d0be559d88865a13a2d927',1,'caffe::RecurrentLayer::FillUnrolledNet()'],['../classcaffe_1_1RNNLayer.html#a2869101eb6b9c472f9d78b9149246729',1,'caffe::RNNLayer::FillUnrolledNet()']]], + ['filternet',['FilterNet',['../classcaffe_1_1Net.html#a4a38a77b5f01ba4754e6007b9f1214f8',1,'caffe::Net']]], + ['forward',['Forward',['../classcaffe_1_1Layer.html#ab57d272dabe8c709d2a785eebe72ca57',1,'caffe::Layer::Forward()'],['../classcaffe_1_1Net.html#a6f6cf9d40637f7576828d856bb1b1826',1,'caffe::Net::Forward(Dtype *loss=NULL)'],['../classcaffe_1_1Net.html#ac78806e7aa069439622de4177323c46c',1,'caffe::Net::Forward(const vector< Blob< Dtype > * > &bottom, Dtype *loss=NULL)']]], + ['forward_5fcpu',['Forward_cpu',['../classcaffe_1_1Layer.html#a576ac6a60b1e99fe383831f52a6cea77',1,'caffe::Layer::Forward_cpu()'],['../classcaffe_1_1AbsValLayer.html#a094d7da8c6d6eeebc7db189f4cd258f9',1,'caffe::AbsValLayer::Forward_cpu()'],['../classcaffe_1_1AccuracyLayer.html#ad61bb4c6984d9df6a61562cd5c19ff6d',1,'caffe::AccuracyLayer::Forward_cpu()'],['../classcaffe_1_1ArgMaxLayer.html#a0e4cb76ff1796b71079f83335f033c44',1,'caffe::ArgMaxLayer::Forward_cpu()'],['../classcaffe_1_1BasePrefetchingDataLayer.html#a21fea2e38602ff125fceafe2feece212',1,'caffe::BasePrefetchingDataLayer::Forward_cpu()'],['../classcaffe_1_1BatchNormLayer.html#ae289cca53d6f5a6803f6377aacfc99e2',1,'caffe::BatchNormLayer::Forward_cpu()'],['../classcaffe_1_1BatchReindexLayer.html#af7de3792af32dc8025c359700bd40b5e',1,'caffe::BatchReindexLayer::Forward_cpu()'],['../classcaffe_1_1BiasLayer.html#abbab2f856ed656aefc4fa7049c77d008',1,'caffe::BiasLayer::Forward_cpu()'],['../classcaffe_1_1BNLLLayer.html#ad85abcd4d6afd609be859f0360525102',1,'caffe::BNLLLayer::Forward_cpu()'],['../classcaffe_1_1ConcatLayer.html#a619c378faa120012f06bfc1065b89ae2',1,'caffe::ConcatLayer::Forward_cpu()'],['../classcaffe_1_1ContrastiveLossLayer.html#ae55966330621c1a2bd5a0012f2b09fe4',1,'caffe::ContrastiveLossLayer::Forward_cpu()'],['../classcaffe_1_1ConvolutionLayer.html#aee44e1abace0f8827db48632b62efc22',1,'caffe::ConvolutionLayer::Forward_cpu()'],['../classcaffe_1_1CropLayer.html#ace1eb45b15e9e9f304966ac13152cb59',1,'caffe::CropLayer::Forward_cpu()'],['../classcaffe_1_1DeconvolutionLayer.html#a32782e43a4e5edaa7743359f49fda563',1,'caffe::DeconvolutionLayer::Forward_cpu()'],['../classcaffe_1_1DropoutLayer.html#af3d3f94306230950edf514e0fbb8f710',1,'caffe::DropoutLayer::Forward_cpu()'],['../classcaffe_1_1DummyDataLayer.html#a4bcc61f06b232601fa4ea4fb4789db2c',1,'caffe::DummyDataLayer::Forward_cpu()'],['../classcaffe_1_1EltwiseLayer.html#aea612d32d1e61df7f7e9bfa2965c0ac4',1,'caffe::EltwiseLayer::Forward_cpu()'],['../classcaffe_1_1ELULayer.html#a041f6109649dfb97dff80c0d6364c20d',1,'caffe::ELULayer::Forward_cpu()'],['../classcaffe_1_1EmbedLayer.html#a142d3411d5c20deafca282d60c9d0975',1,'caffe::EmbedLayer::Forward_cpu()'],['../classcaffe_1_1EuclideanLossLayer.html#a3bc5a947caadac1a352a89b08720c7e7',1,'caffe::EuclideanLossLayer::Forward_cpu()'],['../classcaffe_1_1ExpLayer.html#af623edf2518145ad490baebdda9efe92',1,'caffe::ExpLayer::Forward_cpu()'],['../classcaffe_1_1FilterLayer.html#a67a110cc4062500dcfdb539e3ba9154b',1,'caffe::FilterLayer::Forward_cpu()'],['../classcaffe_1_1FlattenLayer.html#ae42cce73862d196614e1ea9808a3813a',1,'caffe::FlattenLayer::Forward_cpu()'],['../classcaffe_1_1HDF5DataLayer.html#a6ee944e4d80a76a13e955c36f33a2cee',1,'caffe::HDF5DataLayer::Forward_cpu()'],['../classcaffe_1_1HDF5OutputLayer.html#a9bab1f9fd935b4e5f90e6cdb2e86c8c3',1,'caffe::HDF5OutputLayer::Forward_cpu()'],['../classcaffe_1_1HingeLossLayer.html#ab10e623d1ffbef7ba7ceeaf225bca428',1,'caffe::HingeLossLayer::Forward_cpu()'],['../classcaffe_1_1Im2colLayer.html#af011dfac92219df578dea8a30a76bb01',1,'caffe::Im2colLayer::Forward_cpu()'],['../classcaffe_1_1InfogainLossLayer.html#a134b51c126eb4b62fac804965f8d8327',1,'caffe::InfogainLossLayer::Forward_cpu()'],['../classcaffe_1_1InnerProductLayer.html#a52dfe331693c6fa9925f70b53d55ce0e',1,'caffe::InnerProductLayer::Forward_cpu()'],['../classcaffe_1_1InputLayer.html#a0037e83e3052b20280cd508a50c30fe1',1,'caffe::InputLayer::Forward_cpu()'],['../classcaffe_1_1LogLayer.html#a407de9bdb364ed170a73c6eebc74dce9',1,'caffe::LogLayer::Forward_cpu()'],['../classcaffe_1_1LRNLayer.html#a48782b435dbe9f6caba856521d4ea322',1,'caffe::LRNLayer::Forward_cpu()'],['../classcaffe_1_1LSTMUnitLayer.html#ad44e302db28f57bfdfbbbde452deb4fd',1,'caffe::LSTMUnitLayer::Forward_cpu()'],['../classcaffe_1_1MemoryDataLayer.html#a4a573b91dfe4e83cce4bc311355e9af3',1,'caffe::MemoryDataLayer::Forward_cpu()'],['../classcaffe_1_1MultinomialLogisticLossLayer.html#a7192a16a5b051f93d784be269d7bfcb3',1,'caffe::MultinomialLogisticLossLayer::Forward_cpu()'],['../classcaffe_1_1MVNLayer.html#a48344a0a68ba16fb4cc88c13797a65b6',1,'caffe::MVNLayer::Forward_cpu()'],['../classcaffe_1_1ParameterLayer.html#a3e39615f143ecbd12b45eb29701ff2d9',1,'caffe::ParameterLayer::Forward_cpu()'],['../classcaffe_1_1PoolingLayer.html#aef6342f42e3834cb050b7fc19808090f',1,'caffe::PoolingLayer::Forward_cpu()'],['../classcaffe_1_1PowerLayer.html#a3f0196eab7b1f374a4705426d42b0711',1,'caffe::PowerLayer::Forward_cpu()'],['../classcaffe_1_1PReLULayer.html#ab29811e077cc15d6751366d3f918acd6',1,'caffe::PReLULayer::Forward_cpu()'],['../classcaffe_1_1PythonLayer.html#ad6ca840f04bd9a4823260c9e8641224b',1,'caffe::PythonLayer::Forward_cpu()'],['../classcaffe_1_1RecurrentLayer.html#a9f0e34d7534fac027c640e66f55a18d2',1,'caffe::RecurrentLayer::Forward_cpu()'],['../classcaffe_1_1ReductionLayer.html#aa378b271b6082975ae9037f4c530fb7e',1,'caffe::ReductionLayer::Forward_cpu()'],['../classcaffe_1_1ReLULayer.html#ab9c29de12e2fac75843fe97f16fe14ba',1,'caffe::ReLULayer::Forward_cpu()'],['../classcaffe_1_1ReshapeLayer.html#a0529c00e9d2fa47943ba5292cfdcb6db',1,'caffe::ReshapeLayer::Forward_cpu()'],['../classcaffe_1_1ScaleLayer.html#a517d8eb2816c79daa1454ef5c7de065b',1,'caffe::ScaleLayer::Forward_cpu()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#aa3e7f285742d862435d5e49d13e05064',1,'caffe::SigmoidCrossEntropyLossLayer::Forward_cpu()'],['../classcaffe_1_1SigmoidLayer.html#a172178732461d3785b1ca0ad0bbdf1f0',1,'caffe::SigmoidLayer::Forward_cpu()'],['../classcaffe_1_1SilenceLayer.html#addaeabb81732686b6367147395dbf466',1,'caffe::SilenceLayer::Forward_cpu()'],['../classcaffe_1_1SliceLayer.html#add08039f334b7b962883f2cb60dd7051',1,'caffe::SliceLayer::Forward_cpu()'],['../classcaffe_1_1SoftmaxLayer.html#ab3105dbc12da4099090847e1fa4ed356',1,'caffe::SoftmaxLayer::Forward_cpu()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a093493e6f87ee7a411e4c468b5fa9f9c',1,'caffe::SoftmaxWithLossLayer::Forward_cpu()'],['../classcaffe_1_1SplitLayer.html#af8acf13304b849d888510470a76f9e76',1,'caffe::SplitLayer::Forward_cpu()'],['../classcaffe_1_1SPPLayer.html#a8012e099ec860c310a3b9e64c365b872',1,'caffe::SPPLayer::Forward_cpu()'],['../classcaffe_1_1TanHLayer.html#a87e32c406aafb7995e16009e856a818a',1,'caffe::TanHLayer::Forward_cpu()'],['../classcaffe_1_1ThresholdLayer.html#a7aa846dd532cfeb41b09671bd975d120',1,'caffe::ThresholdLayer::Forward_cpu()'],['../classcaffe_1_1TileLayer.html#a08f9c2ae4de617e5a4f03909740a3284',1,'caffe::TileLayer::Forward_cpu()']]], + ['forward_5fgpu',['Forward_gpu',['../classcaffe_1_1Layer.html#af3a88d8fb290877b4c7eb37daa3499de',1,'caffe::Layer::Forward_gpu()'],['../classcaffe_1_1AbsValLayer.html#a12283057a144e9ff648a583de36b7fbd',1,'caffe::AbsValLayer::Forward_gpu()'],['../classcaffe_1_1BasePrefetchingDataLayer.html#a3cc79458a096ec130139b92f4f379aa2',1,'caffe::BasePrefetchingDataLayer::Forward_gpu()'],['../classcaffe_1_1BatchNormLayer.html#ad2d02d7e52628b9ab8de5ba9b93a6ed0',1,'caffe::BatchNormLayer::Forward_gpu()'],['../classcaffe_1_1BatchReindexLayer.html#aa1535f3f9332348dee1a491465f495ed',1,'caffe::BatchReindexLayer::Forward_gpu()'],['../classcaffe_1_1BiasLayer.html#aa767113391a272912043f77d5acccb3e',1,'caffe::BiasLayer::Forward_gpu()'],['../classcaffe_1_1BNLLLayer.html#a1bc9ed3e2ea19df546e070975ddee29b',1,'caffe::BNLLLayer::Forward_gpu()'],['../classcaffe_1_1ConcatLayer.html#ae86c2ad93bac4790fec2c9dcfcba269c',1,'caffe::ConcatLayer::Forward_gpu()'],['../classcaffe_1_1ContrastiveLossLayer.html#abf66587f81d75255e4619c09a95da566',1,'caffe::ContrastiveLossLayer::Forward_gpu()'],['../classcaffe_1_1ConvolutionLayer.html#ae144ebb7d760ed4cfef8ec7bcb8fde22',1,'caffe::ConvolutionLayer::Forward_gpu()'],['../classcaffe_1_1CropLayer.html#a507c00c0d53094e5e885ba9c22028ebb',1,'caffe::CropLayer::Forward_gpu()'],['../classcaffe_1_1DeconvolutionLayer.html#a7cc6c8c75dc09c0e990135a175f84f02',1,'caffe::DeconvolutionLayer::Forward_gpu()'],['../classcaffe_1_1DropoutLayer.html#aec676b1d329ed969ea71b32d595e6201',1,'caffe::DropoutLayer::Forward_gpu()'],['../classcaffe_1_1EltwiseLayer.html#a28e5d5d4c96b091dae743cac1bdded96',1,'caffe::EltwiseLayer::Forward_gpu()'],['../classcaffe_1_1ELULayer.html#adf358202203d0735dff3275d6f668a00',1,'caffe::ELULayer::Forward_gpu()'],['../classcaffe_1_1EmbedLayer.html#a5cb8915c48efcc739211835f6be1a077',1,'caffe::EmbedLayer::Forward_gpu()'],['../classcaffe_1_1EuclideanLossLayer.html#a35f3694e9dd7e1920e26158e761fd8a0',1,'caffe::EuclideanLossLayer::Forward_gpu()'],['../classcaffe_1_1ExpLayer.html#a5e4d78781ca2c27bce9c45601ffdb2ca',1,'caffe::ExpLayer::Forward_gpu()'],['../classcaffe_1_1FilterLayer.html#ae533ee2002b14016ee57daf7a9f6e8d6',1,'caffe::FilterLayer::Forward_gpu()'],['../classcaffe_1_1HDF5DataLayer.html#a9147be08e6e0c9b0300ddad220903fc6',1,'caffe::HDF5DataLayer::Forward_gpu()'],['../classcaffe_1_1HDF5OutputLayer.html#a01983e66527c733011027e86186f0268',1,'caffe::HDF5OutputLayer::Forward_gpu()'],['../classcaffe_1_1Im2colLayer.html#a795d646cb42a7c35e31f0ad2f9afd0f8',1,'caffe::Im2colLayer::Forward_gpu()'],['../classcaffe_1_1InnerProductLayer.html#abee6c2efea84f5124e3745e3c8aeb043',1,'caffe::InnerProductLayer::Forward_gpu()'],['../classcaffe_1_1LogLayer.html#a37ec5bf1dc1a00c1830ec92fcf22fe09',1,'caffe::LogLayer::Forward_gpu()'],['../classcaffe_1_1LRNLayer.html#a7bc44b9640ef0f24e393f77f35df1abb',1,'caffe::LRNLayer::Forward_gpu()'],['../classcaffe_1_1LSTMUnitLayer.html#a20c18c7fe0a8a8fdd6cd700a420ecc1f',1,'caffe::LSTMUnitLayer::Forward_gpu()'],['../classcaffe_1_1MVNLayer.html#a8a4d8c392e4f559f1ac90387b8039015',1,'caffe::MVNLayer::Forward_gpu()'],['../classcaffe_1_1PoolingLayer.html#a9f22c281f8765196b6d113f6a5315409',1,'caffe::PoolingLayer::Forward_gpu()'],['../classcaffe_1_1PowerLayer.html#a0b68dfd6ade0964fcfa58c0997c59db0',1,'caffe::PowerLayer::Forward_gpu()'],['../classcaffe_1_1PReLULayer.html#a5f87617dbd3f561a6f7548dd09d5f486',1,'caffe::PReLULayer::Forward_gpu()'],['../classcaffe_1_1RecurrentLayer.html#afb4cdbb38b24d2a2ccb14cebc4e1018b',1,'caffe::RecurrentLayer::Forward_gpu()'],['../classcaffe_1_1ReductionLayer.html#a54f77eed7da1f4ccf5a10e05efaa7198',1,'caffe::ReductionLayer::Forward_gpu()'],['../classcaffe_1_1ReLULayer.html#abaf3326b871e295c943fc0668b2f5e4e',1,'caffe::ReLULayer::Forward_gpu()'],['../classcaffe_1_1ReshapeLayer.html#a2b75e7b2d96b46b2fbdbab0ff238a1ad',1,'caffe::ReshapeLayer::Forward_gpu()'],['../classcaffe_1_1ScaleLayer.html#abff4005ecb550f54dc86f163ca9f26db',1,'caffe::ScaleLayer::Forward_gpu()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#a3a973821a2a73fd8bf4c2e474b2ad5d8',1,'caffe::SigmoidCrossEntropyLossLayer::Forward_gpu()'],['../classcaffe_1_1SigmoidLayer.html#a197ee39f11f77806565e3938e17dcb63',1,'caffe::SigmoidLayer::Forward_gpu()'],['../classcaffe_1_1SilenceLayer.html#ab3cf88c321128d511b3afa34b3640c6c',1,'caffe::SilenceLayer::Forward_gpu()'],['../classcaffe_1_1SliceLayer.html#af5a87c7f7822b6612eb7e6b09600b68d',1,'caffe::SliceLayer::Forward_gpu()'],['../classcaffe_1_1SoftmaxLayer.html#a9f450daa90f5c066527cfb5a76372783',1,'caffe::SoftmaxLayer::Forward_gpu()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a558fbaaf863070caac03c7566aefdf11',1,'caffe::SoftmaxWithLossLayer::Forward_gpu()'],['../classcaffe_1_1SplitLayer.html#a14f3583f574d20b4169d3859b32f5c0c',1,'caffe::SplitLayer::Forward_gpu()'],['../classcaffe_1_1TanHLayer.html#a5233182369d5ec3fe31be7228b4a409a',1,'caffe::TanHLayer::Forward_gpu()'],['../classcaffe_1_1ThresholdLayer.html#aded9ca701625d915984c9f5ef754ba66',1,'caffe::ThresholdLayer::Forward_gpu()'],['../classcaffe_1_1TileLayer.html#a83d8071de28203a9932f9aa41f7250b6',1,'caffe::TileLayer::Forward_gpu()']]], + ['forwarddebuginfo',['ForwardDebugInfo',['../classcaffe_1_1Net.html#a3751d6095c3d4f4384c52ad80bbd0d88',1,'caffe::Net']]], + ['forwardfromto',['ForwardFromTo',['../classcaffe_1_1Net.html#ae5354c03371d4cb7b18988561790e676',1,'caffe::Net']]], + ['forwardprefilled',['ForwardPrefilled',['../classcaffe_1_1Net.html#a12f8c6cf9f453cdbc9fa8149986303c6',1,'caffe::Net']]] +]; diff --git a/doxygen/search/functions_6.html b/doxygen/search/functions_6.html new file mode 100644 index 00000000000..c7bc6fbc7a6 --- /dev/null +++ b/doxygen/search/functions_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/functions_6.js b/doxygen/search/functions_6.js new file mode 100644 index 00000000000..54997079050 --- /dev/null +++ b/doxygen/search/functions_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['get_5fnormalizer',['get_normalizer',['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#af8ce9b84227c0be01d4a1cc248a7aa52',1,'caffe::SigmoidCrossEntropyLossLayer::get_normalizer()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#aef4567bafcd7b1665f2a2cc71ea02ff4',1,'caffe::SoftmaxWithLossLayer::get_normalizer()']]], + ['getfiller',['GetFiller',['../namespacecaffe.html#a819e1b2fe30b54d6df0fd88e646ec126',1,'caffe']]] +]; diff --git a/doxygen/search/functions_7.html b/doxygen/search/functions_7.html new file mode 100644 index 00000000000..7f10e2bd1a3 --- /dev/null +++ b/doxygen/search/functions_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/functions_7.js b/doxygen/search/functions_7.js new file mode 100644 index 00000000000..5886c3a416e --- /dev/null +++ b/doxygen/search/functions_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['height',['height',['../classcaffe_1_1Blob.html#a18af535af43f4e9f85bd1e520886276f',1,'caffe::Blob']]] +]; diff --git a/doxygen/search/functions_8.html b/doxygen/search/functions_8.html new file mode 100644 index 00000000000..347734a8342 --- /dev/null +++ b/doxygen/search/functions_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/functions_8.js b/doxygen/search/functions_8.js new file mode 100644 index 00000000000..6c77f271375 --- /dev/null +++ b/doxygen/search/functions_8.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['inferblobshape',['InferBlobShape',['../classcaffe_1_1DataTransformer.html#a1e43b0fb80cded5bb854e1a06004bebf',1,'caffe::DataTransformer::InferBlobShape(const Datum &datum)'],['../classcaffe_1_1DataTransformer.html#ac829dd6448dcce67acb1e22a2554db4b',1,'caffe::DataTransformer::InferBlobShape(const vector< Datum > &datum_vector)']]], + ['init',['Init',['../classcaffe_1_1Net.html#ae9fcfaabc89165d6c0cb4b14b4c6b584',1,'caffe::Net']]], + ['initrand',['InitRand',['../classcaffe_1_1DataTransformer.html#a6d807c7dc250e66b62d97d9847278e68',1,'caffe::DataTransformer']]], + ['input_5fshape',['input_shape',['../classcaffe_1_1BaseConvolutionLayer.html#a6324d4ab918a7b09399aa85a8a03737d',1,'caffe::BaseConvolutionLayer']]], + ['isshared',['IsShared',['../classcaffe_1_1Layer.html#a3ca48aa0ad6c40888baa659d8c2cfbc5',1,'caffe::Layer']]] +]; diff --git a/doxygen/search/functions_9.html b/doxygen/search/functions_9.html new file mode 100644 index 00000000000..6999e7e0071 --- /dev/null +++ b/doxygen/search/functions_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/functions_9.js b/doxygen/search/functions_9.js new file mode 100644 index 00000000000..5ad0577fa78 --- /dev/null +++ b/doxygen/search/functions_9.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['layer',['Layer',['../classcaffe_1_1Layer.html#a7b4e4ccea08c7b8b15acc6829d5735f6',1,'caffe::Layer']]], + ['layer_5fnames',['layer_names',['../classcaffe_1_1Net.html#aa550ba424fc7b90f2ccbbaa175c1ec18',1,'caffe::Net']]], + ['layer_5fparam',['layer_param',['../classcaffe_1_1Layer.html#adff82274f146e2b6922d0ebac2aaf215',1,'caffe::Layer']]], + ['layers',['layers',['../classcaffe_1_1Net.html#a174e8bb96b67f423f8c405dac2334a5a',1,'caffe::Net']]], + ['layersetup',['LayerSetUp',['../classcaffe_1_1Layer.html#a481323a3e0972c682787f2137468c29f',1,'caffe::Layer::LayerSetUp()'],['../classcaffe_1_1AbsValLayer.html#a4ef25e7d0cbe06404948d7e763bf0f84',1,'caffe::AbsValLayer::LayerSetUp()'],['../classcaffe_1_1AccuracyLayer.html#a1f2447583c670d92ff6e2c8d53fb4dd9',1,'caffe::AccuracyLayer::LayerSetUp()'],['../classcaffe_1_1ArgMaxLayer.html#a53069bd5efc4639de93a8111da772572',1,'caffe::ArgMaxLayer::LayerSetUp()'],['../classcaffe_1_1BaseConvolutionLayer.html#a422e1ef9e6c8b4574f7677bb125e234a',1,'caffe::BaseConvolutionLayer::LayerSetUp()'],['../classcaffe_1_1BaseDataLayer.html#a7028919adf87326b808a2c7b21e8e927',1,'caffe::BaseDataLayer::LayerSetUp()'],['../classcaffe_1_1BasePrefetchingDataLayer.html#ad3b7914abaa6d46c148864c0e28204ad',1,'caffe::BasePrefetchingDataLayer::LayerSetUp()'],['../classcaffe_1_1BatchNormLayer.html#a259d8b26c05450339b33ad024f356b6a',1,'caffe::BatchNormLayer::LayerSetUp()'],['../classcaffe_1_1BiasLayer.html#aa62a9554bf4fc3eb4db124da0d89fd85',1,'caffe::BiasLayer::LayerSetUp()'],['../classcaffe_1_1ConcatLayer.html#af4fc13f4977f84a30af260096ffd55d2',1,'caffe::ConcatLayer::LayerSetUp()'],['../classcaffe_1_1ContrastiveLossLayer.html#a943e67e7bb9c2362ec20ce44c777beac',1,'caffe::ContrastiveLossLayer::LayerSetUp()'],['../classcaffe_1_1CropLayer.html#a59dcb04b78d55f666b69ff001c90caa7',1,'caffe::CropLayer::LayerSetUp()'],['../classcaffe_1_1DropoutLayer.html#addcfd0822c1c5e3591bc7001a034b167',1,'caffe::DropoutLayer::LayerSetUp()'],['../classcaffe_1_1DummyDataLayer.html#a43b495bfead8d18bf1d8eaf7bf91e3e4',1,'caffe::DummyDataLayer::LayerSetUp()'],['../classcaffe_1_1EltwiseLayer.html#a02516b6e7b1b0d032e586785687bcabc',1,'caffe::EltwiseLayer::LayerSetUp()'],['../classcaffe_1_1EmbedLayer.html#aaace16d2beba7db887c7b59213268bc2',1,'caffe::EmbedLayer::LayerSetUp()'],['../classcaffe_1_1ExpLayer.html#a45ec267bdfd48e8aa34490e146405b9e',1,'caffe::ExpLayer::LayerSetUp()'],['../classcaffe_1_1FilterLayer.html#a26a302fd9629af812e7d0714db79bb53',1,'caffe::FilterLayer::LayerSetUp()'],['../classcaffe_1_1HDF5DataLayer.html#afcd473ff34b4035122ba9119fc67498c',1,'caffe::HDF5DataLayer::LayerSetUp()'],['../classcaffe_1_1HDF5OutputLayer.html#aed2dea5250c86c46dd866fbb241dd9f6',1,'caffe::HDF5OutputLayer::LayerSetUp()'],['../classcaffe_1_1Im2colLayer.html#ac4d6f34378681fa197546468b5aa6fd6',1,'caffe::Im2colLayer::LayerSetUp()'],['../classcaffe_1_1InfogainLossLayer.html#a772be3f4074c72b3cf9214bda3422402',1,'caffe::InfogainLossLayer::LayerSetUp()'],['../classcaffe_1_1InnerProductLayer.html#a4adc29913343ddec1813f3a899e449cc',1,'caffe::InnerProductLayer::LayerSetUp()'],['../classcaffe_1_1InputLayer.html#a58be7dd9b52c1a98a872300e5108e065',1,'caffe::InputLayer::LayerSetUp()'],['../classcaffe_1_1LogLayer.html#a87e062000908b474ac4cda3b2f3c6f1e',1,'caffe::LogLayer::LayerSetUp()'],['../classcaffe_1_1LossLayer.html#aa6fc7c2e90be66f1c1f0683637c949da',1,'caffe::LossLayer::LayerSetUp()'],['../classcaffe_1_1LRNLayer.html#ac7ae4b839d952b785b9911c258bd5b48',1,'caffe::LRNLayer::LayerSetUp()'],['../classcaffe_1_1ParameterLayer.html#a1485ccdbd01513b89b29a79df7cda6ee',1,'caffe::ParameterLayer::LayerSetUp()'],['../classcaffe_1_1PoolingLayer.html#aa310fbe7d766ac96a1957aca6a3c4469',1,'caffe::PoolingLayer::LayerSetUp()'],['../classcaffe_1_1PowerLayer.html#a954ad3da9a5fd54665de1181b6165796',1,'caffe::PowerLayer::LayerSetUp()'],['../classcaffe_1_1PReLULayer.html#a85e7207b664a4db8eb718f2075f44920',1,'caffe::PReLULayer::LayerSetUp()'],['../classcaffe_1_1PythonLayer.html#ae5baf7b7552ff0113c174b0e77db5f4c',1,'caffe::PythonLayer::LayerSetUp()'],['../classcaffe_1_1RecurrentLayer.html#a4eec13bfbe23b1e3eb2bbc4652bd6952',1,'caffe::RecurrentLayer::LayerSetUp()'],['../classcaffe_1_1ReductionLayer.html#aafe0aa825e019ea35225a8e493e4e919',1,'caffe::ReductionLayer::LayerSetUp()'],['../classcaffe_1_1ReshapeLayer.html#a99db2601ec64ff20880641b6f6429947',1,'caffe::ReshapeLayer::LayerSetUp()'],['../classcaffe_1_1ScaleLayer.html#a9781f923f1ff0aad8549e0e93eebb941',1,'caffe::ScaleLayer::LayerSetUp()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#aa1535140dd4eb94557c3afc89076d56d',1,'caffe::SigmoidCrossEntropyLossLayer::LayerSetUp()'],['../classcaffe_1_1SliceLayer.html#a92c1cdabdce4c92b9a4ee58e2ceb601e',1,'caffe::SliceLayer::LayerSetUp()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a96cd04896d4b805fcaf36c2c6522ae10',1,'caffe::SoftmaxWithLossLayer::LayerSetUp()'],['../classcaffe_1_1SPPLayer.html#a7241f9c4dfba841bc76a93298a3d28ee',1,'caffe::SPPLayer::LayerSetUp()'],['../classcaffe_1_1ThresholdLayer.html#a14e3782a6bea7bba511f3d6f23344037',1,'caffe::ThresholdLayer::LayerSetUp()']]], + ['loglayer',['LogLayer',['../classcaffe_1_1LogLayer.html#aa6f92a0b12140d70a44a2bcb71bab552',1,'caffe::LogLayer']]], + ['loss',['loss',['../classcaffe_1_1Layer.html#a899410336f30821644c8bd6c69a070c9',1,'caffe::Layer']]] +]; diff --git a/doxygen/search/functions_a.html b/doxygen/search/functions_a.html new file mode 100644 index 00000000000..8ca8f111ab6 --- /dev/null +++ b/doxygen/search/functions_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/functions_a.js b/doxygen/search/functions_a.js new file mode 100644 index 00000000000..0e356c7b36e --- /dev/null +++ b/doxygen/search/functions_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['maxbottomblobs',['MaxBottomBlobs',['../classcaffe_1_1Layer.html#af8bdc989053e0363ab032026b46de7c3',1,'caffe::Layer::MaxBottomBlobs()'],['../classcaffe_1_1BiasLayer.html#abdb89e3bc940f999d1d4da83de90a97c',1,'caffe::BiasLayer::MaxBottomBlobs()'],['../classcaffe_1_1InfogainLossLayer.html#a9b2372959a16da1e80ae7a98b7689a4c',1,'caffe::InfogainLossLayer::MaxBottomBlobs()'],['../classcaffe_1_1RecurrentLayer.html#a983e1ead91884f9d2049a3000254961c',1,'caffe::RecurrentLayer::MaxBottomBlobs()'],['../classcaffe_1_1ScaleLayer.html#a7867d035776f78fe486ce633ec0520ad',1,'caffe::ScaleLayer::MaxBottomBlobs()']]], + ['maxtopblobs',['MaxTopBlobs',['../classcaffe_1_1Layer.html#ac6c03df0b6e40e776c94001e19994a2e',1,'caffe::Layer::MaxTopBlobs()'],['../classcaffe_1_1AccuracyLayer.html#a7591ae6d50dd7d96b91241b5b0368997',1,'caffe::AccuracyLayer::MaxTopBlobs()'],['../classcaffe_1_1DataLayer.html#ac47e9f3bff3db9d7364f6c392427745c',1,'caffe::DataLayer::MaxTopBlobs()'],['../classcaffe_1_1PoolingLayer.html#a76539d04ef7252c12e932ea703f8246b',1,'caffe::PoolingLayer::MaxTopBlobs()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a5a0b4c02fe76ae9087cd8b1b9edd9910',1,'caffe::SoftmaxWithLossLayer::MaxTopBlobs()']]], + ['minbottomblobs',['MinBottomBlobs',['../classcaffe_1_1Layer.html#aca3cb2bafaefda5d4760aaebd0b72def',1,'caffe::Layer::MinBottomBlobs()'],['../classcaffe_1_1BaseConvolutionLayer.html#aa3d861ed15f6e41c6257d6a10defa7eb',1,'caffe::BaseConvolutionLayer::MinBottomBlobs()'],['../classcaffe_1_1BiasLayer.html#ab75a2e05bbb1eb37bed5995288143f67',1,'caffe::BiasLayer::MinBottomBlobs()'],['../classcaffe_1_1ConcatLayer.html#a314de9eb00a296ffd3cf84120bd1601e',1,'caffe::ConcatLayer::MinBottomBlobs()'],['../classcaffe_1_1EltwiseLayer.html#a802079d89e0f007c15b39e0c1fb0d275',1,'caffe::EltwiseLayer::MinBottomBlobs()'],['../classcaffe_1_1FilterLayer.html#af4c97961e859653ef0fa21d796af0259',1,'caffe::FilterLayer::MinBottomBlobs()'],['../classcaffe_1_1InfogainLossLayer.html#ad8a1ef702a695e379e5d0450369b4a0c',1,'caffe::InfogainLossLayer::MinBottomBlobs()'],['../classcaffe_1_1RecurrentLayer.html#ac31b705bc02d333ae768f7c2184fbfae',1,'caffe::RecurrentLayer::MinBottomBlobs()'],['../classcaffe_1_1ScaleLayer.html#a12c10840f0fc3327854864a12054beb2',1,'caffe::ScaleLayer::MinBottomBlobs()'],['../classcaffe_1_1SilenceLayer.html#af916fa4138f5d8761ec4490588eeccd1',1,'caffe::SilenceLayer::MinBottomBlobs()']]], + ['mintopblobs',['MinTopBlobs',['../classcaffe_1_1Layer.html#ab9e4c8d642e413948b131d851a8462a4',1,'caffe::Layer::MinTopBlobs()'],['../classcaffe_1_1AccuracyLayer.html#a568dd59acff7a172fa614c88ac56aff7',1,'caffe::AccuracyLayer::MinTopBlobs()'],['../classcaffe_1_1BaseConvolutionLayer.html#ae4092cf1b48e18e5d82cd714ae6e8547',1,'caffe::BaseConvolutionLayer::MinTopBlobs()'],['../classcaffe_1_1DataLayer.html#ab0c5a7504085a6699272cdcfa8611887',1,'caffe::DataLayer::MinTopBlobs()'],['../classcaffe_1_1DummyDataLayer.html#a2a63e36dd6b39287981d0bee466975aa',1,'caffe::DummyDataLayer::MinTopBlobs()'],['../classcaffe_1_1FilterLayer.html#af8c6eb9b1986e03dd14a907b5caa1324',1,'caffe::FilterLayer::MinTopBlobs()'],['../classcaffe_1_1HDF5DataLayer.html#a6833e081c29049b1392eb98fb4451697',1,'caffe::HDF5DataLayer::MinTopBlobs()'],['../classcaffe_1_1InputLayer.html#a5d0512129e9c2955dde297a2f15595d2',1,'caffe::InputLayer::MinTopBlobs()'],['../classcaffe_1_1PoolingLayer.html#abb61ab67b2bd809c5633a2722b83feeb',1,'caffe::PoolingLayer::MinTopBlobs()'],['../classcaffe_1_1SliceLayer.html#a2673c06234a234362c1e2592880567a1',1,'caffe::SliceLayer::MinTopBlobs()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a9969336702fb1bbf31750629fb38fb45',1,'caffe::SoftmaxWithLossLayer::MinTopBlobs()'],['../classcaffe_1_1SplitLayer.html#a48dafac272f2f098798e3caa09afbabe',1,'caffe::SplitLayer::MinTopBlobs()']]] +]; diff --git a/doxygen/search/functions_b.html b/doxygen/search/functions_b.html new file mode 100644 index 00000000000..a6efa74805f --- /dev/null +++ b/doxygen/search/functions_b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/functions_b.js b/doxygen/search/functions_b.js new file mode 100644 index 00000000000..7a749a69e64 --- /dev/null +++ b/doxygen/search/functions_b.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['name',['name',['../classcaffe_1_1Net.html#a521c084f91eefc041bd53f30f1cc1097',1,'caffe::Net']]], + ['num',['num',['../classcaffe_1_1Blob.html#a80ed3eddf98ffd408e9a627b1a7c2a9e',1,'caffe::Blob']]], + ['num_5finputs',['num_inputs',['../classcaffe_1_1Net.html#a6b04ab79ff08386d5a6fd167fd7696a3',1,'caffe::Net']]] +]; diff --git a/doxygen/search/functions_c.html b/doxygen/search/functions_c.html new file mode 100644 index 00000000000..65786650580 --- /dev/null +++ b/doxygen/search/functions_c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/functions_c.js b/doxygen/search/functions_c.js new file mode 100644 index 00000000000..8a97f096abc --- /dev/null +++ b/doxygen/search/functions_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['outputblobnames',['OutputBlobNames',['../classcaffe_1_1LSTMLayer.html#a86acb620f5a10c6caa2661398e0b4f5a',1,'caffe::LSTMLayer::OutputBlobNames()'],['../classcaffe_1_1RecurrentLayer.html#af0b87f8e9a422338243ffeb7f16121fa',1,'caffe::RecurrentLayer::OutputBlobNames()'],['../classcaffe_1_1RNNLayer.html#a553fdd0dadf2a0cd9e5de265bd65da52',1,'caffe::RNNLayer::OutputBlobNames()']]] +]; diff --git a/doxygen/search/functions_d.html b/doxygen/search/functions_d.html new file mode 100644 index 00000000000..9f4209c9877 --- /dev/null +++ b/doxygen/search/functions_d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/functions_d.js b/doxygen/search/functions_d.js new file mode 100644 index 00000000000..c91b70bb97d --- /dev/null +++ b/doxygen/search/functions_d.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['param_5fpropagate_5fdown',['param_propagate_down',['../classcaffe_1_1Layer.html#a1a3708013b0231e71d725252e10ce6e3',1,'caffe::Layer']]], + ['params',['params',['../classcaffe_1_1Net.html#a4df30bbef7db3a6069d4ab3d9238cb40',1,'caffe::Net']]], + ['params_5flr',['params_lr',['../classcaffe_1_1Net.html#ae902a7a461c0a693ba1f0d4186ef8e42',1,'caffe::Net']]], + ['params_5fweight_5fdecay',['params_weight_decay',['../classcaffe_1_1Net.html#a1bc1091f0033a8b6c321f1b50c931996',1,'caffe::Net']]], + ['phase',['phase',['../classcaffe_1_1Net.html#a9418aee447ff6e847fd1a5e7be3d7a44',1,'caffe::Net']]], + ['powerlayer',['PowerLayer',['../classcaffe_1_1PowerLayer.html#ab008c03c36436e1a0dac0fe1faa53c6d',1,'caffe::PowerLayer']]], + ['prelulayer',['PReLULayer',['../classcaffe_1_1PReLULayer.html#a9d164a537a2f77b4143d2491f4809732',1,'caffe::PReLULayer']]] +]; diff --git a/doxygen/search/functions_e.html b/doxygen/search/functions_e.html new file mode 100644 index 00000000000..3c23488430d --- /dev/null +++ b/doxygen/search/functions_e.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/functions_e.js b/doxygen/search/functions_e.js new file mode 100644 index 00000000000..b9749a2a62e --- /dev/null +++ b/doxygen/search/functions_e.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['rand',['Rand',['../classcaffe_1_1DataTransformer.html#ac3e52731074a73b05ff0527d2febc8f2',1,'caffe::DataTransformer']]], + ['recurrentinputblobnames',['RecurrentInputBlobNames',['../classcaffe_1_1LSTMLayer.html#a03c6f191bd5a314981514b9bbd3ce450',1,'caffe::LSTMLayer::RecurrentInputBlobNames()'],['../classcaffe_1_1RecurrentLayer.html#a9d9dab800f838e38651678718adfbbf6',1,'caffe::RecurrentLayer::RecurrentInputBlobNames()'],['../classcaffe_1_1RNNLayer.html#a1d753540adb5718db6b66e0aa2c0c4fb',1,'caffe::RNNLayer::RecurrentInputBlobNames()']]], + ['recurrentinputshapes',['RecurrentInputShapes',['../classcaffe_1_1LSTMLayer.html#ab3978704db58d6f2a43d3cfccec9853b',1,'caffe::LSTMLayer::RecurrentInputShapes()'],['../classcaffe_1_1RecurrentLayer.html#ad2c2427c11960e0b8961c31ff2f74c03',1,'caffe::RecurrentLayer::RecurrentInputShapes()'],['../classcaffe_1_1RNNLayer.html#a586b4a2bb8959315d55c34704325bae6',1,'caffe::RNNLayer::RecurrentInputShapes()']]], + ['recurrentoutputblobnames',['RecurrentOutputBlobNames',['../classcaffe_1_1LSTMLayer.html#a1ea6a5c2801b1463604bc67c4dbf1df1',1,'caffe::LSTMLayer::RecurrentOutputBlobNames()'],['../classcaffe_1_1RecurrentLayer.html#a5fd43ae201c4284a1cc3d93f72702bbe',1,'caffe::RecurrentLayer::RecurrentOutputBlobNames()'],['../classcaffe_1_1RNNLayer.html#a57d105b9599c294d05fe25b8542e1031',1,'caffe::RNNLayer::RecurrentOutputBlobNames()']]], + ['relulayer',['ReLULayer',['../classcaffe_1_1ReLULayer.html#aa6770fbbfd5e6f564c2ca19de7f7e712',1,'caffe::ReLULayer']]], + ['reshape',['Reshape',['../classcaffe_1_1Blob.html#ad0e0a9a4f49478e89161c6afe4e341a0',1,'caffe::Blob::Reshape(const int num, const int channels, const int height, const int width)'],['../classcaffe_1_1Blob.html#ac9ce456aa623ff3f4d24225a0db14404',1,'caffe::Blob::Reshape(const vector< int > &shape)'],['../classcaffe_1_1Layer.html#a7fe981e8af8d93d587acf2a952be563d',1,'caffe::Layer::Reshape()'],['../classcaffe_1_1AccuracyLayer.html#aa2b680fc1e754440c2babd150e09f2f6',1,'caffe::AccuracyLayer::Reshape()'],['../classcaffe_1_1ArgMaxLayer.html#a291a2c548c28e7ab02ddac0cfd3cbdad',1,'caffe::ArgMaxLayer::Reshape()'],['../classcaffe_1_1BaseConvolutionLayer.html#aa215338f200c832081f2719a54bc5256',1,'caffe::BaseConvolutionLayer::Reshape()'],['../classcaffe_1_1BaseDataLayer.html#a2955d06a5e67609582fb293a0a37673f',1,'caffe::BaseDataLayer::Reshape()'],['../classcaffe_1_1BatchNormLayer.html#a1acd542fe8fe89d88db9050d048fc7d2',1,'caffe::BatchNormLayer::Reshape()'],['../classcaffe_1_1BatchReindexLayer.html#a7f69b6b19387959bf0926dde7a7922a4',1,'caffe::BatchReindexLayer::Reshape()'],['../classcaffe_1_1BiasLayer.html#aff9bd5f76055189c5ec66f43faf17660',1,'caffe::BiasLayer::Reshape()'],['../classcaffe_1_1ConcatLayer.html#a3c7cbd500d3a15cfbdbf33479c4fb228',1,'caffe::ConcatLayer::Reshape()'],['../classcaffe_1_1CropLayer.html#a195d2e437a70b0139411c1dd22b08120',1,'caffe::CropLayer::Reshape()'],['../classcaffe_1_1DropoutLayer.html#a8ddbd583b7430f228506954910935505',1,'caffe::DropoutLayer::Reshape()'],['../classcaffe_1_1DummyDataLayer.html#ae72f2ea80339981bf925f0291f62d527',1,'caffe::DummyDataLayer::Reshape()'],['../classcaffe_1_1EltwiseLayer.html#a17b4cb0842a154224bab9733e77e07b9',1,'caffe::EltwiseLayer::Reshape()'],['../classcaffe_1_1EmbedLayer.html#ac7c19a708d491f9fe161c78348ec794b',1,'caffe::EmbedLayer::Reshape()'],['../classcaffe_1_1EuclideanLossLayer.html#a9cbe90ea0130c31bd5b9419a1bbaa555',1,'caffe::EuclideanLossLayer::Reshape()'],['../classcaffe_1_1FilterLayer.html#ade673aa44e466adbe3aa79531a7c7484',1,'caffe::FilterLayer::Reshape()'],['../classcaffe_1_1FlattenLayer.html#a3b459231a94176753d0cb1ae94bc942f',1,'caffe::FlattenLayer::Reshape()'],['../classcaffe_1_1HDF5DataLayer.html#a38b8924648ba4ab2933fe389fa608cad',1,'caffe::HDF5DataLayer::Reshape()'],['../classcaffe_1_1HDF5OutputLayer.html#afaed17dc14251e627764334d54e55c4d',1,'caffe::HDF5OutputLayer::Reshape()'],['../classcaffe_1_1Im2colLayer.html#a119c9e1965e219be1ccb719821d4542f',1,'caffe::Im2colLayer::Reshape()'],['../classcaffe_1_1InfogainLossLayer.html#a83ed478450bc7f629499fed37f654c5c',1,'caffe::InfogainLossLayer::Reshape()'],['../classcaffe_1_1InnerProductLayer.html#a1c823624ec9286477db7caa5188152b8',1,'caffe::InnerProductLayer::Reshape()'],['../classcaffe_1_1InputLayer.html#a4c2028f829734a202263725d8aa41152',1,'caffe::InputLayer::Reshape()'],['../classcaffe_1_1LossLayer.html#abf00412194f5413ea9468ee44b0d986f',1,'caffe::LossLayer::Reshape()'],['../classcaffe_1_1LRNLayer.html#aa002dacb2f69d2b500227f938a957a81',1,'caffe::LRNLayer::Reshape()'],['../classcaffe_1_1LSTMUnitLayer.html#a795bd455f4635e876de32323e9cee96d',1,'caffe::LSTMUnitLayer::Reshape()'],['../classcaffe_1_1MultinomialLogisticLossLayer.html#a979be47987712c02dfb57a88b2a69f11',1,'caffe::MultinomialLogisticLossLayer::Reshape()'],['../classcaffe_1_1MVNLayer.html#a48aafabe729bb3b22171cfdbda6e6073',1,'caffe::MVNLayer::Reshape()'],['../classcaffe_1_1NeuronLayer.html#a6d0facf4a5e6f459cf1cb8b28d945790',1,'caffe::NeuronLayer::Reshape()'],['../classcaffe_1_1ParameterLayer.html#acc7cf7e2dea7e254717b13980fdf6c1a',1,'caffe::ParameterLayer::Reshape()'],['../classcaffe_1_1PoolingLayer.html#ac652e08deffb0eeb6c3113abb55eb641',1,'caffe::PoolingLayer::Reshape()'],['../classcaffe_1_1PReLULayer.html#a50ad2070e060093556d1fc12f31e33b1',1,'caffe::PReLULayer::Reshape()'],['../classcaffe_1_1PythonLayer.html#aa6597e54cd5fea5b5c7b67299b74a72c',1,'caffe::PythonLayer::Reshape()'],['../classcaffe_1_1RecurrentLayer.html#aba6011a9cbb18e38a8596aa5dbb44723',1,'caffe::RecurrentLayer::Reshape()'],['../classcaffe_1_1ReductionLayer.html#a0f6594ec41a0556e9fcfb9af0ae86c8a',1,'caffe::ReductionLayer::Reshape()'],['../classcaffe_1_1ReshapeLayer.html#a5b85ce44e23b4f958a60ff2b2c43e61f',1,'caffe::ReshapeLayer::Reshape()'],['../classcaffe_1_1ScaleLayer.html#aeafe805a68903bae9a7f2b98bf453e22',1,'caffe::ScaleLayer::Reshape()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#a305423abeea4bd1652ff7e696aaba808',1,'caffe::SigmoidCrossEntropyLossLayer::Reshape()'],['../classcaffe_1_1SilenceLayer.html#a96a47a49a103e60a681f97eff7bf42f2',1,'caffe::SilenceLayer::Reshape()'],['../classcaffe_1_1SliceLayer.html#af9fa49d54abf1cb090cfc772eb4acc4d',1,'caffe::SliceLayer::Reshape()'],['../classcaffe_1_1SoftmaxLayer.html#a756fd5ad3af07d019b5f2247f38b4496',1,'caffe::SoftmaxLayer::Reshape()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a2821b89b0f46a5e2ddaccb2708ab237b',1,'caffe::SoftmaxWithLossLayer::Reshape()'],['../classcaffe_1_1SplitLayer.html#a4e978965461dedcc2fbb905e4910c0b1',1,'caffe::SplitLayer::Reshape()'],['../classcaffe_1_1SPPLayer.html#a3ba65e459c1bde4f772d545efb43a2f2',1,'caffe::SPPLayer::Reshape()'],['../classcaffe_1_1TileLayer.html#a593f5b8342f1b092633d2a1f7e4a6843',1,'caffe::TileLayer::Reshape()'],['../classcaffe_1_1Net.html#a8417af82aa83be45d39aab735bdead1d',1,'caffe::Net::Reshape()']]] +]; diff --git a/doxygen/search/functions_f.html b/doxygen/search/functions_f.html new file mode 100644 index 00000000000..07e22cf6a9e --- /dev/null +++ b/doxygen/search/functions_f.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/functions_f.js b/doxygen/search/functions_f.js new file mode 100644 index 00000000000..43c7588476b --- /dev/null +++ b/doxygen/search/functions_f.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['scale_5fdata',['scale_data',['../classcaffe_1_1Blob.html#a535dd556e777f2e13b8c7438f40749a0',1,'caffe::Blob']]], + ['scale_5fdiff',['scale_diff',['../classcaffe_1_1Blob.html#a6d2d83920d961fff033434347f64a3b0',1,'caffe::Blob']]], + ['set_5floss',['set_loss',['../classcaffe_1_1Layer.html#a899b09f4b91ada8545b3a43ee91e0d69',1,'caffe::Layer']]], + ['set_5fparam_5fpropagate_5fdown',['set_param_propagate_down',['../classcaffe_1_1Layer.html#a9a6fcb843803ed556f0a69cc2864379b',1,'caffe::Layer']]], + ['setlossweights',['SetLossWeights',['../classcaffe_1_1Layer.html#a04eb2a3d1d59c64cd64c233217d5d6fc',1,'caffe::Layer']]], + ['setshared',['SetShared',['../classcaffe_1_1Layer.html#a6d4caf38c9f0f31c9c92af1bbefc04e4',1,'caffe::Layer']]], + ['setup',['SetUp',['../classcaffe_1_1Layer.html#a18d6bfdb535ab8e96a971dec4ae39a84',1,'caffe::Layer']]], + ['shape',['shape',['../classcaffe_1_1Blob.html#a807f4da98e8e0d1f60badb1f540fe010',1,'caffe::Blob']]], + ['sharedata',['ShareData',['../classcaffe_1_1Blob.html#a8fce5a816a2b9629686db69108610d93',1,'caffe::Blob']]], + ['sharediff',['ShareDiff',['../classcaffe_1_1Blob.html#a004781965b09f94c409cec9a6fc7c35c',1,'caffe::Blob']]], + ['shareinparallel',['ShareInParallel',['../classcaffe_1_1Layer.html#a03c5d6a726e141ff520d36e21f07ffb4',1,'caffe::Layer::ShareInParallel()'],['../classcaffe_1_1BaseDataLayer.html#a7930a9362b8a442cd2bb0b74e486cd05',1,'caffe::BaseDataLayer::ShareInParallel()'],['../classcaffe_1_1DataLayer.html#aa635a59a3a1dea346e5941e5f11849f8',1,'caffe::DataLayer::ShareInParallel()'],['../classcaffe_1_1DummyDataLayer.html#a964cc3d4880456f7e2b69d7d5fd77529',1,'caffe::DummyDataLayer::ShareInParallel()'],['../classcaffe_1_1HDF5DataLayer.html#a02e655b5556653616fc3c9837d177834',1,'caffe::HDF5DataLayer::ShareInParallel()'],['../classcaffe_1_1HDF5OutputLayer.html#a47a335fc0ac97dc79b11b1336cd7f293',1,'caffe::HDF5OutputLayer::ShareInParallel()'],['../classcaffe_1_1InputLayer.html#a2350ca7b0220eb805aab91f4cf2b08a8',1,'caffe::InputLayer::ShareInParallel()'],['../classcaffe_1_1PythonLayer.html#a0968d030265fdda91af057b8ab6db3ca',1,'caffe::PythonLayer::ShareInParallel()']]], + ['sharetrainedlayerswith',['ShareTrainedLayersWith',['../classcaffe_1_1Net.html#a3661ca5f30bf8e731cb54cfc3c320023',1,'caffe::Net']]], + ['shareweights',['ShareWeights',['../classcaffe_1_1Net.html#a4850fdb3eea1b04c97642546c0dcccf7',1,'caffe::Net']]], + ['softmaxwithlosslayer',['SoftmaxWithLossLayer',['../classcaffe_1_1SoftmaxWithLossLayer.html#ac3a01d6846a9b62c1790635d53185e81',1,'caffe::SoftmaxWithLossLayer']]], + ['startinternalthread',['StartInternalThread',['../classcaffe_1_1InternalThread.html#acffc1d9bc9e78f4146ba2d16f593fca7',1,'caffe::InternalThread']]], + ['statemeetsrule',['StateMeetsRule',['../classcaffe_1_1Net.html#a54e8c43fe3a0cd9bbbcfdefd2b1603d2',1,'caffe::Net']]], + ['stopinternalthread',['StopInternalThread',['../classcaffe_1_1InternalThread.html#ac72d8e2a23dbbe5203d5003dd67af73e',1,'caffe::InternalThread']]], + ['sumsq_5fdata',['sumsq_data',['../classcaffe_1_1Blob.html#a2ea640466fc339a02dabba4e8a1f0de2',1,'caffe::Blob']]], + ['sumsq_5fdiff',['sumsq_diff',['../classcaffe_1_1Blob.html#a2df1894f11323235f9d7c7a1f0fe010f',1,'caffe::Blob']]] +]; diff --git a/doxygen/search/mag_sel.png b/doxygen/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmV-30?hr1P)zxx&tqG15pu7)IiiXFflOc2k;dXd>%13GZAy? zRz!q0=|E6a6vV)&ZBS~G9oe0kbqyw1*gvY`{Pop2oKq#FlzgXt@Xh-7fxh>}`Fxg> z$%N%{$!4=5nM{(;=c!aG1Ofr^Do{u%Ih{^&Fc@H2)+a-?TBXrw5DW&z%Nb6mQ!L9O zl}b@6mB?f=tX3;#vl)}ggh(Vpyh(IK z(Mb0D{l{U$FsRjP;!{($+bsaaVi8T#1c0V#qEIOCYa9@UVLV`f__E81L;?WEaRA;Y zUH;rZ;vb;mk7JX|$=i3O~&If0O@oZfLg8gfIjW=dcBsz;gI=!{-r4# z4%6v$&~;q^j7Fo67yJ(NJWuX+I~I!tj^nW3?}^9bq|<3^+vapS5sgM^x7!cs(+mMT z&y%j};&~po+YO)3hoUH4E*E;e9>?R6SS&`X)p`njycAVcg{rEb41T{~Hk(bl-7eSb zmFxA2uIqo#@R?lKm50ND`~6Nfn|-b1|L6O98vt3Tx@gKz#isxO002ovPDHLkV1kyW B_l^Jn literal 0 HcmV?d00001 diff --git a/doxygen/search/namespaces_0.html b/doxygen/search/namespaces_0.html new file mode 100644 index 00000000000..becd52be14b --- /dev/null +++ b/doxygen/search/namespaces_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/namespaces_0.js b/doxygen/search/namespaces_0.js new file mode 100644 index 00000000000..10278d4d3bf --- /dev/null +++ b/doxygen/search/namespaces_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['boost',['boost',['../namespaceboost.html',1,'']]] +]; diff --git a/doxygen/search/namespaces_1.html b/doxygen/search/namespaces_1.html new file mode 100644 index 00000000000..7c1852bd78e --- /dev/null +++ b/doxygen/search/namespaces_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/namespaces_1.js b/doxygen/search/namespaces_1.js new file mode 100644 index 00000000000..5776c7a8003 --- /dev/null +++ b/doxygen/search/namespaces_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['caffe',['caffe',['../namespacecaffe.html',1,'']]], + ['solveraction',['SolverAction',['../namespacecaffe_1_1SolverAction.html',1,'caffe']]] +]; diff --git a/doxygen/search/nomatches.html b/doxygen/search/nomatches.html new file mode 100644 index 00000000000..b1ded27e9ad --- /dev/null +++ b/doxygen/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/doxygen/search/search.css b/doxygen/search/search.css new file mode 100644 index 00000000000..3cf9df94a41 --- /dev/null +++ b/doxygen/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/doxygen/search/search.js b/doxygen/search/search.js new file mode 100644 index 00000000000..dedce3bf093 --- /dev/null +++ b/doxygen/search/search.js @@ -0,0 +1,791 @@ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; ek7RCwB~R6VQOP#AvB$vH7i{6H{96zot$7cZT<7246EF5Np6N}+$IbiG6W zg#87A+NFaX+=_^xM1#gCtshC=E{%9^uQX_%?YwXvo{#q&MnpJ8uh(O?ZRc&~_1%^SsPxG@rfElJg-?U zm!Cz-IOn(qJP3kDp-^~qt+FGbl=5jNli^Wj_xIBG{Rc0en{!oFvyoNC7{V~T8}b>| z=jL2WIReZzX(YN(_9fV;BBD$VXQIxNasAL8ATvEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/doxygen/search/search_r.png b/doxygen/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmV-q0-ODbP)PbXFRCwB?)W514K@j&X?z2*SxFI6-@HT2E2K=9X9%Pb zEK*!TBw&g(DMC;|A)uGlRkOS9vd-?zNs%bR4d$w+ox_iFnE8fvIvv7^5<(>Te12Li z7C)9srCzmK{ZcNM{YIl9j{DePFgOWiS%xG@5CnnnJa4nvY<^glbz7^|-ZY!dUkAwd z{gaTC@_>b5h~;ug#R0wRL0>o5!hxm*s0VW?8dr}O#zXTRTnrQm_Z7z1Mrnx>&p zD4qifUjzLvbVVWi?l?rUzwt^sdb~d!f_LEhsRVIXZtQ=qSxuxqm zEX#tf>$?M_Y1-LSDT)HqG?`%-%ZpY!#{N!rcNIiL;G7F0`l?)mNGTD9;f9F5Up3Kg zw}a<-JylhG&;=!>B+fZaCX+?C+kHYrP%c?X2!Zu_olK|GcS4A70HEy;vn)I0>0kLH z`jc(WIaaHc7!HS@f*^R^Znx8W=_jIl2oWJoQ*h1^$FX!>*PqR1J8k|fw}w_y}TpE>7m8DqDO<3z`OzXt$ccSejbEZCg@0000 + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/typedefs_0.js b/doxygen/search/typedefs_0.js new file mode 100644 index 00000000000..6d8d613ad8b --- /dev/null +++ b/doxygen/search/typedefs_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['actioncallback',['ActionCallback',['../namespacecaffe.html#a79ce9ffbdd44b367252e0b8cf99bf430',1,'caffe']]] +]; diff --git a/doxygen/search/variables_0.html b/doxygen/search/variables_0.html new file mode 100644 index 00000000000..164aa544753 --- /dev/null +++ b/doxygen/search/variables_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/variables_0.js b/doxygen/search/variables_0.js new file mode 100644 index 00000000000..9aae0bd8669 --- /dev/null +++ b/doxygen/search/variables_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['axis_5f',['axis_',['../classcaffe_1_1ReductionLayer.html#ac42612a3e9d6fadcb2a57041595033bf',1,'caffe::ReductionLayer']]] +]; diff --git a/doxygen/search/variables_1.html b/doxygen/search/variables_1.html new file mode 100644 index 00000000000..857fbbda708 --- /dev/null +++ b/doxygen/search/variables_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/variables_1.js b/doxygen/search/variables_1.js new file mode 100644 index 00000000000..05d608ed4da --- /dev/null +++ b/doxygen/search/variables_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['blob_5floss_5fweights_5f',['blob_loss_weights_',['../classcaffe_1_1Net.html#a3eef6ff47640210c6d8d6affb1fd86f8',1,'caffe::Net']]], + ['blobs_5f',['blobs_',['../classcaffe_1_1Layer.html#a8073fcf2c139b47eb99ce71b346b1321',1,'caffe::Layer::blobs_()'],['../classcaffe_1_1Net.html#ab033c0574fcbf1e67e22b9682677c64d',1,'caffe::Net::blobs_()']]], + ['bottom_5fvecs_5f',['bottom_vecs_',['../classcaffe_1_1Net.html#ac5bf2007047f749d9d111b0dfa220afc',1,'caffe::Net']]] +]; diff --git a/doxygen/search/variables_10.html b/doxygen/search/variables_10.html new file mode 100644 index 00000000000..3143a875478 --- /dev/null +++ b/doxygen/search/variables_10.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/variables_10.js b/doxygen/search/variables_10.js new file mode 100644 index 00000000000..5ebfb12974a --- /dev/null +++ b/doxygen/search/variables_10.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['t_5f',['T_',['../classcaffe_1_1RecurrentLayer.html#a02f79bca0ccde7543ecf172b328c860f',1,'caffe::RecurrentLayer']]], + ['threshold_5f',['threshold_',['../classcaffe_1_1DropoutLayer.html#a8e9d88e6128a97101c27ce8a11158ca6',1,'caffe::DropoutLayer']]], + ['top_5fvecs_5f',['top_vecs_',['../classcaffe_1_1Net.html#aa834096a02382d9a881bf33694e72564',1,'caffe::Net']]], + ['transpose_5f',['transpose_',['../classcaffe_1_1InnerProductLayer.html#a3d881acc0f3bbfb2edb37576592d5c14',1,'caffe::InnerProductLayer']]] +]; diff --git a/doxygen/search/variables_11.html b/doxygen/search/variables_11.html new file mode 100644 index 00000000000..d27fb7aabc0 --- /dev/null +++ b/doxygen/search/variables_11.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/variables_11.js b/doxygen/search/variables_11.js new file mode 100644 index 00000000000..6b0f4df0c72 --- /dev/null +++ b/doxygen/search/variables_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['unrolled_5fnet_5f',['unrolled_net_',['../classcaffe_1_1RecurrentLayer.html#aa9b6cb6658e3bc8bfdf39441e751919a',1,'caffe::RecurrentLayer']]] +]; diff --git a/doxygen/search/variables_2.html b/doxygen/search/variables_2.html new file mode 100644 index 00000000000..35233e3cbef --- /dev/null +++ b/doxygen/search/variables_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/variables_2.js b/doxygen/search/variables_2.js new file mode 100644 index 00000000000..83261257589 --- /dev/null +++ b/doxygen/search/variables_2.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['coeff_5f',['coeff_',['../classcaffe_1_1ReductionLayer.html#a7aeb19ec25f01d4df995ba2122fbfeb3',1,'caffe::ReductionLayer']]], + ['col_5fbuffer_5fshape_5f',['col_buffer_shape_',['../classcaffe_1_1BaseConvolutionLayer.html#a9dd3f4ea6e17fe155efe537c120a3de4',1,'caffe::BaseConvolutionLayer']]], + ['concat_5fbottom_5fvec_5f',['concat_bottom_vec_',['../classcaffe_1_1SPPLayer.html#a2874ca5b0c4d8f7d970c5a30768d2bc0',1,'caffe::SPPLayer']]], + ['concat_5flayer_5f',['concat_layer_',['../classcaffe_1_1SPPLayer.html#a02a9d50a48983fa0c6e42cafa85c1eb8',1,'caffe::SPPLayer']]], + ['constant_5fcount_5f',['constant_count_',['../classcaffe_1_1ReshapeLayer.html#abbb071bc8398e2b0442302e51c644c28',1,'caffe::ReshapeLayer']]], + ['conv_5finput_5fshape_5f',['conv_input_shape_',['../classcaffe_1_1BaseConvolutionLayer.html#a63756d6ef00f6491939e539094c21397',1,'caffe::BaseConvolutionLayer']]], + ['copy_5faxes_5f',['copy_axes_',['../classcaffe_1_1ReshapeLayer.html#ace08e8747c8d4562fbc26ca789681a4a',1,'caffe::ReshapeLayer']]] +]; diff --git a/doxygen/search/variables_3.html b/doxygen/search/variables_3.html new file mode 100644 index 00000000000..e45e6131da1 --- /dev/null +++ b/doxygen/search/variables_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/variables_3.js b/doxygen/search/variables_3.js new file mode 100644 index 00000000000..b1a98f2db05 --- /dev/null +++ b/doxygen/search/variables_3.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['debug_5finfo_5f',['debug_info_',['../classcaffe_1_1Net.html#addc4e5501070ede24155d4c1bf9928a2',1,'caffe::Net']]], + ['diff_5fscale_5f',['diff_scale_',['../classcaffe_1_1PowerLayer.html#aa83169eaa1b573137aa6ed2b526879f0',1,'caffe::PowerLayer']]], + ['dilation_5f',['dilation_',['../classcaffe_1_1BaseConvolutionLayer.html#a91f929109b5c05ba6086d4c2a741ad4a',1,'caffe::BaseConvolutionLayer::dilation_()'],['../classcaffe_1_1Im2colLayer.html#a3420f6068a4befb3b0ed1ffe5ff0e84c',1,'caffe::Im2colLayer::dilation_()']]], + ['dim_5f',['dim_',['../classcaffe_1_1ReductionLayer.html#a5d0cdd8ca00e6bbd425a51bef2214a7e',1,'caffe::ReductionLayer']]] +]; diff --git a/doxygen/search/variables_4.html b/doxygen/search/variables_4.html new file mode 100644 index 00000000000..97ec255732d --- /dev/null +++ b/doxygen/search/variables_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/variables_4.js b/doxygen/search/variables_4.js new file mode 100644 index 00000000000..79967605164 --- /dev/null +++ b/doxygen/search/variables_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['expose_5fhidden_5f',['expose_hidden_',['../classcaffe_1_1RecurrentLayer.html#abfafaacb1fece0309e750e0d307fb76e',1,'caffe::RecurrentLayer']]] +]; diff --git a/doxygen/search/variables_5.html b/doxygen/search/variables_5.html new file mode 100644 index 00000000000..d77fa844e5b --- /dev/null +++ b/doxygen/search/variables_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/variables_5.js b/doxygen/search/variables_5.js new file mode 100644 index 00000000000..fd0922326e1 --- /dev/null +++ b/doxygen/search/variables_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['flatten_5flayers_5f',['flatten_layers_',['../classcaffe_1_1SPPLayer.html#a765c32194d96177869e2b9028b1ff0d4',1,'caffe::SPPLayer']]], + ['flatten_5foutputs_5f',['flatten_outputs_',['../classcaffe_1_1SPPLayer.html#afd42f96c91f26fe32427865a16796503',1,'caffe::SPPLayer']]], + ['flatten_5ftop_5fvecs_5f',['flatten_top_vecs_',['../classcaffe_1_1SPPLayer.html#a7460ba8ed098335de91cd8cab363d365',1,'caffe::SPPLayer']]] +]; diff --git a/doxygen/search/variables_6.html b/doxygen/search/variables_6.html new file mode 100644 index 00000000000..c656bb6f758 --- /dev/null +++ b/doxygen/search/variables_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/variables_6.js b/doxygen/search/variables_6.js new file mode 100644 index 00000000000..558804eaf16 --- /dev/null +++ b/doxygen/search/variables_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['has_5fignore_5flabel_5f',['has_ignore_label_',['../classcaffe_1_1AccuracyLayer.html#a4acdfaf6db79fbe1983b8439391ad15e',1,'caffe::AccuracyLayer::has_ignore_label_()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#a7e2ebf45542532439096caaec42a2a85',1,'caffe::SigmoidCrossEntropyLossLayer::has_ignore_label_()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#ad77bc32fa576ad025102d29acf79aefb',1,'caffe::SoftmaxWithLossLayer::has_ignore_label_()']]], + ['hidden_5fdim_5f',['hidden_dim_',['../classcaffe_1_1LSTMUnitLayer.html#a7ffcad2a4e6ca83f03cc88dffa32b7ca',1,'caffe::LSTMUnitLayer']]] +]; diff --git a/doxygen/search/variables_7.html b/doxygen/search/variables_7.html new file mode 100644 index 00000000000..8aac836390e --- /dev/null +++ b/doxygen/search/variables_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/variables_7.js b/doxygen/search/variables_7.js new file mode 100644 index 00000000000..eedc8a91d7a --- /dev/null +++ b/doxygen/search/variables_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['ignore_5flabel_5f',['ignore_label_',['../classcaffe_1_1AccuracyLayer.html#a2b8c2d647f43ffd6aa14e81f1c5b2bde',1,'caffe::AccuracyLayer::ignore_label_()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#ab99d98ce823df6c90cd4c3cf8b0a793f',1,'caffe::SigmoidCrossEntropyLossLayer::ignore_label_()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a117d31c7ac538dd7851fb493bfc75d95',1,'caffe::SoftmaxWithLossLayer::ignore_label_()']]], + ['inferred_5faxis_5f',['inferred_axis_',['../classcaffe_1_1ReshapeLayer.html#a41111d585f1a9a64fd774ca1bf7d4160',1,'caffe::ReshapeLayer']]] +]; diff --git a/doxygen/search/variables_8.html b/doxygen/search/variables_8.html new file mode 100644 index 00000000000..a74c6cafd65 --- /dev/null +++ b/doxygen/search/variables_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/variables_8.js b/doxygen/search/variables_8.js new file mode 100644 index 00000000000..da5bfe78538 --- /dev/null +++ b/doxygen/search/variables_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['kernel_5fshape_5f',['kernel_shape_',['../classcaffe_1_1BaseConvolutionLayer.html#a0a2f112eec8a7cbd13888185d4fb36b0',1,'caffe::BaseConvolutionLayer::kernel_shape_()'],['../classcaffe_1_1Im2colLayer.html#a188e9ea1225c7f373f4d50e2a78dcec7',1,'caffe::Im2colLayer::kernel_shape_()']]] +]; diff --git a/doxygen/search/variables_9.html b/doxygen/search/variables_9.html new file mode 100644 index 00000000000..3968526732e --- /dev/null +++ b/doxygen/search/variables_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/variables_9.js b/doxygen/search/variables_9.js new file mode 100644 index 00000000000..fb0f47979db --- /dev/null +++ b/doxygen/search/variables_9.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['last_5flayer_5findex_5f',['last_layer_index_',['../classcaffe_1_1RecurrentLayer.html#a0a7a7d94ed74d4199b9d7b8445d5aadb',1,'caffe::RecurrentLayer']]], + ['layer_5fparam_5f',['layer_param_',['../classcaffe_1_1Layer.html#a7ed12bb2df25c887e41d7ea9557fc701',1,'caffe::Layer']]], + ['layers_5f',['layers_',['../classcaffe_1_1Net.html#ab9e30392aa01dcf182d1a5cbd34ec45e',1,'caffe::Net']]], + ['learnable_5fparam_5fids_5f',['learnable_param_ids_',['../classcaffe_1_1Net.html#adf8dfb59e46d62c9333f322cea631bd8',1,'caffe::Net']]], + ['loss_5f',['loss_',['../classcaffe_1_1Layer.html#af6d347229a139500994e7a926c680486',1,'caffe::Layer']]] +]; diff --git a/doxygen/search/variables_a.html b/doxygen/search/variables_a.html new file mode 100644 index 00000000000..ce54923fe9d --- /dev/null +++ b/doxygen/search/variables_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/variables_a.js b/doxygen/search/variables_a.js new file mode 100644 index 00000000000..94c3abdd1ee --- /dev/null +++ b/doxygen/search/variables_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['memory_5fused_5f',['memory_used_',['../classcaffe_1_1Net.html#a84349f399faa4246f8395e63c9334d56',1,'caffe::Net']]] +]; diff --git a/doxygen/search/variables_b.html b/doxygen/search/variables_b.html new file mode 100644 index 00000000000..4825aed0c3f --- /dev/null +++ b/doxygen/search/variables_b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/variables_b.js b/doxygen/search/variables_b.js new file mode 100644 index 00000000000..f0b4ba3ca59 --- /dev/null +++ b/doxygen/search/variables_b.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['n_5f',['N_',['../classcaffe_1_1RecurrentLayer.html#a4bf3c3a87b2a740987aec46e40717907',1,'caffe::RecurrentLayer']]], + ['name_5f',['name_',['../classcaffe_1_1Net.html#aef7021f31e355ab8f8991755125f6b2b',1,'caffe::Net']]], + ['net_5finput_5fblob_5findices_5f',['net_input_blob_indices_',['../classcaffe_1_1Net.html#a083a9a4c3919721c833b53d5571a7400',1,'caffe::Net']]], + ['normalization_5f',['normalization_',['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#ad4e3c7105f896bd7792e53ef3a0a2dd8',1,'caffe::SigmoidCrossEntropyLossLayer::normalization_()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a4b1fa348fc885339931f132573467b81',1,'caffe::SoftmaxWithLossLayer::normalization_()']]], + ['num_5f',['num_',['../classcaffe_1_1ReductionLayer.html#a7c336b1554118959a13cecfd9701998e',1,'caffe::ReductionLayer']]], + ['nums_5fbuffer_5f',['nums_buffer_',['../classcaffe_1_1AccuracyLayer.html#a9acf4fa826e787fe64a55bcd2c62e66c',1,'caffe::AccuracyLayer']]] +]; diff --git a/doxygen/search/variables_c.html b/doxygen/search/variables_c.html new file mode 100644 index 00000000000..40b9b9a31a8 --- /dev/null +++ b/doxygen/search/variables_c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/variables_c.js b/doxygen/search/variables_c.js new file mode 100644 index 00000000000..1ad33b4c653 --- /dev/null +++ b/doxygen/search/variables_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['op_5f',['op_',['../classcaffe_1_1ReductionLayer.html#aa65f46eaf24eca2948592bcb9e127346',1,'caffe::ReductionLayer']]], + ['output_5fshape_5f',['output_shape_',['../classcaffe_1_1BaseConvolutionLayer.html#af0892b61454ba086c4c74b78d910bf31',1,'caffe::BaseConvolutionLayer']]] +]; diff --git a/doxygen/search/variables_d.html b/doxygen/search/variables_d.html new file mode 100644 index 00000000000..125bf94a4f8 --- /dev/null +++ b/doxygen/search/variables_d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/variables_d.js b/doxygen/search/variables_d.js new file mode 100644 index 00000000000..c7aa18e4882 --- /dev/null +++ b/doxygen/search/variables_d.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['pad_5f',['pad_',['../classcaffe_1_1BaseConvolutionLayer.html#a897ead2823e9031863e2151e71229e35',1,'caffe::BaseConvolutionLayer::pad_()'],['../classcaffe_1_1Im2colLayer.html#a55c335fac2a25ba438a8bf94497c53ec',1,'caffe::Im2colLayer::pad_()']]], + ['param_5fpropagate_5fdown_5f',['param_propagate_down_',['../classcaffe_1_1Layer.html#acd4a05def9ff3b42ad72404210613ef7',1,'caffe::Layer']]], + ['params_5f',['params_',['../classcaffe_1_1Net.html#accf52332675952dd27dfc8d3c27fa583',1,'caffe::Net']]], + ['params_5flr_5f',['params_lr_',['../classcaffe_1_1Net.html#aeb1f85c97372f57336e4e1af3eb7b9db',1,'caffe::Net']]], + ['params_5fweight_5fdecay_5f',['params_weight_decay_',['../classcaffe_1_1Net.html#ad337cf5b16e69533f605dbe1f6932bc9',1,'caffe::Net']]], + ['phase_5f',['phase_',['../classcaffe_1_1Layer.html#a1d04ad7f595a82a1c811f102d68b8a19',1,'caffe::Layer::phase_()'],['../classcaffe_1_1Net.html#a1fe921a602b4f96602702a13ad605693',1,'caffe::Net::phase_()']]], + ['pooling_5fbottom_5fvecs_5f',['pooling_bottom_vecs_',['../classcaffe_1_1SPPLayer.html#a2c9e8e5e918431ccc43e8578419357c9',1,'caffe::SPPLayer']]], + ['pooling_5flayers_5f',['pooling_layers_',['../classcaffe_1_1SPPLayer.html#a4cde4ff418007bcbdd34f91c6abbea1f',1,'caffe::SPPLayer']]], + ['pooling_5foutputs_5f',['pooling_outputs_',['../classcaffe_1_1SPPLayer.html#aed09b8f30c285651c726ac7ca186f93f',1,'caffe::SPPLayer']]], + ['pooling_5ftop_5fvecs_5f',['pooling_top_vecs_',['../classcaffe_1_1SPPLayer.html#a4bddcb27cbc0e9e2d153d134d5f9d760',1,'caffe::SPPLayer']]], + ['power_5f',['power_',['../classcaffe_1_1PowerLayer.html#a882ce133988e4dd72a10d87fec4c04c3',1,'caffe::PowerLayer']]], + ['prob_5f',['prob_',['../classcaffe_1_1SoftmaxWithLossLayer.html#a02669f20097006452d877ea05e98b775',1,'caffe::SoftmaxWithLossLayer']]] +]; diff --git a/doxygen/search/variables_e.html b/doxygen/search/variables_e.html new file mode 100644 index 00000000000..3f5bb667906 --- /dev/null +++ b/doxygen/search/variables_e.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/variables_e.js b/doxygen/search/variables_e.js new file mode 100644 index 00000000000..5755a344c87 --- /dev/null +++ b/doxygen/search/variables_e.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['rand_5fvec_5f',['rand_vec_',['../classcaffe_1_1DropoutLayer.html#a7a2c28420611a960a964e56acdbe2b47',1,'caffe::DropoutLayer']]], + ['root_5fnet_5f',['root_net_',['../classcaffe_1_1Net.html#ae416aa859aa21df6ee9db0cd5b988e15',1,'caffe::Net']]] +]; diff --git a/doxygen/search/variables_f.html b/doxygen/search/variables_f.html new file mode 100644 index 00000000000..20f5167684c --- /dev/null +++ b/doxygen/search/variables_f.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen/search/variables_f.js b/doxygen/search/variables_f.js new file mode 100644 index 00000000000..f1a1b3e48b0 --- /dev/null +++ b/doxygen/search/variables_f.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['scale_5f',['scale_',['../classcaffe_1_1DropoutLayer.html#ac8702c053de0fea389f5a0ded8cdc544',1,'caffe::DropoutLayer::scale_()'],['../classcaffe_1_1PowerLayer.html#a6684b2c6c2b2047d58c9d2809b86c39c',1,'caffe::PowerLayer::scale_()'],['../classcaffe_1_1SoftmaxLayer.html#a22a5348d7a31c512ac9d5dcfc066d4b1',1,'caffe::SoftmaxLayer::scale_()']]], + ['shift_5f',['shift_',['../classcaffe_1_1PowerLayer.html#a3a3143c4d6735d12cb5a41b1cb623bc9',1,'caffe::PowerLayer']]], + ['sigmoid_5fbottom_5fvec_5f',['sigmoid_bottom_vec_',['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#a52c3183799d44aa9e581992aee502409',1,'caffe::SigmoidCrossEntropyLossLayer']]], + ['sigmoid_5flayer_5f',['sigmoid_layer_',['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#a69e0c8d2106b4b06c7c896e3069f531c',1,'caffe::SigmoidCrossEntropyLossLayer']]], + ['sigmoid_5foutput_5f',['sigmoid_output_',['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#a1eb4c2e90dd4807dbfb0806a411a7bea',1,'caffe::SigmoidCrossEntropyLossLayer']]], + ['sigmoid_5ftop_5fvec_5f',['sigmoid_top_vec_',['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#af6719c9685fcf910129db20cceb47be5',1,'caffe::SigmoidCrossEntropyLossLayer']]], + ['softmax_5fbottom_5fvec_5f',['softmax_bottom_vec_',['../classcaffe_1_1SoftmaxWithLossLayer.html#aa39f89b673da5e6f86c6b1f79ced1270',1,'caffe::SoftmaxWithLossLayer']]], + ['softmax_5flayer_5f',['softmax_layer_',['../classcaffe_1_1SoftmaxWithLossLayer.html#a886b9e8c044917b03e7d2d04e713a05b',1,'caffe::SoftmaxWithLossLayer']]], + ['softmax_5ftop_5fvec_5f',['softmax_top_vec_',['../classcaffe_1_1SoftmaxWithLossLayer.html#a0fd219e185b46acce8fd74cb71dabf44',1,'caffe::SoftmaxWithLossLayer']]], + ['split_5flayer_5f',['split_layer_',['../classcaffe_1_1SPPLayer.html#a9312cb2eb190ce25d9269d9319cf5e4b',1,'caffe::SPPLayer']]], + ['split_5ftop_5fvec_5f',['split_top_vec_',['../classcaffe_1_1SPPLayer.html#aa4c2a009d84367e72b98b3b8542e3a0f',1,'caffe::SPPLayer']]], + ['static_5finput_5f',['static_input_',['../classcaffe_1_1RecurrentLayer.html#a7da45d2f90a99fe6e4250ffa6a533d97',1,'caffe::RecurrentLayer']]], + ['stride_5f',['stride_',['../classcaffe_1_1BaseConvolutionLayer.html#af638d3d8e67c33443cb11cb000368e73',1,'caffe::BaseConvolutionLayer::stride_()'],['../classcaffe_1_1Im2colLayer.html#afb9baa8216b65a8124d4d1d2b719da0f',1,'caffe::Im2colLayer::stride_()']]], + ['sum_5fmultiplier_5f',['sum_multiplier_',['../classcaffe_1_1MVNLayer.html#ade50bbee48a55e637e8c3e3f44f9618a',1,'caffe::MVNLayer::sum_multiplier_()'],['../classcaffe_1_1ReductionLayer.html#a141288e2904ab45831a6af704561b473',1,'caffe::ReductionLayer::sum_multiplier_()'],['../classcaffe_1_1SoftmaxLayer.html#a3bfc4000b464ab32c73060a2d5c4e426',1,'caffe::SoftmaxLayer::sum_multiplier_()']]] +]; diff --git a/doxygen/sgd__solvers_8hpp_source.html b/doxygen/sgd__solvers_8hpp_source.html new file mode 100644 index 00000000000..e5f1c6c56a4 --- /dev/null +++ b/doxygen/sgd__solvers_8hpp_source.html @@ -0,0 +1,91 @@ + + + + + + + +Caffe: include/caffe/sgd_solvers.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    sgd_solvers.hpp
    +
    +
    +
    1 #ifndef CAFFE_SGD_SOLVERS_HPP_
    2 #define CAFFE_SGD_SOLVERS_HPP_
    3 
    4 #include <string>
    5 #include <vector>
    6 
    7 #include "caffe/solver.hpp"
    8 
    9 namespace caffe {
    10 
    15 template <typename Dtype>
    16 class SGDSolver : public Solver<Dtype> {
    17  public:
    18  explicit SGDSolver(const SolverParameter& param)
    19  : Solver<Dtype>(param) { PreSolve(); }
    20  explicit SGDSolver(const string& param_file)
    21  : Solver<Dtype>(param_file) { PreSolve(); }
    22  virtual inline const char* type() const { return "SGD"; }
    23 
    24  const vector<shared_ptr<Blob<Dtype> > >& history() { return history_; }
    25 
    26  protected:
    27  void PreSolve();
    28  Dtype GetLearningRate();
    29  virtual void ApplyUpdate();
    30  virtual void Normalize(int param_id);
    31  virtual void Regularize(int param_id);
    32  virtual void ComputeUpdateValue(int param_id, Dtype rate);
    33  virtual void ClipGradients();
    34  virtual void SnapshotSolverState(const string& model_filename);
    35  virtual void SnapshotSolverStateToBinaryProto(const string& model_filename);
    36  virtual void SnapshotSolverStateToHDF5(const string& model_filename);
    37  virtual void RestoreSolverStateFromHDF5(const string& state_file);
    38  virtual void RestoreSolverStateFromBinaryProto(const string& state_file);
    39  // history maintains the historical momentum data.
    40  // update maintains update related data and is not needed in snapshots.
    41  // temp maintains other information that might be needed in computation
    42  // of gradients/updates and is not needed in snapshots
    43  vector<shared_ptr<Blob<Dtype> > > history_, update_, temp_;
    44 
    45  DISABLE_COPY_AND_ASSIGN(SGDSolver);
    46 };
    47 
    48 template <typename Dtype>
    49 class NesterovSolver : public SGDSolver<Dtype> {
    50  public:
    51  explicit NesterovSolver(const SolverParameter& param)
    52  : SGDSolver<Dtype>(param) {}
    53  explicit NesterovSolver(const string& param_file)
    54  : SGDSolver<Dtype>(param_file) {}
    55  virtual inline const char* type() const { return "Nesterov"; }
    56 
    57  protected:
    58  virtual void ComputeUpdateValue(int param_id, Dtype rate);
    59 
    60  DISABLE_COPY_AND_ASSIGN(NesterovSolver);
    61 };
    62 
    63 template <typename Dtype>
    64 class AdaGradSolver : public SGDSolver<Dtype> {
    65  public:
    66  explicit AdaGradSolver(const SolverParameter& param)
    67  : SGDSolver<Dtype>(param) { constructor_sanity_check(); }
    68  explicit AdaGradSolver(const string& param_file)
    69  : SGDSolver<Dtype>(param_file) { constructor_sanity_check(); }
    70  virtual inline const char* type() const { return "AdaGrad"; }
    71 
    72  protected:
    73  virtual void ComputeUpdateValue(int param_id, Dtype rate);
    74  void constructor_sanity_check() {
    75  CHECK_EQ(0, this->param_.momentum())
    76  << "Momentum cannot be used with AdaGrad.";
    77  }
    78 
    79  DISABLE_COPY_AND_ASSIGN(AdaGradSolver);
    80 };
    81 
    82 
    83 template <typename Dtype>
    84 class RMSPropSolver : public SGDSolver<Dtype> {
    85  public:
    86  explicit RMSPropSolver(const SolverParameter& param)
    87  : SGDSolver<Dtype>(param) { constructor_sanity_check(); }
    88  explicit RMSPropSolver(const string& param_file)
    89  : SGDSolver<Dtype>(param_file) { constructor_sanity_check(); }
    90  virtual inline const char* type() const { return "RMSProp"; }
    91 
    92  protected:
    93  virtual void ComputeUpdateValue(int param_id, Dtype rate);
    94  void constructor_sanity_check() {
    95  CHECK_EQ(0, this->param_.momentum())
    96  << "Momentum cannot be used with RMSProp.";
    97  CHECK_GE(this->param_.rms_decay(), 0)
    98  << "rms_decay should lie between 0 and 1.";
    99  CHECK_LT(this->param_.rms_decay(), 1)
    100  << "rms_decay should lie between 0 and 1.";
    101  }
    102 
    103  DISABLE_COPY_AND_ASSIGN(RMSPropSolver);
    104 };
    105 
    106 template <typename Dtype>
    107 class AdaDeltaSolver : public SGDSolver<Dtype> {
    108  public:
    109  explicit AdaDeltaSolver(const SolverParameter& param)
    110  : SGDSolver<Dtype>(param) { AdaDeltaPreSolve(); }
    111  explicit AdaDeltaSolver(const string& param_file)
    112  : SGDSolver<Dtype>(param_file) { AdaDeltaPreSolve(); }
    113  virtual inline const char* type() const { return "AdaDelta"; }
    114 
    115  protected:
    116  void AdaDeltaPreSolve();
    117  virtual void ComputeUpdateValue(int param_id, Dtype rate);
    118 
    119  DISABLE_COPY_AND_ASSIGN(AdaDeltaSolver);
    120 };
    121 
    130 template <typename Dtype>
    131 class AdamSolver : public SGDSolver<Dtype> {
    132  public:
    133  explicit AdamSolver(const SolverParameter& param)
    134  : SGDSolver<Dtype>(param) { AdamPreSolve();}
    135  explicit AdamSolver(const string& param_file)
    136  : SGDSolver<Dtype>(param_file) { AdamPreSolve(); }
    137  virtual inline const char* type() const { return "Adam"; }
    138 
    139  protected:
    140  void AdamPreSolve();
    141  virtual void ComputeUpdateValue(int param_id, Dtype rate);
    142 
    143  DISABLE_COPY_AND_ASSIGN(AdamSolver);
    144 };
    145 
    146 } // namespace caffe
    147 
    148 #endif // CAFFE_SGD_SOLVERS_HPP_
    virtual const char * type() const
    Returns the solver type.
    Definition: sgd_solvers.hpp:55
    +
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    virtual const char * type() const
    Returns the solver type.
    Definition: sgd_solvers.hpp:22
    +
    Optimizes the parameters of a Net using stochastic gradient descent (SGD) with momentum.
    Definition: sgd_solvers.hpp:16
    +
    An interface for classes that perform optimization on Nets.
    Definition: solver.hpp:41
    +
    AdamSolver, an algorithm for first-order gradient-based optimization of stochastic objective function...
    Definition: sgd_solvers.hpp:131
    +
    Definition: sgd_solvers.hpp:107
    +
    virtual const char * type() const
    Returns the solver type.
    Definition: sgd_solvers.hpp:113
    +
    Definition: sgd_solvers.hpp:49
    +
    Definition: sgd_solvers.hpp:84
    +
    virtual const char * type() const
    Returns the solver type.
    Definition: sgd_solvers.hpp:90
    +
    virtual const char * type() const
    Returns the solver type.
    Definition: sgd_solvers.hpp:70
    +
    Definition: sgd_solvers.hpp:64
    +
    virtual const char * type() const
    Returns the solver type.
    Definition: sgd_solvers.hpp:137
    +
    + + + + diff --git a/doxygen/sigmoid__cross__entropy__loss__layer_8hpp_source.html b/doxygen/sigmoid__cross__entropy__loss__layer_8hpp_source.html new file mode 100644 index 00000000000..e7f2ef8165f --- /dev/null +++ b/doxygen/sigmoid__cross__entropy__loss__layer_8hpp_source.html @@ -0,0 +1,97 @@ + + + + + + + +Caffe: include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    sigmoid_cross_entropy_loss_layer.hpp
    +
    +
    +
    1 #ifndef CAFFE_SIGMOID_CROSS_ENTROPY_LOSS_LAYER_HPP_
    2 #define CAFFE_SIGMOID_CROSS_ENTROPY_LOSS_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/layer.hpp"
    8 #include "caffe/proto/caffe.pb.h"
    9 
    10 #include "caffe/layers/loss_layer.hpp"
    11 #include "caffe/layers/sigmoid_layer.hpp"
    12 
    13 namespace caffe {
    14 
    44 template <typename Dtype>
    45 class SigmoidCrossEntropyLossLayer : public LossLayer<Dtype> {
    46  public:
    47  explicit SigmoidCrossEntropyLossLayer(const LayerParameter& param)
    48  : LossLayer<Dtype>(param),
    51  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    52  const vector<Blob<Dtype>*>& top);
    53  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    54  const vector<Blob<Dtype>*>& top);
    55 
    56  virtual inline const char* type() const { return "SigmoidCrossEntropyLoss"; }
    57 
    58  protected:
    60  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    61  const vector<Blob<Dtype>*>& top);
    62  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    63  const vector<Blob<Dtype>*>& top);
    64 
    95  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    96  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    97  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    98  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    99 
    104  virtual Dtype get_normalizer(
    105  LossParameter_NormalizationMode normalization_mode, int valid_count);
    106 
    108  shared_ptr<SigmoidLayer<Dtype> > sigmoid_layer_;
    110  shared_ptr<Blob<Dtype> > sigmoid_output_;
    112  vector<Blob<Dtype>*> sigmoid_bottom_vec_;
    114  vector<Blob<Dtype>*> sigmoid_top_vec_;
    115 
    121  LossParameter_NormalizationMode normalization_;
    122  Dtype normalizer_;
    123  int outer_num_, inner_num_;
    124 };
    125 
    126 } // namespace caffe
    127 
    128 #endif // CAFFE_SIGMOID_CROSS_ENTROPY_LOSS_LAYER_HPP_
    vector< Blob< Dtype > * > sigmoid_bottom_vec_
    bottom vector holder to call the underlying SigmoidLayer::Forward
    Definition: sigmoid_cross_entropy_loss_layer.hpp:112
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Computes the cross-entropy (logistic) loss , often used for predicting targets interpreted as probabi...
    Definition: sigmoid_cross_entropy_loss_layer.cpp:79
    +
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    Sigmoid function non-linearity , a classic choice in neural networks.
    Definition: sigmoid_layer.hpp:23
    +
    shared_ptr< Blob< Dtype > > sigmoid_output_
    sigmoid_output stores the output of the SigmoidLayer.
    Definition: sigmoid_cross_entropy_loss_layer.hpp:110
    +
    vector< Blob< Dtype > * > sigmoid_top_vec_
    top vector holder to call the underlying SigmoidLayer::Forward
    Definition: sigmoid_cross_entropy_loss_layer.hpp:114
    +
    LossParameter_NormalizationMode normalization_
    How to normalize the loss.
    Definition: sigmoid_cross_entropy_loss_layer.hpp:121
    +
    virtual Dtype get_normalizer(LossParameter_NormalizationMode normalization_mode, int valid_count)
    Definition: sigmoid_cross_entropy_loss_layer.cpp:49
    +
    shared_ptr< SigmoidLayer< Dtype > > sigmoid_layer_
    The internal SigmoidLayer used to map predictions to probabilities.
    Definition: sigmoid_cross_entropy_loss_layer.hpp:108
    +
    virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: sigmoid_cross_entropy_loss_layer.cpp:10
    +
    bool has_ignore_label_
    Whether to ignore instances with a certain label.
    Definition: sigmoid_cross_entropy_loss_layer.hpp:117
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: sigmoid_cross_entropy_loss_layer.hpp:56
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: sigmoid_cross_entropy_loss_layer.cpp:36
    +
    Computes the cross-entropy (logistic) loss , often used for predicting targets interpreted as probabi...
    Definition: sigmoid_cross_entropy_loss_layer.hpp:45
    +
    An interface for Layers that take two Blobs as input – usually (1) predictions and (2) ground-truth ...
    Definition: loss_layer.hpp:23
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Computes the sigmoid cross-entropy loss error gradient w.r.t. the predictions.
    Definition: sigmoid_cross_entropy_loss_layer.cpp:104
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    +
    int ignore_label_
    The label indicating that an instance should be ignored.
    Definition: sigmoid_cross_entropy_loss_layer.hpp:119
    +
    + + + + diff --git a/doxygen/sigmoid__layer_8hpp_source.html b/doxygen/sigmoid__layer_8hpp_source.html new file mode 100644 index 00000000000..a38f856c5a2 --- /dev/null +++ b/doxygen/sigmoid__layer_8hpp_source.html @@ -0,0 +1,86 @@ + + + + + + + +Caffe: include/caffe/layers/sigmoid_layer.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    sigmoid_layer.hpp
    +
    +
    +
    1 #ifndef CAFFE_SIGMOID_LAYER_HPP_
    2 #define CAFFE_SIGMOID_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/layer.hpp"
    8 #include "caffe/proto/caffe.pb.h"
    9 
    10 #include "caffe/layers/neuron_layer.hpp"
    11 
    12 namespace caffe {
    13 
    22 template <typename Dtype>
    23 class SigmoidLayer : public NeuronLayer<Dtype> {
    24  public:
    25  explicit SigmoidLayer(const LayerParameter& param)
    26  : NeuronLayer<Dtype>(param) {}
    27 
    28  virtual inline const char* type() const { return "Sigmoid"; }
    29 
    30  protected:
    41  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    42  const vector<Blob<Dtype>*>& top);
    43  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    44  const vector<Blob<Dtype>*>& top);
    45 
    63  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    64  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    65  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    66  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    67 };
    68 
    69 } // namespace caffe
    70 
    71 #endif // CAFFE_SIGMOID_LAYER_HPP_
    virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    Sigmoid function non-linearity , a classic choice in neural networks.
    Definition: sigmoid_layer.hpp:23
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Computes the error gradient w.r.t. the sigmoid inputs.
    Definition: sigmoid_layer.cpp:25
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: sigmoid_layer.hpp:28
    +
    An interface for layers that take one blob as input ( ) and produce one equally-sized blob as output ...
    Definition: neuron_layer.hpp:19
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Definition: sigmoid_layer.cpp:14
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    + + + + diff --git a/doxygen/signal__handler_8h_source.html b/doxygen/signal__handler_8h_source.html new file mode 100644 index 00000000000..60078ff3608 --- /dev/null +++ b/doxygen/signal__handler_8h_source.html @@ -0,0 +1,80 @@ + + + + + + + +Caffe: include/caffe/util/signal_handler.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    signal_handler.h
    +
    +
    +
    1 #ifndef INCLUDE_CAFFE_UTIL_SIGNAL_HANDLER_H_
    2 #define INCLUDE_CAFFE_UTIL_SIGNAL_HANDLER_H_
    3 
    4 #include "caffe/proto/caffe.pb.h"
    5 #include "caffe/solver.hpp"
    6 
    7 namespace caffe {
    8 
    9 class SignalHandler {
    10  public:
    11  // Contructor. Specify what action to take when a signal is received.
    12  SignalHandler(SolverAction::Enum SIGINT_action,
    13  SolverAction::Enum SIGHUP_action);
    14  ~SignalHandler();
    15  ActionCallback GetActionFunction();
    16  private:
    17  SolverAction::Enum CheckForSignals() const;
    18  SolverAction::Enum SIGINT_action_;
    19  SolverAction::Enum SIGHUP_action_;
    20 };
    21 
    22 } // namespace caffe
    23 
    24 #endif // INCLUDE_CAFFE_UTIL_SIGNAL_HANDLER_H_
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    Definition: signal_handler.h:9
    +
    boost::function< SolverAction::Enum()> ActionCallback
    Type of a function that returns a Solver Action enumeration.
    Definition: solver.hpp:32
    +
    + + + + diff --git a/doxygen/silence__layer_8hpp_source.html b/doxygen/silence__layer_8hpp_source.html new file mode 100644 index 00000000000..8a1d4773fd4 --- /dev/null +++ b/doxygen/silence__layer_8hpp_source.html @@ -0,0 +1,89 @@ + + + + + + + +Caffe: include/caffe/layers/silence_layer.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    silence_layer.hpp
    +
    +
    +
    1 #ifndef CAFFE_SILENCE_LAYER_HPP_
    2 #define CAFFE_SILENCE_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/layer.hpp"
    8 #include "caffe/proto/caffe.pb.h"
    9 
    10 namespace caffe {
    11 
    16 template <typename Dtype>
    17 class SilenceLayer : public Layer<Dtype> {
    18  public:
    19  explicit SilenceLayer(const LayerParameter& param)
    20  : Layer<Dtype>(param) {}
    21  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    22  const vector<Blob<Dtype>*>& top) {}
    23 
    24  virtual inline const char* type() const { return "Silence"; }
    25  virtual inline int MinBottomBlobs() const { return 1; }
    26  virtual inline int ExactNumTopBlobs() const { return 0; }
    27 
    28  protected:
    29  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    30  const vector<Blob<Dtype>*>& top) {}
    31  // We can't define Forward_gpu here, since STUB_GPU will provide
    32  // its own definition for CPU_ONLY mode.
    33  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    34  const vector<Blob<Dtype>*>& top);
    35  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    36  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    37  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    38  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    39 };
    40 
    41 } // namespace caffe
    42 
    43 #endif // CAFFE_SILENCE_LAYER_HPP_
    An interface for the units of computation which can be composed into a Net.
    Definition: layer.hpp:33
    +
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    virtual int MinBottomBlobs() const
    Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is requi...
    Definition: silence_layer.hpp:25
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: silence_layer.cpp:9
    +
    virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: silence_layer.hpp:21
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the CPU device, compute the layer output.
    Definition: silence_layer.hpp:29
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: silence_layer.hpp:24
    +
    Ignores bottom blobs while producing no top blobs. (This is useful to suppress outputs during testing...
    Definition: silence_layer.hpp:17
    +
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: silence_layer.hpp:26
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    +
    + + + + diff --git a/doxygen/slice__layer_8hpp_source.html b/doxygen/slice__layer_8hpp_source.html new file mode 100644 index 00000000000..407f0aa74f9 --- /dev/null +++ b/doxygen/slice__layer_8hpp_source.html @@ -0,0 +1,90 @@ + + + + + + + +Caffe: include/caffe/layers/slice_layer.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    slice_layer.hpp
    +
    +
    +
    1 #ifndef CAFFE_SLICE_LAYER_HPP_
    2 #define CAFFE_SLICE_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/layer.hpp"
    8 #include "caffe/proto/caffe.pb.h"
    9 
    10 namespace caffe {
    11 
    18 template <typename Dtype>
    19 class SliceLayer : public Layer<Dtype> {
    20  public:
    21  explicit SliceLayer(const LayerParameter& param)
    22  : Layer<Dtype>(param) {}
    23  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    24  const vector<Blob<Dtype>*>& top);
    25  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    26  const vector<Blob<Dtype>*>& top);
    27 
    28  virtual inline const char* type() const { return "Slice"; }
    29  virtual inline int ExactNumBottomBlobs() const { return 1; }
    30  virtual inline int MinTopBlobs() const { return 1; }
    31 
    32  protected:
    33  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    34  const vector<Blob<Dtype>*>& top);
    35  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    36  const vector<Blob<Dtype>*>& top);
    37  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    38  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    39  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    40  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    41 
    42  int count_;
    43  int num_slices_;
    44  int slice_size_;
    45  int slice_axis_;
    46  vector<int> slice_point_;
    47 };
    48 
    49 } // namespace caffe
    50 
    51 #endif // CAFFE_SLICE_LAYER_HPP_
    virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: slice_layer.cpp:10
    +
    An interface for the units of computation which can be composed into a Net.
    Definition: layer.hpp:33
    +
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: slice_layer.hpp:28
    +
    virtual int MinTopBlobs() const
    Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
    Definition: slice_layer.hpp:30
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the CPU device, compute the layer output.
    Definition: slice_layer.cpp:76
    +
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: slice_layer.hpp:29
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: slice_layer.cpp:97
    +
    Takes a Blob and slices it along either the num or channel dimension, outputting multiple sliced Blob...
    Definition: slice_layer.hpp:19
    +
    virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: slice_layer.cpp:22
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    +
    + + + + diff --git a/doxygen/softmax__layer_8hpp_source.html b/doxygen/softmax__layer_8hpp_source.html new file mode 100644 index 00000000000..9359b027304 --- /dev/null +++ b/doxygen/softmax__layer_8hpp_source.html @@ -0,0 +1,91 @@ + + + + + + + +Caffe: include/caffe/layers/softmax_layer.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    softmax_layer.hpp
    +
    +
    +
    1 #ifndef CAFFE_SOFTMAX_LAYER_HPP_
    2 #define CAFFE_SOFTMAX_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/layer.hpp"
    8 #include "caffe/proto/caffe.pb.h"
    9 
    10 namespace caffe {
    11 
    17 template <typename Dtype>
    18 class SoftmaxLayer : public Layer<Dtype> {
    19  public:
    20  explicit SoftmaxLayer(const LayerParameter& param)
    21  : Layer<Dtype>(param) {}
    22  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    23  const vector<Blob<Dtype>*>& top);
    24 
    25  virtual inline const char* type() const { return "Softmax"; }
    26  virtual inline int ExactNumBottomBlobs() const { return 1; }
    27  virtual inline int ExactNumTopBlobs() const { return 1; }
    28 
    29  protected:
    30  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    31  const vector<Blob<Dtype>*>& top);
    32  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    33  const vector<Blob<Dtype>*>& top);
    34  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    35  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    36  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    37  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    38 
    39  int outer_num_;
    40  int inner_num_;
    41  int softmax_axis_;
    46 };
    47 
    48 } // namespace caffe
    49 
    50 #endif // CAFFE_SOFTMAX_LAYER_HPP_
    virtual const char * type() const
    Returns the layer type.
    Definition: softmax_layer.hpp:25
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    An interface for the units of computation which can be composed into a Net.
    Definition: layer.hpp:33
    +
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    Blob< Dtype > sum_multiplier_
    sum_multiplier is used to carry out sum using BLAS
    Definition: softmax_layer.hpp:43
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the CPU device, compute the layer output.
    Definition: softmax_layer.cpp:27
    +
    Computes the softmax function.
    Definition: softmax_layer.hpp:18
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: softmax_layer.cpp:10
    +
    Blob< Dtype > scale_
    scale is an intermediate Blob to hold temporary results.
    Definition: softmax_layer.hpp:45
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: softmax_layer.cpp:63
    +
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: softmax_layer.hpp:26
    +
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: softmax_layer.hpp:27
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    +
    + + + + diff --git a/doxygen/softmax__loss__layer_8hpp_source.html b/doxygen/softmax__loss__layer_8hpp_source.html new file mode 100644 index 00000000000..00e7c640429 --- /dev/null +++ b/doxygen/softmax__loss__layer_8hpp_source.html @@ -0,0 +1,100 @@ + + + + + + + +Caffe: include/caffe/layers/softmax_loss_layer.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    softmax_loss_layer.hpp
    +
    +
    +
    1 #ifndef CAFFE_SOFTMAX_WITH_LOSS_LAYER_HPP_
    2 #define CAFFE_SOFTMAX_WITH_LOSS_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/layer.hpp"
    8 #include "caffe/proto/caffe.pb.h"
    9 
    10 #include "caffe/layers/loss_layer.hpp"
    11 #include "caffe/layers/softmax_layer.hpp"
    12 
    13 namespace caffe {
    14 
    43 template <typename Dtype>
    44 class SoftmaxWithLossLayer : public LossLayer<Dtype> {
    45  public:
    54  explicit SoftmaxWithLossLayer(const LayerParameter& param)
    55  : LossLayer<Dtype>(param) {}
    56  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    57  const vector<Blob<Dtype>*>& top);
    58  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    59  const vector<Blob<Dtype>*>& top);
    60 
    61  virtual inline const char* type() const { return "SoftmaxWithLoss"; }
    62  virtual inline int ExactNumTopBlobs() const { return -1; }
    63  virtual inline int MinTopBlobs() const { return 1; }
    64  virtual inline int MaxTopBlobs() const { return 2; }
    65 
    66  protected:
    67  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    68  const vector<Blob<Dtype>*>& top);
    69  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    70  const vector<Blob<Dtype>*>& top);
    98  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    99  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    100  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    101  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    102 
    107  virtual Dtype get_normalizer(
    108  LossParameter_NormalizationMode normalization_mode, int valid_count);
    109 
    111  shared_ptr<Layer<Dtype> > softmax_layer_;
    115  vector<Blob<Dtype>*> softmax_bottom_vec_;
    117  vector<Blob<Dtype>*> softmax_top_vec_;
    123  LossParameter_NormalizationMode normalization_;
    124 
    125  int softmax_axis_, outer_num_, inner_num_;
    126 };
    127 
    128 } // namespace caffe
    129 
    130 #endif // CAFFE_SOFTMAX_WITH_LOSS_LAYER_HPP_
    virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the CPU device, compute the layer output.
    Definition: softmax_loss_layer.cpp:89
    +
    shared_ptr< Layer< Dtype > > softmax_layer_
    The internal SoftmaxLayer used to map predictions to a distribution.
    Definition: softmax_loss_layer.hpp:111
    +
    virtual int MinTopBlobs() const
    Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
    Definition: softmax_loss_layer.hpp:63
    +
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: softmax_loss_layer.cpp:39
    +
    virtual int MaxTopBlobs() const
    Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required...
    Definition: softmax_loss_layer.hpp:64
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: softmax_loss_layer.hpp:61
    +
    SoftmaxWithLossLayer(const LayerParameter &param)
    Definition: softmax_loss_layer.hpp:54
    +
    vector< Blob< Dtype > * > softmax_top_vec_
    top vector holder used in call to the underlying SoftmaxLayer::Forward
    Definition: softmax_loss_layer.hpp:117
    +
    LossParameter_NormalizationMode normalization_
    How to normalize the output loss.
    Definition: softmax_loss_layer.hpp:123
    +
    Computes the multinomial logistic loss for a one-of-many classification task, passing real-valued pre...
    Definition: softmax_loss_layer.hpp:44
    +
    vector< Blob< Dtype > * > softmax_bottom_vec_
    bottom vector holder used in call to the underlying SoftmaxLayer::Forward
    Definition: softmax_loss_layer.hpp:115
    +
    int ignore_label_
    The label indicating that an instance should be ignored.
    Definition: softmax_loss_layer.hpp:121
    +
    An interface for Layers that take two Blobs as input – usually (1) predictions and (2) ground-truth ...
    Definition: loss_layer.hpp:23
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Computes the softmax loss error gradient w.r.t. the predictions.
    Definition: softmax_loss_layer.cpp:118
    +
    virtual Dtype get_normalizer(LossParameter_NormalizationMode normalization_mode, int valid_count)
    Definition: softmax_loss_layer.cpp:59
    +
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: softmax_loss_layer.hpp:62
    +
    Blob< Dtype > prob_
    prob stores the output probability predictions from the SoftmaxLayer.
    Definition: softmax_loss_layer.hpp:113
    +
    virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: softmax_loss_layer.cpp:11
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    +
    bool has_ignore_label_
    Whether to ignore instances with a certain label.
    Definition: softmax_loss_layer.hpp:119
    +
    + + + + diff --git a/doxygen/solver_8hpp_source.html b/doxygen/solver_8hpp_source.html new file mode 100644 index 00000000000..d562fada51a --- /dev/null +++ b/doxygen/solver_8hpp_source.html @@ -0,0 +1,83 @@ + + + + + + + +Caffe: include/caffe/solver.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    solver.hpp
    +
    +
    +
    1 #ifndef CAFFE_SOLVER_HPP_
    2 #define CAFFE_SOLVER_HPP_
    3 #include <boost/function.hpp>
    4 #include <string>
    5 #include <vector>
    6 
    7 #include "caffe/net.hpp"
    8 #include "caffe/solver_factory.hpp"
    9 
    10 namespace caffe {
    11 
    20  namespace SolverAction {
    21  enum Enum {
    22  NONE = 0, // Take no special action.
    23  STOP = 1, // Stop training. snapshot_after_train controls whether a
    24  // snapshot is created.
    25  SNAPSHOT = 2 // Take a snapshot, and keep training.
    26  };
    27  }
    28 
    32 typedef boost::function<SolverAction::Enum()> ActionCallback;
    33 
    40 template <typename Dtype>
    41 class Solver {
    42  public:
    43  explicit Solver(const SolverParameter& param,
    44  const Solver* root_solver = NULL);
    45  explicit Solver(const string& param_file, const Solver* root_solver = NULL);
    46  void Init(const SolverParameter& param);
    47  void InitTrainNet();
    48  void InitTestNets();
    49 
    50  // Client of the Solver optionally may call this in order to set the function
    51  // that the solver uses to see what action it should take (e.g. snapshot or
    52  // exit training early).
    53  void SetActionFunction(ActionCallback func);
    54  SolverAction::Enum GetRequestedAction();
    55  // The main entry of the solver function. In default, iter will be zero. Pass
    56  // in a non-zero iter number to resume training for a pre-trained net.
    57  virtual void Solve(const char* resume_file = NULL);
    58  inline void Solve(const string resume_file) { Solve(resume_file.c_str()); }
    59  void Step(int iters);
    60  // The Restore method simply dispatches to one of the
    61  // RestoreSolverStateFrom___ protected methods. You should implement these
    62  // methods to restore the state from the appropriate snapshot type.
    63  void Restore(const char* resume_file);
    64  // The Solver::Snapshot function implements the basic snapshotting utility
    65  // that stores the learned net. You should implement the SnapshotSolverState()
    66  // function that produces a SolverState protocol buffer that needs to be
    67  // written to disk together with the learned net.
    68  void Snapshot();
    69  virtual ~Solver() {}
    70  inline const SolverParameter& param() const { return param_; }
    71  inline shared_ptr<Net<Dtype> > net() { return net_; }
    72  inline const vector<shared_ptr<Net<Dtype> > >& test_nets() {
    73  return test_nets_;
    74  }
    75  int iter() { return iter_; }
    76 
    77  // Invoked at specific points during an iteration
    78  class Callback {
    79  protected:
    80  virtual void on_start() = 0;
    81  virtual void on_gradients_ready() = 0;
    82 
    83  template <typename T>
    84  friend class Solver;
    85  };
    86  const vector<Callback*>& callbacks() const { return callbacks_; }
    87  void add_callback(Callback* value) {
    88  callbacks_.push_back(value);
    89  }
    90 
    91  void CheckSnapshotWritePermissions();
    95  virtual inline const char* type() const { return ""; }
    96 
    97  protected:
    98  // Make and apply the update value for the current iteration.
    99  virtual void ApplyUpdate() = 0;
    100  string SnapshotFilename(const string extension);
    101  string SnapshotToBinaryProto();
    102  string SnapshotToHDF5();
    103  // The test routine
    104  void TestAll();
    105  void Test(const int test_net_id = 0);
    106  virtual void SnapshotSolverState(const string& model_filename) = 0;
    107  virtual void RestoreSolverStateFromHDF5(const string& state_file) = 0;
    108  virtual void RestoreSolverStateFromBinaryProto(const string& state_file) = 0;
    109  void DisplayOutputBlobs(const int net_id);
    110  void UpdateSmoothedLoss(Dtype loss, int start_iter, int average_loss);
    111 
    112  SolverParameter param_;
    113  int iter_;
    114  int current_step_;
    115  shared_ptr<Net<Dtype> > net_;
    116  vector<shared_ptr<Net<Dtype> > > test_nets_;
    117  vector<Callback*> callbacks_;
    118  vector<Dtype> losses_;
    119  Dtype smoothed_loss_;
    120 
    121  // The root solver that holds root nets (actually containing shared layers)
    122  // in data parallelism
    123  const Solver* const root_solver_;
    124 
    125  // A function that can be set by a client of the Solver to provide indication
    126  // that it wants a snapshot saved and/or to exit early.
    127  ActionCallback action_request_function_;
    128 
    129  // True iff a request to stop early was received.
    130  bool requested_early_exit_;
    131 
    132  DISABLE_COPY_AND_ASSIGN(Solver);
    133 };
    134 
    139 template <typename Dtype>
    140 class WorkerSolver : public Solver<Dtype> {
    141  public:
    142  explicit WorkerSolver(const SolverParameter& param,
    143  const Solver<Dtype>* root_solver = NULL)
    144  : Solver<Dtype>(param, root_solver) {}
    145 
    146  protected:
    147  void ApplyUpdate() {}
    148  void SnapshotSolverState(const string& model_filename) {
    149  LOG(FATAL) << "Should not be called on worker solver.";
    150  }
    151  void RestoreSolverStateFromBinaryProto(const string& state_file) {
    152  LOG(FATAL) << "Should not be called on worker solver.";
    153  }
    154  void RestoreSolverStateFromHDF5(const string& state_file) {
    155  LOG(FATAL) << "Should not be called on worker solver.";
    156  }
    157 };
    158 
    159 } // namespace caffe
    160 
    161 #endif // CAFFE_SOLVER_HPP_
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    Solver that only computes gradients, used as worker for multi-GPU training.
    Definition: solver.hpp:140
    +
    Definition: solver.hpp:78
    +
    An interface for classes that perform optimization on Nets.
    Definition: solver.hpp:41
    +
    virtual const char * type() const
    Returns the solver type.
    Definition: solver.hpp:95
    +
    boost::function< SolverAction::Enum()> ActionCallback
    Type of a function that returns a Solver Action enumeration.
    Definition: solver.hpp:32
    +
    + + + + diff --git a/doxygen/solver__factory_8hpp_source.html b/doxygen/solver__factory_8hpp_source.html new file mode 100644 index 00000000000..c269fe78f7f --- /dev/null +++ b/doxygen/solver__factory_8hpp_source.html @@ -0,0 +1,81 @@ + + + + + + + +Caffe: include/caffe/solver_factory.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    solver_factory.hpp
    +
    +
    +
    1 
    38 #ifndef CAFFE_SOLVER_FACTORY_H_
    39 #define CAFFE_SOLVER_FACTORY_H_
    40 
    41 #include <map>
    42 #include <string>
    43 #include <vector>
    44 
    45 #include "caffe/common.hpp"
    46 #include "caffe/proto/caffe.pb.h"
    47 
    48 namespace caffe {
    49 
    50 template <typename Dtype>
    51 class Solver;
    52 
    53 template <typename Dtype>
    55  public:
    56  typedef Solver<Dtype>* (*Creator)(const SolverParameter&);
    57  typedef std::map<string, Creator> CreatorRegistry;
    58 
    59  static CreatorRegistry& Registry() {
    60  static CreatorRegistry* g_registry_ = new CreatorRegistry();
    61  return *g_registry_;
    62  }
    63 
    64  // Adds a creator.
    65  static void AddCreator(const string& type, Creator creator) {
    66  CreatorRegistry& registry = Registry();
    67  CHECK_EQ(registry.count(type), 0)
    68  << "Solver type " << type << " already registered.";
    69  registry[type] = creator;
    70  }
    71 
    72  // Get a solver using a SolverParameter.
    73  static Solver<Dtype>* CreateSolver(const SolverParameter& param) {
    74  const string& type = param.type();
    75  CreatorRegistry& registry = Registry();
    76  CHECK_EQ(registry.count(type), 1) << "Unknown solver type: " << type
    77  << " (known types: " << SolverTypeListString() << ")";
    78  return registry[type](param);
    79  }
    80 
    81  static vector<string> SolverTypeList() {
    82  CreatorRegistry& registry = Registry();
    83  vector<string> solver_types;
    84  for (typename CreatorRegistry::iterator iter = registry.begin();
    85  iter != registry.end(); ++iter) {
    86  solver_types.push_back(iter->first);
    87  }
    88  return solver_types;
    89  }
    90 
    91  private:
    92  // Solver registry should never be instantiated - everything is done with its
    93  // static variables.
    94  SolverRegistry() {}
    95 
    96  static string SolverTypeListString() {
    97  vector<string> solver_types = SolverTypeList();
    98  string solver_types_str;
    99  for (vector<string>::iterator iter = solver_types.begin();
    100  iter != solver_types.end(); ++iter) {
    101  if (iter != solver_types.begin()) {
    102  solver_types_str += ", ";
    103  }
    104  solver_types_str += *iter;
    105  }
    106  return solver_types_str;
    107  }
    108 };
    109 
    110 
    111 template <typename Dtype>
    113  public:
    114  SolverRegisterer(const string& type,
    115  Solver<Dtype>* (*creator)(const SolverParameter&)) {
    116  // LOG(INFO) << "Registering solver type: " << type;
    117  SolverRegistry<Dtype>::AddCreator(type, creator);
    118  }
    119 };
    120 
    121 
    122 #define REGISTER_SOLVER_CREATOR(type, creator) \
    123  static SolverRegisterer<float> g_creator_f_##type(#type, creator<float>); \
    124  static SolverRegisterer<double> g_creator_d_##type(#type, creator<double>) \
    125 
    126 #define REGISTER_SOLVER_CLASS(type) \
    127  template <typename Dtype> \
    128  Solver<Dtype>* Creator_##type##Solver( \
    129  const SolverParameter& param) \
    130  { \
    131  return new type##Solver<Dtype>(param); \
    132  } \
    133  REGISTER_SOLVER_CREATOR(type, Creator_##type##Solver)
    134 
    135 } // namespace caffe
    136 
    137 #endif // CAFFE_SOLVER_FACTORY_H_
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    An interface for classes that perform optimization on Nets.
    Definition: solver.hpp:41
    +
    Definition: solver_factory.hpp:54
    +
    Definition: solver_factory.hpp:112
    +
    + + + + diff --git a/doxygen/split__layer_8hpp_source.html b/doxygen/split__layer_8hpp_source.html new file mode 100644 index 00000000000..cc224c744b7 --- /dev/null +++ b/doxygen/split__layer_8hpp_source.html @@ -0,0 +1,89 @@ + + + + + + + +Caffe: include/caffe/layers/split_layer.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    split_layer.hpp
    +
    +
    +
    1 #ifndef CAFFE_SPLIT_LAYER_HPP_
    2 #define CAFFE_SPLIT_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/layer.hpp"
    8 #include "caffe/proto/caffe.pb.h"
    9 
    10 namespace caffe {
    11 
    18 template <typename Dtype>
    19 class SplitLayer : public Layer<Dtype> {
    20  public:
    21  explicit SplitLayer(const LayerParameter& param)
    22  : Layer<Dtype>(param) {}
    23  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    24  const vector<Blob<Dtype>*>& top);
    25 
    26  virtual inline const char* type() const { return "Split"; }
    27  virtual inline int ExactNumBottomBlobs() const { return 1; }
    28  virtual inline int MinTopBlobs() const { return 1; }
    29 
    30  protected:
    31  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    32  const vector<Blob<Dtype>*>& top);
    33  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    34  const vector<Blob<Dtype>*>& top);
    35  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    36  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    37  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    38  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    39 
    40  int count_;
    41 };
    42 
    43 } // namespace caffe
    44 
    45 #endif // CAFFE_SPLIT_LAYER_HPP_
    An interface for the units of computation which can be composed into a Net.
    Definition: layer.hpp:33
    +
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: split_layer.hpp:26
    +
    virtual int MinTopBlobs() const
    Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
    Definition: split_layer.hpp:28
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: split_layer.cpp:34
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the CPU device, compute the layer output.
    Definition: split_layer.cpp:26
    +
    Creates a "split" path in the network by copying the bottom Blob into multiple top Blobs to be used b...
    Definition: split_layer.hpp:19
    +
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: split_layer.hpp:27
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: split_layer.cpp:9
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    +
    + + + + diff --git a/doxygen/splitbar.png b/doxygen/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/doxygen/spp__layer_8hpp_source.html b/doxygen/spp__layer_8hpp_source.html new file mode 100644 index 00000000000..68a4207abd9 --- /dev/null +++ b/doxygen/spp__layer_8hpp_source.html @@ -0,0 +1,99 @@ + + + + + + + +Caffe: include/caffe/layers/spp_layer.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    spp_layer.hpp
    +
    +
    +
    1 #ifndef CAFFE_SPP_LAYER_HPP_
    2 #define CAFFE_SPP_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/layer.hpp"
    8 #include "caffe/proto/caffe.pb.h"
    9 
    10 namespace caffe {
    11 
    18 template <typename Dtype>
    19 class SPPLayer : public Layer<Dtype> {
    20  public:
    21  explicit SPPLayer(const LayerParameter& param)
    22  : Layer<Dtype>(param) {}
    23  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    24  const vector<Blob<Dtype>*>& top);
    25  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    26  const vector<Blob<Dtype>*>& top);
    27 
    28  virtual inline const char* type() const { return "SPP"; }
    29  virtual inline int ExactNumBottomBlobs() const { return 1; }
    30  virtual inline int ExactNumTopBlobs() const { return 1; }
    31 
    32  protected:
    33  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    34  const vector<Blob<Dtype>*>& top);
    35  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    36  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    37  // calculates the kernel and stride dimensions for the pooling layer,
    38  // returns a correctly configured LayerParameter for a PoolingLayer
    39  virtual LayerParameter GetPoolingParam(const int pyramid_level,
    40  const int bottom_h, const int bottom_w, const SPPParameter spp_param);
    41 
    42  int pyramid_height_;
    43  int bottom_h_, bottom_w_;
    44  int num_;
    45  int channels_;
    46  int kernel_h_, kernel_w_;
    47  int pad_h_, pad_w_;
    48  bool reshaped_first_time_;
    49 
    51  shared_ptr<SplitLayer<Dtype> > split_layer_;
    53  vector<Blob<Dtype>*> split_top_vec_;
    55  vector<vector<Blob<Dtype>*>*> pooling_bottom_vecs_;
    57  vector<shared_ptr<PoolingLayer<Dtype> > > pooling_layers_;
    59  vector<vector<Blob<Dtype>*>*> pooling_top_vecs_;
    61  vector<Blob<Dtype>*> pooling_outputs_;
    63  vector<FlattenLayer<Dtype>*> flatten_layers_;
    65  vector<vector<Blob<Dtype>*>*> flatten_top_vecs_;
    67  vector<Blob<Dtype>*> flatten_outputs_;
    69  vector<Blob<Dtype>*> concat_bottom_vec_;
    71  shared_ptr<ConcatLayer<Dtype> > concat_layer_;
    72 };
    73 
    74 } // namespace caffe
    75 
    76 #endif // CAFFE_SPP_LAYER_HPP_
    An interface for the units of computation which can be composed into a Net.
    Definition: layer.hpp:33
    +
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: spp_layer.cpp:205
    +
    vector< shared_ptr< PoolingLayer< Dtype > > > pooling_layers_
    the internal Pooling layers of different kernel sizes
    Definition: spp_layer.hpp:57
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the CPU device, compute the layer output.
    Definition: spp_layer.cpp:188
    +
    vector< vector< Blob< Dtype > * > * > flatten_top_vecs_
    top vector holders used in call to the underlying FlattenLayer::Forward
    Definition: spp_layer.hpp:65
    +
    vector< vector< Blob< Dtype > * > * > pooling_top_vecs_
    top vector holders used in call to the underlying PoolingLayer::Forward
    Definition: spp_layer.hpp:59
    +
    vector< Blob< Dtype > * > split_top_vec_
    top vector holder used in call to the underlying SplitLayer::Forward
    Definition: spp_layer.hpp:53
    +
    Does spatial pyramid pooling on the input image by taking the max, average, etc. within regions so th...
    Definition: spp_layer.hpp:19
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: spp_layer.hpp:28
    +
    vector< vector< Blob< Dtype > * > * > pooling_bottom_vecs_
    bottom vector holder used in call to the underlying PoolingLayer::Forward
    Definition: spp_layer.hpp:55
    +
    vector< Blob< Dtype > * > concat_bottom_vec_
    bottom vector holder used in call to the underlying ConcatLayer::Forward
    Definition: spp_layer.hpp:69
    +
    vector< FlattenLayer< Dtype > * > flatten_layers_
    the internal Flatten layers that the Pooling layers feed into
    Definition: spp_layer.hpp:63
    +
    vector< Blob< Dtype > * > flatten_outputs_
    flatten_outputs stores the outputs of the FlattenLayers
    Definition: spp_layer.hpp:67
    +
    virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: spp_layer.cpp:65
    +
    virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: spp_layer.cpp:146
    +
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: spp_layer.hpp:30
    +
    shared_ptr< ConcatLayer< Dtype > > concat_layer_
    the internal Concat layers that the Flatten layers feed into
    Definition: spp_layer.hpp:71
    +
    shared_ptr< SplitLayer< Dtype > > split_layer_
    the internal Split layer that feeds the pooling layers
    Definition: spp_layer.hpp:51
    +
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: spp_layer.hpp:29
    +
    vector< Blob< Dtype > * > pooling_outputs_
    pooling_outputs stores the outputs of the PoolingLayers
    Definition: spp_layer.hpp:61
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    +
    + + + + diff --git a/doxygen/sync_off.png b/doxygen/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/doxygen/sync_on.png b/doxygen/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/doxygen/syncedmem_8hpp_source.html b/doxygen/syncedmem_8hpp_source.html new file mode 100644 index 00000000000..4f960c08da2 --- /dev/null +++ b/doxygen/syncedmem_8hpp_source.html @@ -0,0 +1,79 @@ + + + + + + + +Caffe: include/caffe/syncedmem.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    syncedmem.hpp
    +
    +
    +
    1 #ifndef CAFFE_SYNCEDMEM_HPP_
    2 #define CAFFE_SYNCEDMEM_HPP_
    3 
    4 #include <cstdlib>
    5 
    6 #include "caffe/common.hpp"
    7 
    8 namespace caffe {
    9 
    10 // If CUDA is available and in GPU mode, host memory will be allocated pinned,
    11 // using cudaMallocHost. It avoids dynamic pinning for transfers (DMA).
    12 // The improvement in performance seems negligible in the single GPU case,
    13 // but might be more significant for parallel training. Most importantly,
    14 // it improved stability for large models on many GPUs.
    15 inline void CaffeMallocHost(void** ptr, size_t size, bool* use_cuda) {
    16 #ifndef CPU_ONLY
    17  if (Caffe::mode() == Caffe::GPU) {
    18  CUDA_CHECK(cudaMallocHost(ptr, size));
    19  *use_cuda = true;
    20  return;
    21  }
    22 #endif
    23  *ptr = malloc(size);
    24  *use_cuda = false;
    25  CHECK(*ptr) << "host allocation of size " << size << " failed";
    26 }
    27 
    28 inline void CaffeFreeHost(void* ptr, bool use_cuda) {
    29 #ifndef CPU_ONLY
    30  if (use_cuda) {
    31  CUDA_CHECK(cudaFreeHost(ptr));
    32  return;
    33  }
    34 #endif
    35  free(ptr);
    36 }
    37 
    38 
    45 class SyncedMemory {
    46  public:
    47  SyncedMemory()
    48  : cpu_ptr_(NULL), gpu_ptr_(NULL), size_(0), head_(UNINITIALIZED),
    49  own_cpu_data_(false), cpu_malloc_use_cuda_(false), own_gpu_data_(false),
    50  gpu_device_(-1) {}
    51  explicit SyncedMemory(size_t size)
    52  : cpu_ptr_(NULL), gpu_ptr_(NULL), size_(size), head_(UNINITIALIZED),
    53  own_cpu_data_(false), cpu_malloc_use_cuda_(false), own_gpu_data_(false),
    54  gpu_device_(-1) {}
    55  ~SyncedMemory();
    56  const void* cpu_data();
    57  void set_cpu_data(void* data);
    58  const void* gpu_data();
    59  void set_gpu_data(void* data);
    60  void* mutable_cpu_data();
    61  void* mutable_gpu_data();
    62  enum SyncedHead { UNINITIALIZED, HEAD_AT_CPU, HEAD_AT_GPU, SYNCED };
    63  SyncedHead head() { return head_; }
    64  size_t size() { return size_; }
    65 
    66 #ifndef CPU_ONLY
    67  void async_gpu_push(const cudaStream_t& stream);
    68 #endif
    69 
    70  private:
    71  void to_cpu();
    72  void to_gpu();
    73  void* cpu_ptr_;
    74  void* gpu_ptr_;
    75  size_t size_;
    76  SyncedHead head_;
    77  bool own_cpu_data_;
    78  bool cpu_malloc_use_cuda_;
    79  bool own_gpu_data_;
    80  int gpu_device_;
    81 
    82  DISABLE_COPY_AND_ASSIGN(SyncedMemory);
    83 }; // class SyncedMemory
    84 
    85 } // namespace caffe
    86 
    87 #endif // CAFFE_SYNCEDMEM_HPP_
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    Manages memory allocation and synchronization between the host (CPU) and device (GPU).
    Definition: syncedmem.hpp:45
    +
    + + + + diff --git a/doxygen/tab_a.png b/doxygen/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/doxygen/tab_b.png b/doxygen/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/doxygen/tabs.css b/doxygen/tabs.css new file mode 100644 index 00000000000..a28614b8e3d --- /dev/null +++ b/doxygen/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#doc-content{overflow:auto;display:block;padding:0;margin:0;-webkit-overflow-scrolling:touch}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/doxygen/tanh__layer_8hpp_source.html b/doxygen/tanh__layer_8hpp_source.html new file mode 100644 index 00000000000..6a2c3e3a18b --- /dev/null +++ b/doxygen/tanh__layer_8hpp_source.html @@ -0,0 +1,86 @@ + + + + + + + +Caffe: include/caffe/layers/tanh_layer.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    tanh_layer.hpp
    +
    +
    +
    1 #ifndef CAFFE_TANH_LAYER_HPP_
    2 #define CAFFE_TANH_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/layer.hpp"
    8 #include "caffe/proto/caffe.pb.h"
    9 
    10 #include "caffe/layers/neuron_layer.hpp"
    11 
    12 namespace caffe {
    13 
    22 template <typename Dtype>
    23 class TanHLayer : public NeuronLayer<Dtype> {
    24  public:
    25  explicit TanHLayer(const LayerParameter& param)
    26  : NeuronLayer<Dtype>(param) {}
    27 
    28  virtual inline const char* type() const { return "TanH"; }
    29 
    30  protected:
    41  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    42  const vector<Blob<Dtype>*>& top);
    43  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    44  const vector<Blob<Dtype>*>& top);
    45 
    65  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    66  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    67  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    68  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    69 };
    70 
    71 } // namespace caffe
    72 
    73 #endif // CAFFE_TANH_LAYER_HPP_
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: tanh_layer.hpp:28
    +
    An interface for layers that take one blob as input ( ) and produce one equally-sized blob as output ...
    Definition: neuron_layer.hpp:19
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Definition: tanh_layer.cpp:11
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Computes the error gradient w.r.t. the sigmoid inputs.
    Definition: tanh_layer.cpp:22
    +
    TanH hyperbolic tangent non-linearity , popular in auto-encoders.
    Definition: tanh_layer.hpp:23
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    +
    + + + + diff --git a/doxygen/threshold__layer_8hpp_source.html b/doxygen/threshold__layer_8hpp_source.html new file mode 100644 index 00000000000..2a87602d118 --- /dev/null +++ b/doxygen/threshold__layer_8hpp_source.html @@ -0,0 +1,87 @@ + + + + + + + +Caffe: include/caffe/layers/threshold_layer.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    threshold_layer.hpp
    +
    +
    +
    1 #ifndef CAFFE_THRESHOLD_LAYER_HPP_
    2 #define CAFFE_THRESHOLD_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/layer.hpp"
    8 #include "caffe/proto/caffe.pb.h"
    9 
    10 #include "caffe/layers/neuron_layer.hpp"
    11 
    12 namespace caffe {
    13 
    18 template <typename Dtype>
    19 class ThresholdLayer : public NeuronLayer<Dtype> {
    20  public:
    27  explicit ThresholdLayer(const LayerParameter& param)
    28  : NeuronLayer<Dtype>(param) {}
    29  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    30  const vector<Blob<Dtype>*>& top);
    31 
    32  virtual inline const char* type() const { return "Threshold"; }
    33 
    34  protected:
    49  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    50  const vector<Blob<Dtype>*>& top);
    51  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    52  const vector<Blob<Dtype>*>& top);
    54  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    55  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {
    56  NOT_IMPLEMENTED;
    57  }
    58 
    59  Dtype threshold_;
    60 };
    61 
    62 } // namespace caffe
    63 
    64 #endif // CAFFE_THRESHOLD_LAYER_HPP_
    Tests whether the input exceeds a threshold: outputs 1 for inputs above threshold; 0 otherwise...
    Definition: threshold_layer.hpp:19
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    ThresholdLayer(const LayerParameter &param)
    Definition: threshold_layer.hpp:27
    +
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Not implemented (non-differentiable function)
    Definition: threshold_layer.hpp:54
    +
    virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: threshold_layer.cpp:8
    +
    An interface for layers that take one blob as input ( ) and produce one equally-sized blob as output ...
    Definition: neuron_layer.hpp:19
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Definition: threshold_layer.cpp:15
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: threshold_layer.hpp:32
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    +
    + + + + diff --git a/doxygen/tile__layer_8hpp_source.html b/doxygen/tile__layer_8hpp_source.html new file mode 100644 index 00000000000..fa21e51803c --- /dev/null +++ b/doxygen/tile__layer_8hpp_source.html @@ -0,0 +1,89 @@ + + + + + + + +Caffe: include/caffe/layers/tile_layer.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    tile_layer.hpp
    +
    +
    +
    1 #ifndef CAFFE_TILE_LAYER_HPP_
    2 #define CAFFE_TILE_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/layer.hpp"
    8 #include "caffe/proto/caffe.pb.h"
    9 
    10 namespace caffe {
    11 
    15 template <typename Dtype>
    16 class TileLayer : public Layer<Dtype> {
    17  public:
    18  explicit TileLayer(const LayerParameter& param)
    19  : Layer<Dtype>(param) {}
    20  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    21  const vector<Blob<Dtype>*>& top);
    22 
    23  virtual inline const char* type() const { return "Tile"; }
    24  virtual inline int ExactNumBottomBlobs() const { return 1; }
    25  virtual inline int ExactNumTopBlobs() const { return 1; }
    26 
    27  protected:
    28  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    29  const vector<Blob<Dtype>*>& top);
    30  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    31  const vector<Blob<Dtype>*>& top);
    32 
    33  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    34  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    35  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    36  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    37 
    38  unsigned int axis_, tiles_, outer_dim_, inner_dim_;
    39 };
    40 
    41 } // namespace caffe
    42 
    43 #endif // CAFFE_TILE_LAYER_HPP_
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: tile_layer.cpp:38
    +
    Copy a Blob along specified dimensions.
    Definition: tile_layer.hpp:16
    +
    An interface for the units of computation which can be composed into a Net.
    Definition: layer.hpp:33
    +
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: tile_layer.hpp:25
    +
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: tile_layer.hpp:24
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the CPU device, compute the layer output.
    Definition: tile_layer.cpp:24
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: tile_layer.hpp:23
    +
    virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: tile_layer.cpp:9
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    +
    + + + + diff --git a/doxygen/upgrade__proto_8hpp_source.html b/doxygen/upgrade__proto_8hpp_source.html new file mode 100644 index 00000000000..d963fc31598 --- /dev/null +++ b/doxygen/upgrade__proto_8hpp_source.html @@ -0,0 +1,78 @@ + + + + + + + +Caffe: include/caffe/util/upgrade_proto.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    upgrade_proto.hpp
    +
    +
    +
    1 #ifndef CAFFE_UTIL_UPGRADE_PROTO_H_
    2 #define CAFFE_UTIL_UPGRADE_PROTO_H_
    3 
    4 #include <string>
    5 
    6 #include "caffe/proto/caffe.pb.h"
    7 
    8 namespace caffe {
    9 
    10 // Return true iff the net is not the current version.
    11 bool NetNeedsUpgrade(const NetParameter& net_param);
    12 
    13 // Check for deprecations and upgrade the NetParameter as needed.
    14 bool UpgradeNetAsNeeded(const string& param_file, NetParameter* param);
    15 
    16 // Read parameters from a file into a NetParameter proto message.
    17 void ReadNetParamsFromTextFileOrDie(const string& param_file,
    18  NetParameter* param);
    19 void ReadNetParamsFromBinaryFileOrDie(const string& param_file,
    20  NetParameter* param);
    21 
    22 // Return true iff any layer contains parameters specified using
    23 // deprecated V0LayerParameter.
    24 bool NetNeedsV0ToV1Upgrade(const NetParameter& net_param);
    25 
    26 // Perform all necessary transformations to upgrade a V0NetParameter into a
    27 // NetParameter (including upgrading padding layers and LayerParameters).
    28 bool UpgradeV0Net(const NetParameter& v0_net_param, NetParameter* net_param);
    29 
    30 // Upgrade NetParameter with padding layers to pad-aware conv layers.
    31 // For any padding layer, remove it and put its pad parameter in any layers
    32 // taking its top blob as input.
    33 // Error if any of these above layers are not-conv layers.
    34 void UpgradeV0PaddingLayers(const NetParameter& param,
    35  NetParameter* param_upgraded_pad);
    36 
    37 // Upgrade a single V0LayerConnection to the V1LayerParameter format.
    38 bool UpgradeV0LayerParameter(const V1LayerParameter& v0_layer_connection,
    39  V1LayerParameter* layer_param);
    40 
    41 V1LayerParameter_LayerType UpgradeV0LayerType(const string& type);
    42 
    43 // Return true iff any layer contains deprecated data transformation parameters.
    44 bool NetNeedsDataUpgrade(const NetParameter& net_param);
    45 
    46 // Perform all necessary transformations to upgrade old transformation fields
    47 // into a TransformationParameter.
    48 void UpgradeNetDataTransformation(NetParameter* net_param);
    49 
    50 // Return true iff the Net contains any layers specified as V1LayerParameters.
    51 bool NetNeedsV1ToV2Upgrade(const NetParameter& net_param);
    52 
    53 // Perform all necessary transformations to upgrade a NetParameter with
    54 // deprecated V1LayerParameters.
    55 bool UpgradeV1Net(const NetParameter& v1_net_param, NetParameter* net_param);
    56 
    57 bool UpgradeV1LayerParameter(const V1LayerParameter& v1_layer_param,
    58  LayerParameter* layer_param);
    59 
    60 const char* UpgradeV1LayerType(const V1LayerParameter_LayerType type);
    61 
    62 // Return true iff the Net contains input fields.
    63 bool NetNeedsInputUpgrade(const NetParameter& net_param);
    64 
    65 // Perform all necessary transformations to upgrade input fields into layers.
    66 void UpgradeNetInput(NetParameter* net_param);
    67 
    68 // Return true iff the Net contains batch norm layers with manual local LRs.
    69 bool NetNeedsBatchNormUpgrade(const NetParameter& net_param);
    70 
    71 // Perform all necessary transformations to upgrade batch norm layers.
    72 void UpgradeNetBatchNorm(NetParameter* net_param);
    73 
    74 // Return true iff the solver contains any old solver_type specified as enums
    75 bool SolverNeedsTypeUpgrade(const SolverParameter& solver_param);
    76 
    77 bool UpgradeSolverType(SolverParameter* solver_param);
    78 
    79 // Check for deprecations and upgrade the SolverParameter as needed.
    80 bool UpgradeSolverAsNeeded(const string& param_file, SolverParameter* param);
    81 
    82 // Read parameters from a file into a SolverParameter proto message.
    83 void ReadSolverParamsFromTextFileOrDie(const string& param_file,
    84  SolverParameter* param);
    85 
    86 } // namespace caffe
    87 
    88 #endif // CAFFE_UTIL_UPGRADE_PROTO_H_
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    + + + + diff --git a/doxygen/vision__layers_8hpp_source.html b/doxygen/vision__layers_8hpp_source.html new file mode 100644 index 00000000000..872230f8bf0 --- /dev/null +++ b/doxygen/vision__layers_8hpp_source.html @@ -0,0 +1,737 @@ + + + + + + +Caffe: include/caffe/vision_layers.hpp Source File + + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    vision_layers.hpp
    +
    +
    +
    1 #ifndef CAFFE_VISION_LAYERS_HPP_
    +
    2 #define CAFFE_VISION_LAYERS_HPP_
    +
    3 
    +
    4 #include <string>
    +
    5 #include <utility>
    +
    6 #include <vector>
    +
    7 
    +
    8 #include "caffe/blob.hpp"
    +
    9 #include "caffe/common.hpp"
    +
    10 #include "caffe/common_layers.hpp"
    +
    11 #include "caffe/data_layers.hpp"
    +
    12 #include "caffe/layer.hpp"
    +
    13 #include "caffe/loss_layers.hpp"
    +
    14 #include "caffe/neuron_layers.hpp"
    +
    15 #include "caffe/proto/caffe.pb.h"
    +
    16 
    +
    17 namespace caffe {
    +
    18 
    +
    23 template <typename Dtype>
    +
    24 class BaseConvolutionLayer : public Layer<Dtype> {
    +
    25  public:
    +
    26  explicit BaseConvolutionLayer(const LayerParameter& param)
    +
    27  : Layer<Dtype>(param) {}
    +
    28  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    +
    29  const vector<Blob<Dtype>*>& top);
    +
    30  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    +
    31  const vector<Blob<Dtype>*>& top);
    +
    32 
    +
    33  virtual inline int MinBottomBlobs() const { return 1; }
    +
    34  virtual inline int MinTopBlobs() const { return 1; }
    +
    35  virtual inline bool EqualNumBottomTopBlobs() const { return true; }
    +
    36 
    +
    37  protected:
    +
    38  // Helper functions that abstract away the column buffer and gemm arguments.
    +
    39  // The last argument in forward_cpu_gemm is so that we can skip the im2col if
    +
    40  // we just called weight_cpu_gemm with the same input.
    +
    41  void forward_cpu_gemm(const Dtype* input, const Dtype* weights,
    +
    42  Dtype* output, bool skip_im2col = false);
    +
    43  void forward_cpu_bias(Dtype* output, const Dtype* bias);
    +
    44  void backward_cpu_gemm(const Dtype* input, const Dtype* weights,
    +
    45  Dtype* output);
    +
    46  void weight_cpu_gemm(const Dtype* input, const Dtype* output, Dtype*
    +
    47  weights);
    +
    48  void backward_cpu_bias(Dtype* bias, const Dtype* input);
    +
    49 
    +
    50 #ifndef CPU_ONLY
    +
    51  void forward_gpu_gemm(const Dtype* col_input, const Dtype* weights,
    +
    52  Dtype* output, bool skip_im2col = false);
    +
    53  void forward_gpu_bias(Dtype* output, const Dtype* bias);
    +
    54  void backward_gpu_gemm(const Dtype* input, const Dtype* weights,
    +
    55  Dtype* col_output);
    +
    56  void weight_gpu_gemm(const Dtype* col_input, const Dtype* output, Dtype*
    +
    57  weights);
    +
    58  void backward_gpu_bias(Dtype* bias, const Dtype* input);
    +
    59 #endif
    +
    60 
    +
    62  inline int input_shape(int i) {
    +
    63  return (*bottom_shape_)[channel_axis_ + i];
    +
    64  }
    +
    65  // reverse_dimensions should return true iff we are implementing deconv, so
    +
    66  // that conv helpers know which dimensions are which.
    +
    67  virtual bool reverse_dimensions() = 0;
    +
    68  // Compute height_out_ and width_out_ from other parameters.
    +
    69  virtual void compute_output_shape() = 0;
    +
    70 
    + + + + +
    80  vector<int> col_buffer_shape_;
    +
    82  vector<int> output_shape_;
    +
    83  const vector<int>* bottom_shape_;
    +
    84 
    +
    85  int num_spatial_axes_;
    +
    86  int bottom_dim_;
    +
    87  int top_dim_;
    +
    88 
    +
    89  int channel_axis_;
    +
    90  int num_;
    +
    91  int channels_;
    +
    92  int group_;
    +
    93  int out_spatial_dim_;
    +
    94  int weight_offset_;
    +
    95  int num_output_;
    +
    96  bool bias_term_;
    +
    97  bool is_1x1_;
    +
    98  bool force_nd_im2col_;
    +
    99 
    +
    100  private:
    +
    101  // wrap im2col/col2im so we don't have to remember the (long) argument lists
    +
    102  inline void conv_im2col_cpu(const Dtype* data, Dtype* col_buff) {
    +
    103  if (!force_nd_im2col_ && num_spatial_axes_ == 2) {
    +
    104  im2col_cpu(data, conv_in_channels_,
    +
    105  conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2],
    +
    106  kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1],
    +
    107  pad_.cpu_data()[0], pad_.cpu_data()[1],
    +
    108  stride_.cpu_data()[0], stride_.cpu_data()[1], col_buff);
    +
    109  } else {
    +
    110  im2col_nd_cpu(data, num_spatial_axes_, conv_input_shape_.cpu_data(),
    +
    111  col_buffer_shape_.data(), kernel_shape_.cpu_data(),
    +
    112  pad_.cpu_data(), stride_.cpu_data(), col_buff);
    +
    113  }
    +
    114  }
    +
    115  inline void conv_col2im_cpu(const Dtype* col_buff, Dtype* data) {
    +
    116  if (!force_nd_im2col_ && num_spatial_axes_ == 2) {
    +
    117  col2im_cpu(col_buff, conv_in_channels_,
    +
    118  conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2],
    +
    119  kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1],
    +
    120  pad_.cpu_data()[0], pad_.cpu_data()[1],
    +
    121  stride_.cpu_data()[0], stride_.cpu_data()[1], data);
    +
    122  } else {
    +
    123  col2im_nd_cpu(col_buff, num_spatial_axes_, conv_input_shape_.cpu_data(),
    +
    124  col_buffer_shape_.data(), kernel_shape_.cpu_data(),
    +
    125  pad_.cpu_data(), stride_.cpu_data(), data);
    +
    126  }
    +
    127  }
    +
    128 #ifndef CPU_ONLY
    +
    129  inline void conv_im2col_gpu(const Dtype* data, Dtype* col_buff) {
    +
    130  if (!force_nd_im2col_ && num_spatial_axes_ == 2) {
    +
    131  im2col_gpu(data, conv_in_channels_,
    +
    132  conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2],
    +
    133  kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1],
    +
    134  pad_.cpu_data()[0], pad_.cpu_data()[1],
    +
    135  stride_.cpu_data()[0], stride_.cpu_data()[1], col_buff);
    +
    136  } else {
    +
    137  im2col_nd_gpu(data, num_spatial_axes_, num_kernels_im2col_,
    +
    138  conv_input_shape_.gpu_data(), col_buffer_.gpu_shape(),
    +
    139  kernel_shape_.gpu_data(), pad_.gpu_data(),
    +
    140  stride_.gpu_data(), col_buff);
    +
    141  }
    +
    142  }
    +
    143  inline void conv_col2im_gpu(const Dtype* col_buff, Dtype* data) {
    +
    144  if (!force_nd_im2col_ && num_spatial_axes_ == 2) {
    +
    145  col2im_gpu(col_buff, conv_in_channels_,
    +
    146  conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2],
    +
    147  kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1],
    +
    148  pad_.cpu_data()[0], pad_.cpu_data()[1],
    +
    149  stride_.cpu_data()[0], stride_.cpu_data()[1], data);
    +
    150  } else {
    +
    151  col2im_nd_gpu(col_buff, num_spatial_axes_, num_kernels_col2im_,
    +
    152  conv_input_shape_.gpu_data(), col_buffer_.gpu_shape(),
    +
    153  kernel_shape_.gpu_data(), pad_.gpu_data(), stride_.gpu_data(),
    +
    154  data);
    +
    155  }
    +
    156  }
    +
    157 #endif
    +
    158 
    +
    159  int num_kernels_im2col_;
    +
    160  int num_kernels_col2im_;
    +
    161  int conv_out_channels_;
    +
    162  int conv_in_channels_;
    +
    163  int conv_out_spatial_dim_;
    +
    164  int kernel_dim_;
    +
    165  int col_offset_;
    +
    166  int output_offset_;
    +
    167 
    +
    168  Blob<Dtype> col_buffer_;
    +
    169  Blob<Dtype> bias_multiplier_;
    +
    170 };
    +
    171 
    +
    188 template <typename Dtype>
    +
    189 class ConvolutionLayer : public BaseConvolutionLayer<Dtype> {
    +
    190  public:
    +
    219  explicit ConvolutionLayer(const LayerParameter& param)
    +
    220  : BaseConvolutionLayer<Dtype>(param) {}
    +
    221 
    +
    222  virtual inline const char* type() const { return "Convolution"; }
    +
    223 
    +
    224  protected:
    +
    225  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    +
    226  const vector<Blob<Dtype>*>& top);
    +
    227  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    +
    228  const vector<Blob<Dtype>*>& top);
    +
    229  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    +
    230  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    231  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    +
    232  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    233  virtual inline bool reverse_dimensions() { return false; }
    +
    234  virtual void compute_output_shape();
    +
    235 };
    +
    236 
    +
    251 template <typename Dtype>
    + +
    253  public:
    +
    254  explicit DeconvolutionLayer(const LayerParameter& param)
    +
    255  : BaseConvolutionLayer<Dtype>(param) {}
    +
    256 
    +
    257  virtual inline const char* type() const { return "Deconvolution"; }
    +
    258 
    +
    259  protected:
    +
    260  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    +
    261  const vector<Blob<Dtype>*>& top);
    +
    262  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    +
    263  const vector<Blob<Dtype>*>& top);
    +
    264  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    +
    265  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    266  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    +
    267  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    268  virtual inline bool reverse_dimensions() { return true; }
    +
    269  virtual void compute_output_shape();
    +
    270 };
    +
    271 
    +
    272 #ifdef USE_CUDNN
    +
    273 /*
    +
    274  * @brief cuDNN implementation of ConvolutionLayer.
    +
    275  * Fallback to ConvolutionLayer for CPU mode.
    +
    276  *
    +
    277  * cuDNN accelerates convolution through forward kernels for filtering and bias
    +
    278  * plus backward kernels for the gradient w.r.t. the filters, biases, and
    +
    279  * inputs. Caffe + cuDNN further speeds up the computation through forward
    +
    280  * parallelism across groups and backward parallelism across gradients.
    +
    281  *
    +
    282  * The CUDNN engine does not have memory overhead for matrix buffers. For many
    +
    283  * input and filter regimes the CUDNN engine is faster than the CAFFE engine,
    +
    284  * but for fully-convolutional models and large inputs the CAFFE engine can be
    +
    285  * faster as long as it fits in memory.
    +
    286 */
    +
    287 template <typename Dtype>
    +
    288 class CuDNNConvolutionLayer : public ConvolutionLayer<Dtype> {
    +
    289  public:
    +
    290  explicit CuDNNConvolutionLayer(const LayerParameter& param)
    +
    291  : ConvolutionLayer<Dtype>(param), handles_setup_(false) {}
    +
    292  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    +
    293  const vector<Blob<Dtype>*>& top);
    +
    294  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    +
    295  const vector<Blob<Dtype>*>& top);
    +
    296  virtual ~CuDNNConvolutionLayer();
    +
    297 
    +
    298  protected:
    +
    299  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    +
    300  const vector<Blob<Dtype>*>& top);
    +
    301  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    +
    302  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    303 
    +
    304  bool handles_setup_;
    +
    305  cudnnHandle_t* handle_;
    +
    306  cudaStream_t* stream_;
    +
    307 
    +
    308  // algorithms for forward and backwards convolutions
    +
    309  cudnnConvolutionFwdAlgo_t *fwd_algo_;
    +
    310  cudnnConvolutionBwdFilterAlgo_t *bwd_filter_algo_;
    +
    311  cudnnConvolutionBwdDataAlgo_t *bwd_data_algo_;
    +
    312 
    +
    313  vector<cudnnTensorDescriptor_t> bottom_descs_, top_descs_;
    +
    314  cudnnTensorDescriptor_t bias_desc_;
    +
    315  cudnnFilterDescriptor_t filter_desc_;
    +
    316  vector<cudnnConvolutionDescriptor_t> conv_descs_;
    +
    317  int bottom_offset_, top_offset_, bias_offset_;
    +
    318 
    +
    319  size_t *workspace_fwd_sizes_;
    +
    320  size_t *workspace_bwd_data_sizes_;
    +
    321  size_t *workspace_bwd_filter_sizes_;
    +
    322  size_t workspaceSizeInBytes; // size of underlying storage
    +
    323  void *workspaceData; // underlying storage
    +
    324  void **workspace; // aliases into workspaceData
    +
    325 };
    +
    326 #endif
    +
    327 
    +
    335 template <typename Dtype>
    +
    336 class Im2colLayer : public Layer<Dtype> {
    +
    337  public:
    +
    338  explicit Im2colLayer(const LayerParameter& param)
    +
    339  : Layer<Dtype>(param) {}
    +
    340  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    +
    341  const vector<Blob<Dtype>*>& top);
    +
    342  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    +
    343  const vector<Blob<Dtype>*>& top);
    +
    344 
    +
    345  virtual inline const char* type() const { return "Im2col"; }
    +
    346  virtual inline int ExactNumBottomBlobs() const { return 1; }
    +
    347  virtual inline int ExactNumTopBlobs() const { return 1; }
    +
    348 
    +
    349  protected:
    +
    350  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    +
    351  const vector<Blob<Dtype>*>& top);
    +
    352  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    +
    353  const vector<Blob<Dtype>*>& top);
    +
    354  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    +
    355  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    356  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    +
    357  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    358 
    + + + +
    365 
    +
    366  int num_spatial_axes_;
    +
    367  int bottom_dim_;
    +
    368  int top_dim_;
    +
    369 
    +
    370  int channel_axis_;
    +
    371  int num_;
    +
    372  int channels_;
    +
    373 
    +
    374  bool force_nd_im2col_;
    +
    375 };
    +
    376 
    +
    377 // Forward declare PoolingLayer and SplitLayer for use in LRNLayer.
    +
    378 template <typename Dtype> class PoolingLayer;
    +
    379 template <typename Dtype> class SplitLayer;
    +
    380 
    +
    386 template <typename Dtype>
    +
    387 class LRNLayer : public Layer<Dtype> {
    +
    388  public:
    +
    389  explicit LRNLayer(const LayerParameter& param)
    +
    390  : Layer<Dtype>(param) {}
    +
    391  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    +
    392  const vector<Blob<Dtype>*>& top);
    +
    393  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    +
    394  const vector<Blob<Dtype>*>& top);
    +
    395 
    +
    396  virtual inline const char* type() const { return "LRN"; }
    +
    397  virtual inline int ExactNumBottomBlobs() const { return 1; }
    +
    398  virtual inline int ExactNumTopBlobs() const { return 1; }
    +
    399 
    +
    400  protected:
    +
    401  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    +
    402  const vector<Blob<Dtype>*>& top);
    +
    403  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    +
    404  const vector<Blob<Dtype>*>& top);
    +
    405  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    +
    406  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    407  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    +
    408  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    409 
    +
    410  virtual void CrossChannelForward_cpu(const vector<Blob<Dtype>*>& bottom,
    +
    411  const vector<Blob<Dtype>*>& top);
    +
    412  virtual void CrossChannelForward_gpu(const vector<Blob<Dtype>*>& bottom,
    +
    413  const vector<Blob<Dtype>*>& top);
    +
    414  virtual void WithinChannelForward(const vector<Blob<Dtype>*>& bottom,
    +
    415  const vector<Blob<Dtype>*>& top);
    +
    416  virtual void CrossChannelBackward_cpu(const vector<Blob<Dtype>*>& top,
    +
    417  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    418  virtual void CrossChannelBackward_gpu(const vector<Blob<Dtype>*>& top,
    +
    419  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    420  virtual void WithinChannelBackward(const vector<Blob<Dtype>*>& top,
    +
    421  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    422 
    +
    423  int size_;
    +
    424  int pre_pad_;
    +
    425  Dtype alpha_;
    +
    426  Dtype beta_;
    +
    427  Dtype k_;
    +
    428  int num_;
    +
    429  int channels_;
    +
    430  int height_;
    +
    431  int width_;
    +
    432 
    +
    433  // Fields used for normalization ACROSS_CHANNELS
    +
    434  // scale_ stores the intermediate summing results
    +
    435  Blob<Dtype> scale_;
    +
    436 
    +
    437  // Fields used for normalization WITHIN_CHANNEL
    +
    438  shared_ptr<SplitLayer<Dtype> > split_layer_;
    +
    439  vector<Blob<Dtype>*> split_top_vec_;
    +
    440  shared_ptr<PowerLayer<Dtype> > square_layer_;
    +
    441  Blob<Dtype> square_input_;
    +
    442  Blob<Dtype> square_output_;
    +
    443  vector<Blob<Dtype>*> square_bottom_vec_;
    +
    444  vector<Blob<Dtype>*> square_top_vec_;
    +
    445  shared_ptr<PoolingLayer<Dtype> > pool_layer_;
    +
    446  Blob<Dtype> pool_output_;
    +
    447  vector<Blob<Dtype>*> pool_top_vec_;
    +
    448  shared_ptr<PowerLayer<Dtype> > power_layer_;
    +
    449  Blob<Dtype> power_output_;
    +
    450  vector<Blob<Dtype>*> power_top_vec_;
    +
    451  shared_ptr<EltwiseLayer<Dtype> > product_layer_;
    +
    452  Blob<Dtype> product_input_;
    +
    453  vector<Blob<Dtype>*> product_bottom_vec_;
    +
    454 };
    +
    455 
    +
    456 #ifdef USE_CUDNN
    +
    457 
    +
    458 template <typename Dtype>
    +
    459 class CuDNNLRNLayer : public LRNLayer<Dtype> {
    +
    460  public:
    +
    461  explicit CuDNNLRNLayer(const LayerParameter& param)
    +
    462  : LRNLayer<Dtype>(param), handles_setup_(false) {}
    +
    463  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    +
    464  const vector<Blob<Dtype>*>& top);
    +
    465  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    +
    466  const vector<Blob<Dtype>*>& top);
    +
    467  virtual ~CuDNNLRNLayer();
    +
    468 
    +
    469  protected:
    +
    470  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    +
    471  const vector<Blob<Dtype>*>& top);
    +
    472  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    +
    473  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    474 
    +
    475  bool handles_setup_;
    +
    476  cudnnHandle_t handle_;
    +
    477  cudnnLRNDescriptor_t norm_desc_;
    +
    478  cudnnTensorDescriptor_t bottom_desc_, top_desc_;
    +
    479 
    +
    480  int size_;
    +
    481  Dtype alpha_, beta_, k_;
    +
    482 };
    +
    483 
    +
    484 template <typename Dtype>
    +
    485 class CuDNNLCNLayer : public LRNLayer<Dtype> {
    +
    486  public:
    +
    487  explicit CuDNNLCNLayer(const LayerParameter& param)
    +
    488  : LRNLayer<Dtype>(param), handles_setup_(false), tempDataSize(0),
    +
    489  tempData1(NULL), tempData2(NULL) {}
    +
    490  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    +
    491  const vector<Blob<Dtype>*>& top);
    +
    492  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    +
    493  const vector<Blob<Dtype>*>& top);
    +
    494  virtual ~CuDNNLCNLayer();
    +
    495 
    +
    496  protected:
    +
    497  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    +
    498  const vector<Blob<Dtype>*>& top);
    +
    499  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    +
    500  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    501 
    +
    502  bool handles_setup_;
    +
    503  cudnnHandle_t handle_;
    +
    504  cudnnLRNDescriptor_t norm_desc_;
    +
    505  cudnnTensorDescriptor_t bottom_desc_, top_desc_;
    +
    506 
    +
    507  int size_, pre_pad_;
    +
    508  Dtype alpha_, beta_, k_;
    +
    509 
    +
    510  size_t tempDataSize;
    +
    511  void *tempData1, *tempData2;
    +
    512 };
    +
    513 
    +
    514 #endif
    +
    515 
    +
    521 template <typename Dtype>
    +
    522 class PoolingLayer : public Layer<Dtype> {
    +
    523  public:
    +
    524  explicit PoolingLayer(const LayerParameter& param)
    +
    525  : Layer<Dtype>(param) {}
    +
    526  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    +
    527  const vector<Blob<Dtype>*>& top);
    +
    528  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    +
    529  const vector<Blob<Dtype>*>& top);
    +
    530 
    +
    531  virtual inline const char* type() const { return "Pooling"; }
    +
    532  virtual inline int ExactNumBottomBlobs() const { return 1; }
    +
    533  virtual inline int MinTopBlobs() const { return 1; }
    +
    534  // MAX POOL layers can output an extra top blob for the mask;
    +
    535  // others can only output the pooled inputs.
    +
    536  virtual inline int MaxTopBlobs() const {
    +
    537  return (this->layer_param_.pooling_param().pool() ==
    +
    538  PoolingParameter_PoolMethod_MAX) ? 2 : 1;
    +
    539  }
    +
    540 
    +
    541  protected:
    +
    542  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    +
    543  const vector<Blob<Dtype>*>& top);
    +
    544  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    +
    545  const vector<Blob<Dtype>*>& top);
    +
    546  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    +
    547  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    548  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    +
    549  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    550 
    +
    551  int kernel_h_, kernel_w_;
    +
    552  int stride_h_, stride_w_;
    +
    553  int pad_h_, pad_w_;
    +
    554  int channels_;
    +
    555  int height_, width_;
    +
    556  int pooled_height_, pooled_width_;
    +
    557  bool global_pooling_;
    +
    558  Blob<Dtype> rand_idx_;
    +
    559  Blob<int> max_idx_;
    +
    560 };
    +
    561 
    +
    562 #ifdef USE_CUDNN
    +
    563 /*
    +
    564  * @brief cuDNN implementation of PoolingLayer.
    +
    565  * Fallback to PoolingLayer for CPU mode.
    +
    566 */
    +
    567 template <typename Dtype>
    +
    568 class CuDNNPoolingLayer : public PoolingLayer<Dtype> {
    +
    569  public:
    +
    570  explicit CuDNNPoolingLayer(const LayerParameter& param)
    +
    571  : PoolingLayer<Dtype>(param), handles_setup_(false) {}
    +
    572  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    +
    573  const vector<Blob<Dtype>*>& top);
    +
    574  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    +
    575  const vector<Blob<Dtype>*>& top);
    +
    576  virtual ~CuDNNPoolingLayer();
    +
    577  // Currently, cuDNN does not support the extra top blob.
    +
    578  virtual inline int MinTopBlobs() const { return -1; }
    +
    579  virtual inline int ExactNumTopBlobs() const { return 1; }
    +
    580 
    +
    581  protected:
    +
    582  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    +
    583  const vector<Blob<Dtype>*>& top);
    +
    584  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    +
    585  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    586 
    +
    587  bool handles_setup_;
    +
    588  cudnnHandle_t handle_;
    +
    589  cudnnTensorDescriptor_t bottom_desc_, top_desc_;
    +
    590  cudnnPoolingDescriptor_t pooling_desc_;
    +
    591  cudnnPoolingMode_t mode_;
    +
    592 };
    +
    593 #endif
    +
    594 
    +
    601 template <typename Dtype>
    +
    602 class SPPLayer : public Layer<Dtype> {
    +
    603  public:
    +
    604  explicit SPPLayer(const LayerParameter& param)
    +
    605  : Layer<Dtype>(param) {}
    +
    606  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    +
    607  const vector<Blob<Dtype>*>& top);
    +
    608  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    +
    609  const vector<Blob<Dtype>*>& top);
    +
    610 
    +
    611  virtual inline const char* type() const { return "SPP"; }
    +
    612  virtual inline int ExactNumBottomBlobs() const { return 1; }
    +
    613  virtual inline int ExactNumTopBlobs() const { return 1; }
    +
    614 
    +
    615  protected:
    +
    616  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    +
    617  const vector<Blob<Dtype>*>& top);
    +
    618  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    +
    619  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    +
    620  // calculates the kernel and stride dimensions for the pooling layer,
    +
    621  // returns a correctly configured LayerParameter for a PoolingLayer
    +
    622  virtual LayerParameter GetPoolingParam(const int pyramid_level,
    +
    623  const int bottom_h, const int bottom_w, const SPPParameter spp_param);
    +
    624 
    +
    625  int pyramid_height_;
    +
    626  int bottom_h_, bottom_w_;
    +
    627  int num_;
    +
    628  int channels_;
    +
    629  int kernel_h_, kernel_w_;
    +
    630  int pad_h_, pad_w_;
    +
    631  bool reshaped_first_time_;
    +
    632 
    +
    634  shared_ptr<SplitLayer<Dtype> > split_layer_;
    +
    636  vector<Blob<Dtype>*> split_top_vec_;
    +
    638  vector<vector<Blob<Dtype>*>*> pooling_bottom_vecs_;
    +
    640  vector<shared_ptr<PoolingLayer<Dtype> > > pooling_layers_;
    +
    642  vector<vector<Blob<Dtype>*>*> pooling_top_vecs_;
    +
    644  vector<Blob<Dtype>*> pooling_outputs_;
    +
    646  vector<FlattenLayer<Dtype>*> flatten_layers_;
    +
    648  vector<vector<Blob<Dtype>*>*> flatten_top_vecs_;
    +
    650  vector<Blob<Dtype>*> flatten_outputs_;
    +
    652  vector<Blob<Dtype>*> concat_bottom_vec_;
    +
    654  shared_ptr<ConcatLayer<Dtype> > concat_layer_;
    +
    655 };
    +
    656 
    +
    657 } // namespace caffe
    +
    658 
    +
    659 #endif // CAFFE_VISION_LAYERS_HPP_
    +
    Blob< int > kernel_shape_
    The spatial dimensions of a filter kernel.
    Definition: vision_layers.hpp:72
    +
    virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: lrn_layer.cpp:10
    +
    A helper for image operations that rearranges image regions into column vectors. Used by ConvolutionL...
    Definition: vision_layers.hpp:336
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: vision_layers.hpp:398
    +
    An interface for the units of computation which can be composed into a Net.
    Definition: layer.hpp:33
    +
    A layer factory that allows one to register layers. During runtime, registered layers could be called...
    Definition: blob.hpp:15
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: vision_layers.hpp:222
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    virtual bool EqualNumBottomTopBlobs() const
    Returns true if the layer requires an equal number of bottom and top blobs.
    Definition: vision_layers.hpp:35
    +
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: im2col_layer.cpp:95
    +
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: vision_layers.hpp:532
    +
    vector< shared_ptr< PoolingLayer< Dtype > > > pooling_layers_
    the internal Pooling layers of different kernel sizes
    Definition: vision_layers.hpp:640
    +
    virtual int MaxTopBlobs() const
    Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required...
    Definition: vision_layers.hpp:536
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: conv_layer.cpp:45
    +
    virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: spp_layer.cpp:65
    +
    vector< vector< Blob< Dtype > * > * > flatten_top_vecs_
    top vector holders used in call to the underlying FlattenLayer::Forward
    Definition: vision_layers.hpp:648
    +
    vector< vector< Blob< Dtype > * > * > pooling_top_vecs_
    top vector holders used in call to the underlying PoolingLayer::Forward
    Definition: vision_layers.hpp:642
    +
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: vision_layers.hpp:397
    +
    vector< Blob< Dtype > * > split_top_vec_
    top vector holder used in call to the underlying SplitLayer::Forward
    Definition: vision_layers.hpp:636
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the CPU device, compute the layer output.
    Definition: deconv_layer.cpp:27
    +
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: vision_layers.hpp:612
    +
    int input_shape(int i)
    The spatial dimensions of the input.
    Definition: vision_layers.hpp:62
    +
    virtual int MinBottomBlobs() const
    Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is requi...
    Definition: vision_layers.hpp:33
    +
    Does spatial pyramid pooling on the input image by taking the max, average, etc. within regions so th...
    Definition: vision_layers.hpp:602
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: vision_layers.hpp:531
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: vision_layers.hpp:345
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the CPU device, compute the layer output.
    Definition: spp_layer.cpp:188
    +
    Blob< int > pad_
    The spatial dimensions of the padding.
    Definition: vision_layers.hpp:364
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: vision_layers.hpp:257
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: vision_layers.hpp:611
    +
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: base_conv_layer.cpp:173
    +
    virtual int MinTopBlobs() const
    Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
    Definition: vision_layers.hpp:533
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    Abstract base class that factors out the BLAS code common to ConvolutionLayer and DeconvolutionLayer...
    Definition: vision_layers.hpp:24
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: lrn_layer.cpp:166
    +
    virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: im2col_layer.cpp:11
    +
    vector< vector< Blob< Dtype > * > * > pooling_bottom_vecs_
    bottom vector holder used in call to the underlying PoolingLayer::Forward
    Definition: vision_layers.hpp:638
    +
    vector< Blob< Dtype > * > concat_bottom_vec_
    bottom vector holder used in call to the underlying ConcatLayer::Forward
    Definition: vision_layers.hpp:652
    +
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: pooling_layer.cpp:82
    +
    virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: base_conv_layer.cpp:13
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the CPU device, compute the layer output.
    Definition: conv_layer.cpp:27
    +
    Blob< int > pad_
    The spatial dimensions of the padding.
    Definition: vision_layers.hpp:76
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    vector< FlattenLayer< Dtype > * > flatten_layers_
    the internal Flatten layers that the Pooling layers feed into
    Definition: vision_layers.hpp:646
    +
    virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: pooling_layer.cpp:17
    +
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: vision_layers.hpp:613
    +
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: lrn_layer.cpp:70
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: im2col_layer.cpp:146
    +
    Layer(const LayerParameter &param)
    Definition: layer.hpp:40
    +
    vector< Blob< Dtype > * > flatten_outputs_
    flatten_outputs stores the outputs of the FlattenLayers
    Definition: vision_layers.hpp:650
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: vision_layers.hpp:396
    +
    vector< int > col_buffer_shape_
    The spatial dimensions of the col_buffer.
    Definition: vision_layers.hpp:80
    +
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: spp_layer.cpp:146
    +
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: vision_layers.hpp:346
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    ConvolutionLayer(const LayerParameter &param)
    Definition: vision_layers.hpp:219
    +
    Convolve the input with a bank of learned filters, and (optionally) add biases, treating filters and ...
    Definition: vision_layers.hpp:252
    +
    Blob< int > kernel_shape_
    The spatial dimensions of a filter kernel.
    Definition: vision_layers.hpp:360
    +
    LayerParameter layer_param_
    Definition: layer.hpp:322
    +
    Pools the input image by taking the max, average, etc. within regions.
    Definition: vision_layers.hpp:378
    +
    Creates a "split" path in the network by copying the bottom Blob into multiple top Blobs to be used b...
    Definition: common_layers.hpp:663
    +
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    +
    shared_ptr< ConcatLayer< Dtype > > concat_layer_
    the internal Concat layers that the Flatten layers feed into
    Definition: vision_layers.hpp:654
    +
    vector< int > output_shape_
    The spatial dimensions of the output.
    Definition: vision_layers.hpp:82
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: spp_layer.cpp:205
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the CPU device, compute the layer output.
    Definition: im2col_layer.cpp:117
    +
    shared_ptr< SplitLayer< Dtype > > split_layer_
    the internal Split layer that feeds the pooling layers
    Definition: vision_layers.hpp:634
    +
    Convolves the input image with a bank of learned filters, and (optionally) adds biases.
    Definition: vision_layers.hpp:189
    +
    Blob< int > conv_input_shape_
    The spatial dimensions of the convolution input.
    Definition: vision_layers.hpp:78
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: deconv_layer.cpp:45
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: pooling_layer.cpp:233
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the CPU device, compute the layer output.
    Definition: pooling_layer.cpp:131
    +
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: vision_layers.hpp:347
    +
    Normalize the input in a local region across or within feature maps.
    Definition: vision_layers.hpp:387
    +
    vector< Blob< Dtype > * > pooling_outputs_
    pooling_outputs stores the outputs of the PoolingLayers
    Definition: vision_layers.hpp:644
    +
    Blob< int > stride_
    The spatial dimensions of the stride.
    Definition: vision_layers.hpp:362
    +
    Blob< int > stride_
    The spatial dimensions of the stride.
    Definition: vision_layers.hpp:74
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:25
    +
    virtual int MinTopBlobs() const
    Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
    Definition: vision_layers.hpp:34
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the CPU device, compute the layer output.
    Definition: lrn_layer.cpp:94
    +
    + + + + diff --git a/doxygen/window__data__layer_8hpp_source.html b/doxygen/window__data__layer_8hpp_source.html new file mode 100644 index 00000000000..915a7062295 --- /dev/null +++ b/doxygen/window__data__layer_8hpp_source.html @@ -0,0 +1,85 @@ + + + + + + + +Caffe: include/caffe/layers/window_data_layer.hpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    Caffe +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    window_data_layer.hpp
    +
    +
    +
    1 #ifndef CAFFE_WINDOW_DATA_LAYER_HPP_
    2 #define CAFFE_WINDOW_DATA_LAYER_HPP_
    3 
    4 #include <string>
    5 #include <utility>
    6 #include <vector>
    7 
    8 #include "caffe/blob.hpp"
    9 #include "caffe/data_transformer.hpp"
    10 #include "caffe/internal_thread.hpp"
    11 #include "caffe/layer.hpp"
    12 #include "caffe/layers/base_data_layer.hpp"
    13 #include "caffe/proto/caffe.pb.h"
    14 
    15 namespace caffe {
    16 
    23 template <typename Dtype>
    25  public:
    26  explicit WindowDataLayer(const LayerParameter& param)
    28  virtual ~WindowDataLayer();
    29  virtual void DataLayerSetUp(const vector<Blob<Dtype>*>& bottom,
    30  const vector<Blob<Dtype>*>& top);
    31 
    32  virtual inline const char* type() const { return "WindowData"; }
    33  virtual inline int ExactNumBottomBlobs() const { return 0; }
    34  virtual inline int ExactNumTopBlobs() const { return 2; }
    35 
    36  protected:
    37  virtual unsigned int PrefetchRand();
    38  virtual void load_batch(Batch<Dtype>* batch);
    39 
    40  shared_ptr<Caffe::RNG> prefetch_rng_;
    41  vector<std::pair<std::string, vector<int> > > image_database_;
    42  enum WindowField { IMAGE_INDEX, LABEL, OVERLAP, X1, Y1, X2, Y2, NUM };
    43  vector<vector<float> > fg_windows_;
    44  vector<vector<float> > bg_windows_;
    45  Blob<Dtype> data_mean_;
    46  vector<Dtype> mean_values_;
    47  bool has_mean_file_;
    48  bool has_mean_values_;
    49  bool cache_images_;
    50  vector<std::pair<std::string, Datum > > image_database_cache_;
    51 };
    52 
    53 } // namespace caffe
    54 
    55 #endif // CAFFE_WINDOW_DATA_LAYER_HPP_
    Definition: base_data_layer.hpp:49
    +
    Definition: base_data_layer.hpp:55
    +
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    Provides data to the Net from windows of images files, specified by a window data file...
    Definition: window_data_layer.hpp:24
    +
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: window_data_layer.hpp:33
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: window_data_layer.hpp:32
    +
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: window_data_layer.hpp:34
    +
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    +
    + + + + diff --git a/gathered/examples/00-classification.ipynb b/gathered/examples/00-classification.ipynb new file mode 100644 index 00000000000..6cce2dc7d5d --- /dev/null +++ b/gathered/examples/00-classification.ipynb @@ -0,0 +1,842 @@ + + + + + + + + + Caffe | Image Classification and Filter Visualization + + + + + + + + + + + + + +
    +
    +

    Caffe

    +

    + Deep learning framework by the BVLC +

    +

    + Created by +
    + Yangqing Jia +
    + Lead Developer +
    + Evan Shelhamer +

    +
    +
    + + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Classification: Instant Recognition with Caffe\n", + "\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", + "We'll compare CPU and GPU modes and then dig into the model to inspect features and the output." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. Setup\n", + "\n", + "* First, set up Python, `numpy`, and `matplotlib`." + ] + }, + { + "cell_type": "code", + "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", + "# 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", + "# If you get \"No module named _caffe\", either you have not built pycaffe or you have the wrong path." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* If needed, download the reference model (\"CaffeNet\", a variant of AlexNet)." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CaffeNet found.\n" + ] + } + ], + "source": [ + "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": [ + "### 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": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "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": [ + "* 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": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean-subtracted values: [('B', 104.0069879317889), ('G', 116.66876761696767), ('R', 122.6789143406786)]\n" + ] + } + ], + "source": [ + "# 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": [ + "* Load an image (that comes with Caffe) and perform the preprocessing we've set up." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n3gAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "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! Let's classify it!" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "predicted class is: 281\n" + ] + } + ], + "source": [ + "# 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", + "print 'predicted class is:', output_prob.argmax()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* 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..." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "output label: n02123045 tabby, tabby cat\n" + ] + } + ], + "source": [ + "# 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": [ + "* \"Tabby cat\" is correct! But let's also look at other top (but less confident predictions)." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "probabilities and labels:\n" + ] + }, + { + "data": { + "text/plain": [ + "[(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": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 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": [ + "* We see that less confident predictions are sensible." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 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": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 loop, best of 3: 1.42 s per loop\n" + ] + } + ], + "source": [ + "%timeit net.forward()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* That's a while, even for a batch of 50 images. Let's switch to GPU mode." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10 loops, best of 3: 70.2 ms per loop\n" + ] + } + ], + "source": [ + "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": [ + "* That should be much faster!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 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": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "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": [ + "# 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": [ + "* 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": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "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": [ + "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": [ + "* 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": 15, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "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": [ + "* First we'll look at the first layer filters, `conv1`" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* The first layer output, `conv1` (rectified responses of the filters above, first 36 only)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "feat = net.blobs['conv1'].data[0, :36]\n", + "vis_square(feat)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* The fifth layer after pooling, `pool5`" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "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": {}, + "output_type": "display_data" + } + ], + "source": [ + "feat = net.blobs['pool5'].data[0]\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" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\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": {}, + "output_type": "display_data" + } + ], + "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)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* The final probability output, `prob`" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "feat = net.blobs['prob'].data[0]\n", + "plt.figure(figsize=(15, 3))\n", + "plt.plot(feat.flat)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "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": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# 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", + "print 'probabilities and labels:'\n", + "zip(output_prob[top_inds], labels[top_inds])" + ] + } + ], + "metadata": { + "description": "Instant recognition with a pre-trained model and a tour of the net interface for visualizing features and parameters layer-by-layer.", + "example_name": "Image Classification and Filter Visualization", + "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": 1 + }, + "nbformat": 4, + "nbformat_minor": 0 +} + + +
    +
    + + diff --git a/gathered/examples/01-learning-lenet.ipynb b/gathered/examples/01-learning-lenet.ipynb new file mode 100644 index 00000000000..15fcd2448d4 --- /dev/null +++ b/gathered/examples/01-learning-lenet.ipynb @@ -0,0 +1,1350 @@ + + + + + + + + + Caffe | Learning LeNet + + + + + + + + + + + + + +
    +
    +

    Caffe

    +

    + Deep learning framework by the BVLC +

    +

    + Created by +
    + Yangqing Jia +
    + Lead Developer +
    + Evan Shelhamer +

    +
    +
    + + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 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, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "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." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "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" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* We'll be using the provided LeNet example data and networks (make sure you've downloaded the data and created the databases, as below)." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Downloading...\n", + "Creating lmdb...\n", + "Done.\n" + ] + } + ], + "source": [ + "# run scripts from caffe root\n", + "import os\n", + "os.chdir(caffe_root)\n", + "# Download data\n", + "!data/mnist/get_mnist.sh\n", + "# Prepare data\n", + "!examples/mnist/create_mnist.sh\n", + "# back to examples\n", + "os.chdir('examples')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. Creating the net \n", + "\n", + "Now let's make a variant of LeNet, the classic 1989 convnet architecture.\n", + "\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`." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "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.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('mnist/lenet_auto_train.prototxt', 'w') as f:\n", + " f.write(str(lenet('mnist/mnist_train_lmdb', 64)))\n", + " \n", + "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 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." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "layer {\r\n", + " name: \"data\"\r\n", + " type: \"Data\"\r\n", + " top: \"data\"\r\n", + " top: \"label\"\r\n", + " transform_param {\r\n", + " scale: 0.00392156862745\r\n", + " }\r\n", + " data_param {\r\n", + " source: \"mnist/mnist_train_lmdb\"\r\n", + " batch_size: 64\r\n", + " backend: LMDB\r\n", + " }\r\n", + "}\r\n", + "layer {\r\n", + " name: \"conv1\"\r\n", + " type: \"Convolution\"\r\n", + " bottom: \"data\"\r\n", + " top: \"conv1\"\r\n", + " convolution_param {\r\n", + " num_output: 20\r\n", + " kernel_size: 5\r\n", + " weight_filler {\r\n", + " type: \"xavier\"\r\n", + " }\r\n", + " }\r\n", + "}\r\n", + "layer {\r\n", + " name: \"pool1\"\r\n", + " type: \"Pooling\"\r\n", + " bottom: \"conv1\"\r\n", + " top: \"pool1\"\r\n", + " pooling_param {\r\n", + " pool: MAX\r\n", + " kernel_size: 2\r\n", + " stride: 2\r\n", + " }\r\n", + "}\r\n", + "layer {\r\n", + " name: \"conv2\"\r\n", + " type: \"Convolution\"\r\n", + " bottom: \"pool1\"\r\n", + " top: \"conv2\"\r\n", + " convolution_param {\r\n", + " num_output: 50\r\n", + " kernel_size: 5\r\n", + " weight_filler {\r\n", + " type: \"xavier\"\r\n", + " }\r\n", + " }\r\n", + "}\r\n", + "layer {\r\n", + " name: \"pool2\"\r\n", + " type: \"Pooling\"\r\n", + " bottom: \"conv2\"\r\n", + " top: \"pool2\"\r\n", + " pooling_param {\r\n", + " pool: MAX\r\n", + " kernel_size: 2\r\n", + " stride: 2\r\n", + " }\r\n", + "}\r\n", + "layer {\r\n", + " name: \"fc1\"\r\n", + " type: \"InnerProduct\"\r\n", + " bottom: \"pool2\"\r\n", + " top: \"fc1\"\r\n", + " inner_product_param {\r\n", + " num_output: 500\r\n", + " weight_filler {\r\n", + " type: \"xavier\"\r\n", + " }\r\n", + " }\r\n", + "}\r\n", + "layer {\r\n", + " name: \"relu1\"\r\n", + " type: \"ReLU\"\r\n", + " bottom: \"fc1\"\r\n", + " top: \"fc1\"\r\n", + "}\r\n", + "layer {\r\n", + " name: \"score\"\r\n", + " type: \"InnerProduct\"\r\n", + " bottom: \"fc1\"\r\n", + " top: \"score\"\r\n", + " inner_product_param {\r\n", + " num_output: 10\r\n", + " weight_filler {\r\n", + " type: \"xavier\"\r\n", + " }\r\n", + " }\r\n", + "}\r\n", + "layer {\r\n", + " name: \"loss\"\r\n", + " type: \"SoftmaxWithLoss\"\r\n", + " bottom: \"score\"\r\n", + " bottom: \"label\"\r\n", + " top: \"loss\"\r\n", + "}\r\n" + ] + } + ], + "source": [ + "!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 (already provided on disk). We're using SGD with momentum, weight decay, and a specific learning rate schedule." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "# The train/test net protocol buffer definition\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", + "test_iter: 100\r\n", + "# Carry out testing every 500 training iterations.\r\n", + "test_interval: 500\r\n", + "# The base learning rate, momentum and the weight decay of the network.\r\n", + "base_lr: 0.01\r\n", + "momentum: 0.9\r\n", + "weight_decay: 0.0005\r\n", + "# The learning rate policy\r\n", + "lr_policy: \"inv\"\r\n", + "gamma: 0.0001\r\n", + "power: 0.75\r\n", + "# Display every 100 iterations\r\n", + "display: 100\r\n", + "# The maximum number of iterations\r\n", + "max_iter: 10000\r\n", + "# snapshot intermediate results\r\n", + "snapshot: 5000\r\n", + "snapshot_prefix: \"mnist/lenet\"\r\n" + ] + } + ], + "source": [ + "!cat mnist/lenet_auto_solver.prototxt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 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": false + }, + "outputs": [], + "source": [ + "caffe.set_device(0)\n", + "caffe.set_mode_gpu()\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.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)." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false, + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[('data', (64, 1, 28, 28)),\n", + " ('label', (64,)),\n", + " ('conv1', (64, 20, 24, 24)),\n", + " ('pool1', (64, 20, 12, 12)),\n", + " ('conv2', (64, 50, 8, 8)),\n", + " ('pool2', (64, 50, 4, 4)),\n", + " ('fc1', (64, 500)),\n", + " ('score', (64, 10)),\n", + " ('loss', ())]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# each output is (batch size, feature dim, spatial dim)\n", + "[(k, v.data.shape) for k, v in solver.net.blobs.items()]" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[('conv1', (20, 1, 5, 5)),\n", + " ('conv2', (50, 20, 5, 5)),\n", + " ('fc1', (500, 800)),\n", + " ('score', (10, 500))]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# just print the weight sizes (we'll omit the biases)\n", + "[(k, v[0].data.shape) for k, v in solver.net.params.items()]" + ] + }, + { + "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." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'loss': array(2.365971088409424, dtype=float32)}" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "solver.net.forward() # train net\n", + "solver.test_nets[0].forward() # test net (there can be more than one)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train labels: [ 5. 0. 4. 1. 9. 2. 1. 3.]\n" + ] + }, + { + "data": { + "image/png": "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\nSUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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'); axis('off')\n", + "print 'train labels:', solver.net.blobs['label'].data[:8]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "test labels: [ 7. 2. 1. 0. 4. 1. 4. 9.]\n" + ] + }, + { + "data": { + "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": {}, + "output_type": "display_data" + } + ], + "source": [ + "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." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "solver.step(1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Do we have gradients propagating through our filters? Let's see the updates to the first layer, shown here as a $4 \\times 5$ grid of $5 \\times 5$ filters." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(-0.5, 24.5, 19.5, -0.5)" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "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": {}, + "output_type": "display_data" + } + ], + "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'); 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", + "* snapshots will be taken at the interval specified in the solver prototxt (here, every 5000 iterations)\n", + "* testing will happen at the interval specified (here, every 500 iterations)\n", + "\n", + "Since we have control of the loop in Python, we're free to compute additional things as we go, as we show below. We can do many other things as well, for example:\n", + "* write a custom stopping criterion\n", + "* change the solving process by updating the net in the loop" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "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", + "CPU times: user 12.6 s, sys: 2.4 s, total: 15 s\n", + "Wall time: 14.4 s\n" + ] + } + ], + "source": [ + "%%time\n", + "niter = 200\n", + "test_interval = 25\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", + "output = zeros((niter, 8, 10))\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", + " # 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['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", + " # 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" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Let's plot the train loss and test accuracy." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "_, 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('Test Accuracy: {:.2f}'.format(test_acc[-1]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "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." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false, + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nRK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAI0AAACPCAYAAADHlliuAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGlxJREFUeJztnVls49t93z+Hi7iJu0Rq44xm5l4bAVzAfnEfnKB5CIJr\nFEjSlwYGChTpgj50Q/vQJH1o/JgGaFC0D0Xb2EE3JC1auEgKtLUNtIj70DYOfGNf9/pO7r3SSENR\nJCVS3ClS5OmD+Ds+5FALN4nS/L/AwZ/L8Mwh/1/9zm8/SmuNAweTwHXfC3Dw8OCQxsHEcEjjYGI4\npHEwMRzSOJgYDmkcTIypSaOUek8p9SOl1J8opX55notysNxQ0/hplFJu4CPgZ4As8IfAV7TWH853\neQ6WEdNKmi8CH2ut97XWXeB3gZ+f37IcLDM8U35uGzi0nr8G/rT9D5RSjqv5gUNrrca9Pq2kcQjx\nFmNa0mSBjPU8w6W0cfAWYFrSfBd4Vym1q5RaAX4R+L35LcvBMmMqnUZrfaGU+hvAfwfcwNccy+nt\nwVQm960mdhThB495K8IO3mI4pHEwMRzSOJgYDmkcTAyHNA4mhkMaBxPDIY2DiTFtwPLRQ6kfuyjc\nbrcZHo8Hl8tlhtvtRmtNv99Ha43WmouLC3q9HhcXF1xcXJjXAR5DyZBDmjFQSpnhcrkIhUKsrq6a\nq9/vJxAImKuQo9vtcnFxQbVaNaNSqdDr9ej1evT7fXq93n1/vZnhkGYMbMK43W5WV1dZW1szIxqN\nDo3z83Pa7Tbn5+ecn5+Ty+XI5XIcHx/T6XTodDqGVA5pHimEMKOkyWQy7OzskEqlWF9fN6PZbNJo\nNMw1Go3i9XrpdruUy2Uzb6/XQyn14LeomUijlNoHqkAP6GqtvziPRd03bCnj9XpZXV0lmUyyvb3N\n8+fP2djYIJ1Os7GxQSqVotFo0Gg0qNfrNBoN+v0+zWaTcrnM6uqqIcrFxcV9f7W5YFZJo4Gf1lqX\n5rGYZYBsTUKYlZUVQqEQsViMtbU1Njc3icfjrK6u4vV6gUtFeWVlhUAggFKKSCRCNBolHo+TSCRw\nu90AXFxc0G63325JM8DYSOhDhi1lfD7fEGk2NjYIhUKEQiFWVlaAH5NGKYXH4yESiRCLxYjH4yST\nSSNlWq3WPX+z+WAekubbSqke8M+11v9yDmu6d7hcLjweDx6PZ4g06+vrbG5u4vV68Xg8eL1etNa4\n3W5DGJ/PZ0iTSCRIJpN0u13a7Ta1Wm3IlH+omJU0X9Ja55RS68C3lFI/0lp/Zx4Lu2vIzXS5XHi9\nXvx+P6urq0NSQ7abUYjSLPMEg0FjnofDYarVKj6fz2xTDx0zkUZrnRtci0qpb3BZ2vLgSCM3XaRF\nNBo15nUqleLJkyckk0mCweB9L3UpMEuFZVApFR48DgE/C/xgXgu7S4i15PF4WFlZIRKJkE6n2d3d\n5bOf/SyZTIa1tTUCgcCN87wNmEXSpIFvDH4oD/DvtNbfnMuq7hC2eS2kiUajbGxssLu7yzvvvMP6\n+rojaSxMTRqt9R7w+Tmu5c5gb0di+cgIBoPGStrZ2WF3d5dwOGzCB9dBa/2GN1kUZjHffT6fiUfJ\nZ0bHsuOt8wgrpfD7/UPxo2AwSDAYJBAIEA6Hef78Odvb26ytrREOhwkGg7dSZGV7sq2uaDRKu92m\n2+3S7/dRStHpdExAs9fr0e12Tdyq2+0uPXHeOtK4XC78fv9Q7CgSiRAOhwmHw0SjUXZ2dgxpIpGI\nkRK3tX7cbjd+v9+QxiaMx+Oh3W7T6XQ4Pz+n0+nQarVot9u0Wi263e6Cf4HZ8daRRiRNNBo1MSQx\np2VITEkkjWw1N5FGtqdRSWMTxufz0Wg0aLVatFotms3mg/MYv5WkCQQCxGIx0uk029vbJJNJMxKJ\nhAkDRCKRqZRfj8eD3+8nHA5zfn4+5PsJhUJDcap6vW7CEeI1lhjVsuo4bx1pXC4XwWCQRCLBzs4O\nz58/N9tTJBIxRJnGGSc6jdfrJRgMmq0mEAgQiUSGIuH2tVgscnx8jMfj4eLigvPz86FErmUjzltH\nGvHYrq2tsbOzw4sXL4YSqvx+Pz6fD5/Ph8cz3c8jpAFYWVkxEkf0GNmW5BoOh3G73SY63mg0TG5O\nr9dzSHPfkEy8ZDJpJI3EmcREttM7J4HoNEIar9dLKBQymXsiPYQ4ovyKGd5qtSiXy4YkvV6PTqez\niJ9hJrwVpLFzev1+P5FIhGQyycbGBpnMZceUWXJ4hSzy2O1243K5TBRcIP9GpIhk/ImEqdVqlMtl\n4+tZ1sj4oyeN2+025nQ4HGZtbY3d3V3W19cJBoMmQcq+Tgo7sdxOMJdhk9Z2+glB4/E4Ozs79Pt9\n/H4/2WyW168v2/3U6/WlSxF99KRxuVxEIhE2NjbY2Nhge3t7iDTAG8SZFFprkzg+bsj25/V6h+Jc\n8jgejxvCJBIJVldX0VpTr9c5Pj6e908yMx49aUTSbG5u8uLFC54/f87Ozs5CJI3oLfJYrjKv6Ehi\ngovESSQSBAIBkskkmUwGr9drCLOM6RQ3kkYp9XXgzwIFrfWfGryWAP498BTYB/681vpsgeucCHLj\n7Uy6dDrNs2fP+MxnPkMikTA3ahqMbj8SBpAhiq+tAPf7feDNNAyllEncEjSbTV6/fk0sFjPkWqbY\n1G0kzW8D/xT419ZrvwJ8S2v9G4PG078yGPcOsV5kSxDfi9QtiQ9Git5GFeDb3JTRkhWxhGSIlSQj\nEAiY+JbEuGT4/f43pJsksycSCTY3N/H5fEP/pxDwvnAjabTW31FK7Y68/HPAnxk8/lfA/2SJSOPx\neMwNiUajRgmWGyaksS0e+3oTzs/PqdVqVKtVarXakHe30WgMkebi4oJQKGQi5aurq8RiMWKxGAA+\nn28saUKhkCGN2+2mWq0CLIUJPq1Ok9Za5weP81zm1iwFRNJIuqaEA0TSBAIBVlZW8Hq9M0maWq3G\nyckJp6enVCoVU00pFZVSddnr9Yy3WdbSbrcBjPl/HWk2NjaMTtTpdJbCmppZEdZa62XpryfWiF12\nkkgkiMViRCIRQ5rbShr7ua1TNJtNzs7OKBaL5HI5SqUS5XKZs7MzSqXSUAig1+sN5RnHYjG01kaP\n6ff7byi7Xq+XcDhMMplka2vLzNVsNqlUKm+Y9XeNaUmTV0ptaK2PlVKbQGGei5oEdjWkOO+SySSb\nm5vGxM5kMqRSKaLRKD6fzyiXkgw+CttcFq9st9s1JbavX78mm82aIduUbFm25WQPqUoIBoPEYjGa\nzabZbkQ5drlc+Hw+otEo6XSaXq9nzHVZc61We8M5CHfXXGBa0vwe8BeBfzi4/ue5rWgKiN9D3PeJ\nRILt7W2ePXvG06dPTapDJBK5NWnson47wFiv1zk8POT169fm2mw2h2JJNumk5qnT6dBut02saW1t\njUajQafTeSP1wufzEYvF6PV6ZiuV8IbL5aJUKpkGA7JGwV0Q5zYm9+9wqfSuKaUOgX8A/DrwH5RS\nf5mByb3IRd6wvqFqSCHN1tYWL1684MWLF0MeYYley1/2KMTnIjda9JezszMzDg8POTg4MEMkkIxR\nk1wkQqvVol6vk0gkODs7M5JGAqOjksbr9RKJRFhZWTEE11oby08IfdeR8NtYT1+54q2fmfNapoZd\nSSCk2dzcZHd3l3fffdfk6MpfrO3HEdg3WdITRDKcnZ1xcnLCyckJxWLRkGV/f5+Dg4Mhb/A4JVXM\n8kajgd/vJ5VKUalUqNfrnJ+fm3waIcbKygoej4dwOEy/3zfv2zpMr9ej0WiYP4C73KIehUfY7idj\nu+ltolwnWUTEi95ydnZGuVw2yu3oNZ/PUyqVzFZ0k1IqZJJtpF6vUyqVyOfzHB4eEo/HjSS0Qw39\nfh+Xy2WSxjY2Nsx36Ha71Ot1yuWykYzifV40cR4FaQRXVQLI86tCBKKgik6Sy+U4OjoyPWbEFyPX\ns7MzKpUKzWbT3CghzzjITZXHtVqNUqnE8fGxybXp9XrGqSdrFZdAIBAgHo+brEORMqVSiUAgQKfT\nMd/tunXMC4+GNKOSxiaN/d4o7OL8er1OpVIhl8uxt7fH3t4e+/v7Q7kvrVZryDsr29F1N8oOaF5c\nXAyRRspihDB2/Euufr+fWCxmrp1Oh3K5TC6XIxAI0Gq1zP9xF3jwpBklwyhpxmXf2QFKiR1Jgb7c\njL29PT788EM++uijoe1rmmoB0XcEsj0FAgFDbOmBI+SziSPebVl7q9Uil8sRjUaNs1K2v7uo8nzw\npJkGtu+k0+lQLBYpFArk83mOj485ODigWCxSq9WGPLvzEvsi2arVqgl1yJZXrVYJBoNDmYTLVu77\n1pHG9ptIzdHJyQnZbJbDw0MODw/J5XIUi0Xq9bqJWo9Ki1lgk8btdhOPxymXy1SrVer1OsDMecqL\nxPKtaMGwTepWq0WtVqNYLJLNZvn000/59NNPjT+mVquZisd5KpjdbpdWq2WSyePxuJE0tVrNmN52\ns6RlwltHGsCQptFoUKlUjKTZ29vj5cuXQ4ruIioeRdL0+32j1NqkEY/1ysrKlUQdp9zfFbkeJWmu\n+yH7/T7VatW0bT06OmJ/f59sNku5XDalJrIl3ee6bVLYmYXSDmV9fZ1MJoPH4zHEsy26ReFRkgbe\ntKoEWmuq1SpHR0e8fPmSTz75hGKxSLFYNKQR5XfRpBlH7nHrHk1JlVqqVCpFJpMxFmOn06FarS68\nHvzRkWYcUewUCJE02WyWjz76iA8++MC0dG02myYz7i6cZLK2cWGN6ySNpFWkUikT5RbCXBWEnSem\nzRH+KvBXgOLgn/2q1vq/LWqR02Lcnt/v96lUKoY077///ht5M/eJ20oaaWAgfqZqtUqhULiTRPTb\n0PK3gfdGXtPAb2qtvzAY90YY+y9vfX2ddDpNPB4nFApda66K1LmPhCZJRw2HwyQSCZOcJRmG4rAT\nAowmiYlUEasvl8tRLpdNWGPRuJE0+rJbZ3nMW0thB0pALxqNsr6+zsbGBolEglAoZFq2jhv3CSFN\nJBIxlRE2aezk93HZhUKaQqHAwcEBR0dHQwHURWOWDfBvKqX+WCn1NaVUbG4rmhB2kyIhzW0kzX3C\n6/UOkSYejw81V7pJ0pyfnxtJc3h4OESapZA0V+CfAc+47LmXA/7R3FY0Iez67IcmaSQPWCRNNBod\nkjS2fnKdpMlms5yenppzGRa+/mk+pLU2OcFKqd8Cfn9uK5oQotNIInkymSQSiZhg4H2tScxgO4dZ\nEqYSiQTr6+tsbW2RyWSMHhYIBMZaP6P6l/Tnk5jYXVp7MCVplFKbetB4Gvhz3GP/YHF2SasySWjy\n+/33VtIqKaj2GQt2QlgymSSVSg2RRlIfrktBHW1ZctdkEUyTI/xrwE8rpT7PpRW1B/y1ha7yGowr\nWRG94L4kjUgW+3wFaZYk1RLpdJqtrS2ePHliiH6dpLFrqUTS2Jl6d7n1Tpsj/PUFrGUqjEoaqdH2\n+/33uj3ZSWB221nJYRZJ8+TJE6N/XRWctJPdbcKMugzuCstpXkwIW4cQPeI+I8M+n8+U4MqhGlJT\nHolEePr0Kdvb24bgkkhuVxzYhGg0Gqauqlarsbe3Z3wzrVbLHHd4V7GyR0GaZYM4G9fW1ox1ZI9U\nKkUqlSIWiw0RRgg/WmQnllKhUKBYLPLq1StjMUkZzLwTxa6DQ5oFQOqWUqmUOfPSHuFw2BztI6a1\nLR1HKyQqlQr5fJ6DgwNevXrF0dERx8fHxjfT6XTmmiR2ExzSLAB2WW0mk2F7e5utrS0z7C5Y44KV\ndsmLOPLy+Tz7+/u8fPmSQqFgEsXsLudLbXI7GIa0MBFFN5PJ8OTJEzY3N0mlUsTj8aH+xDdFovv9\nviFMs9mkXq9TrVY5Ozvj9PSUs7Mz0zb2PlrGPkrS3LUSHAqFTFt88UrLibrJZJJoNGpaxN4GYikJ\naaSGXBoM1Ot1c0jHQ+oasdS46x8yFAqRSqXY3d1ld3fXHFsoZy2IlLltvq9IGrv+W6SNlPOKz8Yh\nzQPF6uoqqVSKZ8+e8bnPfc7Ej+RUXemGPomksbcn2+QWSTNJE6Z541GSZpxyab832ilr9H3x3IoX\n1/b9jJvz3Xff5Z133uHJkyek0+mhz/r9ftMu5LrSYBvtdptyuUw2m+Xo6IhXr15RKBRMKufS99x7\nSBiXOjl6kyTsEAwGTWrC6Pv29hKLxYba3o+LZ0kDpc3NTRKJhCGJHW+ynXc3EafdbnNycsKrV694\n+fIl2WyW4+Nj0zDpvvGoSDOK6yRNMBg0YQcbbrebra0ttre32d7efuMc7nGhCdvbG4lEhoKVoxHu\n20gaKeA7ODjgww8/pFAomO1p6UmjlMpw2Qo2xWVw8l9orf+JeiB9hEcfy/PrJI3H4yGTyZgt5/nz\n50NnXI6edwAYCSTkuGo9t7XqhDT7+/v88Ic/NH327tKBdx1ukjRd4O9ord9XSq0Cf6SU+hbwSyxJ\nH2HpNNVoNCiXy5yenhKJRNBa4/V68fl8Q/9eKWVM5KdPn74xn9vtNrGh9fV10wBaAopXKbOjVQOy\ntttgtHl1qVQyVpJ0qVgmXEsarfUxcDx4XFdKfQhss0R9hPv9Pu12m0qlQrFYJBaL0e12TUbf6Mlw\nLpeLcDhMOp1Ga004HH7j/fX1ddPYUdIuRYkdR4TRagGYrMVsp9MxZTT1ep1isUi1Wh1qwrhMuLVO\noy4bUH8B+D8sUR/hUdKsrq6a9hx263iBUopwOIzWmlAoRDr946XLjbcj1NLv7jp9xCbMNJJG+gOX\nSiVKpRLFYpFKpbK051neijSDrek/AX9ba12zfzyt77ePcL/fNx0YisXiUKdyaZpow+VyGT9KKpUa\nynyT66gCK1iUpOl2u9RqNU5PTzk+Pn74kkYp5eWSMP9Gay2tX5emj7DoNNJdSvrTSRPEi4uLIR+L\nUmqom6bMYV9nWYsQxz7/abRFrH1I2Pn5OScnJ+TzeZP+IA2tm83mw5M06vJX/Rrw/7TW/9h6a2n6\nCEtJqijCfr+f9fX1ofiMLTkWGZeSue1On5KmaSeDS4TabgApXc/L5TLFYvFO65gmxU2S5kvAXwC+\nr5T63uC1X2WJ+gjLX269XjfnKJ2dnb0R1LvLjlKjOb2jkuX4+JijoyMz7IM55FqtVh8mabTW/4ur\na6OWoo+w1AFJzY/b7aZSqZgD06WrpuSvLHot9vYkEkZiSNI9NJ/Ps7e3x8cff8wnn3xCo9Ew/XCE\n6DIeHGkeAuzOVoBptpjP58lms0YxtmNBtt9lnsnnIslsE3o0v7dWq5mO57lcjkKhQLvdNucvCFHs\nU+mWDY+CNPJXrZSi1WpxenpKNpvF7/fT7XZNaqVc7bGIioXz83MqlQqlUonT01Ojq4jeIo0hT05O\n3sjxtfsSLysePGkAE4+RDt9iRQE0Gg2i0agpsJcqTGnZMer8mwWyPQlp8vk8R0dHpmmSJIaLxKnX\n66b+etTCWoby4avw4Eljm7WiT5RKJQBzOHoymTRVAc1mE8B0k1oEhDR2Vwdp15bL5Ux7NluyyHex\nv9ey4sGTBob9LHa7VVGS7Vzber1uXpPsOEldsHv32qkQdinsOBMahmNP0skhl8uRz+cpFotmm5KT\n5x4yHgVpbEiBfKvVAjBZ/XIqW6lUolarUalUKJfLpFIpkxAuB6OK4uz3+00vO/tgU/v8J5Fctjkv\nJnUul+Pk5MSYz+M81A8Rj5Y0UnQmUqZarbKyskIgEBjK7C8UCibZSq4Sm5K2rEJC0UVEsRXnnA2l\nFKenp0NDSLPoBop3hUdJGtlK2u320FGFkoAl5zcVCgXW1tZIp9NDTQ/FGSjnEYxKqnw+b0ahUDAK\nsMB20tVqNeOjua/qgXnj0ZEGuNZctQ/VEgki3ctF75EjkMXiEokiQ6wgGaOQKgK52r2JHwMeJWmu\ng2xfzWZzqG5aTpArFAqmikB0HPvMbTnexx4C27knyrb4YKRA35E0DxBiUQFmC2s2m5TLZQKBgOni\n4PP5THqn3HyJHdlSRHJe7O1p9IhlGcvssJsE6jrmX5Mj/FVu6CN8nzk2N2FUzxmXCG6/P5rmYB+h\nPI4IVzUaWmaH3ThorcdGeG8izQawYecIA7/AZVS7prX+zWs++3B+HQdjcRVpps0RhiXpI+zg7nHr\nXAErR/h/D15aij7CDu4etyLNYGv6j1zmCNdZoj7CDu4e1+o0YHKE/wvwX0dSPuX9XeD39eCwDet1\nR6d54LhKp7lW0lyVIzxIJhfcax9hB3ePm6ynnwT+APg+lyY3wN8HvsLl1mT6CFt1UPJZR9I8cExl\ncs8ChzQPH1NtTw4cjINDGgcTwyGNg4nhkMbBxHBI42BiOKRxMDEc0jiYGAvz0zh4vHAkjYOJ4ZDG\nwcRYKGmUUu8ppX6klPqTQRfQWefbV0p9Xyn1PaXU/53i819XSuWVUj+wXksopb6llHqplPrmJLlB\nV8z3VaXU68Eav6eUem+C+TJKqf+hlPqhUuoDpdTfmmWN18w39RqB8fms8xiAG/gY2AW8wPvAT8w4\n5x6QmOHzP8VlItkPrNd+A/h7g8e/DPz6jPP9GvB3p1zfBvD5weNV4CPgJ6Zd4zXzTb1GrfVCJc0X\ngY+11vta6y7wu8DPz2HeqdNMtdbfAcojL/8cl21tGVx/Ycb5YMo1aq2PtdbvDx7XAbsF78RrvGa+\nqdcIi92etoFD6/lrfrzgaaGBbyulvquU+qszziVYRHvbmVNh592Cd57puoskzSJs+S9prb8AfBn4\n60qpn5rn5PpSjs+67plTYUdb8M66xnmn6y6SNFkgYz3PcCltpobWOje4FoFvcLkFzor8oFRHMhJn\nam+rtS7oAYDfmnSN17XgnWaN1nz/VuabdY2LJM13gXeVUrtKqRXgF7lsJTsVlFJBpVR48DgE/Czz\nSTOV9rYwh/a2s6TC3qIF70RrXFi67izWzC209y9zqbF/zGUV5ixzPePSAnsf+GCa+YDfAY6ADpf6\n1i8BCeDbwEvgm0Bshvn+EpcVqd8H/nhwc9MTzPeTQH/wHb83GO9Nu8Yr5vvyLGvUWjthBAeTw/EI\nO5gYDmkcTAyHNA4mhkMaBxPDIY2DieGQxsHEcEjjYGI4pHEwMf4/w2zPGHuGeikAAAAASUVORK5C\nYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nT5UJ3wAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nJhIqAACAmv4fGZAJwEI7dFcAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAI0AAACPCAYAAADHlliuAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGNNJREFUeJztnVmM7Fldxz+na1+6qrqW7q5ebt+ZuTMDTEzgBU2AyAMh\nQ0xAXyQkRoNofFA0SiLig6D4gCYQow9EZYlbQKOBgInKYETxwQUzw4CyzMxdeu/au/a1jw9dv8Op\nukvfWrvrzv+bnPyram7/51TVt37n9/ud3+97lNYaBw5GwdJlT8DB4sEhjYOR4ZDGwchwSONgZDik\ncTAyHNI4GBljk0Yp9axS6rtKqZeUUh+c5qQcXG2ocfI0SikX8D3gbcAB8N/Ae7TW35nu9BxcRYxr\nad4IvKy1vq217gCfB941vWk5uMpwj/l3m8Ce9Xwf+GH7HyilnFTzgkNrre71+riWxiHEqxjjkuYA\n2Laeb3NubRy8CjAuab4BPKmUuq6U8gLvBr40vWk5uMoYy6fRWneVUr8E/BPgAj7tRE6vHowVcj/U\njR1HeOExbUfYwasYDmkcjAyHNA5GhkMaByPDIY2DkeGQxsHIcEjjYGQ4pHEwMhzSOBgZDmkcjAyH\nNA5GxrhFWAAopW4DZaAHdLTWb5zGpKYNpdTAY7fbjcvlMtezszO01macnZ0NDHkd4LLamIffg1KK\npaUllFID87bnOitMRBrOi7HeqrUuTGMys4J8wEtLS7jdbiKRCMvLy0QiEUKhEN1ul06nY0az2aTR\naNBsNmk2m5ydndHr9cz1MuZvE8XtduPxeMzo9Xq0220zzs7OzN/OgkCTkgbgnjuhVwXyQbtcLlwu\nFz6fj5WVFdbX10mn0yQSCUOORqNBo9GgXC5zenpKuVwGoNPpoJSi0+lc6nuQ4fV6CQQCZnQ6Her1\nOrVajV6vN3OrOA1L81WlVA/4Y631n05hTlOHUsosRz6fj3g8zvb2Nk888QRbW1tUq1UzKpUK2WwW\nj8cDQLvdNkvDZViZ4fcgxA+FQoTDYZaXl2m1Wiil6PV6tFqtAeLMApOS5k1a6yOlVAp4Tin1Xa31\n16cxsUkhX/TS0hI+n8/8KiORCOl0mu3tbR5//HF2dnY4PT01lqVUKqG1pt1uU61WzRcl/sNlvAeP\nx4PP5zMjHA4TjUaJRqNEIhHq9TpKKbrdLvV63SylskxNm0ATkUZrfdS/ZpVSX+C8teXSSSNfsFIK\nr9dLIpEglUqRSqVYXV1lZ2eH7e1tVldXiUQixlfpdrs0m03c7vOPRZ53Oh263e6ArzBLDPswy8vL\nxONxEokEiUSCSCRCOBw2o1gs4vP50FpTr9cH3k+32536/MYmjVIqCLi01hWlVAh4O/DbU5vZmLA/\nbDHliUSCnZ0dHnvsMa5du0YqlSKZTJJKpYhEIvR6PTqdDu12m3q9bpambrdLq9Wi2+2aX++83oPt\nw4TDYdLpNNeuXePatWtEo1GCwSDBYJBAIMDJyQlnZ2fU63Xy+bx5L1rrmSxVk1iaNeALfRPqBv5K\na/2VqcxqQgyv/0KaZ555hqeffppQKEQwGCQUCuHz+cyH3Gq18Pv9d1kaCWXnRRpgwHlfXl5mfX2d\nJ598kte97nXEYrG7lqt6vU6xWOTg4IBGo2EIM4sldWzSaK1vAa+f4lwmgu3D2D5ANBollUoZx/ep\np54a+BVrrc1VTLodfrfb7bm/F3HavV4vXq/XRHs7Ozs89dRTRCIRQ6qlpSWq1SqRSIRAIIDH45m5\nDzaNkPvSIR+QECYWi5mRSqXY2dkhlUoRDodxu920221DiGazyeHhIUdHR2bs7e2Ry+Wo1+uX8n68\nXi/Ly8tmbGxskEwmiUajBAIBAOr1ukkV7O7ucnx8TLFYpFar0Wq1aLfbM4uiFp409vrvcrnw+/2s\nrKyQTqdJp9Nsbm5y/fp1VldXCYfDuFwuut2uCa9LpRJ7e3tm7O/vk8/nKRQKl0qaSCRinPeNjQ1S\nqZTxZTqdDrVazcxTSFMoFKjVajSbTeOHOaS5D4bzMLFYjI2NDR5//HEee+wx1tbWjKVxuVx0Oh2q\n1Sq5XI5MJsPu7i63bt3i1q1b3Llzx/yCm83mpbwfmzTb29tsbm4a0tjJvGw2y97e3j0tjR1yTxsL\nTxo7te71evH7/cRiMeMDPPHEEyanEQqFWFpaotPpUKlUyOVyHBwcmA/+9u3b3Llz59Leh/ggfr+f\naDTK6uoqW1tbrK+vE4/HCYVCuN1uut2uSULu7u5ycHBANpulVCrRaDRm7octPGkAY2ECgYDxAyKR\nyABZfD4fLpcLrTWNRoNiscjR0RG7u7tkMhlOT09ptVqXMn+JkmREo1ESiQRra2tsbW2RSCRMlFcs\nFsnlcuRyObLZLNlslkKhQKVSodVqzWVDdeFJI7vWPp+PYDBoCBOJRIjFYkSjURNJyY62kOb4+Jjd\n3V1yudylkkYceImWIpEIiUSC9fV1tra2CIVCZu+rVCoNECaTyVAoFKhWq2ZZmjUeOdLIfoxtaexf\nca/Xo9FoUCqVjKWpVqvGF7gM2GkC2eqIx+Osra2xubmJy+WiVqtRr9ep1+sDpMlmsxSLRVqtlkOa\nizCcl/H7/YRCIWNlpPwhHA4P1Ma0Wi0qlQqFQoFMJsPh4eFAXmbe81dK4fF4CAQCZlsgHo+bjPXa\n2ppJD7TbbbM85fN5MyqVCr1eb+YblYKFI81wAZLs+MqvU/ZmAoEAbrebs7MzY0mq1SrFYpG9vT2y\n2SyVSoVOp2O2COZVYDXsw9h7Y6lUihs3brCxsWGSeN1u15Rs5PN5isUi1WrVhNZ2sdg8sHCkgcEU\nu9frJRgM3pc0vV6PWq1GJpMhl8txfHxsknfVapVOpzP3D932YTweD/F4nM3NTbO3tLW1RTqdJhKJ\nmLzSMGkqlQqNRmNgX2weVXuw4KSxfRkhjZ05tS1NNpvlzp077O7uGksjpLFLPecBl8s14MMIaW7c\nuMFrXvMaEokEsVjsoUgjlhLmV4p6IWmUUp8BfgzIaK1/qP9aHPhrYAe4Dfyk1ro0w3na8xn40CVi\nisViJBIJkskkkUgEv99vHF8hzd7eHq+88gonJyfk83lqtdpMSgcuwrAfFo/HSafTXL9+naefftps\nd3g8HrTWtFotarUap6enA6Sxl6e5zv8h/s1ngWeHXvsN4Dmt9VPAP/efzwUul4tQKDSwCSklD5ub\nm6ytrRGJRPB4PCaJd3p6SrFYJJ/Pm/C6Xq9fWvmmXX0nDnsoFCIQCOD1eg1RTk9POTk54fj4eOAq\nzu+88jLDuNDSaK2/rpS6PvTyO4Ef7T/+M+BrzIk4LpeLcDhMMpk0db6bm5tmpFIpPB4PbrfbRB3D\npKlUKtTr9UuxMvCDZGQoFCIajRrS+P1+Q5pms2lCbJswJycnZo9pXiH2XfMf8+/WtNYn/ccnnNfW\nzAVLS0uEQiGSySRbW1vs7OyYzcl0Os3KyoqpWJM9pmHSNJtNWq3WlbI0wWDQkKbVatFsNs28hTCZ\nTIaTkxMT9Q13HswLEzvCWms9T309l8tFMBgkHo+zsbHBtWvXWFtbMyMSiVCpVIw1qVarpva3UCiQ\nz+dNOeS8CsXt8k1gwBdbWVkhGo0SDofN8iSbpaVSiePj4wErc5klG4JxSXOilFrXWh8rpdJAZpqT\nehjcby2XCjuxNFI7Yye/Zh0p2Yk7ON+A9Pv9BAIB/H4/6+vrbGxsmJFOp4nH4wSDQZRSNJtNCoUC\nBwcHvPLKK2Z/rFqtXmpHhGBc0nwJ+Bng9/rXL05tRmPCJoNdgSc1vhJlzCu0tpOQgUBgoDAsnU4P\nkCaZTLKyskIgEEApRaPRoFAosL+/z0svvcTx8TH5fJ5qtXopy9EwHibk/hznTm9SKbUH/BbwMeBv\nlFLvox9yz3KSF8EmgVgau1hcugmGk2AzlMMdKA4LBoOsrKyYJVTIsrm5ycbGhtnuENLYluall14i\nn8+bRr6FsDRa6/fc5z+9bcpzGQvDhLFJIxZGliX5Iu3Hw71BYx5lNPDYrt+VFIHkYiQ1YFsbr9dr\n+soBY2kODw+5efOm6fS8KljIjPCDIG2rwWDQEGdzc9NU6IdCobsa/GWHWGprR4Xb7R4YUuIgY9iH\nSSaTpqhKEnh2z3ipVDIh9VU8N/2RI400yEmVnpj7s7MzU3RuR09SBVcul6lUKlSr1ZH/n+Lo2g6v\n9CQFAgHTpCdDCsUk8yu+lyxBUrZ5WSH1RXgkSePxeAx5JFnmdrsJh8Osrq4asojagpQa5HI50yg3\nCuxuRxk2MeLxOCsrK8TjceLxuMnHyIaldEVI9rpUKlGtVk3D21XDQpPG9kPksU0WwCwBktupVCrG\n15EOysPDQ4LBoGmSGxVSIWhfZUi/tT2G+5FkiSyXy+RyuQFL45BmCrAr705OTvD7/abJX9LxduQC\n5z5HIBCg1+uZTUwZIiNiF3OPCrEuouQgVxnBYBCfz2dIOexTCVkODw/Z39/n4ODAbBU4y9MUIDW+\nQhrZLZZlwC7vhB8sV36/HzhvD7G/sF6vh8/nIxKJkEwmp+LT+Hy+u557vV4zJ0k+Si5JOiMODw+5\nffs2h4eHJsx2LM0UYJPG7XYbVYWVlRXq9Trtdtv8om31K2lZHc4Ka62JRCImcppG9CTDlmiTq1LK\nkEb6x21Lc/v2bVP361iaKcEmjSTr4vE4q6urA2GqXd0nX6LP57srpyKY5y9aSCMbk8OkOT09NZGU\nQ5opQGttPnCXy8Xp6SlHR0f4/X601hQKhbuWBilokqu9hMhyZQs02vp1D7MTbveGdzodEz3Jddjx\nFcUq2VCVUL9Wq9FoNMwO/DxLUEfBQpKm0+kMZHaPjo6MoM/x8bHJj0iuRHIn8ppENJIIlP0qCcWl\nCF2+yItQq9XMqFarA8m8cDh8T9KIFo7kh6RFRUgjKYGriIUkjRRPiTOptaZWq5HL5Uxtiq1BIzUr\ny8vLRKNRo6MXCATu2naQGpxisUihUKBUuriKtVgsDowbN24AGDGiYdiWRso4qtXqAGnmXew+Csat\nEf4I8HNAtv/PPqS1/sdZTdKGkEaI02g0qNVqZLPZgYo4O8kmSbWVlRWSyaQJsWOxmLmnkEa09gqF\ngil8ughS6yKj2+0SDodZX1+/55cupKnVapTLZcrl8l2kucp4GEvzWeCPgD+3XtPAJ7TWn5jJrEaA\nXT8jkPyMvWlpZ1wlxD06OiIejw+Ev51Oh0KhYEaxWLxwDpLFlUL14T4qe9ui1+tRLBbJZDIcHByw\nv7/P4eHhlc7LDGPcGmG4QvrBNnHEzzk7OxvY06lWq8anyeVy7O/vm/pc+wsV7ZpRfBopH202m/ds\nvLPFoaWJP5PJsLe3x82bN029TL1ev5LL0TAm8Wner5T6ac4Pdv/AvFpYhmFr4dkRkERYEqHYCt92\n8k0cYTuCkvzJKHkb29kdLvYSAovAtSQm9/f3uXXrFoVCwXRIPMqk+STwO/3HHwU+DrxvKjMaA+KT\nCGRrwMa98jP306QbtbZmOCNsE1lEoWVTslarGUuzv7/PzZs3zeakhNlXHWORRmttvEOl1KeAL09t\nRlPC8Bc+y1+waOTZOn8icQKYzgLZTRcRonK5bHSK5yk5OynGIo1SKi3C08BPAN+a3pQWDxKJSTnn\n+vo6sVjM7He1Wi3TWSAbkrlcjnK5TLvdvqfzfJUxTo3wh4G3KqVez3kUdQv4hZnO8opDpGfX1ta4\nfv36XaSxlbdu3rzJ4eGhUa2QRN6iEAbGrxH+zAzmsrCwLc21a9cGSCOVgyKiJBuSInkm0q2LhIXL\nCF8FSBQme1m2AJF0eUrxl123I86w7C3NS4Ro2nBIMwakElCG1P6KTyNbGCJ1Mpw8XCT/5V5wSDMG\npHBdNP1swqytrZmWFBFVsjPTw201iwiHNCNCKgGDwSCxWMwsTba1sZOMYmnsDVFb8mwR4ZBmDAhp\nRH3L1iqWsxds/0UOIZPd7GazOdOzC2YNhzRjQNQ4ZQd9eXnZlJMCRu5M9q+KxaI5uU52s+XYwEWE\nQ5oxIDXHYmnsY3MAc3ZBuVweqMuRgivZ2LwsUaVJ4ZBmDIilGSaNfbiYCCtKeYWQxhaHhMs753sS\nOKQZA/dankQY8uzsbKBYXPaZpFh8kfaY7oeHEWp0MITh5WmYNI1Gg9PTU7OTLQd2NJvNhbQsw3As\nzYiwZemFNKKXN3z2QjabfSRJ80BLo5TaVkr9i1Lqf5VS31ZK/XL/9bhS6jml1PeVUl9RSsXmM92r\nAQm57eXJ5/OxtLRkSHM/S/Mo4KLlqQP8qtb6GeBHgF9USr2WS9QRvgwISaLRqJE6k7OxRVzRbrlt\nt9sm5BYFCBGKfhQszQOXJ631MXDcf1xVSn0H2OQSdYTnDfvQDulwECn9YDA4IE0iFYRSmyylptIu\nvKh5mWE8tE/TLy5/A/CfXKKO8GVABAKkFSaVShGLxQiFQqZDU6Iiux5YSGOLRT7ylkaglAoDfwf8\nita6MtQDPVcd4XlDLM3y8jKJRIJ0Ok0ymSQWixEMBvF6vYYMdhmEbWmktfdRIAw8XOWeh3PC/IXW\nWqRfL11HeJ4Q0iSTSaOZJ2G2FI7b8mfVatUcQGpbF1uE2h5298Ii5HAuip4U8Gng/7TWf2D9J9ER\nhiuiIzwr2JYmmUySTqdJJBIsLy8bta1OpzOQAS6Xy3cd2GGfHS7FW16v12jXiGzK/TokrhIusjRv\nAn4KeFEp9Xz/tQ9xxXSEZw3xaRKJBBsbG/ckjew13Ys0tq6wLRUrQ0omhltxriouip7+nftboyuh\nIzxriIafbWlERmTY0sjZmOVy2RzgJfcY1suxdXNEAWMRCANORvihIF+4dGfaywkMhtoirmjndoY1\ncWSpEjLVajWjHnFVxRltOKSZATweD6FQyEjbh0KhgfPChyv75ORe6SO/6s6wQ5opYFjDzy4HbbVa\nrKysmKMSk8mkadMVy+Tz+YyY0qPgCDsYESJ0LZZGaz1wiMbGxoZxnBuNhjm7qVqtksvlHNK8WuB2\nu40sbSwWw+VyDTwXSxOJRPD5fCZ7LMJGktNxHOFXESSPI1YmFouZRF+9Xjc5GXF6S6US+XzejKOj\nIwqFwiMvNeLAgtfrNYdjBIPBu9Q+7VNe6vW6kRqRowbl2OR6vX7lnWBwSDMVSAgeDAYHBBblKod1\n5HK5AX2ag4MD9vb2zHmbV1WhfBgOaR4Cw+KNtg8ie0f2LrfdFNfpdMjlcmSzWTOOjo7IZDLm8Ay5\nn11wfpXhkOYCiD6xHA/o9/tN6CyJOFusWvSBbW3hUqk0MMSXkWo+u+tyEeCQ5gIIafL5vJFGs4/V\ncblcxuGVIb1OoitsC1MPX6Wib5FEAR5IGqXUNudSsKucCxj9idb6Dy9TR3je0FrTaDTI5/MAZimR\nSCkQCBgtYDmh7uTkxJylfXx8bEQf5Tq8fC1aD9RFlkZqhF/oF2L9j1LqOa6QjvA8ID6NUopOpzNw\nbpMcvWOPTCYzMERexK7esx3lRcO4NcJwhXSEZw0RrxanVyRERFpfcjKyTA0fKSj+yrwOk5811MNO\nvl8j/K/AM8AHgPcCp9xHR/hRKgGVsyZlDJ8iJ5GP5GZsEsnxO3YYDpMd6TwvaK3vaRgeijT9pelr\nwO9qrb+olFrlB/7MR4G01vp9Q39zdT+NEWGXMSil7jr4azgvYyug20vQIhDFxtik6dcI/z3wD0Ml\nn/LfrwNflsM2rNcX45NxcF/cjzRj1Qj3i8kFr3od4VcbHmhplFJvBv4NeJHziAngN4H3AAM6wlYf\nlPytY2kWHBP5NOPAIc3iY6zlyYGDe8EhjYOR4ZDGwchwSONgZDikcTAyHNI4GBkOaRyMjJnlaRw8\nunAsjYOR4ZDGwciYKWmUUs8qpb6rlHpJKfXBKdzvtlLqRaXU80qp/xrj7z+jlDpRSn3Lem1sedv7\n3O8jSqn9/hyfV0o9O8L9pirB+4D7jT1H4O7m9WkNwAW8DFwHPMALwGsnvOctID7B37+Fc7HJb1mv\n/T7w6/3HHwQ+NuH9Pgz82pjzWwde338cBr4HvHbcOT7gfmPPUWs9U0vzRuBlrfVtrXUH+Dzwrinc\nd+wyU63114Hi0Mvv5FzWlv71xye8H4w5R631sdb6hf7jKmBL8I48xwfcb+w5wmyXp01gz3q+zw8m\nPC408FWl1DeUUj8/4b0Es5C3fb9S6ptKqU+Pq+Y+bQle637/MekcZ0maWcTyb9JavwF4B+fq6W+Z\n5s31uR2fdN6fBB7jvN7oCPj4qDcYluCddI79+/1t/37VSec4S9IcANvW823Orc3Y0Fof9a9Z4Auc\nL4GT4kQptQ6mInEieVutdUb3AXxq1Dk+SIJ3nDla9/tLud+kc5wlab4BPKmUuq6U8gLv5lxKdiwo\npYJKqeX+4xDwdqZTZjpVedtJSmGnLcE7s3LdSaKZh/De38G5x/4y512Yk9zrMc4jsBeAb49zP+Bz\nwCHQ5tzfei8QB74KfB/4ChCb4H4/y3lH6ovAN/tf7toI93szcNZ/j8/3x7PjzvE+93vHJHPUWjvb\nCA5Gh5MRdjAyHNI4GBkOaRyMDIc0DkaGQxoHI8MhjYOR4ZDGwchwSONgZPw/UDzRgG/E2K8AAAAA\nSUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "for i in range(8):\n", + " figure(figsize=(2, 2))\n", + " imshow(solver.test_nets[0].blobs['data'].data[i, 0], cmap='gray')\n", + " figure(figsize=(10, 2))\n", + " imshow(output[:50, i].T, interpolation='nearest', cmap='gray')\n", + " xlabel('iteration')\n", + " ylabel('label')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "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)." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false, + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlQAAACbCAYAAACkuQVhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAD0JJREFUeJzt3X2Q3Vddx/H3J5tNtk3alEqEAsFQpUo7IEVgyjMFdCoD\nxQcEKgKig+MAUhEYoDP6lw4I41AYRmeQykN5UgELjApUqVBAGgpJn1KeHKotSKPYhnY1IQ9f/7h3\n2+2yyd5ffjl7703er5md3N/vnnvO2Xvu7n5zfud3vqkqJEmSdOTWjLsDkiRJ086ASpIkqScDKkmS\npJ4MqCRJknoyoJIkSerJgEqSJKmnteNsPIl7NkiSpKlRVVnufNOAKsl5wMXADPDOqvrTpWU2b978\nI6+bn59nw4YN9zi3Zk27ybSDBw82Kdtlj68u9XbRcp+xQ9W9Z88e5ubm7nGuy/d34MCBkcvu379/\n5LJd+9FqTCZZVZEs+7uiUx2SdLxpFqUkmQHeDpwHnAlckOQhrdqTJEkal5ZrqB4NfKuqbqqqfcCH\ngGc1bE+SJGksWgZU9wduXnR8y/DcimZnZ5t0SKtj7dqxLs2TJGnVtQyojnghxbp1645mP7TKDKim\nV9/1U5J0vGr5l+87wJZFx1sYzFLdw/z8/F2PZ2dnDaYkSdLUaRlQXQ08OMlW4LvAc4ELlhZaejef\nJEnStGkWUFXV/iQvBz7FYNuES6rqxlbtSZIkjUvGuWdMklpuH6rluA/VkRnHPlTLcR+q44f7UEk6\nlo1lY89RjPoHcWZmZuQ6uy6s7VK+Sz+66PJHqGXA0aV8l350KdsqaD2S8pIkjcJcfpIkST0ZUEmS\nJPVkQCVJktSTAZUkSVJPBlSSJEk9GVBJkiT1ZEAlSZLUkwGVJElSTwZUkiRJPRlQSZIk9WRAJUmS\n1NPYc/lt2LBhpHJd8u21zO/WKudeF13ei7Vruw1xlyTUrfLzdSnbMjnysZ73r9XnXpKOR01nqJJs\nSXJFkhuSXJ/kFS3bkyRJGofWM1T7gFdW1Y4kG4GvJLm8qm5s3K4kSdKqaTpDVVXfq6odw8d3AjcC\n92vZpiRJ0mpbtUXpSbYCZwNXrVabkiRJq2FVAqrh5b4PAxcOZ6okSZKOGc3v8ksyC3wEeF9VXbb0\n+d27d9/1eP369czNzbXukiRJ0lHVNKDK4P7+S4CdVXXxcmU2bdrUsguSJEnNtb7k9zjgN4Bzk2wf\nfp3XuE1JkqRV1XSGqqo+j7uxS5KkY5zBjiRJUk9jTz3TQsvUM11Sl3RJEdOlbBdd34suqWda9blr\nOplWdbdKtzIzMzNy2S7j0eWzCe3SKJneR9LxyBkqSZKkngyoJEmSejKgkiRJ6smASpIkqScDKkmS\npJ4MqCRJknoyoJIkSerJgEqSJKknAypJkqSeDKgkSZJ6GnvqmS4pLUbVNSVKl1Qgs7OzI5dtldKm\nS/qUrulIuujyPrdKR9IydUmrurt85lumypmU91mSjgWHDKiS/CpQwHJ/NauqPjpKA0lmgKuBW6rq\nmUfUS0mSpAl2uBmqZzIIqA5lpIAKuBDYCZw0aqckSZKmySEDqqr6zb6VJ3kA8HTgT4A/6FufJEnS\nJFpxUXqS+ya5JMknh8dnJvntEet/C/AaoN1CHkmSpDEb5S6/dwOfBu43PP4m8MqVXpTkGcCuqtrO\n8uuwJEmSjgmjBFT3rqq/Bg4AVNU+YJRbjx4LnJ/k28AHgackee/SQnfcccddX3v37u3QdUmSpMkw\nyrYJdyb5sYWDJOcAu1d6UVVdBFw0fM2TgFdX1QuXljvpJNeqS5Kk6TZKQPUq4BPA6Um+CGwGnn0E\nbbmRjSRJOiZllA37kqwFfprBWqivDy/79W88qdNOO+1oVLW03k7lu2zsuWbN6JvLT+PGnl363GWD\nylbfX5ey0K7PXXT5fLbcfNONPSWpu6pa9pf4ijNUSU4AXgo8nsEs05VJ/qKq9hzdLkqSJE2nUS75\nvRf4AfA2BjNUvw5cCvxaw35JkiRNjVECqrOq6sxFx59JsvNodWB+fv5oVXWXrpf8upTvWveoulxK\nbKnLJbQul88moSxM32WuVp+3lnVPwvsmSattlL/iX03ymIWD4V1+X2nXJUmSpOlyuOTI1y0q84Uk\nNzNYQ/VA4Our0DdJkqSpsFJyZEmSJK3gcMmRb1p8nOTHgbnWHZIkSZo2oyRHPj/JN4FvA58FbgL+\nsXG/JEmSpsYoi9L/GHgM8I2qehDwVOCqpr2SJEmaIqMEVPuq6r+BNUlmquoK4JGN+yVJkjQ1RtmH\n6rYkJwFXAu9Psgu4s223JEmSpseKufySbAT+j8Fs1vOBk4H3V9X3ezee1Mknn9y3muXqbVbejT3v\nNgmbdbqx5+qYtvdNklo54lx+VbUwG3UAePdR7JMkSdIx4XAbe97JYCPP5VRVHZWppXvd614jlWv5\nP+QusxxdZnAOHjw49rItdZlVm4RZQOg+ozWqVrMyzgxJ0nQ43D5UG/tWnuQU4J3AWQyCs9+qqi/1\nrVeSJGmSjLIovY+3Av9QVc9OshbY0Lg9SZKkVdcsoEqyCXhCVb0IoKr2A7tbtSdJkjQuLW8texDw\nX0neleSrSf4yyYkN25MkSRqLlgHVWuARwJ9X1SOAeeB1DduTJEkai5ZrqG4BbqmqLw+PP8wyAdXt\nt99+1+O5uTnm5sy/LEmSpkuzgKqqvpfk5iRnVNU3gKcBNywtd8opp7TqgiRJ0qpofZff7zFIV7MO\n+DfgxY3bkyRJWnVNA6qqugZ4VMs2JEmSxm0yEshJkiRNsdaX/FY0MzMzUrl169aNXGeXsl3Ld1k0\nv379+rH3oesi/40bR98gv0vZU089deSyp59++shlzzjjjJHLAmzevHnkshs2jL4PbZc0PHv37m1S\ntmtKoi593rRp08hlu7xvs7OzI5edlETRko5fh/s95AyVJElSTwZUkiRJPRlQSZIk9WRAJUmS1JMB\nlSRJUk8GVJIkST0ZUEmSJPVkQCVJktSTAZUkSVJPBlSSJEk9jT31zA9/+MORys3Pz49c5/79+zv1\noUvKjqpqUrZLGpAuKTi69KFrP7qU7fIed0m3MurnZ8GBAwdGLts1lcuouoxfl7JdxgO6fTa6vG9d\nP3OSdCxoOkOV5PVJbkhyXZIPJBk9uZ0kSdKUaBZQJdkKvAR4RFU9FJgBnteqPUmSpHFpecnvB8A+\n4MQkB4ATge80bE+SJGksms1QVdX/AH8G/AfwXeD2qvqnVu1JkiSNS8tLfj8J/D6wFbgfsDHJ81u1\nJ0mSNC4tF6U/EvhiVX2/qvYDHwUeu7TQ7t277/ras2dPw+5IkiS10XIN1deAP0xyArAHeBqwbWmh\nTZs2NeyCJElSey3XUF0DvBe4Grh2ePodrdqTJEkal6Ybe1bVm4A3tWxDkiRp3Ew9I0mS1JMBlSRJ\nUk9jz+U3ar60Lvn5uubya5V7rEseti5541rl/ZsUk9LnVv3oUu/MzMzIZWdnZzv1o0vdrfIrmvdP\n0rHCGSpJkqSeDKgkSZJ6MqCSJEnqyYBKkiSpJwMqSZKkngyoJEmSeprIgKrLLdqaPF1um9dk6brl\niCRpwIBKR92+ffvG3QUdIQMqSToyExlQSZIkTRMDKkmSpJ4yztQPScw7IUmSpkZVLZs/bKwBlSRJ\n0rHAS36SJEk9GVBJkiT1NHEBVZLzknwtyTeTvHbc/dGhJfmrJLcmuW7RuVOTXJ7kG0k+neSUcfZR\nh5ZkS5IrktyQ5PokrxiedwwnXJK5JFcl2ZFkZ5I3DM87dlMkyUyS7Uk+MTx2/KbYRAVUSWaAtwPn\nAWcCFyR5yHh7pcN4F4OxWux1wOVVdQbwz8NjTaZ9wCur6izgHOBlw583x3DCVdUe4NyqejjwMODc\nJI/HsZs2FwI7gYXFzI7fFJuogAp4NPCtqrqpqvYBHwKeNeY+6RCq6krgtiWnzwfeM3z8HuCXVrVT\nGllVfa+qdgwf3wncCNwfx3AqVNX/Dh+uA2YY/Cw6dlMiyQOApwPvBBbuGnP8ptikBVT3B25edHzL\n8Jymx32q6tbh41uB+4yzMxpNkq3A2cBVOIZTIcmaJDsYjNEVVXUDjt00eQvwGuDgonOO3xSbtIDK\nPRyOITXYk8MxnXBJNgIfAS6sqjsWP+cYTq6qOji85PcA4IlJzl3yvGM3oZI8A9hVVdu5e3bqHhy/\n6TNpAdV3gC2LjrcwmKXS9Lg1yX0BkpwG7Bpzf3QYSWYZBFOXVtVlw9OO4RSpqt3A3wM/h2M3LR4L\nnJ/k28AHgackuRTHb6pNWkB1NfDgJFuTrAOeC3x8zH1SNx8HXjR8/CLgssOU1RglCXAJsLOqLl70\nlGM44ZLce+EOsCQnAD8PbMexmwpVdVFVbamqBwHPAz5TVS/A8ZtqE7dTepJfBC5msMjykqp6w5i7\npENI8kHgScC9GVzv/yPgY8DfAA8EbgKeU1W3j6uPOrThXWGfA67l7ksLrwe24RhOtCQPZbBoec3w\n69KqenOSU3HspkqSJwGvqqrzHb/pNnEBlSRJ0rSZtEt+kiRJU8eASpIkqScDKkmSpJ4MqCRJknoy\noJIkSerJgEqSJKknAypJY5fkC8N/fyLJBUe57ouWa0uSjib3oZI0MZI8mcEmh8/s8Jq1VbX/MM/f\nUVUnHY3+SdKhOEMlaeyS3Dl8+EbgCUm2J7kwyZokb06yLck1SX5nWP7JSa5M8jHg+uG5y5JcneT6\nJC8ZnnsjcMKwvksXt5WBNye5Lsm1SZ6zqO5/SfK3SW5M8r7VfTckTaO14+6AJHF36pvXAq9emKEa\nBlC3V9Wjk6wHPp/k08OyZwNnVdW/D49fXFW3DXPbbUvy4ap6XZKXVdXZy7T1K8DPAg8DNgNfTvK5\n4XMPB84E/hP4QpLHVZWXCiUdkjNUkiZJlhz/AvDCJNuBLwGnAj81fG7bomAK4MIkO4B/BbYAD16h\nrccDH6iBXcBngUcxCLi2VdV3a7AmYgewtcf3JOk44AyVpEn38qq6fPGJ4Vqr+SXHTwXOqao9Sa4A\n5laot/jRAG5h9mrvonMH8HelpBU4QyVpktwBLF5A/ingpUnWAiQ5I8mJy7zuZOC2YTD1M8A5i57b\nt/D6Ja4Enjtcp7UZeCKwjR8NsiRpRf6vS9IkWJgZugY4MLx09y7gbQwut301SYBdwC8Pyy++RfmT\nwO8m2Ql8ncFlvwXvAK5N8pWqesHC66rq75I8ZthmAa+pql1JHrKkbpY5lqR7cNsESZKknrzkJ0mS\n1JMBlSRJUk8GVJIkST0ZUEmSJPVkQCVJktSTAZUkSVJPBlSSJEk9GVBJkiT19P9ZTALeax5FvAAA\nAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "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": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nT5UJ3wAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlQAAACbCAYAAACkuQVhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEJxJREFUeJzt3WuQZdVZxvHn6fvcG5yRcOkwqIAwlRgwoYAwEExMIRVI\n1BiCmmC0YllJzIgJFUKVftIKFmUFUymtiiAJ5KaSSJJSCKhIOsQwAWa4DeFiBeQijOB00zND93Q3\nrx/O7qFpuqf3mj2r997D/1fVxdn7vGetNWedPv2yL+t1RAgAAAD7r6vuAQAAALQdCRUAAEBFJFQA\nAAAVkVABAABUREIFAABQEQkVAABART11dm6bNRsAAEBrRITn2581obJ9jqQrJXVLuioi/mJuzOGH\nH/6q142NjWnVqlWv2Nfd3V26366utANvKWtx5Vq3K6Vde965nFfqe5HS9kJjHhkZ0eDgYKnY+UxP\nT2eJlaSpqanaYycnJ0vH5vpcSPN/NiYnJ9Xb2/uq/T09eb4qJiYmSsemvMesrwdgqWU75We7W9Ln\nJZ0j6URJF9o+IVd/AAAAdcl5DdUpkh6NiMciYlLS1yW9O2N/AAAAtciZUB0p6YlZ208W+xbV19eX\nZUBYGgMDA3UPAfsp9RQxAKAj57fnfl/E0N/ffyDHgSVGQtVeKdcqAgBelvOi9KckDc3aHlLnKNUr\njI2N7X3c19dHMgUAAFonZ0J1p6Rjba+X9LSkCyRdODdo7t18AAAAbZMtoYqIKdsfk/RddZZNuDoi\nHszVHwAAQF2yrkMVETdKujFnHwAAAHWrdaV0KX0xwjJeeumlA97m/rSdKzbXgpM52871XuRcwJHF\nIQEAZXGPNAAAQEUkVAAAABWRUAEAAFREQgUAAFARCRUAAEBFJFQAAAAVkVABAABUREIFAABQEQkV\nAABARSRUAAAAFZFQAQAAVFR7Lb+ennJD6Ooqn/ulxKZqQp25nLUKU8acMo4cNRtTx5AqZcwp71tK\nDcTp6eksY0gdR65ajCn/vlxjkNLeu5TPRa7PUOpcU5cSyC/rESrbQ7Zvtf2A7fttfzxnfwAAAHXI\nfYRqUtLFEbHV9kpJd9m+JSIezNwvAADAksl6hCoinomIrcXjnZIelHREzj4BAACW2pJdlG57vaST\nJN2xVH0CAAAshSVJqIrTfddL2lQcqQIAADhoZL/Lz3avpG9I+nJE3DD3+ZGRkb2PBwYGNDAwkHtI\nAAAAB1TWhMqde4avlrQtIq6cL2ZwcDDnEAAAALLLfcrvrZJ+W9LZtrcUP+dk7hMAAGBJZT1CFRHf\nF6uxAwCAgxzJDgAAQEW1l54pWyIiZwmOXKUyUuQqUZEqV+mZFDlLjOQqHZRrzE0pR9K22JyaMg4A\nzcIRKgAAgIpIqAAAACoioQIAAKiIhAoAAKAiEioAAICKSKgAAAAqIqECAACoiIQKAACgIhIqAACA\nikioAAAAKqq99MzExESpuJTSLF1daXliX19fltienvJvb+qYc7WbMuYU/f39pWOXLVtWOnb16tVJ\n4zjkkENKxw4ODpaOHRoaKh179NFHl45NKVPz/PPPl46VpOeee650bG9vb+nY448/vnTshg0bSsce\ndthhpWNTPm9S2u/Jrl27ssSmjHnlypWlY6W0+cv1HZAipbxPajmw8fHx0rG7d+8uHTs6Olo6dnJy\nsnRs6nd4yndcyndtyjhSYnOVMEtV9jO3r785C/7m2P51SSFpvkwmIuKbZTq33S3pTklPRsR5ZV4D\nAADQJvv6X5Hz1EmoFlIqoZK0SdI2SavKDgoAAKBNFkyoIuJ3qjZu+yhJ50r6c0l/XLU9AACAJlr0\nRKft19m+2vZNxfaJtn+vZPuflXSJpGacJAUAAMigzJVjX5R0s6Qjiu1HJF282Itsv0vS9ojYovmv\nwwIAADgolLmdY21E/L3tSyUpIiZtT5V43emSzrd9rqQBSattXxsRH5wdNPsumN7e3qS76AAAAHIZ\nHh7W8PBwqdgyCdVO2z81s2H7VEmL3h8aEZdJuqx4zVmSPjk3mZKkFStWlBooAADAUtq4caM2bty4\nd/vyyy9fMLZMQvUJSd+R9DO2fyBpnaT37se4yi8sAgAA0CKLJlQRcZftMyUdr861UA9FRPlVyTpt\n3Cbptv0bIgAAQLMtmlDZXibpI5LOUOco07Dtv4mI8svNAgAAHMTKnPK7VtILkj6nzhGq35R0naTf\nyDguAACA1vBi9Wtsb4uIExfbt1+d27Fq1YFfQD2l7l9qfK7YXHWSUt+LlLpKKbEp9bZytSul1QhL\nic1Vj6q7uztLuzlNTZW5CTg9NmU+ACCXiJj3D2uZv8x32z5tZqO4y++uAzUwAACAtttXceT7ZsXc\nbvsJda6her2kh5ZgbAAAAK2wWHFkAAAALGJfxZEfm71t+6fVWfEcAAAAs5Qpjny+7Uck/USdtaQe\nk3Rj5nEBAAC0RpmL0v9M0mmSHo6IYyS9XdIdWUcFAADQImUSqsmIeE5Sl+3uiLhV0pszjwsAAKA1\nyizsucP2KknDkr5ie7uknXmHBQAA0B5ljlC9R9JuSRdLuknSo+IOQAAAgL3KFEeeORo1LemLWUcD\nAADQQvta2HOnOgt5ziciYvWBGMCaNWtKxeUq4yKllQ3JVbokV1mNnGV4UsqipMTmKsMjSXv27Ckd\nm/K5SGk3JTblc5E61ylzsmzZsizjGB0dLR27e/fu0rGpJYlS5jr1fS4rZ2kdyvbsn1xznRNzXZ99\nrUO1smrjtgclXSVpgzrJ2e9GxA+rtgsAANAkZS5Kr+KvJP1LRLzXdo+kFZn7AwAAWHLZEirbayRt\njIiLJCkipiSVP74PAADQEmkXoKQ5RtL/2r7G9t22/9b28oz9AQAA1CJnQtUj6WRJfx0RJ0vaJenS\njP0BAADUImdC9aSkJyPiR8X29eokWK8wOjq692d8fDzjcAAAAPLIdg1VRDxj+wnbx0XEw5LeIemB\nuXFll00AAABoqtx3+f2hOuVq+iT9l6QPZe4PAABgyWVNqCLiHklvydkHAABA3XJeQwUAAPCakPuU\n36KmpqZKxaWUyUgtF5BSvqQJpQhSSguklNRIjZ+cnCwdOzExUTo2Za77+/tLx0pST0/5j3zKe/Hi\niy+Wjk0poVL290NKn+sUTSiN1JSSGk0oKYWlkbP0U93t5vRa/dxzhAoAAKAiEioAAICKSKgAAAAq\nIqECAACoiIQKAACgIhIqAACAikioAAAAKiKhAgAAqIiECgAAoCISKgAAgIpqLz3T29tbKi6lzMn4\n+HjSGKanp0vH5io7kVJeIGe5jpS2U0r25Cppk1KaRUqb65QxN6E0S1NKVDThfQOWWq7Pcs7fkSaU\nyzmYvgOyHqGy/WnbD9i+z/ZXbacVXgMAAGiBbAmV7fWSPizp5Ih4g6RuSe/P1R8AAEBdcp7ye0HS\npKTltqclLZf0VMb+AAAAapHtCFVE/J+kv5T035KeljQSEf+aqz8AAIC65Dzl97OS/kjSeklHSFpp\n+7dy9QcAAFCXnBelv1nSDyLi+YiYkvRNSafPDRodHd37k3p3HgAAQBPkvIbqx5L+xPYySeOS3iFp\n89ygNWvWZBwCAABAfjmvobpH0rWS7pR0b7H7C7n6AwAAqIvrXFTLdgwNDZWKTVnsMSVWYmHP/W2b\nhT1fdrAv7Jny70t53wDUpwmLAbdxYc+ImPeNo/QMAABARSRUAAAAFdVey6+slNMIOU855DolltJu\nd3d3ljGktl22DqOU9u9Lmb+JiYnSsVLa6cRcp3dTDAwMlI5du3ZtUtvr1q0rHfvCCy+Ujn388cez\ntJt6ejdFyudz+fLlWWL37NlTOnb37t2lY6W0U925LoHIdfo69Tuuv798BbQVK1aUjl29enXp2J6e\n8n96U/+e7dixo3Rsyp31bftc5Gp7bGxswec4QgUAAFARCRUAAEBFJFQAAAAVkVABAABUREIFAABQ\nEQkVAABARY1MqCiS3G7MX3ul3HKN5mGV+vbatWtX3UNARY1MqFLXFkKzkFC118jISN1DQAUkVO2V\nurYYmqeRCRUAAECbkFABAABU5DorPdtuX5lpAADwmhUR89apqTWhAgAAOBhwyg8AAKAiEioAAICK\nGpdQ2T7H9o9tP2L7U3WPBwuz/Xe2n7V936x9h9q+xfbDtm+2PVjnGLEw20O2b7X9gO37bX+82M8c\nNpztAdt32N5qe5vtzxT7mbsWsd1te4vt7xTbzF+LNSqhst0t6fOSzpF0oqQLbZ9Q76iwD9eoM1ez\nXSrplog4TtK/FdtopklJF0fEBkmnSvpo8fvGHDZcRIxLOjsi3iTpjZLOtn2GmLu22SRpm6SZi5mZ\nvxZrVEIl6RRJj0bEYxExKenrkt5d85iwgIgYljR3ae3zJX2pePwlSe9Z0kGhtIh4JiK2Fo93SnpQ\n0pFiDlshImZWguyT1K3O7yJz1xK2j5J0rqSrJM3cNcb8tVjTEqojJT0xa/vJYh/a47CIeLZ4/Kyk\nw+ocDMqxvV7SSZLuEHPYCra7bG9VZ45ujYgHxNy1yWclXSJp9vL2zF+LNS2hYg2Hg0h01uRgThvO\n9kpJ35C0KSLGZj/HHDZXRLxUnPI7StKZts+e8zxz11C23yVpe0Rs0ctHp16B+WufpiVUT0kamrU9\npM5RKrTHs7ZfJ0m2D5e0vebxYB9s96qTTF0XETcUu5nDFomIUUn/LOkXxdy1xemSzrf9E0lfk/RL\ntq8T89dqTUuo7pR0rO31tvskXSDp2zWPCWm+Lemi4vFFkm7YRyxqZNuSrpa0LSKunPUUc9hwttfO\n3AFme5mkX5a0RcxdK0TEZRExFBHHSHq/pH+PiA+I+Wu1xq2UbvtXJF2pzkWWV0fEZ2oeEhZg+2uS\nzpK0Vp3z/X8q6VuS/kHS6yU9Jul9ETFS1xixsOKusO9Julcvn1r4tKTNYg4bzfYb1Llouav4uS4i\nrrB9qJi7VrF9lqRPRMT5zF+7NS6hAgAAaJumnfIDAABoHRIqAACAikioAAAAKiKhAgAAqIiECgAA\noCISKgAAgIpIqADUzvbtxX+Ptn3hAW77svn6AoADiXWoADSG7beps8jheQmv6YmIqX08PxYRqw7E\n+ABgIRyhAlA72zuLh5dL2mh7i+1NtrtsX2F7s+17bP9+Ef8228O2vyXp/mLfDbbvtH2/7Q8X+y6X\ntKxo77rZfbnjCtv32b7X9vtmtf0ftv/R9oO2v7y07waANuqpewAAoJdL33xK0idnjlAVCdRIRJxi\nu1/S923fXMSeJGlDRDxebH8oInYUte02274+Ii61/dGIOGmevn5N0i9IeqOkdZJ+ZPt7xXNvknSi\npP+RdLvtt0YEpwoBLIgjVACaxHO23ynpg7a3SPqhpEMl/Vzx3OZZyZQkbbK9VdJ/ShqSdOwifZ0h\n6avRsV3SbZLeok7CtTkino7ONRFbJa2v8G8C8BrAESoATfexiLhl9o7iWqtdc7bfLunUiBi3fauk\ngUXaDb06gZs5ejUxa9+0+K4EsAiOUAFokjFJsy8g/66kj9jukSTbx9lePs/rVkvaUSRTPy/p1FnP\nTc68fo5hSRcU12mtk3SmpM16dZIFAIvi/7oANMHMkaF7JE0Xp+6ukfQ5dU633W3bkrZL+tUifvYt\nyjdJ+gPb2yQ9pM5pvxlfkHSv7bsi4gMzr4uIf7J9WtFnSLokIrbbPmFO25pnGwBegWUTAAAAKuKU\nHwAAQEUkVAAAABWRUAEAAFREQgUAAFARCRUAAEBFJFQAAAAVkVABAABUREIFAABQ0f8DTa6OCIcz\nv+YAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\nSUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAI0AAACPCAYAAADHlliuAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGLBJREFUeJztnVtsY+tVx3+ft+/29i224yQzk+lp+9AHpNOX8lAq+lBV\np0Jq4YWqEgKVUvEABQESbXmgBV5KJSoED0ioLeKmFgQqKi/QVgKpPHA5qKcXzqVnTjOTjJ2L49jx\n/f7xYK9vtj3JnLHjTOxk/6WtOJ5k5zv1v+tb31r/9d9Ka40LF7PAc9ULcLF6cEnjYma4pHExM1zS\nuJgZLmlczAyXNC5mxtykUUq9oJR6VSn1ulLqk4tclIvlhpqnTqOUsoDXgPcBeeB/gI9orV9Z7PJc\nLCPmjTTvAu5pre9rrXvAV4EPLW5ZLpYZ3jl/bwvYc3z/EPhx5w8opdxS84pDa63Oen/eSOMS4gZj\nXtLkgduO728zijYubgDmJc2LwNuVUneVUn7gw8DXF7csF8uMuXIarXVfKfWrwL8CFvAl9+R0czDX\nkfupbuwmwiuPRSfCLm4wXNK4mBkuaVzMDJc0LmaGSxoXM8MljYuZ4ZLGxcxwSeNiZrikcTEzXNK4\nmBkuaVzMjHlFWAAope4DVWAA9LTW71rEolwsNy5EGkZirPdqrU8WsRgXq4FFbE9ndkJdXF9clDQa\n+JZS6kWl1McXsSAXy4+Lbk/v1lrvK6UywDeVUq9qrb+9iIU9ayj1KGBaloXH48Hj8WBZlvl3+ZnB\nYGCufr9/Jeu9SlyINFrr/fHXolLqa4xGW1aONEIIpRSWZREOh4lEIkQiEcLhMJZl4fV6sSwLy7I4\nPT01V7VaRYRsN8XrZ27SKKXCgKW1rimlIsD7gd9b2MqeIZRSJrJ4vV5s22ZtbY21tTVSqRR+v99c\nPp+PQqFAoVBgOBxSq9WAEWGUUjeCOBeJNOvA18Yh2wv8rdb6GwtZ1TOGkEYiim3bZDIZtra22Nzc\nJBQKmSsQCBAOhxkOh1SrVTweD8PhEHAjzZtCa70DPL/AtTwzeDwesx15PB4TQXw+H6FQiHQ6zcbG\nBnfu3OHOnTtmuwqHwwSDQdrtNuVymXw+j8fjmSDLTSDORRPhlYNSCr/fTyAQIBAIEAwGsW2baDSK\nbdvEYjE2NjbY2Nhgc3OTXC5nfi4QCOD3+4lEIoRCIfx+v0mUh8Mhg8Hgiv/rng1uJGkCgcAESdLp\nNOl0mrW1NfNVrmQyaaKQz+fDsiyi0aghjdc7+p9QcpqbgBtJGr/fTzQaJZVKsba2xq1bt9ja2mJr\na4uNjQ0TeeSSJFm2NSFNIBDAsiyGw+FEbnPdcWNII1HAsixCoRDxeHwid9ne3mZ7e5vbt2+brUu2\nIyeGwyHRaNQcySORCJ1Oh06nAzCxRV3X/OZGkMZZrAsEAsTjcbLZrEl0c7kcmUyGWCxGMBjE5/Ph\n9XrP3G6UUoRCIVKpFFtbW7ztbW8z9ZrT01OGwyHD4RCttfl63XDtSTN9nA4GgyQSCdbX17lz5w5v\nfetbSSaTpFIpYrGY2XKEaGchHA6bba3VanFwcMDR0RHD4ZBWq2WqxcC1TI6vPWkAU7Tz+/0Eg0ET\naW7fvs1zzz1njtORSIRAIGCIdl5i64w0Wmt8Ph9aa1qtFicno4a/1vpaRhm4AaSR1oAQJhqNkkgk\nyGQybG5ucvv2bbMdyVfBeR96KBQimUzS7/fx+XwMBgM6nQ71ep1yuUyn06Hb7dLr9UyVWK7rkCzf\nCNJI4huPx8lkMmSzWRKJBOFw2ByjLct6qiOzUgqfz0ckEqHf7+PxeOh2u+Yovra2Rr1eN1etVqPd\nbpur0+msfAX52pPG4/GYPCabzbKxsWFIEwqF8Hq9E8dpwZM+UCnwyfHd4/EQiURYW1tjc3OTk5MT\nSqWS+epMlHu93sT9V5E4N4I0oVDIJL+3bt0im80Sj8cJh8OGNE7pw5tBIo3Ue4QwzWaTRqPBwcEB\nhUKBg4MD03qQiFSv11eaMPAUpFFKfRn4KeBIa/1j4/dSwN8B28B94Ge11pVLXOfMEAJMk2Zra4t0\nOk08HjeRxonztg65n2xP0qcCiMViRlszGAxIpVKmACjbXq/Xo1armWKg3GsVifM0keYvgD8F/srx\n3qeAb2qtPz82nv7U+LpyOGUOQhjbtkkmk2QyGdbX10kmk0SjUXw+HzApqhoMBqbWInUWIYkky+f9\nTelDhcNhEokEnU4HrTX9fp9ms0m5XDYnrcFgsJKEgacgjdb620qpu1NvfxD4yfHrvwT+nSUhDTw6\nYktdRk5M6XSa9fV1YrEYkUjEfID9fp9er0e326Xb7T5GoGAwaKQRTyKNvJbIJoQTwsjfFMIMh8OV\njDbz5jTrWuvD8etDRtqapYB8gFKXOSvSCAmckabb7dJqtWi32/R6PUOkwWCAbdtmWzrvb8KjynM4\nHDaEiUQiVCoVDg8PDWn6/b4hzSoW/y6cCGut9bL561mWhc/nIxAIEAqFiEajxONx1tbWyGQyZiuR\nJmO326XZbFKv12k0GqbG0u12TZ4ipAmFQhP5jTN3EkiuJEf9YrFIPp/Htm1CoZDJaVaRMDA/aQ6V\nUjmt9YFSagM4WuSiLgKlFF6v1yjsRPsiPSUhSr/fN1+Pjo4oFosUi0VKpZIhivxMKpUyHfFUKkUw\nGDTRSk5GTiLKa5/Ph1KKeDxOLpfjueeeo9PpcHx8TKVSoVwuUy6XJ7arVdiq5iXN14FfAP5w/PWf\nFraiC8JZAZYoEw6HCQQCppDX7/fpdrt0Oh2azSb7+/vs7u7y4MED8vn8RMMRMDob0dokEglzxePx\niQanHN8lKfZ4PMRiMXK5HO12G4/HQz6fJ5/Po7U2kW2Vos/THLm/wijpTSul9oDfBT4H/L1S6mOM\nj9yXuchZcVakEdJIpOl0OjQaDU5PT9nf3+eNN97gtdde44033jD3ke0nk8lMXOvr67TbbWBU6JPo\nIMdrIY5IQSXSeDweotEowWDQEKZYLJqItyri9Kc5PX3knH9634LXshBMRxqnNFMKedO9okKhwM7O\nDq+88govv/zyxJHd6/VSKpVMhVd6SwDBYJBYLGYIIomycyQGwLZt4FHPajAYUKvVODw8xOfz0ev1\nVqovdS0rws4PbfrSWtNutzk9PeXo6Ij9/X1KpRK1Wo1ut2vuIQ3GwWBAu92mVqvh9XoZDodEIhFi\nsRipVIpWqzVxWnPKPqdfO+s/sgU6r1XBtSQNPCLOdItgOBzSbrepVCocHR2Rz+cpFosTpJEPUP6f\nL6SR343FYiSTSWq1Gs1m0xDmrEgx3eGeLh5Ok2cVcC1J4yTMWY3IVqtlIk0+n+f4+PjcSKO1Np1p\nIU8qlSKbzVKv12m1WuZoL0nstMh8Oso4ibNqhIEbQhoncYQE1WqVYrHI/v4+Jycn1Ov1xyKNvBZZ\ng9x7fX2dSqVCvV6n3W6buo6QYLrx+WaRxkmeVcC1I43ogG3bJpVKkclkTEdbElWfz0c4HCYej5NK\npcxJarp5eRamE23bts2R/jxNjiTezWaTWq1mIpS0LJz1mVUgzrWzT3OOqEjrQARXUksR0kgya9s2\nwWDwqUgDk0d65wyU1GZg8sOXNkWz2aRardJoNAxppIC4KoU9uIakebNII6RyRppYLHamTOI8SKQJ\nh8MTkea833+zSCMV4VUhzbXbnpwTlKlUymhnzoo08XjcFNjO62BP3xsmI41t26YG5Iw0TjgjTa1W\no9FomFxItqdVwrUjjSS6tVqNk5MTisUiXq/XkAQe/9BFfRcOh40fjfNyjuX6/X62t7dZX1/Htu0J\n5Z9UdqeP+9LtTqVS9Ho96vU6p6enlEolIpEI7XbbJMnXoo2wapAWQb1e5+TkxESZeDxupgPOIo2T\nOE4vGtmG5IpEIty9e5dsNott22bLk7+ttZ44sTlzLPn71WqVUqlkdD2A0Q6vQm5z7UijtTZa3HK5\nTDQaNUP+EgWENDJS6yRMJBIxXWzpZMskg1zb29uGNF6vd6LWMhgMJpqVgCGNbJ3lcpnDw0NisZjx\nupFIJeRZZsyrEf4s8EtAcfxjn9Za/8tlLXIWSKSR7SkYDJJOp2k2m+YDEUWfCK1s256wS3POaUej\nUdPdzmQyrK2tkc1mzRiviKokNxEPPmfj0e/3G8LEYjFKpRKpVIp4PG5GYQaDwcSc1DJjXo2wBr6g\ntf7CpazqAtBa0+v1aLVaVKtVwuEwtVpt4rQCj4gzGAzIZrO0Wi2jfXFqZSTSiAwiHo8TjUaxLItO\np0OlUqHRaBgBV71eNxYmcsm6JMqJhlgG9iSRlrHeZce8GmFYUv9g2Z6azSaWZREIBEyPqNPpGBWe\nkMbj8ZDL5bAsC9u2zYco+Ywzp5FIJCKrTqdDv9/n+PjYXKVSiWw2Sy6XI5fLTRg8yu8JEcWiTeQa\nQtxlx0Vymk8opX6e0YPdf2tZRlickQZG1V8hjUQaIY3kNqJzyWazhmxnnZ6ETGItIuO3+/v7PHz4\nkHw+z97eHnfv3qXb7eL1eo2pgAzVOWWg6XSaRqNhphUqlcq1Js2fAb8/fv0HwB8BH1vIii4IIQ2M\nTiQej+ex7UmIIKSIRqNn5hHy3vQHWalU6Pf7Znva399nZ2eHe/fu8frrr9NqtYzhYy6Xm2g9OI//\nmUyGfr9vuu7BYPD6kkZrbTTBSqkvAv+8sBUtAE6Vv3ywBwcH7OzsmGqx2KfJeO20cAoekUakofK1\nWCxyfHxsvu7u7pLP5ymVSjQaDWq1mtEAHx8fG1WeRBnZGm3bpt1uk0gkzFpkAM/ZzFw2zEUapdSG\nGE8DPwN8f3FLujjk6Asj0oikU2oi2WyWbDZr5rzPklAA5hgspzG59vf32d/fN6O3Qp6TkxMzmlut\nVg1pJNKEQqEJ8ti2Tb/fJx6Pm5qNTCv0+31DtmU7Tc2jEf4M8F6l1POMTlE7wC9f6ipngFOGIElx\npVKhUCiglKLT6ZiEMxKJkEgkzO86db1OiJRCEt3d3V329vbY3d3l4cOHxiFCGpFS8T05OeH4+Bif\nz0cwGDTSC/leZKASaaT5KfUkGeRbNsyrEf7yJaxlYZgO6ZVKBY/HYyrF4vKQyWRMYuyMMtO1Eok0\nx8fHFAoFHjx4wM7ODj/60Y/Y2dl5bKy3Xq9PRBqJKs46kWxDXq+XRCIxEWm63a4hzDLWba5dRXga\nEm0ajYbZggqFgnG9krFb8QkOBAKPVXjz+TwPHz5kb2+PfD5PoVCYUPtNC6mcGmSZgJBBu0gkYo7Y\nsj1KR15cLYLBIJXK6DAqIvZlwo0gjfMIrrXm4OCAQCAAQKvVeqz/5ExC+/0+e3t7Zjva29vj+PiY\ncrlMq9U6U3kneZTMWEm9SPQ3Mrgnx3jpyOdyOer1uulndbtdqtXq0jUxbwxpADNqK4SRXCWZTJor\nHo9PbDW9Xo+9vT0ePHjAgwcP2N3dNflLs9mc0AULhDTS0ZYoI+PB0j6Q0WFx0Go0Gmat3W6XWq12\nrlnkVeLGkEb6Os1mE3iUp0gFN5PJmERWTi4inpIoc//+fXZ3d41BgKjuptFut+n3+9TrdSzLMltQ\nIpEglUpNmAn4/X6zPckaJcIcHR25pLkqTOtvJSFWSpmI0m63jZzCaVDU7/cpFApmzEW0L0+qoUgS\nK/UikXmWy2WKxeLE6clpLGDbNp1Ox0QikaBalrVUUws3gjTTcOY4MtctUoqzchoZ1G80GhPD+ufB\nSVJxpWg0GoY0slXJKUlyHul4y0nKaYQ9PblwlbhxpHHmOFLCbzQaVCoV06CcHnBrNpu0Wi1jLC33\nedKH5zQtkshWqVQoFotG0O4kjUg1gMdII/qcqyaL4MaSpt/vmyLfWW2E6dmnWQbbztoOncRMpVJm\nzkoqxJKcS89KSON80suytBRuHGng2buJ93o908X2eDxG8F4qlSZ8+JRSxu7NacJkWRbNZtOc1q46\n4txI0jxr9Ho9U1wcDAYkk8mJZ0qJvaxTvyMegZubm3i9XsrlsikcXnXEcUnzDCCRZjAY0Gq1SCQS\nEw8kSyaTRm8sxtYindjc3DTbo5giXTWeSBql1G1GMs8so+bkn2ut/0StgI/wMkEMH9vtNkopQxq5\npM0gNrXSSJXaUa/XM62JpScN0AN+Q2v9klIqCvyvUuqbwEdZUh/hZYTTNUIKjKenp+YkJbUaEYP5\n/X5isZgRaUmJQH7nqo0DnkgarfUBcDB+XVdKvQJsseQ+wsuMadcKsXULh8PGJcvn8xmtjc/nMxXi\n4+NjU0cSMl2FdOKpc5qxuPydwH+xxD7CywqndNRJGq21sVVrNpuGKDKIF4vFaLValEolIyTrdrtG\nIHYVp6mnIs14a/pH4Ne11rUpSeTS+QgvM5yRBjDOWrlcziTL0mIQkVa9Xufg4IBEIkEkEqHVak3o\nbZ41nka552NEmL/WWov169L6CK8CJCkWXY0o/A4PDzk4ODDP0pRLbPqz2Sybm5tYlmUmF8RMSfAs\nos6bnZ4U8CXgZa31Hzv+aWl9hFcBIrmQmou0FwqFghltEZ9iEYbF43HW19fZ3t424zeDwWCiH/as\ntqk3izTvBn4O+J5S6jvj9z7NkvsILzvEekRmt8U0Umzw5d/kFOX3+w1pxMZNCHNycjJhKXvlkUZr\n/R+cb3y0lD7CqwAhi+hnJNLIeIvMfcfjcbTWE5EGMHKLUqlkrE7kOP8sNMVuRfgKML2VtNttYz/i\nNFxKp9NGIyzmAVprI9ByRqYnicIWDZc0SwBpM5TLZfMshXQ6TbVapdlsmnHeaDRq+lCJRMI890Eq\nzSKEdyPNDcB0QzORSFAul80MumxbYkAgNiUSaeRZCzKOc9lwSbMEENKIEUAymaRSqRjS+P1+YyIQ\nCAQ4OTkxA3bhcNicoJ6VIZJLmiWAJMYSLZxu6rFYjPX1dRKJBMlk0kQbeVpeNptlMBiYKOVUF14W\nXNIsAeS4LB92tVo1s1n9fp/T01Nu3bqFZVnGfcu2bTKZDLdu3QIetSdOT08vfb0uaZYAzsc6D4dD\narUaBwcH5hE/nU7HJMgbGxtm7CWdTlOv143tSbVaPdeWdpFwSbMEmJZOyFSlPBNKa21cupxd8HQ6\nTa/Xm2iAPgu9jUuaJYFTjC7uEiJ+Fy1xtVo1BgZyBM9kMqZuIyO/Z82XLxIuaZYQkhDLtEKr1TKe\nN+KYpbUmGAySTCYnjuAinZBin3jcLBIuaZYQTp2MzF2JfUmlUjFqv2AwaOo2TjetdrtNp9O5NH+b\nJ26ASqnbSql/U0r9n1LqB0qpXxu//1ml1EOl1HfG1wsLX9kNhnzYkq9MR5pms2kijcyHT7tpybzU\nZRT75tUIL62P8HXA9LBdq9UyvoGJRIJut0s6nTZ5jbhPSOSRaU1R+C0a82qEYUl9hK8j2u02pVKJ\nvb09AOOJLM6kcuqSSc1AIGD+/SoijYFDI/yfjHQ2S+kjfB0hpNH60cPfPR6PKfBNG2o7H1x/GaR5\nqkP9eGv6B0Ya4TojH+G3AM8D+4x8hF1cEuTYvbe3x6uvvsq9e/coFArmGeESacTCxGkccCWRxqER\n/hvRCOsl9xG+bpB6jViWHB0dUSgUWFtbIx6P02q1ODo6olKpPPaYw8uQScylEV52H+HrCKcnTrVa\npVAo4Pf7zfH66OiIYrHI4eGheU6mRKFFYx6N8O8AH1lWH+HrCCdhtNbUajUKhQKdTsc4oosxdrVa\nNY+EluLgoqEuS+XlzkItFs7cxPmEGL/fP+Fw7nz21EWds7TWZyZELmlcnIvzSHP1FgQuVg4uaVzM\nDJc0LmaGSxoXM8MljYuZ4ZLGxcy4tCO3i+sLN9K4mBkuaVzMjEsljVLqBaXUq0qp18cuoBe9332l\n1PfGEtP/nuP3v6yUOlRKfd/xXkop9U2l1A+VUt9QSiWedI+nuN/cUtgnyGvnWuOlyXWdfv+LvAAL\nuAfcBXzAS8A7LnjPHSB1gd9/DyMh2fcd730e+O3x608Cn7vg/T4D/Oac68sBz49fR4HXgHfMu8Yn\n3G/uNWqtLzXSvAu4p7W+r7XuAV8FPrSA+86tKtJafxsoT739QUa2toy//vQF7wdzrlFrfaC1fmn8\nug44LXhnXuMT7jf3GuFyt6ctYM/x/UMeLXheaOBbSqkXlVIfv+C9BJdhb/sJpdR3lVJfmmW7c2LR\nFrxTct0LrfEySXMZZ/l3a63fCXwA+BWl1HsWeXM9iuMXXfeFpbDTFrwXXeOi5bqXSZo8cNvx/W1G\n0WZu6LFaUGtdBL7GaAu8KA6VUjkYKRK5oL2t1vpIjwF8cdY1PsmCd541nifXvcgaL5M0LwJvV0rd\nVUr5gQ8zspKdC0qpsFLKHr+OAO9nMTJTsbeFBdjbjj9UwUxS2Kew4J1pjU+S6867RuDyTk/jjP0D\njDL2e8CnL3ivtzA6gb0E/GCe+wFfAQpAl1G+9VEgBXwL+CHwDSBxgfv9IqOn1nwP+O74w12f4X4/\nAQzH/43fGV8vzLvGc+73gYusUWvtthFczA63IuxiZrikcTEzXNK4mBkuaVzMDJc0LmaGSxoXM8Ml\njYuZ4ZLGxcz4f041SDwzkyB1AAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "for i in range(8):\n", + " figure(figsize=(2, 2))\n", + " imshow(solver.test_nets[0].blobs['data'].data[i, 0], cmap='gray')\n", + " figure(figsize=(10, 2))\n", + " imshow(exp(output[:50, i].T) / exp(output[:50, i].T).sum(0), interpolation='nearest', cmap='gray')\n", + " 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": { + "description": "Define, train, and test the classic LeNet with the Python interface.", + "example_name": "Learning LeNet", + "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": 2 + }, + "nbformat": 4, + "nbformat_minor": 0 +} + + +
    +
    + + diff --git a/gathered/examples/02-fine-tuning.ipynb b/gathered/examples/02-fine-tuning.ipynb new file mode 100644 index 00000000000..e3654d675cf --- /dev/null +++ b/gathered/examples/02-fine-tuning.ipynb @@ -0,0 +1,1237 @@ + + + + + + + + + Caffe | Fine-tuning for Style Recognition + + + + + + + + + + + + + +
    +
    +

    Caffe

    +

    + Deep learning framework by the BVLC +

    +

    + Created by +
    + Yangqing Jia +
    + Lead Developer +
    + Evan Shelhamer +

    +
    +
    + + { + "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": "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\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/gathered/examples/brewing-logreg.ipynb b/gathered/examples/brewing-logreg.ipynb new file mode 100644 index 00000000000..a75bd257be7 --- /dev/null +++ b/gathered/examples/brewing-logreg.ipynb @@ -0,0 +1,1226 @@ + + + + + + + + + Caffe | Off-the-shelf SGD for classification + + + + + + + + + + + + + +
    +
    +

    Caffe

    +

    + Deep learning framework by the BVLC +

    +

    + Created by +
    + Yangqing Jia +
    + Lead Developer +
    + Evan Shelhamer +

    +
    +
    + + { + "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/gathered/examples/cifar10.html b/gathered/examples/cifar10.html new file mode 100644 index 00000000000..6956d286115 --- /dev/null +++ b/gathered/examples/cifar10.html @@ -0,0 +1,162 @@ + + + + + + + + + Caffe | CIFAR-10 tutorial + + + + + + + + + + + + + +
    +
    +

    Caffe

    +

    + Deep learning framework by the BVLC +

    +

    + Created by +
    + Yangqing Jia +
    + Lead Developer +
    + Evan Shelhamer +

    +
    +
    + +

    Alex’s CIFAR-10 tutorial, Caffe style

    + +

    Alex Krizhevsky’s cuda-convnet details the model definitions, parameters, and training procedure for good performance on CIFAR-10. This example reproduces his results in Caffe.

    + +

    We will assume that you have Caffe successfully compiled. If not, please refer to the Installation page. In this tutorial, we will assume that your caffe installation is located at CAFFE_ROOT.

    + +

    We thank @chyojn for the pull request that defined the model schemas and solver configurations.

    + +

    This example is a work-in-progress. It would be nice to further explain details of the network and training choices and benchmark the full training.

    + +

    Prepare the Dataset

    + +

    You will first need to download and convert the data format from the CIFAR-10 website. To do this, simply run the following commands:

    + +
    cd $CAFFE_ROOT
    +./data/cifar10/get_cifar10.sh
    +./examples/cifar10/create_cifar10.sh
    +
    +
    + +

    If it complains that wget or gunzip are not installed, you need to install them respectively. After running the script there should be the dataset, ./cifar10-leveldb, and the data set image mean ./mean.binaryproto.

    + +

    The Model

    + +

    The CIFAR-10 model is a CNN that composes layers of convolution, pooling, rectified linear unit (ReLU) nonlinearities, and local contrast normalization with a linear classifier on top of it all. We have defined the model in the CAFFE_ROOT/examples/cifar10 directory’s cifar10_quick_train_test.prototxt.

    + +

    Training and Testing the “Quick” Model

    + +

    Training the model is simple after you have written the network definition protobuf and solver protobuf files (refer to MNIST Tutorial). Simply run train_quick.sh, or the following command directly:

    + +
    cd $CAFFE_ROOT
    +./examples/cifar10/train_quick.sh
    +
    +
    + +

    train_quick.sh is a simple script, so have a look inside. The main tool for training is caffe with the train action, and the solver protobuf text file as its argument.

    + +

    When you run the code, you will see a lot of messages flying by like this:

    + +
    I0317 21:52:48.945710 2008298256 net.cpp:74] Creating Layer conv1
    +I0317 21:52:48.945716 2008298256 net.cpp:84] conv1 <- data
    +I0317 21:52:48.945725 2008298256 net.cpp:110] conv1 -> conv1
    +I0317 21:52:49.298691 2008298256 net.cpp:125] Top shape: 100 32 32 32 (3276800)
    +I0317 21:52:49.298719 2008298256 net.cpp:151] conv1 needs backward computation.
    +
    +
    + +

    These messages tell you the details about each layer, its connections and its output shape, which may be helpful in debugging. After the initialization, the training will start:

    + +
    I0317 21:52:49.309370 2008298256 net.cpp:166] Network initialization done.
    +I0317 21:52:49.309376 2008298256 net.cpp:167] Memory required for Data 23790808
    +I0317 21:52:49.309422 2008298256 solver.cpp:36] Solver scaffolding done.
    +I0317 21:52:49.309447 2008298256 solver.cpp:47] Solving CIFAR10_quick_train
    +
    +
    + +

    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:

    + +
    I0317 21:53:12.179772 2008298256 solver.cpp:208] Iteration 100, lr = 0.001
    +I0317 21:53:12.185698 2008298256 solver.cpp:65] Iteration 100, loss = 1.73643
    +...
    +I0317 21:54:41.150030 2008298256 solver.cpp:87] Iteration 500, Testing net
    +I0317 21:54:47.129461 2008298256 solver.cpp:114] Test score #0: 0.5504
    +I0317 21:54:47.129500 2008298256 solver.cpp:114] Test score #1: 1.27805
    +
    +
    + +

    For each training iteration, lr is the learning rate of that iteration, and loss is the training function. For the output of the testing phase, score 0 is the accuracy, and score 1 is the testing loss function.

    + +

    And after making yourself a cup of coffee, you are done!

    + +
    I0317 22:12:19.666914 2008298256 solver.cpp:87] Iteration 5000, Testing net
    +I0317 22:12:25.580330 2008298256 solver.cpp:114] Test score #0: 0.7533
    +I0317 22:12:25.580379 2008298256 solver.cpp:114] Test score #1: 0.739837
    +I0317 22:12:25.587262 2008298256 solver.cpp:130] Snapshotting to cifar10_quick_iter_5000
    +I0317 22:12:25.590215 2008298256 solver.cpp:137] Snapshotting solver state to cifar10_quick_iter_5000.solverstate
    +I0317 22:12:25.592813 2008298256 solver.cpp:81] Optimization Done.
    +
    +
    + +

    Our model achieved ~75% test accuracy. The model parameters are stored in binary protobuf format in

    + +
    cifar10_quick_iter_5000
    +
    +
    + +

    which is ready-to-deploy in CPU or GPU mode! Refer to the CAFFE_ROOT/examples/cifar10/cifar10_quick.prototxt for the deployment model definition that can be called on new data.

    + +

    Why train on a GPU?

    + +

    CIFAR-10, while still small, has enough data to make GPU training attractive.

    + +

    To compare CPU vs. GPU training speed, simply change one line in all the cifar*solver.prototxt:

    + +
    # solver mode: CPU or GPU
    +solver_mode: CPU
    +
    +
    + +

    and you will be using CPU for training.

    + + +
    +
    + + diff --git a/gathered/examples/cpp_classification.html b/gathered/examples/cpp_classification.html new file mode 100644 index 00000000000..b8ee3e543b7 --- /dev/null +++ b/gathered/examples/cpp_classification.html @@ -0,0 +1,133 @@ + + + + + + + + + Caffe | CaffeNet C++ Classification example + + + + + + + + + + + + + +
    +
    +

    Caffe

    +

    + Deep learning framework by the BVLC +

    +

    + Created by +
    + Yangqing Jia +
    + Lead Developer +
    + Evan Shelhamer +

    +
    +
    + +

    Classifying ImageNet: using the C++ API

    + +

    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 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.

    + +

    Presentation

    + +

    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 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.

    + +

    Compiling

    + +

    The C++ example is built automatically when compiling Caffe. To +compile Caffe you should follow the documented instructions. The +classification example will be built as examples/classification.bin +in your build directory.

    + +

    Usage

    + +

    To use the pre-trained CaffeNet model with the classification example, +you need to download it from the “Model Zoo” using the following +script: + +./scripts/download_model_binary.py models/bvlc_reference_caffenet + +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 + +Using the files that were downloaded, we can classify the provided cat +image (examples/images/cat.jpg) using this command: + +./build/examples/cpp_classification/classification.bin \ + models/bvlc_reference_caffenet/deploy.prototxt \ + models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel \ + data/ilsvrc12/imagenet_mean.binaryproto \ + data/ilsvrc12/synset_words.txt \ + examples/images/cat.jpg + +The output should look like this: + +---------- Prediction for examples/images/cat.jpg ---------- +0.3134 - "n02123045 tabby, tabby cat" +0.2380 - "n02123159 tiger cat" +0.1235 - "n02124075 Egyptian cat" +0.1003 - "n02119022 red fox, Vulpes vulpes" +0.0715 - "n02127052 lynx, catamount" +

    + +

    Improving Performance

    + +

    To further improve performance, you will need to leverage the GPU +more, here are some guidelines:

    + +
      +
    • Move the data on the GPU early and perform all preprocessing +operations there.
    • +
    • If you have many images to classify simultaneously, you should use +batching (independent images are classified in a single forward pass).
    • +
    • Use multiple classification threads to ensure the GPU is always fully +utilized and not waiting for an I/O blocked CPU thread.
    • +
    + + +
    +
    + + diff --git a/gathered/examples/detection.ipynb b/gathered/examples/detection.ipynb new file mode 100644 index 00000000000..86cb3d0eb56 --- /dev/null +++ b/gathered/examples/detection.ipynb @@ -0,0 +1,8454 @@ + + + + + + + + + Caffe | R-CNN detection + + + + + + + + + + + + + +
    +
    +

    Caffe

    +

    + Deep learning framework by the BVLC +

    +

    + Created by +
    + Yangqing Jia +
    + Lead Developer +
    + Evan Shelhamer +

    +
    +
    + + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[R-CNN](https://github.com/rbgirshick/rcnn) is a state-of-the-art detector that classifies region proposals by a finetuned Caffe model. For the full details of the R-CNN system and model, refer to its project site and the paper:\n", + "\n", + "> *Rich feature hierarchies for accurate object detection and semantic segmentation*. Ross Girshick, Jeff Donahue, Trevor Darrell, Jitendra Malik. CVPR 2014. [Arxiv 2013](http://arxiv.org/abs/1311.2524).\n", + "\n", + "In this example, we do detection by a pure Caffe edition of the R-CNN model for ImageNet. The R-CNN detector outputs class scores for the 200 detection classes of ILSVRC13. Keep in mind that these are raw one vs. all SVM scores, so they are not probabilistically calibrated or exactly comparable across classes. Note that this off-the-shelf model is simply for convenience, and is not the full R-CNN model.\n", + "\n", + "Let's run detection on an image of a bicyclist riding a fish bike in the desert (from the ImageNet challenge—no joke).\n", + "\n", + "First, we'll need region proposals and the Caffe R-CNN ImageNet model:\n", + "\n", + "- [Selective Search](http://koen.me/research/selectivesearch/) is the region proposer used by R-CNN. The [selective_search_ijcv_with_python](https://github.com/sergeyk/selective_search_ijcv_with_python) Python module takes care of extracting proposals through the selective search MATLAB implementation. To install it, download the module and name its directory `selective_search_ijcv_with_python`, run the demo in MATLAB to compile the necessary functions, then add it to your `PYTHONPATH` for importing. (If you have your own region proposals prepared, or would rather not bother with this step, [detect.py](https://github.com/BVLC/caffe/blob/master/python/detect.py) accepts a list of images and bounding boxes as CSV.)\n", + "\n", + "-Run `./scripts/download_model_binary.py models/bvlc_reference_rcnn_ilsvrc13` to get the Caffe R-CNN ImageNet model.\n", + "\n", + "With that done, we'll call the bundled `detect.py` to generate the region proposals and run the network. For an explanation of the arguments, do `./detect.py --help`." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING: Logging before InitGoogleLogging() is written to STDERR\n", + "I0218 20:43:25.383932 2099749632 net.cpp:42] Initializing net from parameters: \n", + "name: \"R-CNN-ilsvrc13\"\n", + "input: \"data\"\n", + "input_dim: 10\n", + "input_dim: 3\n", + "input_dim: 227\n", + "input_dim: 227\n", + "state {\n", + " phase: TEST\n", + "}\n", + "layer {\n", + " name: \"conv1\"\n", + " type: \"Convolution\"\n", + " bottom: \"data\"\n", + " top: \"conv1\"\n", + " convolution_param {\n", + " num_output: 96\n", + " kernel_size: 11\n", + " stride: 4\n", + " }\n", + "}\n", + "layer {\n", + " name: \"relu1\"\n", + " type: \"ReLU\"\n", + " bottom: \"conv1\"\n", + " top: \"conv1\"\n", + "}\n", + "layer {\n", + " name: \"pool1\"\n", + " type: \"Pooling\"\n", + " bottom: \"conv1\"\n", + " top: \"pool1\"\n", + " pooling_param {\n", + " pool: MAX\n", + " kernel_size: 3\n", + " stride: 2\n", + " }\n", + "}\n", + "layer {\n", + " name: \"norm1\"\n", + " type: \"LRN\"\n", + " bottom: \"pool1\"\n", + " top: \"norm1\"\n", + " lrn_param {\n", + " local_size: 5\n", + " alpha: 0.0001\n", + " beta: 0.75\n", + " }\n", + "}\n", + "layer {\n", + " name: \"conv2\"\n", + " type: \"Convolution\"\n", + " bottom: \"norm1\"\n", + " top: \"conv2\"\n", + " convolution_param {\n", + " num_output: 256\n", + " pad: 2\n", + " kernel_size: 5\n", + " group: 2\n", + " }\n", + "}\n", + "layer {\n", + " name: \"relu2\"\n", + " type: \"ReLU\"\n", + " bottom: \"conv2\"\n", + " top: \"conv2\"\n", + "}\n", + "layer {\n", + " name: \"pool2\"\n", + " type: \"Pooling\"\n", + " bottom: \"conv2\"\n", + " top: \"pool2\"\n", + " pooling_param {\n", + " pool: MAX\n", + " kernel_size: 3\n", + " stride: 2\n", + " }\n", + "}\n", + "layer {\n", + " name: \"norm2\"\n", + " type: \"LRN\"\n", + " bottom: \"pool2\"\n", + " top: \"norm2\"\n", + " lrn_param {\n", + " local_size: 5\n", + " alpha: 0.0001\n", + " beta: 0.75\n", + " }\n", + "}\n", + "layer {\n", + " name: \"conv3\"\n", + " type: \"Convolution\"\n", + " bottom: \"norm2\"\n", + " top: \"conv3\"\n", + " convolution_param {\n", + " num_output: 384\n", + " pad: 1\n", + " kernel_size: 3\n", + " }\n", + "}\n", + "layer {\n", + " name: \"relu3\"\n", + " type: \"ReLU\"\n", + " bottom: \"conv3\"\n", + " top: \"conv3\"\n", + "}\n", + "layer {\n", + " name: \"conv4\"\n", + " type: \"Convolution\"\n", + " bottom: \"conv3\"\n", + " top: \"conv4\"\n", + " convolution_param {\n", + " num_output: 384\n", + " pad: 1\n", + " kernel_size: 3\n", + " group: 2\n", + " }\n", + "}\n", + "layer {\n", + " name: \"relu4\"\n", + " type: \"ReLU\"\n", + " bottom: \"conv4\"\n", + " top: \"conv4\"\n", + "}\n", + "layer {\n", + " name: \"conv5\"\n", + " type: \"Convolution\"\n", + " bottom: \"conv4\"\n", + " top: \"conv5\"\n", + " convolution_param {\n", + " num_output: 256\n", + " pad: 1\n", + " kernel_size: 3\n", + " group: 2\n", + " }\n", + "}\n", + "layer {\n", + " name: \"relu5\"\n", + " type: \"ReLU\"\n", + " bottom: \"conv5\"\n", + " top: \"conv5\"\n", + "}\n", + "layer {\n", + " name: \"pool5\"\n", + " type: \"Pooling\"\n", + " bottom: \"conv5\"\n", + " top: \"pool5\"\n", + " pooling_param {\n", + " pool: MAX\n", + " kernel_size: 3\n", + " stride: 2\n", + " }\n", + "}\n", + "layer {\n", + " name: \"fc6\"\n", + " type: \"InnerProduct\"\n", + " bottom: \"pool5\"\n", + " top: \"fc6\"\n", + " inner_product_param {\n", + " num_output: 4096\n", + " }\n", + "}\n", + "layer {\n", + " name: \"relu6\"\n", + " type: \"ReLU\"\n", + " bottom: \"fc6\"\n", + " top: \"fc6\"\n", + "}\n", + "layer {\n", + " name: \"drop6\"\n", + " type: \"Dropout\"\n", + " bottom: \"fc6\"\n", + " top: \"fc6\"\n", + " dropout_param {\n", + " dropout_ratio: 0.5\n", + " }\n", + "}\n", + "layer {\n", + " name: \"fc7\"\n", + " type: \"InnerProduct\"\n", + " bottom: \"fc6\"\n", + " top: \"fc7\"\n", + " inner_product_param {\n", + " num_output: 4096\n", + " }\n", + "}\n", + "layer {\n", + " name: \"relu7\"\n", + " type: \"ReLU\"\n", + " bottom: \"fc7\"\n", + " top: \"fc7\"\n", + "}\n", + "layer {\n", + " name: \"drop7\"\n", + " type: \"Dropout\"\n", + " bottom: \"fc7\"\n", + " top: \"fc7\"\n", + " dropout_param {\n", + " dropout_ratio: 0.5\n", + " }\n", + "}\n", + "layer {\n", + " name: \"fc-rcnn\"\n", + " type: \"InnerProduct\"\n", + " bottom: \"fc7\"\n", + " top: \"fc-rcnn\"\n", + " inner_product_param {\n", + " num_output: 200\n", + " }\n", + "}\n", + "I0218 20:43:25.385720 2099749632 net.cpp:336] Input 0 -> data\n", + "I0218 20:43:25.385769 2099749632 layer_factory.hpp:74] Creating layer conv1\n", + "I0218 20:43:25.385783 2099749632 net.cpp:76] Creating Layer conv1\n", + "I0218 20:43:25.385790 2099749632 net.cpp:372] conv1 <- data\n", + "I0218 20:43:25.385802 2099749632 net.cpp:334] conv1 -> conv1\n", + "I0218 20:43:25.385815 2099749632 net.cpp:105] Setting up conv1\n", + "I0218 20:43:25.386574 2099749632 net.cpp:112] Top shape: 10 96 55 55 (2904000)\n", + "I0218 20:43:25.386610 2099749632 layer_factory.hpp:74] Creating layer relu1\n", + "I0218 20:43:25.386625 2099749632 net.cpp:76] Creating Layer relu1\n", + "I0218 20:43:25.386631 2099749632 net.cpp:372] relu1 <- conv1\n", + "I0218 20:43:25.386641 2099749632 net.cpp:323] relu1 -> conv1 (in-place)\n", + "I0218 20:43:25.386649 2099749632 net.cpp:105] Setting up relu1\n", + "I0218 20:43:25.386656 2099749632 net.cpp:112] Top shape: 10 96 55 55 (2904000)\n", + "I0218 20:43:25.386663 2099749632 layer_factory.hpp:74] Creating layer pool1\n", + "I0218 20:43:25.386675 2099749632 net.cpp:76] Creating Layer pool1\n", + "I0218 20:43:25.386682 2099749632 net.cpp:372] pool1 <- conv1\n", + "I0218 20:43:25.386690 2099749632 net.cpp:334] pool1 -> pool1\n", + "I0218 20:43:25.386699 2099749632 net.cpp:105] Setting up pool1\n", + "I0218 20:43:25.386716 2099749632 net.cpp:112] Top shape: 10 96 27 27 (699840)\n", + "I0218 20:43:25.386725 2099749632 layer_factory.hpp:74] Creating layer norm1\n", + "I0218 20:43:25.386736 2099749632 net.cpp:76] Creating Layer norm1\n", + "I0218 20:43:25.386744 2099749632 net.cpp:372] norm1 <- pool1\n", + "I0218 20:43:25.386803 2099749632 net.cpp:334] norm1 -> norm1\n", + "I0218 20:43:25.386819 2099749632 net.cpp:105] Setting up norm1\n", + "I0218 20:43:25.386832 2099749632 net.cpp:112] Top shape: 10 96 27 27 (699840)\n", + "I0218 20:43:25.386842 2099749632 layer_factory.hpp:74] Creating layer conv2\n", + "I0218 20:43:25.386852 2099749632 net.cpp:76] Creating Layer conv2\n", + "I0218 20:43:25.386865 2099749632 net.cpp:372] conv2 <- norm1\n", + "I0218 20:43:25.386878 2099749632 net.cpp:334] conv2 -> conv2\n", + "I0218 20:43:25.386899 2099749632 net.cpp:105] Setting up conv2\n", + "I0218 20:43:25.387024 2099749632 net.cpp:112] Top shape: 10 256 27 27 (1866240)\n", + "I0218 20:43:25.387042 2099749632 layer_factory.hpp:74] Creating layer relu2\n", + "I0218 20:43:25.387050 2099749632 net.cpp:76] Creating Layer relu2\n", + "I0218 20:43:25.387058 2099749632 net.cpp:372] relu2 <- conv2\n", + "I0218 20:43:25.387066 2099749632 net.cpp:323] relu2 -> conv2 (in-place)\n", + "I0218 20:43:25.387075 2099749632 net.cpp:105] Setting up relu2\n", + "I0218 20:43:25.387081 2099749632 net.cpp:112] Top shape: 10 256 27 27 (1866240)\n", + "I0218 20:43:25.387089 2099749632 layer_factory.hpp:74] Creating layer pool2\n", + "I0218 20:43:25.387097 2099749632 net.cpp:76] Creating Layer pool2\n", + "I0218 20:43:25.387104 2099749632 net.cpp:372] pool2 <- conv2\n", + "I0218 20:43:25.387112 2099749632 net.cpp:334] pool2 -> pool2\n", + "I0218 20:43:25.387121 2099749632 net.cpp:105] Setting up pool2\n", + "I0218 20:43:25.387130 2099749632 net.cpp:112] Top shape: 10 256 13 13 (432640)\n", + "I0218 20:43:25.387137 2099749632 layer_factory.hpp:74] Creating layer norm2\n", + "I0218 20:43:25.387145 2099749632 net.cpp:76] Creating Layer norm2\n", + "I0218 20:43:25.387152 2099749632 net.cpp:372] norm2 <- pool2\n", + "I0218 20:43:25.387161 2099749632 net.cpp:334] norm2 -> norm2\n", + "I0218 20:43:25.387168 2099749632 net.cpp:105] Setting up norm2\n", + "I0218 20:43:25.387176 2099749632 net.cpp:112] Top shape: 10 256 13 13 (432640)\n", + "I0218 20:43:25.387228 2099749632 layer_factory.hpp:74] Creating layer conv3\n", + "I0218 20:43:25.387249 2099749632 net.cpp:76] Creating Layer conv3\n", + "I0218 20:43:25.387258 2099749632 net.cpp:372] conv3 <- norm2\n", + "I0218 20:43:25.387266 2099749632 net.cpp:334] conv3 -> conv3\n", + "I0218 20:43:25.387276 2099749632 net.cpp:105] Setting up conv3\n", + "I0218 20:43:25.389375 2099749632 net.cpp:112] Top shape: 10 384 13 13 (648960)\n", + "I0218 20:43:25.389408 2099749632 layer_factory.hpp:74] Creating layer relu3\n", + "I0218 20:43:25.389421 2099749632 net.cpp:76] Creating Layer relu3\n", + "I0218 20:43:25.389430 2099749632 net.cpp:372] relu3 <- conv3\n", + "I0218 20:43:25.389438 2099749632 net.cpp:323] relu3 -> conv3 (in-place)\n", + "I0218 20:43:25.389447 2099749632 net.cpp:105] Setting up relu3\n", + "I0218 20:43:25.389456 2099749632 net.cpp:112] Top shape: 10 384 13 13 (648960)\n", + "I0218 20:43:25.389462 2099749632 layer_factory.hpp:74] Creating layer conv4\n", + "I0218 20:43:25.389472 2099749632 net.cpp:76] Creating Layer conv4\n", + "I0218 20:43:25.389478 2099749632 net.cpp:372] conv4 <- conv3\n", + "I0218 20:43:25.389487 2099749632 net.cpp:334] conv4 -> conv4\n", + "I0218 20:43:25.389497 2099749632 net.cpp:105] Setting up conv4\n", + "I0218 20:43:25.391810 2099749632 net.cpp:112] Top shape: 10 384 13 13 (648960)\n", + "I0218 20:43:25.391856 2099749632 layer_factory.hpp:74] Creating layer relu4\n", + "I0218 20:43:25.391871 2099749632 net.cpp:76] Creating Layer relu4\n", + "I0218 20:43:25.391880 2099749632 net.cpp:372] relu4 <- conv4\n", + "I0218 20:43:25.391888 2099749632 net.cpp:323] relu4 -> conv4 (in-place)\n", + "I0218 20:43:25.391898 2099749632 net.cpp:105] Setting up relu4\n", + "I0218 20:43:25.391906 2099749632 net.cpp:112] Top shape: 10 384 13 13 (648960)\n", + "I0218 20:43:25.391913 2099749632 layer_factory.hpp:74] Creating layer conv5\n", + "I0218 20:43:25.391923 2099749632 net.cpp:76] Creating Layer conv5\n", + "I0218 20:43:25.391929 2099749632 net.cpp:372] conv5 <- conv4\n", + "I0218 20:43:25.391937 2099749632 net.cpp:334] conv5 -> conv5\n", + "I0218 20:43:25.391947 2099749632 net.cpp:105] Setting up conv5\n", + "I0218 20:43:25.393072 2099749632 net.cpp:112] Top shape: 10 256 13 13 (432640)\n", + "I0218 20:43:25.393108 2099749632 layer_factory.hpp:74] Creating layer relu5\n", + "I0218 20:43:25.393122 2099749632 net.cpp:76] Creating Layer relu5\n", + "I0218 20:43:25.393129 2099749632 net.cpp:372] relu5 <- conv5\n", + "I0218 20:43:25.393138 2099749632 net.cpp:323] relu5 -> conv5 (in-place)\n", + "I0218 20:43:25.393148 2099749632 net.cpp:105] Setting up relu5\n", + "I0218 20:43:25.393157 2099749632 net.cpp:112] Top shape: 10 256 13 13 (432640)\n", + "I0218 20:43:25.393167 2099749632 layer_factory.hpp:74] Creating layer pool5\n", + "I0218 20:43:25.393175 2099749632 net.cpp:76] Creating Layer pool5\n", + "I0218 20:43:25.393182 2099749632 net.cpp:372] pool5 <- conv5\n", + "I0218 20:43:25.393190 2099749632 net.cpp:334] pool5 -> pool5\n", + "I0218 20:43:25.393199 2099749632 net.cpp:105] Setting up pool5\n", + "I0218 20:43:25.393209 2099749632 net.cpp:112] Top shape: 10 256 6 6 (92160)\n", + "I0218 20:43:25.393218 2099749632 layer_factory.hpp:74] Creating layer fc6\n", + "I0218 20:43:25.393226 2099749632 net.cpp:76] Creating Layer fc6\n", + "I0218 20:43:25.393232 2099749632 net.cpp:372] fc6 <- pool5\n", + "I0218 20:43:25.393240 2099749632 net.cpp:334] fc6 -> fc6\n", + "I0218 20:43:25.393249 2099749632 net.cpp:105] Setting up fc6\n", + "I0218 20:43:25.516396 2099749632 net.cpp:112] Top shape: 10 4096 1 1 (40960)\n", + "I0218 20:43:25.516445 2099749632 layer_factory.hpp:74] Creating layer relu6\n", + "I0218 20:43:25.516463 2099749632 net.cpp:76] Creating Layer relu6\n", + "I0218 20:43:25.516470 2099749632 net.cpp:372] relu6 <- fc6\n", + "I0218 20:43:25.516480 2099749632 net.cpp:323] relu6 -> fc6 (in-place)\n", + "I0218 20:43:25.516490 2099749632 net.cpp:105] Setting up relu6\n", + "I0218 20:43:25.516497 2099749632 net.cpp:112] Top shape: 10 4096 1 1 (40960)\n", + "I0218 20:43:25.516505 2099749632 layer_factory.hpp:74] Creating layer drop6\n", + "I0218 20:43:25.516515 2099749632 net.cpp:76] Creating Layer drop6\n", + "I0218 20:43:25.516521 2099749632 net.cpp:372] drop6 <- fc6\n", + "I0218 20:43:25.516530 2099749632 net.cpp:323] drop6 -> fc6 (in-place)\n", + "I0218 20:43:25.516538 2099749632 net.cpp:105] Setting up drop6\n", + "I0218 20:43:25.516557 2099749632 net.cpp:112] Top shape: 10 4096 1 1 (40960)\n", + "I0218 20:43:25.516566 2099749632 layer_factory.hpp:74] Creating layer fc7\n", + "I0218 20:43:25.516576 2099749632 net.cpp:76] Creating Layer fc7\n", + "I0218 20:43:25.516582 2099749632 net.cpp:372] fc7 <- fc6\n", + "I0218 20:43:25.516589 2099749632 net.cpp:334] fc7 -> fc7\n", + "I0218 20:43:25.516599 2099749632 net.cpp:105] Setting up fc7\n", + "I0218 20:43:25.604786 2099749632 net.cpp:112] Top shape: 10 4096 1 1 (40960)\n", + "I0218 20:43:25.604838 2099749632 layer_factory.hpp:74] Creating layer relu7\n", + "I0218 20:43:25.604852 2099749632 net.cpp:76] Creating Layer relu7\n", + "I0218 20:43:25.604859 2099749632 net.cpp:372] relu7 <- fc7\n", + "I0218 20:43:25.604868 2099749632 net.cpp:323] relu7 -> fc7 (in-place)\n", + "I0218 20:43:25.604878 2099749632 net.cpp:105] Setting up relu7\n", + "I0218 20:43:25.604885 2099749632 net.cpp:112] Top shape: 10 4096 1 1 (40960)\n", + "I0218 20:43:25.604893 2099749632 layer_factory.hpp:74] Creating layer drop7\n", + "I0218 20:43:25.604902 2099749632 net.cpp:76] Creating Layer drop7\n", + "I0218 20:43:25.604908 2099749632 net.cpp:372] drop7 <- fc7\n", + "I0218 20:43:25.604917 2099749632 net.cpp:323] drop7 -> fc7 (in-place)\n", + "I0218 20:43:25.604924 2099749632 net.cpp:105] Setting up drop7\n", + "I0218 20:43:25.604933 2099749632 net.cpp:112] Top shape: 10 4096 1 1 (40960)\n", + "I0218 20:43:25.604939 2099749632 layer_factory.hpp:74] Creating layer fc-rcnn\n", + "I0218 20:43:25.604948 2099749632 net.cpp:76] Creating Layer fc-rcnn\n", + "I0218 20:43:25.604954 2099749632 net.cpp:372] fc-rcnn <- fc7\n", + "I0218 20:43:25.604962 2099749632 net.cpp:334] fc-rcnn -> fc-rcnn\n", + "I0218 20:43:25.604971 2099749632 net.cpp:105] Setting up fc-rcnn\n", + "I0218 20:43:25.606878 2099749632 net.cpp:112] Top shape: 10 200 1 1 (2000)\n", + "I0218 20:43:25.606904 2099749632 net.cpp:165] fc-rcnn does not need backward computation.\n", + "I0218 20:43:25.606909 2099749632 net.cpp:165] drop7 does not need backward computation.\n", + "I0218 20:43:25.606916 2099749632 net.cpp:165] relu7 does not need backward computation.\n", + "I0218 20:43:25.606922 2099749632 net.cpp:165] fc7 does not need backward computation.\n", + "I0218 20:43:25.606928 2099749632 net.cpp:165] drop6 does not need backward computation.\n", + "I0218 20:43:25.606935 2099749632 net.cpp:165] relu6 does not need backward computation.\n", + "I0218 20:43:25.606940 2099749632 net.cpp:165] fc6 does not need backward computation.\n", + "I0218 20:43:25.606946 2099749632 net.cpp:165] pool5 does not need backward computation.\n", + "I0218 20:43:25.606952 2099749632 net.cpp:165] relu5 does not need backward computation.\n", + "I0218 20:43:25.606958 2099749632 net.cpp:165] conv5 does not need backward computation.\n", + "I0218 20:43:25.606964 2099749632 net.cpp:165] relu4 does not need backward computation.\n", + "I0218 20:43:25.606971 2099749632 net.cpp:165] conv4 does not need backward computation.\n", + "I0218 20:43:25.606976 2099749632 net.cpp:165] relu3 does not need backward computation.\n", + "I0218 20:43:25.606982 2099749632 net.cpp:165] conv3 does not need backward computation.\n", + "I0218 20:43:25.606988 2099749632 net.cpp:165] norm2 does not need backward computation.\n", + "I0218 20:43:25.606995 2099749632 net.cpp:165] pool2 does not need backward computation.\n", + "I0218 20:43:25.607002 2099749632 net.cpp:165] relu2 does not need backward computation.\n", + "I0218 20:43:25.607007 2099749632 net.cpp:165] conv2 does not need backward computation.\n", + "I0218 20:43:25.607013 2099749632 net.cpp:165] norm1 does not need backward computation.\n", + "I0218 20:43:25.607199 2099749632 net.cpp:165] pool1 does not need backward computation.\n", + "I0218 20:43:25.607213 2099749632 net.cpp:165] relu1 does not need backward computation.\n", + "I0218 20:43:25.607219 2099749632 net.cpp:165] conv1 does not need backward computation.\n", + "I0218 20:43:25.607225 2099749632 net.cpp:201] This network produces output fc-rcnn\n", + "I0218 20:43:25.607239 2099749632 net.cpp:446] Collecting Learning Rate and Weight Decay.\n", + "I0218 20:43:25.607255 2099749632 net.cpp:213] Network initialization done.\n", + "I0218 20:43:25.607262 2099749632 net.cpp:214] Memory required for data: 62425920\n", + "E0218 20:43:26.388214 2099749632 upgrade_proto.cpp:618] Attempting to upgrade input file specified using deprecated V1LayerParameter: ../models/bvlc_reference_rcnn_ilsvrc13/bvlc_reference_rcnn_ilsvrc13.caffemodel\n", + "I0218 20:43:27.089423 2099749632 upgrade_proto.cpp:626] Successfully upgraded file specified using deprecated V1LayerParameter\n", + "GPU mode\n", + "Loading input...\n", + "selective_search_rcnn({'/Users/shelhamer/h/desk/caffe/caffe-dev/examples/images/fish-bike.jpg'}, '/var/folders/bk/dtkn5qjd11bd17b2j36zplyw0000gp/T/tmpakaRLL.mat')\n", + "Processed 1570 windows in 102.895 s.\n", + "/Users/shelhamer/anaconda/lib/python2.7/site-packages/pandas/io/pytables.py:2453: PerformanceWarning: \n", + "your performance may suffer as PyTables will pickle object types that it cannot\n", + "map directly to c-types [inferred_type->mixed,key->block1_values] [items->['prediction']]\n", + "\n", + " warnings.warn(ws, PerformanceWarning)\n", + "Saved to _temp/det_output.h5 in 0.298 s.\n" + ] + } + ], + "source": [ + "!mkdir -p _temp\n", + "!echo `pwd`/images/fish-bike.jpg > _temp/det_input.txt\n", + "!../python/detect.py --crop_mode=selective_search --pretrained_model=../models/bvlc_reference_rcnn_ilsvrc13/bvlc_reference_rcnn_ilsvrc13.caffemodel --model_def=../models/bvlc_reference_rcnn_ilsvrc13/deploy.prototxt --gpu --raw_scale=255 _temp/det_input.txt _temp/det_output.h5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This run was in GPU mode. For CPU mode detection, call `detect.py` without the `--gpu` argument.\n", + "\n", + "Running this outputs a DataFrame with the filenames, selected windows, and their detection scores to an HDF5 file.\n", + "(We only ran on one image, so the filenames will all be the same.)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1570, 5)\n", + "prediction [-2.62247, -2.84579, -2.85122, -3.20838, -1.94...\n", + "ymin 79.846\n", + "xmin 9.62\n", + "ymax 246.31\n", + "xmax 339.624\n", + "Name: /Users/shelhamer/h/desk/caffe/caffe-dev/examples/images/fish-bike.jpg, dtype: object\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "df = pd.read_hdf('_temp/det_output.h5', 'df')\n", + "print(df.shape)\n", + "print(df.iloc[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1570 regions were proposed with the R-CNN configuration of selective search. The number of proposals will vary from image to image based on its contents and size -- selective search isn't scale invariant.\n", + "\n", + "In general, `detect.py` is most efficient when running on a lot of images: it first extracts window proposals for all of them, batches the windows for efficient GPU processing, and then outputs the results.\n", + "Simply list an image per line in the `images_file`, and it will process all of them.\n", + "\n", + "Although this guide gives an example of R-CNN ImageNet detection, `detect.py` is clever enough to adapt to different Caffe models’ input dimensions, batch size, and output categories. You can switch the model definition and pretrained model as desired. Refer to `python detect.py --help` for the parameters to describe your data set. There's no need for hardcoding.\n", + "\n", + "Anyway, let's now load the ILSVRC13 detection class names and make a DataFrame of the predictions. Note you'll need the auxiliary ilsvrc2012 data fetched by `data/ilsvrc12/get_ilsvrc12_aux.sh`." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "name\n", + "accordion -2.622471\n", + "airplane -2.845788\n", + "ant -2.851219\n", + "antelope -3.208377\n", + "apple -1.949950\n", + "armadillo -2.472935\n", + "artichoke -2.201684\n", + "axe -2.327404\n", + "baby bed -2.737925\n", + "backpack -2.176763\n", + "bagel -2.681061\n", + "balance beam -2.722538\n", + "banana -2.390628\n", + "band aid -1.598909\n", + "banjo -2.298197\n", + "...\n", + "trombone -2.582361\n", + "trumpet -2.352853\n", + "turtle -2.360859\n", + "tv or monitor -2.761043\n", + "unicycle -2.218467\n", + "vacuum -1.907717\n", + "violin -2.757079\n", + "volleyball -2.723689\n", + "waffle iron -2.418540\n", + "washer -2.408994\n", + "water bottle -2.174899\n", + "watercraft -2.837425\n", + "whale -3.120338\n", + "wine bottle -2.772960\n", + "zebra -2.742913\n", + "Name: 0, Length: 200, dtype: float32\n" + ] + } + ], + "source": [ + "with open('../data/ilsvrc12/det_synset_words.txt') as f:\n", + " labels_df = pd.DataFrame([\n", + " {\n", + " 'synset_id': l.strip().split(' ')[0],\n", + " 'name': ' '.join(l.strip().split(' ')[1:]).split(',')[0]\n", + " }\n", + " for l in f.readlines()\n", + " ])\n", + "labels_df.sort('synset_id')\n", + "predictions_df = pd.DataFrame(np.vstack(df.prediction.values), columns=labels_df['name'])\n", + "print(predictions_df.iloc[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's look at the activations." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": [ + "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\n", + "A6nP5eWlnj17pnA4bN16NptVu9022RR/dnl5aXgudd/R0ZEKhYJ2d3eVzWZ1fHxsymcmd8lkUpFI\n", + "RLlcTj/5yU+Uy+VsWgd7bG9vT5OTkyqVSnYLQGKfnp62CGRG581m08SvcB7Gx8fNHgGJlOM4hiWj\n", + "K1xZWTFRbCQSscxwLBIQ8ebzeQugxLne5/NZ4urW1paVRZysExMT2tnZMcNwHEERrLIJaXrz+bzZ\n", + "N2DxQPO6vLysYDCoZrNpSbqJRMKoqPfxaB6pzQx1k+katk8MDhqNxq0ygT8n9Ql5EYoUkA4wYuwA\n", + "KC2wxGKke3Z2pu3tbXPLhCRUr9eNJITxSTgcNlFou9022RIO9I1Gw2AwTji6/snJSQu0JxjI5/Pp\n", + "3bt35h2yt7dndrSgGJKMpsogCWsw/gzO9eXlpTY2NrSwsGA+z1ADSJslk5ByCCemSqViGHmv11Oj\n", + "0bAHC6NxuNno/1qtlsF3d10jtZnhOUiygcJ7771nXT+CV2/edb1etw7+8PDQPIX9fr+ePXtmm4RJ\n", + "2WAwsGlaJBJRp9OxzD7UGoPBQKVSydJK+b5+v1+1Ws2+DtYDnNBc3f1+XwsLC9rc3JQks5dFHOrz\n", + "+VQul20a6fP5zC9udnZWtVrN+MuE9FDy4H46OTlpATnAdCARR0dHhjF7hxqcwGgmIQvBdb66utLK\n", + "yop2d3dvZbPw0GHXAF4OTOo1bbzPGqnNjAH25eWlnj9/ru9///t6/vy5VlZWjMPw7t07u+5evnyp\n", + "YDCozc1NTUxMaGZmxtCEYrFohoftdluZTMZO+/X1devOHz9+rO3tbVNykIf35s0bxWIxJRIJra2t\n", + "yXVdQySGw6FqtZpKpZLa7bYZfOMsOhgM9PHHHxu3AfLQ6uqq3n//fYsuQwaFO//jx4+1u7urt2/f\n", + "amVlRVtbW5qamrplI0Y93el01Gq1rLlEZULjNzk5qY2NDSM7XV1dqVarGef75ORES0tLRmuFj7K5\n", + "uWk6wEgkYhwNLzfEK5aNxWImaHj79u293v+R2sw+n89y+eLxuMmksKXiTYIY9PTpUyMQgXSUSiVD\n", + "NpaXl1UoFPT5558rFovZaT4/P69ut2skdhKfOGXi8bgODg5MFpVIJGxYgkuQJAvxOT8/v5V7PTY2\n", + "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\n", + "hfVwMn/167clDV3X/T0+4LruqiRLPXccp+Q4zh87jvPxzT+/dfPx3M3HP3UcZ9VxnD/rOI7PcZw/\n", + "uPn/zx3H+Qc3n/vIcZz/enPy/7HjOMs3H/8rN5/73HGc//2r/dF/tevhZP7q11NJH/8pn1OT9Odd\n", + "1x04jrMk6T9I+rakvy7pv7mu+89vTviQpG9Iyruu+3VJchwncvM1fk/S33Vdd91xnD8j6Xcl/TlJ\n", + "/0TSX3Bdt+r53JFcD5v5q1//L0D+hKR/7TjO+5IuJS3dfPxnkv6N4zh+Sf/Fdd3PHMfZkLTgOM6/\n", + "kvRHkv674zhhSb8l6YdMJm++piT9RNK/cxznP0n6w1/KT/Qbuh7KjK9+vZD0zT/lc/6hpKrrus8k\n", + "fUvSpCS5rvt/JH1PUkXSHziO8zdc1+1Iel/S/5L09yT9viRHUsd13W94/nly8zX+vqR/LGlW0seO\n", + "4yR+2T/gb8p62Mxf8XJd939ImnQc5+/wMcdxnul6c7Eikg5u/vtvShq7+bw5SQ3XdX9f15v2Q8dx\n", + "kpLGXNf9Q12XEN9wXbcnadNxnL988/ecm+8hx3Eeua77M9d1/6mkhqTiV/jj/lrXw2b+1ay/JOl3\n", + "bqC5LyT9M0lVfVmC/K6kv+U4znNJy5II9/htSc8dx/lE0l+V9C8lFST9T8dxPpX07yX9o5vP/YGk\n", + "v33zNb6Q9BdvPv4vbhrFVUk/cV3386/yB/11rgduxsMamfVwMj+skVkPm/lhjcx62MwPa2TWw2Z+\n", + "WCOzHjbzwxqZ9bCZH9bIrIfN/LBGZj1s5oc1Muv/AuHZAPr9VeA9AAAAAElFTkSuQmCC\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.gray()\n", + "plt.matshow(predictions_df.values)\n", + "plt.xlabel('Classes')\n", + "plt.ylabel('Windows')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's take max across all windows and plot the top classes." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "name\n", + "person 1.835771\n", + "bicycle 0.866110\n", + "unicycle 0.057080\n", + "motorcycle -0.006122\n", + "banjo -0.028209\n", + "turtle -0.189831\n", + "electric fan -0.206788\n", + "cart -0.214235\n", + "lizard -0.393519\n", + "helmet -0.477942\n", + "dtype: float32\n" + ] + } + ], + "source": [ + "max_s = predictions_df.max(0)\n", + "max_s.sort(ascending=False)\n", + "print(max_s[:10])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The top detections are in fact a person and bicycle.\n", + "Picking good localizations is a work in progress; we pick the top-scoring person and bicycle detections." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Top detection:\n", + "name\n", + "person 1.835771\n", + "swimming trunks -1.150371\n", + "rubber eraser -1.231106\n", + "turtle -1.266037\n", + "plastic bag -1.303265\n", + "dtype: float32\n", + "\n", + "Second-best detection:\n", + "name\n", + "bicycle 0.866110\n", + "unicycle -0.359139\n", + "scorpion -0.811621\n", + "lobster -0.982891\n", + "lamp -1.096808\n", + "dtype: float32\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": [ + "iVBORw0KGgoAAAANSUhEUgAAAXAAAAEACAYAAACqOy3+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n", + "AAALEgAACxIB0t1+/AAAIABJREFUeJzsvdmPZVl23vfb0znnTjFHZGZlZmVWVdaQVd1FqmVSomjD\n", + "Ei3BEiVYFgzD0LMBCzBEw4IN+C8wYMCCAL/IT/SDn/xkA6Rk0pxsUjRpkt0NsqeasirnITLmO51p\n", + "D37Y+9x7IyurSRhsJxuM1Z3Iyhs3zrDP3mt/61vfWkeEELiwC7uwC7uwHz+Tr/oCLuzCLuzCLuz/\n", + "m1048Au7sAu7sB9Tu3DgF3ZhF3ZhP6Z24cAv7MIu7MJ+TO3CgV/YhV3Yhf2Y2oUDv7ALu7AL+zG1\n", + "H4kDF0L8XSHEx0KIz4QQ/82P4hwXdmEXdmF/2U38eevAhRAK+AT428Bj4I+AfxxC+OjP9UQXdmEX\n", + "dmF/ye1HgcB/GrgTQrgXQmiB/wX4hz+C81zYhV3Yhf2lth+FA78KPFz596P02YVd2IVd2IX9OdqP\n", + "woFf1OZf2IVd2IX9/2D6R3DMx8D1lX9fJ6LwhQkhLpz8hV3YhV3Yn9FCCOJln/8oHPg3gbeFEDeB\n", + "J8B/AvzjF7/0P/7z/w4kKGOYVxWPnz6lalqUUmRZRq/XAwJVXRICVGWNc548L5BSUZYlbduilCTL\n", + "DFJJsqzHZDJhMBiQZRlVVaG0wjpH0zRoYzBaUzY1OIuUEqUUSikIgRACvbygrmuEDwghcM4hlMSH\n", + "AAKcdWidASCEQAhBCCEeA8iUxDsbB1ebRTgipcR7jzEGIQXBe4QQIOJxfvO3fpu//XN/CyHAWoeU\n", + "AiFk/A4gECihQAqsc/jgkVrT1DVGaaSU4AMyQBCSFgEEjJJorZFCEghY2+AJ+BAQUlAUPTJj0EKi\n", + "lUEEiW1a2rYlpDGxwRKT3QEQ8V4IeMAYQ5ZlhAB4DyEg0tg4D8ZkgMBaS2tbEJJ0afGaEbjg00SM\n", + "9xrSuP7rX/lX/PzP/wf4NL5CgPcBKQTee0IISBnHSEqJlHJxzQAhBHwaZ+89Ll3fi9/rnqX3LOYE\n", + "gHceCAghz50HwAe7OEc3DzpbPbYQgtZavPfpmkHK5fV219ddkwua1gWUlCgt8M4hEITgQQR+/Vd/\n", + "mX/wD/4Rzlo8HqHicdrWLY/j47z13i/OoyQEb7HWEgQE4nwQQi5GXhGfRyAQREixtERqhZSKqqrQ\n", + "KkNqRUBircVZiyRer1Rq8eyFWI5Bd5/OOYIU3SCdG3spBIIXfJRwyzH1Hu/FYl0sxj0egF/65f+N\n", + "f//v/YcgQrobn54/+PR38PGWXPDx8AFC8AQXFmPn04oVUiCVjHM63kV87unfSmnEyn0JIWhsG387\n", + "CEK8grh+fCAE4riuzJHVv5dz0H/p83/53/4zvsr+3B14CMEKIf4p8H8ACvjFlylQtgZ9qrZGZZrh\n", + "YIPd3W1aa5nMZhweHzGZnDKdTvF1m5x2dDBaACGQaYVWEh/iQ3bOMZ9Pcd4ymZyxsblJ0S+YTqc4\n", + "59IC8TRtgwiB1rWooFBKIkWaqwHatsF7h5YSKQUBQeMafPBkWYHODEIE2tZijMFaj1KK1sbFIYsM\n", + "kQbf2hYh08MQGiHB+SY6BgEEAWmj8N7hXBPntQg4LxaOQQiBRBG8AC8Wi034wKDo4b0j+IAQ0Tl4\n", + "wCiFUSo6DecI0ifnE1Baxp8Fh/cttra0Pm4Swguc9WilEULig48bg5IordHaoHScNkEIlFYLh+Wt\n", + "wzu3GEvvHZPJmBACWZaTGRPvNQDJiTnn8DYsFrn3HoQApYBACBZCWsDEBRSIjkLKtICDx1mPF9Ev\n", + "xH0xOiLrk2MTEqWWm4d3Pjoplt9FgHUtTVsv5mnn0H33PBIQkmnjXv0jVj5bbLxCgFBIpZAKVn2U\n", + "9wHnIeARPo2hUGnBW0JQeO9QUqClwBgNBNqmRAqB1goXLN5BZjQgcM6S5QXeS7wLacOQiOBASkxR\n", + "RMfrPUIqnA908XAILu3RgiC6Tc4nh2fRWuO9xTUWhEBJickN0oO1Nm6OKl6ztXGDQ0CwadNSauHA\n", + "F5tcemAibZCrjkt6t3g+cdLHDTl4SwdrSBuQEqBV+rYAj4Ag8CoAEoLAuc6hEsFRCHgvQK48O+/T\n", + "tRCBmPcJSMXvaC2jM/Y2HRdkWndGKQIdcAhpicfNyRM3b+/jPTsh0x4WvxvnTLyu5AT4s7DRPwoE\n", + "TgjhV4Bf+WHfqat5XPzWcjI+o+j3kEqxu73BtdcuUdctk8mEtbyPEIKqqTk9PeP09Ix5VaKFx3oH\n", + "IaCSk/NIZrMKk2WMx6c45+j1ekgRyIyirmucc+R5QdbrR+fhHDaA0TohDUm/KDDGpE1hTi9PCDwI\n", + "mqYB4k5praAoCvKsRwiB2WxGAExmsNZSNw1aK6y3mJRtkAJkQk1SaBZpCCHxCLy3rIC5hSk0Xq7s\n", + "0iIiCB/cAm2p5GwCAt94vEwOz3mEAJObNEkjwgoh0PqW2gUkIIWKi1KbOH9EcpXKLJBcVddQ17Te\n", + "LZBHnudorSMaNzmZNmitKasZ6+vraK1p25bZbMZsNsdai1ImRiM6RkBtU59HxbYlBIcUAR883gV+\n", + "4b/8hT+fCfpjbM+A/+J//6VXeg3/4n/4xRSdWpyz4GOEJWyMlDrk2UU9QkTnLaWjbi1KyMV8kSqh\n", + "WA9KRue1iGz9HFKk0M0/2S2XFC0sEavH2jbNn2VUE92gJBCjAohOWIr0My+QLCMo5/3i+l0AHdQy\n", + "evIBH0RyvBF8pZPHtYBcuF2hRIIZpIi3u8+IwoOIhwhBIFNkGUJAipA+D+fXw1fYj8SB/1lM93Ia\n", + "a1lfH1GMBiitaBuLrRqaxtHUFVQ1k/mMPC9QWnPt8i6vX72EdZ7JdMqsLHHeUVUVVd1QNg2Xd7Zw\n", + "Pjq0LOtTJPRunWWYG5x3GG1QJku/V+GcjQPowAFN6ROVk9Pr5chMkuUZWZZHp9c4yrKibW0KpQKj\n", + "wYjNzY2I3rWhbWpOz87IMkPd1IuJGkIMe633eNviXEAKyes3Xqf1Pu7YLFGKVgofAs47hAWl0wwO\n", + "oBBUto3ICI8yktour0kIFVGq0ggBTdOgjKZtWkLaSKy1GK2QSsewLwRa4SA4pNAE0oR1DoFa7jeB\n", + "SF0l5Gxtm6KXSBPFjcKh1HyJrIKg6BUrC8KBjTSFDzYtujTpvefNmzdpmuocPfGX3f7mq74AQMno\n", + "8JSMFKHzHqN0ijSTC4uPG6klUkZKynqfogjwwVPXFcCCnnLSoYVESBmdqs6Wjkyo+GcFtYcQ0vwM\n", + "vPPu+ykKCckBR3BBECnS8RH9AkLKBcjtwJ8UiZp0ljZFbUopBCICjY6Gcy5FSkv6LEY+LkYz6d8y\n", + "RQIxoI4UkweUjr/nkAu0DhCCXGx6HY1FOtYPs1fmwO8+eYgxhpPZGIB+3qPf64MPOOHJkCAVyqgY\n", + "JfmW4BQBhZaCXq7Z2NiL4ZdQWGcjfxWgLEtms1l00GVJOS2pm4Z+r4cMgf6gh84yqvkMGRLP2RFk\n", + "BEajIVJKZrN5QoAwm03ITBZRaBUdVV235HkPYzLmTJjPSwICY7IYpjpHVuRY51FEuqGuLVJpWucZ\n", + "9EcMh+uE4Ni+dCnxiYLx+BSIznRWlQQfEmKJHJ11bdwk2pambcnynKapKWQvLhoJMgict5Tzkl5R\n", + "4EPc+b216DzDOsfpeMysnLE2GrCxvo4UkrppUSncU8QQXCgVJ7+1BBc3N5FQSAz7wsIp13WNx2Nb\n", + "S57rBbVDiNxlR2fpLC14Ik3V8c5KxU3H4bn9wXvIjn+WF04c/mI48IhEPRABh5cStIDkhCBGipo4\n", + "X4WInLD0AhXAW7fIXyilovNzDu/Adw41oe2lvw7I4BM6j+hbIOKaF4Fbt95NGwiL/IpITrKLJhf5\n", + "C+/xwa1QHNG5dseSMjpka1tynS/uqXPeEZDErWKZe2GxmXjv0qYkI33SUYDOEnzKl4kU1bPMpUGk\n", + "omL+SCQ68i8oApfG0PrA6dExg16fZ0+fg/fsbu+ghSZYS24ysl5M3OV5Rt02aGEwKiLpumkSF6px\n", + "wVMUOd47NtbX2FgbYVsLnRMSgiLPOTk5QQhBf7TB1voGdV1zfHJCXVUYkyGEIMszCCB8YDqZoguD\n", + "lpFzdrbFNXWkU+ZzbF1T5AVmbZ35ZIwXku2dXYKX7O8/5emzxxR5zuUrV+gVfUIIjIYj1tZGnI5n\n", + "3L1/D6UUg37ksgf9PqPRGk1T470jM4a6rhkMB5hM0+/1OXh+gA8OqSRa6JjA7fXiZFQK6x1VWaGU\n", + "pugXWOcTWgEhNePJjFlV0rQts1lF0zQ0rWPQLwjWoZRGSYkQKiEViVAabz1aRppHa423lrrxiRtN\n", + "jl0lTldB6yJ/HZ2vSIliFk65C0uVUmgdHbp3LgbHCWFZbxF+icwv7NWbtTY6pOAJBLxWyyTgIgeQ\n", + "OPSUpAfouANtYlIdAt75yI8jIyWTcoZCCJQx5yiSjj4BFs64c/AS152AmC4UCOEjmkEsnTkCZWRK\n", + "YAZEl7/pqBspSdkXrIsgjOSYSVy3EJKQonyR7k8qlegVv7j3LkHd3Y9WEjSLyEB0mLGb2gmpd5Go\n", + "FyJtlF9tr8yB3/n0c/Jej6ZpGI2GaGWYTuZIeUaRF2xvbiKV5tHh04jahCArMtbX19IRBFpnSBHp\n", + "iPm8ZntjyHQ2WyStgvdoo1MWP0TOTQiKLKOta0aDAUWWYZuGwd4eW1tbACglGY/HKWwKTMsZ09mM\n", + "qirJ85zRa1fRxiwSNQfPD5nN5wyKDKE0bTkjzzNu3Xx9wf3Ox2dMz06Yz0tOTMbW1hbWw/7jxwxH\n", + "QzZH1wkSgmupbYvRmsZGNczW2oizyRl1LZicneBsVOM0TYsPgf2DI3wI2BAYra8z7PfIMo1Sirpp\n", + "6BW9pKJRTOclx6cT9g8PUEazNlojhApCSBGQpy6rqMRJ0YQLFhV8jCoSxClETnAp6UjkAH1QOJ94\n", + "qKRSiQnYGBL7NEEDHuscznmkkBidRYVISlB7F86ncMQy0XZhr94GvV6izSwueKyKfHAIAZwn+KiY\n", + "6SKs1YcptMRbnxy7jPMhJbWVMEvKhCUP3CmOrGVBx6wifSEEjXMxlkt5IiEjUBBeEJIT7Rws51Qo\n", + "AeETyAhRESWkQClD0dOEZpWu8bjEU3cRo/OOxrY45zB6kBKeccPxyclDjCw7QYO1FqlkJEpS5L/K\n", + "dbu0iwkRE6M/zF6ZA1dIhr0hNot88sbmkCaMmdYNJ9M5z45P2Nvb43RWRbmglsiy4qysmM/nKKlx\n", + "1rG+sYmzgbZtOT05xvmYuOz1eigZB81kBm8tZdkktNgSZnOkEFRVxXgyoZxOOTk8ZDgc0u/3kUbT\n", + "NA1FUXBpd49ePkZKSVEU2LYlyzKKNJHX+gNm83mkTLKMyXhMWZYcHT1nOFxjb2M9OizvyHZ3qKsm\n", + "KlQQ7O1sopTi9PAAIQW2qdnd3WFjY8jh4RRnG8bHE0yec3B0xO7OLoU2eOcxUnBwcExdNxhjaOuG\n", + "mZxipEDkktYJyrKmamqcg42tLYTSFMMBGz7QtBbrPMMsY20wJFMG6xvyzJDpmPgZDUdM5/EZ4D1o\n", + "hRJqkWdwbZuouigbtM4ilMB6T5ZlWGepk6rDGIOzAmddlG/KSH2Fao6UGiGXUrK4AFNomSRYL7N/\n", + "8d//82UI2m0AISSEt0rJhhh0p7jcJwTp02KRSpEVvXPyRFg6kbZtF6oZ5xxKx/nh031mWbbgSVfl\n", + "jR34iNLBSA91XKpPCgedEOzv/M7v8K1v/VFSP3mapo5jaNskmYsJuH6/x/b2Nof7R8zGc9Y3RmSZ\n", + "xnqL1pK832M4HJHlfYaDNabTOe+8c5srl66ijMFah4dF5CSkQBH5ZUlUMTXeEQL81//sn3xpzDsa\n", + "zBiDCh4pAlLFhFznUaIzDyn536HclPeITyY5uiQ7XURYMVoL3oMUeCEj39wl+ZRIScMkySSOXZAd\n", + "6g34kCga1dEbguAjgAgehPILLl2k6FyHqBQSnZQwIe6QEHc8bTpHcDgXqQ5tNJmMsuLWrsgKA4BE\n", + "6xXaJslSo2LLAmIxNyJqX+HYfUhc/V9QBP7h+x9ydHLM2XTK+vomSMWVa9fZ3Nzk4OiQd999l63N\n", + "LT6/d5/T0xOUkjRNlWiVYRqowLxu+cFHH3P50mV2N0bx4FVL3bj00CMi6Phr7+KCM0TZU57n5CZb\n", + "IPWqLGOyL0nwpmdjgoiJmm5RGmMYjUaUZbngu/LMoFRBP89RwdHPDWfHh/RzTV5kDAYDtDYAHB0d\n", + "Y4whHw7J+gMGgz4ff/QDTk9P2d7d4uzkGN+U9Hs97t5/zPP9fbwU2BDItaEpK8qyRkrNdFZy/cYN\n", + "RuubTGdzGmvp93rkhaCcl0CgrmusA9t6xpMpk1lJVddIYzBZhhaWclZiqwatIiudZ1mkcYo+rqmR\n", + "QjEaDKiDo5dHXjA4TytlUpV0gWdE0m3bJL1w1N12FIuUEhc8MkR1gfOO1raMRsU5tKVYOtAOxL3M\n", + "PEknvZBjppA7LWgVzqM1GSLvajIdw+OoPVs4yMhj+kjlyCWHmZssOrqiwDuP0Iper7eShAoLx7bq\n", + "/LXWeNdirQfaBTXUXaf3ntms5ezsjO98509iwt1GgNA2c5p6htZRgiqlxLeeMK+AU2zr2NnZIcs1\n", + "1jasrQ3IcsPJ2Rnee3r96AzqynLn00/QUnPlyhWUjKojERxKkGiEtF6EpKs/+KrcsXPd2iLSCmqp\n", + "mJBBghBoIQmSKC1MSTkfwGu/3HCJ3PDqeIkIvUHJ+KejL7oEaYjP2Cu1QPhCgBQFS9mjO3e9wQuC\n", + "AhHi30r7qKNPDpU0R6Ni1tPaWPegM4N0umNhFjpupQza6LQJB5yz8f5cVG8ptZTWQqRdOlpJpJ+v\n", + "5guilNDSSQm7Db0b6x9mr8yB52uGa+uvMRiPuX37fWZljZCas8mETz+9w/HxGbu7V3htVHBj63WE\n", + "kpRlGUOQEDg9GdO2nt6lEU8fPCUXOW+9dQ3nXJQLtu3CsTjnKMuSpo0EwLycIZVBSsW8dAunEXWe\n", + "esHndUU+qlNVJL2ysC3j8oSqrGjaltwUaGMSdmjRIvKEm9uXMVqjhEF6RTWes762xs5oA3ygVwzY\n", + "3NpBKcHh/Ud88N5t9nZ3+dbBH3B9uE05n5NNW/6nf/mL/Of/2X+KkwF7fBg3FRfY3d5lfPiMWimG\n", + "TctWXvDg0RNGW2uY3FNPauqTMU4anMkpdq6yXowoJxWzgxN2Nrc4fnbAdKjRGz0aHNQtb127gZUZ\n", + "R1j2fcVJecLlfp9NAkJntLMZfa1Y21gj7KxRe4u0UM8atNlkLuD7D5+wtTlgOByQ9TOkc9hgKfKC\n", + "fq9AS4UXEldF/fhMSlS9j6DByhE63yMPlrp8DIVgrrKXzqOzcozOM1SWx+KaRLeYEGVcFYbgohxR\n", + "p8KMuPmQCjEkVduglaGVc+Y256CcMWmeo71jgx7X1nK2eoKq1JjBLmM3w9t+oltj0ZXSIGTAtk3k\n", + "/YVGCo2UmqyfETXWUVWkRRSYTafTJEuF3/jNX+fk7BhhMryQ1LMKJbLoNFx0HlJFeaYIgWpc0gbL\n", + "tJ6T5wbfVPSnBWvDPpmSzM9OOTs+wfR6HB6f8uYbb/Hk6X0uX96Nkj5hoqZfKRAktVMbkSWK3C2L\n", + "yF40pR1Rn58KVNpOvx1ARSmq8zHqEnKZmFQibrR+Qb3FQi/n3KK4RkqJSnJeb9t0RkG3mwgRC5xk\n", + "UBCWunEd2vS1KGrwgmWkk5LsHQoILkqPg1oWy3WFVK0jbRxRcCV0qpWwywSmQ56LsjoAEUSz4MOB\n", + "JfUTQ4V4buJGpdItLcFFvLyoZlnWH4g/pdvJK3PgIQTKek7bNjjnePTwAddfv5miYM/dzz/nyuVL\n", + "QCArctq2ZTgcRpQlwFrPb/7G/8X2zi5v3LzBX/vpv4Znshi04GKY3raRn2rbNhZvpIfqfJcACYvv\n", + "dCiqU1TYVJxDXaG1QiuNbT3Wxp9rndHPDMbE0FglIb+1LUFCVZaIfh8tDCfjUwgBe5qKinzgtJpz\n", + "/+ljtjY32XvtCvcfP2KwNsARuHP/Ljevv05lG/6rX/invPHmm3z6xWfcuXOXrc0Ntre2OTw+ovWe\n", + "h08fUQyHTGcl9x/c5+xswNpAcXx8Sp71yfojHJ7gG8pywsnxISZTVE3FpUuX2NldR2WSh48ecvPm\n", + "Lc5OxvgskAvB7PkYdzxm1q/ZuzagtS1SQFO33H/wEDkoQGmE9eigcG7KSV3j24b21OMciKKHlnEO\n", + "69CijUarVC3YOgwCqpqhyXCtY94KoiTB0reKsirp914+VdfyXkRBdYNUMe+hgkATkD7gjcTLSGOA\n", + "S4hRxQQXAScceWEQQvL8aJ/D00CJwCpHY2sMniprGF3aZhgGHE2iJFSmCj4XHPiAt+BSdW8IAbyL\n", + "cjbvcGXUBUsgWIeFRSFOlg34/d/8PR49esRwNEzzx+Fcu0i+x5A+RqBtE+L9SYnKNLnJMFLRW9sk\n", + "uAYlVdRZS03b1jRlTT8veP50n3424ODwkM3NHYoiYz6fL5C29x6pQix2QhK8RuuX869aL59FzC+t\n", + "RhUxYuqS0qsUQIysRKwziJ8QEEgVKYwFTRZlG+BWabMU6eCjPnHl/IsjifOfd8hehoATKYkOiXfv\n", + "zras7IS4kaku8Zn4N8cKnUfnmBO9lqSJkkgbIsK5y15F2SGwGCPxgl9eOnKJUmLhl/40Ce2r04Fr\n", + "jfeBTz/5lHv37mFt5Py++c1v45yjKPr88Tf/iL/x03+Foig4OztjfWMt8Yoe71uePH3Iw4cP+Kmf\n", + "+mmePnvE3XsfcevWLW7cuEFTVTEMbdtFSJO2vxiWiGUW23u3CIdsSkh4l7LsIeCaesFPNU2D0/Fh\n", + "WGvRSkBo8FYggkIXGW0QIBSOgM4zRKY5PT5kPpvT6/Xo9/vkJmPeVBwcHXJ0doIAdq/scTQ549nx\n", + "IVJIBqdHHE/HaCG59+ghJ+MzFILpbE7bWuazko2NTUyW88ff+Q7v3v4apiiYzGfUTcv7793GOc/O\n", + "3hWOz8Zg59y98xEqK3j79m0ePnhEVc3wZYE9KVlvYD0Ydl6/yayx5KYg1C31aAsXLOW0xEvHfDKn\n", + "n/XJih4y7+GVomlLCqHRGnLXsjnsoWqLth5pU9sCEZKcymFlmyagQCrNqMgplEMNBpzUBUFvEWYT\n", + "2pmimlaMtkYvnUdhXpMZg8VFXXEImCwnF5rgPVa0CBELpK2z1M6TZSYhv0BVRxlmXbccHj0hqB28\n", + "Lahrj5EalUlcmCNUH6MKmsOKbG2IDAK0wLuQ5o8leIeWMWkWK4RjZWPwEucDtkMNsEB9VVXx/e99\n", + "j15RUM1Lsizxyol+cN5hnSUr8nTHIlX6euqqZmdvl2o2Yzyfs7E2xLWO3cs77GrDoyfPcD7w4PFT\n", + "fvbf/nd49/bX6Q+GqaBtqYs2iQ4QPiYKbWsRwrxktKNVVbVw/Eu6RSTkvESfy++sOCHnU4VoPLdS\n", + "UX8NpLzFkjLJ9ZejLvclaV38by+WNMyCRksLXABGSISOGvPue6uJw+BlovnOO0yJwKWS/oUWPD2H\n", + "7j6740mZLWscVq5jWQcRFlXaQi3bcKyaD+LctXXH+Cp7ZQ6863fycz/3N7HWMZvPqMqav/Lh15iX\n", + "c0CgVAxvH915zJMnT3jvvfdo25Yv7tzhD//wj/j6++/y8cef8t47b3Hz5jWq5pjZfMK9+1/Qy3L2\n", + "9vYwpkMRUZkSd9IsDhQd97kMbWRSnoTkvBECHVp8Sl5BzOV134mI3C4eWOUdbu5wDvJBjswUTjj6\n", + "60PyYY979+5yJb+CKjRVWzPaXKeal4TgOZuNMVKh8oy93V3Qmv76CKUUa6M1nh8dMlpfp5cXjCdj\n", + "tnZ3aVuLtxaVZ+xeuUTQirt3P2Nja4fPvvicwhgePXqIA9752tfZXOvx5rvv84ff/DaZ6UcHv7nO\n", + "2f4Br1+6jBEaF2C0sUk7rVFeMOhvMK7HPD854ObNy5i1LZwNeG2YBoe1AaVzJALpPdujEf1BjlY5\n", + "goB3Fmdr2oRQREqQKSmRRiNE4NnsiFy1VB7GYRMz8PjWRUnpYJNsZ++l86joGVI1NJnWSCHo5QW5\n", + "0gTrmFSTyDtqtQBu1jXMqxlCKqwLCC2oXcWsPMP5jJAZYgweUD3F6fiYzZ03ODoqKQY9pmVJL1NI\n", + "IXBJ76+1QatY7YuIfTRU0q+HxKMLrSP69J6mboDYm2Y6HYMQ+GCRQaCANlha5whCkBUGKUlONzpe\n", + "JwR53uPu3fu8/eZNgitQSjKbzchMwfbODltbe9y994BBf42333qXn/iJn0RJzXe/+12GQ4OUsYLS\n", + "OrC2WaLxlCf6KvPWLtbOkraAtl3sTwuKIeZGujL1QNHp/ZNOOrILSz48/XI8zkv6N8Vq+aXji0g6\n", + "Jiy7dd6h447iCF1UHjzCxRYCoTsHUf8tCCgpojpm5RghxCS97IqXVGrJEJb69uDj2rd0uZeYMI1P\n", + "cjke5xQ1K45/1YkLqRdOu5Pa/jB7dSoUrfHOMRwMcM7R7xXkeY5rXdR81zVKa1rvuHr1KltbWwyH\n", + "Q3ywFNl7vPXWG2xsbPL+7ds4WzE+O2Jvb4/9/X3m8znDXp+qqhLVEW9TJnmhEF11YvdQVKJuOq00\n", + "KKmXIn2XUE/y9D4lO2JSNGlZE8r3siuJj4tNSon1kYO31pLlMaHpgc2dbcZnZ9jhgE8//ZQiz2lD\n", + "w6XXLuFay6wu2bm0x+NHjymrijfefAul4nTPewUB2NrdpWpbTudzPrv7BTt7e/RGI3YuX0UKxddv\n", + "v8vZyQnPjw54/vQhxwcH7F25Qts0tE3AhcAXTx8hyzlrTYmqZoy213h+esz0ZMrl0SZaSz782jfg\n", + "Y8NaL5CLjLYRhKJHU5Zk2mBcoHAOX5WgQGeGoPIYxViB0xCCo2lqgoghaOMtobVxs8x7VN7hB2vc\n", + "eTalmR9SeEvRNgx7BcG9nAu0KpY+ewFIhZdgdSAIh8dhjFoUZbRtG1GW1pg8i/rzEBdlJjQ3b9yi\n", + "ths82p8QvMMUhrPJmM0Cpk3LR5/dIe+9jsiLhORCLJpKTU5ig7BODeFoXUMgoGREs0apWBQVYisw\n", + "pTS7uzuyo8crAAAgAElEQVT87M/+De7c+ZymqanGY6RMtQjexerAhPAjcPALNU0zmzEYDnm2/zwm\n", + "MQc91tfWuHrtGscnpxyfnHH92ut8cucOt29/wKXLrzGdTNjY2EhghYWUrWtApZRC6ajeqqv6pWOO\n", + "8AsJHimRuXDoyRkrmdQhzp9zXLOqjHUGWkeViXMgup4/sWpTahXX6ZcceFjozBErraHCl5N9AnBd\n", + "P5YUeccNR5xrRNb9HV8kFvMnofsdEcGHkjIm3b1LDlzERHbnoGXsHSPFisLJ+3PovDukThuY8B7P\n", + "ebQdUmS1SPCG87TQy+yVOXCTZXGStw1CQJEbBLE3B0GiJQTfYvI8FpBohfOWTCmGwyGbm5vYpuWd\n", + "d95iPp9jjAEzYmNjI950QitZltE0CV2ElRArLMMbt5Kw6egW75ca09isRi4Qh9KSTEmsDWgjFlxl\n", + "CAGbuPdoAusdxitG/T6tc2ysr6O0SqhNR822ybh5/Tp5nnN8dETbxIZXbdPSNA11VZNlObfefIv9\n", + "/X0+v/MZV69do6oqTK9AGM3mziaXr73GpctX6PV7TI6PQGX8m9/9fX7y6++zNlyjcrEAYzqesLW5\n", + "yXTWIJRkZ2+X7z75Nq/dusHW61f43kefMJnXvPPubeoA+8+fMLFTnj19RHZlyLwVZPmI1nkOjo64\n", + "fPU6g6Kg7xwYhcxi2OmauDF6ZXCuiWXKSExmQHYZ/yivPLOeor/O2GU4J6iDwDUO1wJCUD2fvnQe\n", + "lW1FY1tkZpITl9TeRVlca8G5hLTiIlU6i3MlfoKSAtu2qTHTJpOZw7sWIWp8cOQmw8sBT56XzBqJ\n", + "0y3GwNHJDIFEG0NmCqyrmc3nqXVDTGTppMwR3uOtX3DbSkUZpvWOum34xje+QVEUPHnyBL+5jfeO\n", + "2jscscVAlG8kpBeg9Z7GOfIs59qVK4yGfba3t8BZxmenfPfjjxlPpmysb/L8+Ii333mPrCioa0uv\n", + "P0jAIqJKRNRPF5nBdsUpUhBw6Ozlm2bHLRNCqhZ0aQ0sUXDk1bsiGFJiV4CRtM7GjptK4v1yI4ib\n", + "AAgVnb9K7iny2/G/VOKoFwx2OqURL+jDE98c13pY5EGFYFEB2c2L+H+XPhNprkR/oUXsX0RSJvmQ\n", + "Igff9eNc+gmVNlaR1DNpkFIydakLDyE68i7qX+reI82n5FKO+qfZK3PgPrjUWXQpl1FKoLWgaerF\n", + "g2pSJlrpOGht2tXauiHgmM2nUVsbWly7bAsp09+dEiUWlCx3Nr6isu8cL5YG1yLAdZ3a6Gi32LNB\n", + "LDupxXqv+F0pZayQ1FF+5kPAGEVIDaU8Ub412N1baKqFEAx7/QVPX1c1UkquXL5MAIbDEcO1ERtb\n", + "G4xGIx48fIjWGus9W0IwnpyhMgNESuPk9Akm63H33kO2tre58cZb7F67yXc+/gyC5Cc+/DqZyTk8\n", + "3ifvFxzNxjx4+IC+lDgP+48fUfmWYBsefv4Rm0XOd55+yiAb8td/5t/le3fu0grBwfN9Lt16h2ef\n", + "fcbRs0dcunqJeTNng3W2t7co8oKsP6AsZ/Q2thitjZA6ltOfHJ8ynk7ZdZpiMOS3/+QT7JmAXGFw\n", + "vHPtBlvbe3xy/+GXHxaQpZUZrCckRCdlTls7XOtQSPqDPhsbG6l5UpxXDx7cZz6bQwgURcH45Iz9\n", + "45raarwrMXnDbHbGzqW3cGXg6X6FKXZiQljOKHp9pIwtBuZtTfAOoaBs5jRNg8nMIok+yDKCc5gs\n", + "Q0pNWVXUbYNzniLvRRlqnscNWRk8JJle7EfTlZF7HykVlMYCo/U1JtMx4+kZeS+jV+Q83n8ae91I\n", + "wWB9jf1nB/zD/+g/ZlbVqMmUzY21CDKI3LDEpcZKDimXKBVsSmh+2VxbEylORVggxhiNLOlHsUja\n", + "dXy7FAKpRezroyQKEztCduqQAF4KCA48uCTci1LOqCLxbZ1o0LgWpRA479HCrHDKIRaPSZk206WC\n", + "JXZmXKUz0loWJGoGFjw8JAosOnmRJLAiBJROrSW7XSdAcA5EbC+w4iaA2JJLSIlWkXprIOnS/VIr\n", + "H0c1nj/RNP5PceKvzIEvvWH6V3A433XpWyYMpOh29vM9lyHE/thLhdG50GP1vjsqo+O3hBCL0tnu\n", + "97r/XqALlg5cKXPuYZxz8mnCL4Ik78Cn1qcr31epiY8QYlFeHDn5yLMrGaVTXVRmrWI4GEY54uZm\n", + "TPRIyc7uDm/zNt473nr7LcqyQiZK4Ps/+Ji816epGh7Xj7j9wfvMTk9iEbFWND6wvrnB9vYWs7Jm\n", + "fHJEYTK28gJfNQzzjCwElHVsbG5QSUGjFW/ceIePfn/CdP85Nq+ZHY15cPdzjJQE23J6+JxHmeaj\n", + "7/4xG4OCjz4+4tH+I/7WX/33GPo2th9VPWrb4kvPrCoZDodsbG/RH62RDwb01YjD41M+/87HNOtX\n", + "MZsZWWjZGwx5/bUbfPtPPnvpLPrwrXfYP3jOtGmY1TW66HN4dEq/GKCF4Xg6Ybixw87eNSaTCUII\n", + "Xr/xOru7lzk7OeLOZ58xPjlGCcHl3R1msxZdDAh6TL/3Gn2zi/TblOUpShoyM8Cplmoe56bSkqAC\n", + "rasxucYohWwiH25UhjES6QFU7HWTK+o2Fl4pHamwyWTCr/3GrwMwPZujsgznY2SaSYlsLet5j6as\n", + "yIZD5iJg1kbs7z9lrdcnBM+9L75ga2czOjkBvUE/VkkGywdf+4DnByfUVnB8fEwIsd1rwDIajXDO\n", + "UrctKjU0szaCKx/al465SAlWUtK2dU0M9zGpI6ZO8l2Pd6CXLQQJWiJcp71PG5Xoeot0Fbix6Mf6\n", + "WOyS5xm2cRFBJ4faUTZeRKo8UkxLOXDnABaR88JRn/cjMq27iICXvb+7X1mAtOSPFpHQgldPLYFT\n", + "ncMi0lhZ+6vJSiFigZwSEhFiS+PYFjuC2NyoBaj1K4nQr7JX5sAXzlaQerAvG8Ikr50QbZcBJuLb\n", + "lWxzLJvtnKlfhFmrm0M3eCF0qYpo4YWfdxZecOzxM784rxQihngsd9jV70vBgrvrGMF4RWFxrI46\n", + "dGnnXY5JbMAjU99qH2Jv4rKtKYpiEWKFELu69XWP4WhIVVcEoXj33bc5ODhkd2uTQksypTl4WsTE\n", + "3qBHf2ONwWjEz+zuIELcNJpZxeeffM6l9Q3eu3GTDInuj8iyHqflHNUzuLMT2ukZvVwxvHKF+qzk\n", + "4NlTtl+7zs5wiBUSb2uuXb3MoFdweHbET735M7RGc9jOyYVmUjYEPIUUtE3DZOY4shVN06KMYavn\n", + "qYPHisCsOmM95BSZ4M7H3+b4bErd8Zkv2FZ/xN67u8zblqPplO99cgfXgMgzil6fvlDorM9kVlE1\n", + "kc8cn014/PAe77z5BpPNI9xsSr/I8AZCWTPqD9HFCCEM5WzG8fER9+59hrOaYjAi67XUTaygG40K\n", + "1jf6zOanEBoybRgMhmysbzHoDzg7qynnNf3+IPaa7vq+CIHSmoePH/Frv/prkRppGoZrI1rbooIB\n", + "Z1Ftw4bJuX3tdfIs47OH9xlPx9S+InhBdXyCyTTTU8nRwTOUVgwGQ5xreXD/PkXe4/jwKNY9eCjr\n", + "hsY2sUVyazk5fR6LaUyO8gapNL1ejs7UVzoPncrOIVGOwiwSrBG2RDVXpA+69rDpfR9WLjTVXbVs\n", + "lz+K3HZEntEh6kRpplZTISBCTBJ2rWONMXR97mMUkNrIChYqm5D+F3NfAtd22B6Esx38Xq7lFFVD\n", + "lCt3/Hxc5ilxK0W6fhkbdPlYZbr03V0PpsAqsIy0UvyZ87HzoDYGmX4W2YJUUOVZjNFX2avjwFfU\n", + "ITFwSLxP+iSkhJBIbUY7iqJzpH4xMN3D7RoepaonVjjslFDpjhtP+3KNa4fWz6F9HwAXNwsRJ2/H\n", + "X0GcOotdXJDCQnHOsasXduXu87CySHwIy4SY9zgcVRsVLvV0itIqopngkU4steapt3GR56yNhhwe\n", + "HrK3t8Vbb77J8eExTdPG5lXOIozi+pVLkRJyDiU1vbU1RptDfuKD92nahvXNTU7OxlxFcHp0yJOH\n", + "d8l6mp/88CcJWvHozj2asub61T2O65qty5d4eO8+WRZfkLGxs8XutdeYTZvoeAOcjmcIApnJCN6T\n", + "W0ebXraR5znjecnx4SkuD9z+2puYfs7R5x/x5rWbnB49x9mXh5JP9vdZ29yAPOdPvv8D7j55Tq+/\n", + "ztyOmU73eXLwiDfffCNKN3VsSlZNJ+xtbdDWJbdu3sC4ig9uv8f/+sv/Mz29xU5vC5FJ7t97ytbm\n", + "dU5tRT0/Rul15qeSRw+e4aRib28TYxycTTk720crT12V2NbzjQ//LX7+7/wdjCrYf3bM84NDqqpi\n", + "WlZMZnMyk1HWNb/zu/83Z9MphFioU9bziOylQPiGvdGIr1+/gRvP2B72Gb79FvLhF9w7PWLYG+Fq\n", + "R6E1vX6BdZadrW3uP3jI1vYuTdWSScPnn33CzbffxyEwmcZ7F7tYajBoEJAXBfPaUtclLjj8vD0X\n", + "jZ6zDhAl1NzJAFcrI0MI57TgnT7eB4mMgXPS40uqql42bRKpdwigRUDiadsW3a3/RI0YIxcJ3bCQ\n", + "JXYVoURAmHqPrL6dSEuN8y1dZU3nI0LwSW+/ROsx+lbn1mv379gLXy0cuRAC4bqWyMuGVKzo0Vff\n", + "yhTpqdT4KxV5idBVh35ZXvhV9uq6Ea5MDiGSg/XpEQm52Lk78iJmieXC8abbB2IGeDV7K6VErtz/\n", + "atjU8V/xWOeR9up3V5G7EultGR2Nk2ibEJbfwccIwAuZmueEc865u99uI5Hdq8XkUs6IjzxujBQE\n", + "DsiKfOX6Qkym+Fh62zQWrVTqy6AAz9bWJsNBj9xIjo4P0NpQ6ALVy2i8i53YVCA4i1IBhGP3xlWu\n", + "v3YJ0bQEDXMVWLu2i5tV7G2tcXl7xI03r1DZmksbu4jasbm2zvreLnu5QWQZO2tryNYzr0qOZxN6\n", + "m2tc2srjZCUmZL1tEaHbdBTT6YSgDArNzLcM14d88MF7tJmkrk55bXvAds+wPthlQvXSefTk6IDj\n", + "piSYDDHoQ55z0tTMZhNm0zkKwfODQ2bTCaPhkPlkyu76iL/+U9/gyvabHDx9zLf+8A842n/C7OwR\n", + "P/PTX+f0tObJo8c8uveYja/vgZ0jqehlG7S1JtRAHuj1CvCWuqwY9DSvvbbN7vYWRwcnBFdx+Owx\n", + "g/46W1vbrK2ts3flCk/3n/P9H/yAz764y6effsazZ89ikt2LBZrUStDLFNs761wdriHahus72+w/\n", + "22fz2mVy4RnkCuEchdKs9fpkRazazKRiczRicnpCrzeknM/417/8r/gnv/A2rRO01ZyiyGirKVVb\n", + "Q4i9g6xtIUlnm6biPIN73jrZbORtBTqPc9Rau6ipiJFsdFrWWYyJb3jCpQAbQXAO51uUFGQyj1Gp\n", + "s8nBKbSWsa2FEOktVulVZYsXKZAURpast+xFY60lyKUj7d6wg4hFUfEVgKmfCrGMvqM0RUfn+Bix\n", + "+0TnLDTdziY0nl6d6Fg4bZVecPJiVN/l4GAJ3rrEaIw2liAwfscvKZwVmvll9uoqMe0KCsVFgn/h\n", + "5EDrDgXnEU2voOJVmmMpw1ki6iizOo94l+MZHXDXnvRFmc6ybWkXkpHeJ5mmdHLALnTtJ88je7n6\n", + "AMXyc5Wa0XdNedxKBrt7RlIo8OnhdlSR+zJ10FFOWmdxJ3fLlq7ethR5HsdQ6AVakEAuBMEG6km5\n", + "GCcpHaI9Y97p3ps41r5pY5N7JRns7TG6fBkIaKXZvf4mTV0vxgMBDBKH1wzYZCc2+krIp0NAq7Kz\n", + "LqIKSQVgvUNKza3XZ8zrGu+gnFdMZ1N6esbbbvzSeXQ6ndL3HgFsZRnDq7vMyjnrt64gtUZUmiAF\n", + "j588xkvBsZG8du0aAPPa8+DJETOb8/mDUxq7gVNDWjHm6LTBhpxnz59zcloBmwSZM7MTGgJCl1hf\n", + "IssAdcPkbMJuu8PRwwmnp3NcKDm9Pqd3dZvJLPD5/Sf87MY7bO1twb1DwvCQO/v3cb1AW7X01RDV\n", + "FjgjsKFkIBSvD3pczhWybjmZHpHtrtEOc4Z727jPjyj6fbQ3XN7c4LWNNQgtR+MTNl/b4rtf3OOs\n", + "HBNkTnNwyLd/8Mf85F/9kIP9J8xnh+S5xnpwOqNRUE3OGPUKMgO1rWi1gJdT4JxwRiYNoo09vp2K\n", + "Kq+6buj3BrR1g3eBqipRSpH3eoQQ3xnptEc6iUajpEovFgl4Uac+4SCcBOtoElevtY5No3KDVAYb\n", + "YpVi01iUVvRHA5pmjAoRDGQii31YlKPyc7wEFTR15dFk2NBELj14Ek+BlqnRFQKZErAqCIzOQCqc\n", + "j+/NRaQKYtcifIr808bS9ERKdsbXtzkbKRXfRCQvlYxpshAorIgOXASkl8TujfGNPbFFQESJS0Xb\n", + "y+2VOfDudVywdMiLHVOslMF2jnslTHsx+bj6ey9+p/veqr2sAupFO/c7YrkPrpbnnk+GnA83X3bO\n", + "l5070j3nv7usYhMru/KXNaHLkPX8n3iM5QbZ9Xd5EQWsnu+FAy90tS41mF81rfWicVP31pLu8+56\n", + "M2NwUn7pXN1xX9yAjffxNWvasBFSPwsfqJuWLM8Wb2950W7durXoT93RVq2zVFXFrJzTTj3XXr/O\n", + "5vZtfAgcHB+ysbmJkor7D77g9OyYjc0Rg/4AFzTPDg6o5g3G5FFpIGKFsDEmvndRRFy2ZkbIWjIY\n", + "9jg5LQHDvQePqcsZ/bxPb9Dj6OAJ2ztrfHLvAb/0q7+F2VznvQ8+5Pn+Kd/8/T9helQzP5iy1R/R\n", + "jkuKbFnEMez12BqtkQMSyfPDp5SnY66MhnhrWR+OmM0r+v2cXq7RCowwrPf7HM6mfO32u3z+eJ/D\n", + "sxnV/JTf+zf/J0eHj7m0sx0dos6wTYUU8Rn3exmEQN3YWLEY/EK19aKpEFUV1jmUzvA+vh9WKUHT\n", + "VgQ8Usc+/iHE8ZOpSMbZNhYOOYUUCilBOAiptYFIL2yRCJDxrU9CRiRuXRv70jsX32sp4ztby6rF\n", + "2opMxBeZRGoyYEOLw0YgJQRFlpOpHGfb9NaexHUr0N18dLFFAsQo3/rlO3ch5uE6cLaa4AwhvifX\n", + "+6UcMb6HVcd2Cy52I+zWdPdCdiliS9qOQRCie9l0pF/+wiYxu+KaTs7TOYPu310YtpAArlAQLzqz\n", + "1cqllylKVh1i97MXz79Ayp3Q/ksIf2kvbhQ/7FrOtRVdpVHEea3ni5nr1e8t6ZwvX0f32WpWfLWR\n", + "/OoxV0t7VzeUJVd5/ryrY/Pi9a32i3nZWHQdHV8csxc3m8WGk8LqRes3YpFU18GwyIe8zLZ3tuK7\n", + "OLWhaVta20a5l4/ISrZR5VA1dey82IPxeMK8bVEI1tZ7BF8xn51x+eo2bes4HZ9xcnbM4eFzqmqG\n", + "yTRGBhSevZ0Ntrc24iL3gXZmqWYN9XzOoJdjPfTXBxTDgv3Jc57+wTO+OJgyqU7oD/t881t/zG//\n", + "1v+DYZ1bN79OqDyTo+esDXuUszO0MmRGs9kfUJiMUNe0rWMwWqMwGf28YGu4zng8RfUEl7ZHrA0K\n", + "FAEtoJ9lrPmCk5MT3rp6hQ+/tsXaxg5ZnrO+tUmvN2AyneN9rDjWzoFvaUuLRaOzPliPlssCpBdN\n", + "O49QsUjKuhYlBGU5RwiJMbEniLXtIjqLFabLDodCgnct3ll0ov4WdRk4nND4oAmuTYm+aEblNE21\n", + "yBXZpo495rXGZJpgPU1TIYVGKUEbapyM7+0MriGTjtY3IHzqLgo69c33IUZxCBAq9ZpBUbuIortK\n", + "WOfjS2Kk1CnZGfNwIQRMEAgZOxLGVhwB6Vx8eXLi6YWMbyVSRifk3vm6lHuT3WaxbNfxw+yVNrNa\n", + "ILiVxd39rLOXo0u/cIhf9fMQwuL1RKuOpHM0qxHAi074q5Dvi05xdWPoHODLHNWL537RWb547Jc5\n", + "39XrWT3+i/0WVhOwf5YoY5mQeVGmef5azucsxLlS69VNZPW6VqvjVq9ldSNb/Lx7ozgSraKW3WSK\n", + "XBpsa78ylFxfX4+hZ+vQRpHlJiajSDJOZVE69jQRUnJ5sMelS7sopbBNSzUvqcuSqqxAB4zKGAxG\n", + "TKdzdna2WN8YMpmMmc3n7Gxv8Natt5lOS+4/fYhtPPVkzru3brExWuNb3/wWbdOii3Vufe0D8rUe\n", + "Tw+ecfXNTa6+cYvf/b3f5e69Q2Zzx+HRCRsbBeu71wlG8nz/AaPNAnc2Y2+4Td9k2KZFAZbA2++9\n", + "y6Pnh5RlRTmZUQhF3i/YHOYYLMKBkTlG5zjjaV1Ae8fZs6f8o7//97jzxRdRpz6b0zaAUhA0wrdo\n", + "aynyjMYZghrg2hrl3Fe+DSYHqrrFK09W9Ajtsv1yXcdmX+mdw7ExlIgFbd7G3uGxWVZsL+CdjQ4u\n", + "vSokvZsHgUWSeo8nBUhZzZaFRiHmvbSSaOWZzUu0NEgREW9dW7xwmDxGAv8vc+8dY1uS3/d9qk66\n", + "sXN4r1+eeTM7aWdmd2Y2cZdLchMpkivLf8iQLFsCJMiGAmQZBiQYsAzLVrAJC0q2JVAQTEqyTZES\n", + "STGI3KWWK23eHc5OTi/NvNTdr+PN94Sq8h91zu26p8/tNxQlDOuh3733hMr1rd/vV7+glMKoBJUl\n", + "hLUIjbb2F2kGGYBB5uIQIcQkZKAW1lI3CAKrwaIKM/scPyaHbZpQ+vncNyhpuQFyat06qMrXOhop\n", + "rDFfmiWT8wL33MESVt7sg+Q8ve8UeFlUANOL3aWIy9R68awLYuU8XYBy77lg424ixfWy/maRl/vb\n", + "fa+oSxUlDRAVPrSdv/eSJpouDki67Zi1uRR1rMqvDLhlrRt3YyjyKe67YF/uH3cTgWpuZla7Umty\n", + "aRVHlZqwqkYdBZit7h+VT3aJlxtNqXyRa0zuZlajhWXrdV4/YwwEHvPzbYKlRQaDATIKSJOUpaVV\n", + "Hrr8EOPxiMC3KpLD8RApPGpRk/3DLucvL9PtDRh2xoSizs13NnnsmY/QHyZ0hgO+9PWXiFo1tCdY\n", + "XV9ke/sGvU5GGC4hhM/C3AL97j4CQT1ocuHcRe7t3OH08jKLjRbSwHA8QgQ+MgrYOewgo5BRkjDs\n", + "j6iHEWEE840avjYEwkNqK7Ndqoc0Gi2GWcrTT36QbNhjrhbiRw26211u3N4hyTSXzq5x/uIpxoN9\n", + "PD/k+u199kYJUinWWwLq9co+97SX+4IXDAcD5vLgFp7v4QcBqcpIktQGzXbOoqQorKEBT05ENMqk\n", + "VrlAMPkTwnp1NUqTaWU3Agm+J8nSjEzFOeUsGSVj/FqIURqlY6uvH3mkSk08RHo55RsG0lp7A0Us\n", + "1+JMxioQ5Fynto6ntBSWWzE28LnK8s/c4tqKjiyWWZVDmVun5mbzucqlkMV6sYeUfuAjPZEfdR3F\n", + "1kyyFG0EWue6+veBiffRkGea7S4inRTAWDSoLAM6CbjKIFb126UoTwKWcj1dYHevuRSxC/KzgHXW\n", + "RlUur+q3C45FqnL4XgBelcil3F9VXELVGUKZEi+3w90AyxzSrLKnvhf3zYSbRgpJMs6sPvAMfVhr\n", + "tesjDCR55JrCylb6HlrZPgvDiDAKSdJ0ImNsNpqkcYwnJPPz82jfim2SYUyj0WDRzJNmQ4Y9Ta0+\n", + "h1YQhnWajSZRI8EISUpASoMHn9Ps91J++h/9LIPBGJMakpuHoDVv8Dae7zEeZsy3enQPBzz3zHOY\n", + "pk+WjpHMcXBwD3/OMB8KaqFPphTDLEEpz4oI5JhUa4bjlJWVFcbxEE9mmCQFYZ1vaW0IfJ8wCJir\n", + "h6hQ8NQHHqOXjlhemCdWPkr1WD91DhlEnNtYYXWtTtzzubO5zb3dAwamTSgkq5fOEi3OV/Z5vdZG\n", + "hxla2MAfF1dW6fV6HHY7pFmKMdbthecHuaaINcjxAj/3xy4xntVKEcIQCg+RU+BKCIzwQUpUFk8i\n", + "HSldmLIbvMCbWIlalUKfJLcDMUKTqRidaetAzAOjPetpUWUEfq4Z5XloxORQ0crqM2spYo78JmXG\n", + "BiKeKATkBjuF/D1RKULnYsQ4m0SwB1BaToJ6CymPDHQUIGQO6po0zaw4x/etuMY78q8jZsz7Ir2v\n", + "AF4ANdjKl0UdVfLXsiihuOZSgO79KtCYJYeFI6p0VnLfKT9bdl7jchZuRGs3ryoqeZYoo+q6u8Ed\n", + "OxytEMVUlXM/oL9f3SYULUyNpzsW5XE5VoeJ+4gjlU2Mdf3KCcpUYZTLabUpMpgYTWmdIZQ3MZhI\n", + "0xEFV2uMIR1n1kxb5CbZwlL+9UYdMEitCaMmSwvtnCLSebRwCSpGGTBBjau3tvjy17/H61ffYTjO\n", + "aNaa9Pr7eJkmFB7+uIHvSdpCM9rfo+37PP/NL7O8sor0PZZWl+mnmrmVswy2b+DphGbkUw8DlCcY\n", + "pskkRFdmFCbTRLWIUPhII4jCiMD41L06GMny3CKthQUWz6xyuNch9jTG8+in8Pa16/SykDhT3L3Z\n", + "oP3pZ2gGAa+//jZbuyNMXZAMR1yNFHOnTlX2uR/W2d28w5s3b6KBO60Wa2trrK6vYYRgd/+A69eu\n", + "Mjc3ZzfC+QXSJCFJNY1aSJLmaq/SQwqNVBqMYhzHiCBEiYyo3iBTY+IkzilRTRRad61RFBFEvj2o\n", + "zFLCwEdmGUIYG2UqCKwriixD+D5GGdaWlphvtOju75MNB3ieIM61WKzfFEPgeda0PTvyZyS0ttal\n", + "wvq3GWUjgtyWwYZ1s5F8pJR4UTDRlrPYpUBCpjS1oJb7ZLJy7nE8yOerQeXReIhzJS1hA4r/vj7E\n", + "LAPXLGq0LC91Qdq9Xz6orKLSXfApDgfcDaE4NK1KJ8mHZ9Xfpdwn5vyOSKeIFlTV5irKtQpwy/Wt\n", + "2rjKbS7fq+JyZo2HW5+ymMl9ZlaqclUABWDbbwaDcOSvJ+YnCg2bnP02JtcwsJ9FNCW3TFe90xhj\n", + "Q74JQTK2Pj4KWagUYExGpzuiVqsRBBHI0Drxb59FK8Nvfem3+M53XmD/oENy0EPFCVsjq2s9Tsas\n", + "Xt4QZZoAACAASURBVLzAeuM8t955l3HaJWxH9OIOC2fm6Aw7nD37AJ3RmNbyGqPRGB0EGM+QYPCM\n", + "sQezqcJDYMMh5P5LjI23KIwkTlLqzQZgf6+srFFvNzEK0lQz0GNSAWF7gWef+TAimmcYJ8w17eaY\n", + "acMwTqxIw2gevHSeRx97gJfferu6032fO7c3Cf0aRhj6vREPP7zM4UGPN956k/3DLqdPn+bM6fMc\n", + "7B3w+itvMRqOqEUh+/v3CGoNPvmZz3Dl2nX2drdpBQEXz21wam2NQTzm9s4Oc4uChXadTqdDo9Fk\n", + "PBxRy0MpCiHYP7ReGz3PQwa+lWVjfawMhj2yTONHNYaDEfEopVVrcv70BhfOnuHfffc7gKFWsyqC\n", + "CMGgP8LzfYxnDQgLjs/LtbyyLENpRRQEqDTJ1RvDIyOhICATVoNF5NS79KxWlhdacZ7xQOnMBiX3\n", + "fEf8eyQG9sMg9wJpTwTS9PfpIeYs8Ub5kK58H0pGMbPYco6OBKoAZpa/41lU66y6lMFh+rBvcmfq\n", + "+rR2xnT5BXVYBY7l32555U2rCoCDoBju44BYls2/F/FOUZ8qEQy4OvVMZHkup3SUl0FrMflePsw5\n", + "KSmVW7GRq4QJJvJGIQBdsYEXbZ30hgABkQ0vAUbmsloFwqMeNBHCY5QohFAcHA741veusnnrLq9+\n", + "53dQ+138UcqzZ87RbjcYm5iRzBj7iqAd0Vg8w4effJivffu3eHf7Gs35kMP+PWpejRs3rvPgmQeo\n", + "GUk7atKLmmzde4eNtSWQHlmc4AcB2hh8X1pvhjJAeoYkSWxQDXseiRAQegHX373KqY2zyEadaHmB\n", + "QAc2ilAQknYO6eztI6VkfeEcB7u7jEZ9VtdWyUwXjWZ/+xav0mN5udoH+6/9xq9TazRZXFplc3OT\n", + "tVNrrK2t8a9/4zdI0gxPemzd3cYXITtb9/Cl5OzaBjpTBL5Hdzji+o13GY5HGGM3zqtvvs3lCxf5\n", + "/ksvc3d3lwsPgU7qLC0tEccxtXqbUazY3d2lVqsThhFJlrK0sMhoPGYuatLvH6JUShQGgEIpgxQB\n", + "d+/eZKk9z7e+9R021ldoNuvs7e2DkIzjlCCsobTGCNDKinK0p/GExJOKOE7xPSsa8YMAncu/LV/o\n", + "59GeBNLjKFi1J0FoDIV64dGaDqOALE4mhn7W1ZNVM8wy6+WwUEH0ZoQSLNLvCcCFEO8AXUABqTHm\n", + "I0KIJeDngAvAO8AfNsYcVrx77NNlxavY+PuBq3uwmX85BnLFZ3FqXqVaV87/mGk9s52tz8rHFblM\n", + "H4hWA1T5oHMWVVwlwilfL5JS1cBYtTGeBOAnbWDuofJ0PafrWM7fw6dwzwky1wt2yp3hPXJSZ8NE\n", + "9l3SPM83DzPZHCeiq1IdZCH79PJI5iZnaX2PJFXUWnP8lb/y1zl//kGGco7Xvv8iK1GDh5+6RDAc\n", + "Ex92ePLiRZRQXL17k/1Rlywbs9AydO/t8MnHn+Ar+3foHnSYb8+hE4FUkv3NbZ576kPcvHaNs2c2\n", + "6PbvkSljnUsJDx1nyDAgkBJpfALPRjeS0sp8hSfAU8ggQOmEO7fuctDrYOp1fuALX2BpfRUlDcKT\n", + "nNnYwGjNaDRiHI8JF5qk7Tq+73Pm9FniQYzxBETS6nZWpJXVRbrdPp3tbc4uLdNqNdjcvIMQBqVS\n", + "BNaIZ9DrMR4OWV1aYb45T6dzyHg0ZH//AK/VJMPQqNeYi0IWwoCN9TV6h4csLcxz9/Yt/DNnWV5a\n", + "4/y5DQajMYPhkKVlj9t37rKxcQZBQKY9PvjUszywsszuziZb27e4t3uPyPMJG3O89sZVdnYPaTwz\n", + "x6XzZ9nf3QYpSNOUWr2BkBlxHBPWImq1Or1eF50ppAe1Ws1GJ8KqEY7HMXGc2wTkroKjIMAYiOOY\n", + "KAitOWGu3FCc7YRRbaJyG8dx7kvJILzcH4wo/KaQ6757KGVIsxirbTM7/V4pcAP8kDFm37n2l4Ev\n", + "G2P+NyHEX8p//+Wql6vEA/8+qcinbCRSLNSqzWJqIVMtW6+iul0AOwn0q9pT3mDcDauqTe5nOd9Z\n", + "5c4Sa7j3yu10ZfnlzfCkVG5/AeBljZ2qepTrYKPUixzErRy8OGw0wvWvXE6uSGZ68zEGpCicnE1q\n", + "nYux0uN9io1nqHWu52uVghkOR7TmFsi05E//13+Gr3/ju3zz536Fs6dOc35tEa2H6Br80Bc/ixqM\n", + "ifD4A5/5ArtbO9x59xbD2yOMjBgOhjz6zOf57pVXePHGNUyjRTeJCaKIX//OV/j4xz/Cwd4WG6fP\n", + "MOrs4wsfP6qTmFHupljTrEXYUG3aBn3A4IWSYTwkiYfUvRpnzq3z2BNPc/PePo12EzxJpjNMkiB1\n", + "RiQMzVaIaoWMjUGGEadOnSKUHpEQHPQ6HKqUVtCo7PGoHnC2sc5CY57xaIzxBP1Bj4uXLrC7t0+/\n", + "P6Req1GrRcy12tap2vY9Op1DtJ+xvLKIEIZGvU42HBA1a8y1W6TjMZfOn2Wr22WxvkC32+ell17h\n", + "7LnzjJOY1dV11k+d4eCwz/dfeoXx2Hri7PbHNJ76IM1mjdXlVa5cu0KcKuptw6uvvg5GcOPGO9T9\n", + "S8TxmEcefhylDf3BgHqtQZykHB526PX6NBp12nNtayykUjyTa5MYw/Lycn7oqanX6mRZRppkJGlK\n", + "rVYjiYd5IHTr1VEUFIC0XhujWt0G3PZ80lADHlpnk/Xn+z6pShHSxtjVWlgu8IT0H0KEUl5ZXwQ+\n", + "nX//GeCrzADwMohCBWWeE6ki/+c8aFkXYa8abSY1OekwbxZVX6b8p4FgGtRdirWKUq5qZ1Ubq35X\n", + "abCcRBGX8yieLR+wniTfr7peJZt3yyr3Q1Wdq0RAbn2mDjn1EXBbIbVHPrxYaJ2RJBijc9/KR/6s\n", + "rRzSGl9Qsla1HuvcOlgKKI56mNTDzyICFeATooWmVgsYp4rX3nqDv/v3/gE7e11+7IlP8eADD1Jv\n", + "N7i1vcnK6VMMV1boyH0+ePEy33z1ZYKDDi2lefhcg+bCHAeDASEBj/hN9DDja4NN1HwIo5hFHfLi\n", + "y68jSXnu0UdJBiOa9QbJ4IBxMkBEIamBmueDslo+Yb1OIH0gINGKtUuX2O92+dQXfoyVU6c5J33w\n", + "fJB5FKDcaZLRhYsD6x1Sa4OuaVSmkAja3gJBHB/5Qy6lTz77LJ7nU49sVKhUZwyHI5RWXDq7ysH+\n", + "gbXSlB5pssR4NKbb7SIjjztbY86un2d5bZUrV68SBj4H3Q5BFPLClbfRjTob83MsLS/nvlU0wvNZ\n", + "a6ySKcPm9ibD4ch60ySAGG68cZ27bz3P0tIyly4/SKx9dvY7jDcPQCukMOwf3mOvM8fNd2/w3GMf\n", + "ZM747B0MORiNuXrrLsM0ZWF5lblmRquuWF1e5tT6BbxWh/W1DTZvbjHsxqSjlIW5eR5/9DHOnt1A\n", + "Gc3vvPAiL734EtIMrc9/37cHnQiMFiwvn2Z+YQ2VSXbudVhcXEFGinE8wvMEO/fu2jOTcR8z6CKN\n", + "wg8kBJAmM/wZ5Ok/BAX+W0IIBfxDY8xPA+vGmO38/jawXvWi57AZxcKu0gCpotKrAAOsU5rKSlZQ\n", + "zS5AVclyy3mXr1VR81X3ivJPirAxi/s4iZo+KRW7+UkbUbmc8veTOICpw0chJs6NZrW/SK7YqQz0\n", + "1rfYbC5sVt29XNyBN123InZkAd6uZaybn33efvoysk6QPIlQGkWK0dbf853NLf7+3/k/GA81Tz3y\n", + "JGfPn6PT7TBKR6gkoV6rcefOXc6dPcfGxYv44zHe3h70etzr76FGI8JGg5V6g0dPf5Afahpe+tIv\n", + "0xnHmMzH9yMCLdBCMooTWu221U3PMlrtJkYKMiEYjUZ4QhD5AWmmiRo+0guI45gHP/AIn3/kUQZJ\n", + "wiBLrQVkHhrQqvIdEUw2YIpXbS2bk0qzNvGlxcUjQsEYIi+k1WxM+vjcmQ3SNJ0ai/F4TBwnjAZW\n", + "3zuMQpr1kMFwyGG3S6vdRGnF9tYWg8GAxaVF1tdXWV8/lfvKTmhEDeLxmMO9HRZaDYL5EE/4jMdj\n", + "PNkgU5Kd7S79bsa77+5Yl7TUGA16bN/ZY6G9SLu1ws7WNttbW7z6yssMtUDUm3jSZ9QfsLq8wtz8\n", + "PI88+iiL7TbBch+hPG4pxRtvvcVCY57OQYeV5WWCMKBWr9FotFhbP80oPaDX61Fvt1mYXyBNrTdR\n", + "FQb00oQ7t7a5ePEhbty4xa3Nm3z4mQ8TD0esnL6IEJqWTgkCASZje/suc+0m3V61D6Ai/V4B/AeM\n", + "MZtCiFXgy0KIN92bxhgjjhx2T6Wf+ac/P5kwTz/5OE8/9XilhZ7rj6EMku5hn6W4quVFZbAQQhyX\n", + "l3Ncvuted8ssf5YBrVxXOFKrKwNY1SHg7ybNovhdrZf7bQKz/K24bSj3tQuAZVHQSd/LG0C5DVX9\n", + "VzUmRSqceJXrWSWecjmTKi5Kj61JuicM0ldAhhaCeq3F3/wbP4WnAj73A58E7TEY9RgN+9y7vsXq\n", + "8grXX36FMxcusv3OO/zCa2+wGIU8uL7Kgw9fYhSc5bDfRWWKpLlAs7XAf/bkH+Kdrdv81ne/zdDT\n", + "DGSCSD2CwFod+r6PUIIoqmHIrOFL7hPE833bbgTjTFGvS8J6g/nFRYTnUavX7AFoZij0iL38gPdo\n", + "c9O5KElN9QUc6UDPSqdc9UJh/Vprra2/klzTqVDlK+Z7FEVW7W4OEII4SZi7/ADCsyHIDFaP//Kl\n", + "c2RphhFYs3hPWu0cbRjFY9L+kPOnV/A9n163y9LiPE8/+QlqtYioVuflV15n++4e48EIgWA4GtJu\n", + "thn2Rmzf3eGhBx9g9fQ6/STm4eGQzAvojWJSBPd29tnZvMO9OzeJ+x12d3e4+Og8C3NL7G13iHzP\n", + "ujmYX+R73/su3/jG1zh3/jy1WoPr16+zcHqRuZV1uoMB927eYTgcceHCRcZG0e3tY+pQWwpY1Yv0\n", + "zYCwVUeEHr/4r38dYwyf/sEf5KUXv4/QGdt37zA/P89oNJw5DvB7BHBjzGb+uSOE+EXgI8C2EOKU\n", + "MWZLCHEauFf17p/8E39kJpVXJCGs5db9KLsi3c/stAqQpu9Xq7kV1OysPN4L6LqLpgCxQn+9qo6z\n", + "QLCqTVXXymKbk9Ksfi0Da9k6swyIVeNX1P+kNpQ3yPK1orxZqcpKtni3sPiF4/5iynWLsnmETDBy\n", + "hBYjUpOiTECWJPyPf+V/4Td/+cvUdZ1GELG1/w7bm3do+AHjw13a7UW88RghPR5//BGuvfUWA0/w\n", + "wrvXSBuSRx95mA8+9gSvv/kG17a22Dhs8Mc/9mme/+3fYlyPSMOQ5UabO3fvsDlX46nLF+htD0nT\n", + "xPqvNh7jLMMPIoQXWtEFhjSJ8UyTP/cX/xtGSUqcpUjfByPwPAG5cTp5kBC3b8tzzO0LdQLHOBgN\n", + "pw7kC8o7DEPq9foUgeTOGa01yXCM0ookTqzpfZrkB3yWY2jXAmrzLYLcgCdVGXFs9bWNgfF4jCXr\n", + "BDozVgNJDdAqYfPuHd65/grjcZe15UZ+sBig9ZDTp+bpdTZptx5k52CfN6+8xWicsLC8RlSvce7c\n", + "Rbbu3ePSgw/Q7/fwPMnh+gKJvodJE+bqdYYMeP673+bDT32I3Z0dBsM+aZby2ONP0m63afktvvSr\n", + "X+bHf+InmN+Yp9FoWI7Jk2z2NpmrhfzOt7/K448/xsUL69y9e50rb1/hYx/9MPV6EykD5heWCMOI\n", + "S5efoNlsIaTk137xX8yc+//eAC6EaACeMaYnhGgCnwf+J+BfAX8c+F/zz1+qer9q53fyBnK5rfSO\n", + "AUlFXez1+4giiu/uNfev/Ows8YGbbzkf9145lU3LXQrFzdvdMI61saJtVanK0vS9bDSz3nFBumw0\n", + "Va7fSX1dfr74K9j18jvF5yx2vjCQmtWGrMKbotsWt14+AUJotCetIyzpo02NwFvgrTdep+63SfY7\n", + "9Lt3Gahdmj7MN0LS4Zhk0GHzzrvIZouX33qNZqvFvf17tGoh436Prdeu885LV/ihH/1hzHgEdzo0\n", + "On3+2p/48/zpf/y3SPw6wyCi3rCimMXIo+1r5lttRuM+Xi0iHgwxniTLQ3rVGzVqzTrNxUUOej2i\n", + "RhO0si5JsdaPkwhW1kh8qh+MMVNz0u2nKkveItVqtYl8GpgiTNI0nXB/5fGWUuIH1mtiq1UnTa18\n", + "t/Bu6fpesT7vbX5JkGDjjyra9Rqj0YgwDBmPxzQbTXq9Pkl2wMJCwGd+5DmUMvR6ffqDAXt7e4xH\n", + "Q8bjIUG4xMK8j/HhwoMXSZOM4TBmZ2ePr/zmr3HqzBk2b10nM4oHLz9ArVHn0pnLDPsxh1mfS+fP\n", + "ceH0OdI0YTDo0et3WF9bs0GIleL221e5uLbBWy++SppkLCwsEgQ++we7LC7PM7/Q4vFLF1mfa+Lp\n", + "DhuXN3jq4fP0e0Pm5hdRGq682mNhoU2vu8edd67/RzXkWQd+MR8kH/hnxpgvCSGeB/65EOJPkqsR\n", + "Vr3saozMEl3ANIXkAkQZDIGJE6NyqtIwqTq4K5flLvRZk7kMZMXELXe8C3xlCrkM/JWcyIz+mTXA\n", + "99OqKedfvl+1eVW9X2WQVR4v97yjqh8LIHHB+72KllwAP4kbKbeliqL3PIPxDUZoUiNITYD0Wnzr\n", + "m69iTJ3Ir7NzcJ2st4sXZdQCH5kleCiSdMj50w8zFD5b71zn4x94iLlGg3OnTvGt//eXWX7gQX7n\n", + "V77Ey89/h49+4lmeXNzghddf5dmPfZw/8Nwn+JXrrzJSMa35ObZuvctoHLOxsYpWQ/67v/yXWNs4\n", + "w63NTW68c5MbV65a7ZZ4iFev89Szz7Kwsspht4P0fOtn3RTnSspapEpvEtzX7UtrHThbq6oqFeNV\n", + "9gVUNecnetH5c+NczFKvWdU63/fJkmSyHnyZr2tp322325P3oyjK5fmK4aiPlAskaUq9EaJ0g85h\n", + "D+EJkiSlWauBykgbDR44f44oCvF9nzDySY1Pe34eDGwEIR+4/CBaP0e338WvhcRJzEG3w3y7zvrS\n", + "MmIp4BvvfourV95lZXmNBx54AMQpanXrYrjbOaTVbNCq+ZxaP838/CK9/oj5hSV2d/dY7a3iB/DS\n", + "Sy9w5eqbJFmMl6UMByOiKKLWaNLpDmi3F/CCkNv9Q7q9AT/wA58iiiL+7xPGQvxuZa7/IZIQwvyb\n", + "f/1zlROm/NuXwbEFXQbJyYKUxyntgsU7CciqQNt9torSdPOsAq1yqro/i3Kv6pNZm8h7Ea+UOYhy\n", + "favAzBVLlDfYsrjifptbmav5923Hk8995ti9F7/z5fcknilT9pVtzjyUTIkaPqMsJagt8rWvv8Kt\n", + "dw5Yba9x8/WXObj5JjLrMhfZKDZR6NOPR7RWV1k6d5762in8WhNhBBvLq9x48y2e8Oe49dZbPPHM\n", + "k7zy7lvc2rnF4xcv86GNB/i3X/oKanmBX3vzZV7v7dKeW2T3zibn1xd54sFzPPLQRX7iJ3+cBI2W\n", + "HkJ4hNIn9DziLCZFI6UgU1bf3cvPBIpoUWAFDrmuzbG+vt98/cinfvzYve99/dfv+365HPLyVW4l\n", + "izFWECKEFe0YY1UinLmlyV1JI3LjLPLDUX3kqS+X6wcitC4TjA1CnmUZSZzYDR5jvQFifZ+nvkGl\n", + "mTWhT1Wu621VWIejIQqNF/gMRgOiQBB4EQKfLLE+xOfmWlx68BIIwd7+Ia+++gb9wZjMH9EbDFmY\n", + "W8b3Q4zxaNRb9AZ94nhEe65Js1UnHo+oJ9ZQaP/wgIND60NmMIp599Yt2vPz9Pp9G/ih1uBf/vy/\n", + "xBQ7cim9r6b0Lis+c/c305PEZc2qHDuV1fUKKqD4XWb/q1jHY1WYATguZVFl7FN+fhaF6NbVLa8M\n", + "wO4772XhlDcG13hplhFSOY+qjcot/36+Y8r5Vv12r1XV4aT2FkEkXLl2OZX9xRSO08opE2N8z6PT\n", + "HSFljX/1S7+KJxfwtc87V6+SjQcsr8yzv73HcCCp1QKG45h6q8nKqTWu3XmXp8+fQwnY3tzGz2Bn\n", + "e4ffObzG+soyr777NhsXz3L+8Qf57gvP89yPfJo/+tRf4O/81N/m3MIyvUiyM4g5vXEWnQ1ZXT/N\n", + "53/0x/DCAKEVRtjo5bHKrNMoYTASKzIRxaG8ACTGFUcUAQLyafRezkZmbbRFH5ZFieVUqRqMwIZP\n", + "zN8ReTjB/D+L39YiEmMQvnVSZjcfENp6+xPC+hw3uXMrgyEr4pIJCLQBrJOrwkEUudooYch8q2Y9\n", + "BmqNyTQqsw6rtNHMqzZJlpCpjGbDhibMUo3n1VCZXTf1eo1OZx8NjEdjlpcWaLcVCR3ObpxCyoAs\n", + "M8RxSrtdRxhF7AlUqmnVWjSiJk0RsbOzw/zyBuceeJRhPKLb6xMLq0PuN9vUGnUOO50Tx+l9NaUv\n", + "g1cVK2fUyXLvKZAzx0UVLqXuyuqqNC+EEFM+Ulxqu+rZWSb973VCu4BYXhBVC6iqjJNEQVXAWbSr\n", + "7ELXzV+I42qWbt+dJA6pSuV+q0onyfreKzifBPIFcAthY0+W8wcwniFLFauLp3jhe6/SpEY9avLa\n", + "22/SPzykGRqiRsDS6hpbtw/wpDVxv3DxEvv9Pj6S3e17PPTYU9zbvEe92aA+N8fe3l2GnZi1U6cY\n", + "Zgln2mv8qT/zZ9k6PODezl1+/I/9EWS9xn/+F/8stBcJ6zX6vUNeevlV/tyf/a/oDTrWuk9K62ND\n", + "G6QGpMil2sfBtGzV/F5A1+lILGFc3Z/e5GA459D08bzc8o7GyDoOK8LoTew7pKDQVSui3ACYvB6Y\n", + "3O22lPmhtPUKqLH6/wAeaU7IG5RKiurZOeFZ9VVjLzDopta+RkqrneNJpC/wDUivTlNYD4qeZyMy\n", + "WW8N1lNloU+fpAlKZ2idMT/XIEkyUNayMk0V9VaTkRzjGc3iyhKdbpcwrCMy6PdH6IUmYa3FYeeQ\n", + "g94mRsA4HbO0sobneyhjCMKQM2fP8/OzR+r9A/CyRgZMg2+VQyd3IbueDIt3Qz+sBEd/wlYen8Bl\n", + "UKzSQqkSHZSv3w+g3OQCYdl8vYrKdetb/n0/4HPTLNez5ToXh1Bue8oiq/fa1qpnT6LAq66dpEPv\n", + "RhyvyqPgPNw8y5vPpI6eTyto85Xf/G3efOkKpB7Nxj41NcCvQ5qMUGkNKVr4yx6HoyGPXb5MtzdC\n", + "pRltWUP3Y9q1OqtLy4xVRm1+jl1S0tGQ3o0eWzdvsXf7HmvrZ3j4scf4yvbXObW8QDOs8yf+6H/B\n", + "P/v1LzEYjohqdYyBr33jGzz+1GM2fiUGI5SN6KI0RguK2Km2/Uf+Z6b7y5B7i6kUoZWTNmYS6Lcq\n", + "TSj6wkCq4uypPJ8n6zZ/L0dXW7s8uLAxZgLIQO6C1YZ2m8xyLfPNxSAxTHx560I92AL/JHsh7AFo\n", + "LkASQuKluVM5bR1UWSoejNY2zicSlWRgQPuaIIhQyuD7AZ5vXf1GQYCUAcKA79VIUwXjhCAIiOOx\n", + "DcgcWde1wvOp+fMoZRiPUhubNuky15DUgjbjOMYLAqS/RK8/oNVuIf2AXq9nQ9OdkN5XAIdpACnL\n", + "VuGIAp8YH1RQjkU+Vb62q+TbJ4HRSaKM4tr9qM9ZQPJenz1JK6csPpolCplFvVfVY1aby3UrU3Un\n", + "tcFNJ4FFkcqHmO67J4lQyi6Iy8nlJsrqhuWxN0LyzvVbfOPffosLq+dZXJjn2tUrDIZdllcW8X3B\n", + "aJRQCxuESw1WGmcYZwkizWj4EUmmyfojku6A27duI6OQYTym29lDDwY0wgbJ2DC6vc/WO5v8qb/6\n", + "P/ADn/0st7e3ePu1N3nqiSf50jdf4CAeIMaKC5ce5LDTJQgixunIBtLGUqtSWgMkivmYu8xFgDLK\n", + "aacVs0gh8cRxo51Kd8ZgnXrdZ6wmZdxnLciCcjbWWVR+42jcPEdTxs1X6MKDtlUnBtA2HLg5kgih\n", + "hEFQJ1Xa+iIxZop30DJ305A3KcqDfQgp0cJuBJnW1nsgEl8IRBAhEYx0jBTexJeJUhnapGSZDYhs\n", + "Mo0UYzAS32uQKQVBgPLACyOUsS6K2/PzqAwWpE+mDDLtHfVb7lRrNI5ZbS3ZOLC1gIVwgayCu3HT\n", + "+xhSrZgILnDnrJs4Csor84HPjEalR5ErJixePoE8KVAimnSKEEfPGG0mhyASMSnHPlcGBlc0Uyzw\n", + "ItvC3NvNQzCdhWvVmVMaFO8b5xmbr1LT4ZSK56Q8qkcZcGadA5SBbxZQTWo6AfWjNhZ1seXa7/bT\n", + "rpgqn1KF5d6xJKctXE/aRIwpg7SZzAGqc69s0/HkQx59vKDcLBtsD6QsqEsQkppo843f+HlOz61T\n", + "qzegIdG6S5MBMpbIxhyH45QFQs5/4AOszje58vy3aQcSEw/JhmP6e7tcf/55GuOE5LDLUhTQU4KF\n", + "epuGF9Benyftj0k6e/zDv/HX+S//+/+WZhQx3N5kezxk7fQyi9kid25f5Ymnn+BDz3wQpRUhnvWN\n", + "kbfB9ms+XjnlagrgEkd9bAwYZTDCoES1KuYsTm9W3wpD7oTJjpOpttWrpMCnRjiv+4RYY3quT767\n", + "ZVPIxAuPkgaZf5pCpGLyM7bJIgeDdfWqjSHJw6CZ4lhX2EDN+TEnSuflCEGQR9vxAm9SnhBRvl60\n", + "RVAhEEiSNJ3ULkkyyOX5UlqXv8bYjVEIQYB1aeDlIiE/9Jivz2EMNB38uN95xfsK4EodRbkpJqRN\n", + "Rws+mwqHZm9pk+98UiLy97SR6Fyv1JVzC2FlbBgLCKoIh+T7CCkmLOd0PYqKFGIKF5Bt/QqOoChv\n", + "UvMZYFnlhe+ozOP9o5wI1naj0xQRr8vGEVXA7P65ZU2PQbFpFuKS6XtHG5fDGXGcW2Ki3zCdXFg/\n", + "yRcM2HBU5aVabJAnpVkbWJH0BLNsmKoi8osXeEjpgZFkmSLwA/75P/05djZ3Obdxkf5wyNUbb7IQ\n", + "+XhKYOIhola3ZuytJhfXTnPtjVfYv3MH7SlCnVhvj9qzDpqCkCzLiPwQLT16nR6Ndpso9HnqfaY5\n", + "hwAAIABJREFUmacQnZSbh/t89Rd+iY9/5rPUDvt4kaAdBXTVmI3T6/zsP/kZ/uAX/x92d+8RBiHG\n", + "WABHGLRFPzuuTFOcx8REJxBxVYZYE1HiLMq6RCi45brj4uZXxV0VFIMoni1xf5N33KKPSsv/t+33\n", + "PWttekx0VGCBMRhpw6RNZm2RvzbH56SwVLp0xE5grVStnN09E7J+vgVHfv7DwJ+0oRDzuesl01iP\n", + "k3lA5DRNjwVBeS/pfT3EdHfbskx7kibAwaQzpJSTgxStFEZpUNo6gKEYWktpSQRSHOVtpDnyG+0M\n", + "Wjk8miumKRs7uGqMLkAW16om9awBqaKmy5S0NUY5rrJ3kuy9vBnNEkPMImBn1cUTx9syq22uPPN+\n", + "2ipSklOUVRv6/dNMMYsBKyfWWIcrBrQ9eIvjmDCsk8aK2zffZefOLssbZ+jEIwIN/iBlmPVZXKiT\n", + "pSnJYZePPf1JGmtnuf3qK2y9/RreoG8DJwcetTBCa+iNu6ytX2T/3oCl5Tnm1pft3E0y9u5ucXUQ\n", + "86Hzj3CmPkcmAnZef4MlP+IX/79f4HBxgZu9Qx566DzPPvMhxvGIZrNOluViIOFhhPXzIoWcmLzP\n", + "AsnytfJzs9wg3G+8TgoC4oqt3DxniTmLe+7nrFQlGizKLvIvcMK9X5bJV82XKo6huF6OBVuFHVWi\n", + "Xbe+03Yg1nK1uB/m0YbKdblfet8AvHywdARUYsrwQ0o5Ae+iY4uYi5POzGVo8cSdY4AU0oY9Mtbx\n", + "vR/4Ez++Nrr0ccu/oi4u6LplwpHVmFKKWq02NegwQ6boDHYVoBbvF06hXHn/0X1dECxTaRaYFi5o\n", + "7rej2z4+vmiqxC9CCDD62CSeOdHMtLl6Oc9yPU6Sdc9K92MxPV9iUTx/TtivRsNcu03nsMf62ml+\n", + "9Vd+g3ZzgfMPPUymDd/45V+jGaeEvsdhr0uzVidMFUn3kGh5hV7vHmnaJ82GJEbTrjVRKiX0ApJB\n", + "j8AYxr0e49GIqF5j9dwFxnc22drZxIwTvnn3gLA1x5n1Z3n2Cz+M7Mf8ws//PKQpKhlz9/ZNfuZn\n", + "f5qde3cJQquVYPlxkQupXY7wONFRNeeqUtlS9b1QgO5arXIHUQWy7r3y/WJtFfkUxlknuTS+X/sK\n", + "g58yWBebS3m+HXG65th8nXAkpTaUN60jMeh0+1w116KtSh1tni7x59brvbh0fh9FKMflupWR5rWZ\n", + "nHpP/UmZE1f5BDLge0cn7VpnE5AOghDIwyLlEaONduXp1QY1Rb2Kz/JEKazYXM2ZKkCdtdsXO7er\n", + "2gd2QqdpOtNKrjzximQlDo6UsLRYqia65VyrZNLHKXgAydHEvR/Yzpr0Ve8pleXPlO/87iiyY28L\n", + "2xcT5ttYPxq+7zMcxMy3F3nx+ZfYv3fAU49/lDGG/YMDlleWkbv7aD0gjRUDNUKNFFfefov6aMDC\n", + "SotxssC+6qK1YqQzWvUmWWIQqSLuDqjJgOFej1pznquvvsGz5y/x7Cc+hsbgjxRhvcnOYo3Xe7uk\n", + "3R6f/kNf5Mr2Fq//5q9Sq2mSeEQQeiRpjMz9nxiTcxCFKFEfH9fy2Ln9dGw8K+b1/UA8CIJK7an3\n", + "Oi5VADdr/ZVTua6z6g7VHk+L8socieurqMhXSjml4VRFhEzP62njt+LZMrEohHCiYx3Ve1Z4xJPS\n", + "+wrgLngVyQVEAE/61hzYFLElcx8PUtpDCCFQWAbZN4rCYMkTkjAMc5DOD0tFzkgLkQe6PSrTndhl\n", + "0CtMft0Yli7L406CMshW7ebF90Js5N6btDunBmZN6nIdi02tzMbdj6oVAmYYeU2VVd7Q3HbNUuHL\n", + "HEqnnF91PapA/uRJfD/ZehFzsJxPHKc0621Uanjhey+ysrjKuzvbzM3Pc/udm0ilWF5dRsU+XuKx\n", + "s7eLkD71VkirWSMQ0GrU2YpThFH4Gjwvw3ghB70u7TShtrBMrT3HwoU1/Myws3OI2N7j4cceZiFo\n", + "Eo9TzFKbyx94hNFhl91vvsHu1hZpMuYv/Pm/xKB3iBd6SM+zJueKfN7mQJArU5fnSVn8VT5/OYl6\n", + "PYlLKlKWZZP5qYrwYiWAm7UxuHV1530ZPN9rKpfnrt+T1l1503HFokUdq7DJnffl5wvjqTKeTHy9\n", + "5JKD4nohDnbX0f18n5TT+yoDL6uAuR1XPFMEEzWmoJjzs2KlrF6sBOkHJFkGQqK1IgxD0jjFN4U2\n", + "S35YmgN4UbbgOHtXrmPxV7beKzrfrW9VKh90VgGvu/sbYyYe9Kqoh/JCcb3Cufrb7kFwEY8PjruO\n", + "tZzPbHewRTpaYEX+xWIrjimqFp2NpFNok1jNoOMb1jQLOb35ldU9y0mIk9nMsjdjYwwID09CmmY8\n", + "/+0X2Nvd44lHn+Qg8unf2yfrdGgEPj01ZnFuHvqC9bMNhhKaq6fY3dtjPpCcWllhpz7P4PCAXpzg\n", + "BQ38KGDl3DnOPvYBRHuBu4eH+CureMt7DPe67HQ6bH7z25xZWOW5xz9M3WshDxJWo3keO/Mg/+JX\n", + "fonPf+4zPPvMs3T7e4AlFgwCX0iE8dBGgTBWG4RqMC7PNyGOu5QoOJ7ikn2/ANfZQBI4gaLdgzc4\n", + "vsEfH49qcUfVO/ebk+VUpn6rABiOPIO675WtuI2xYqIgCKbyKNaBC9zFBuZi71H/W2Kh6Fsvj61Z\n", + "1M/Nt6ov7tfu9w3Ai4E/abcrnhNKoI1CiNxQQYDWtrFvX7/B5YcfIag3GA8OqUc1PD9A4KGShEat\n", + "ThLHVv1KCLyCHVLKHmbClOy9XH75upsKGVvx6VIQ5Y4vJsKsCexSBWXquxhsV/e7mECuu1R3YpX7\n", + "tdgMC8B3KYgy11A1HpPFr6epqOJeVbsKXeJyv7j9c7QxTPv0fq/JzbuqDp7wcidnFqyEsLrURkg8\n", + "JN9//gVMqunsH9K+fIadvR1WGnUykzHSmt1eh8gIMt/nwac/yJlLF3n5699jtL/DYX9Ic3GFODX4\n", + "aMJmm4XlJWLfYzQe01z0GSUZg3FC5nsMjcZTBoXmdmeP5c3bPHPuHEtRi348ZG59jR/53Gd5+oc/\n", + "SlaE6VIpSimiWsNySoY8YrpC5m5Vq4CrTH3avplm8afGaopYMJxECJY5TleW646zm7f7vTxPXc+k\n", + "7jhWEUaz5oZbZplSLlP2VRbZVcRSOS/Xe2hV3abPrKo3tfsldy3NcnnhpvfdkGfWQBcpyyxwF0FE\n", + "pRRIz7Mx6xB853vf4//8R/+YT/3gp/ncj3wakyqUkZBpamGNOEltp8h8oolC19yfiDBc8KzyqFYG\n", + "NBdo3XpXAVMV5e3+LjYId7JVnXgniXXM40mPQoOmAGWRG3BYYDrurKlqsbl1KFtolhfDBHgBP9eL\n", + "LYN41eSU3rSxkZtXVf2q+nhW3kWqWozT93Pd3QljIsBYz3Zvv3aFYX/Axvo5DvcOuLZ1HQ4HLId1\n", + "/NDD9xscxockytBeWqW9fIreMGXj/EVWPvo0m3fvcvrRh3n1+e8jk4xs2CPwfITSjHf3WF07QzTO\n", + "qGWGOAzpBT6hFOjQkPiCt/fvMP/uVeT1ZZYeuYh4aJ3z3UdYXFxGSkOaQa3eIAgD+oOxrb7tEMAg\n", + "5FHAhvL4ueN4RFkflzO7/X10z66zWf1+EuHlluvWpVwvl8ssj3XVWnHLrEpl8HUJhTJR42p/HOdI\n", + "pvGoTJwV7a2yaq4ihtwy3st8djezKjwqp/dVhFKWW5U7AIqDCEBYxXdj7ILMtCaoNwiiGk8+9TR+\n", + "FPGPf+afcubMBj/6mc+xONdGpakDgnmHYK27PI4s/zzPm1CnVVR4sRO6O6nWeuJTo2qAyru7S/mW\n", + "WbDi0y2vDODWiCbXXcYBQ6YXSnGtAMmiHoUjK7c+7qQs6n2/xVlWmZo1maGQ0U7LKas4FftbTOKa\n", + "GvsSiEKTfLYc3+VAqpLRGopysByEQKOV4rd/+6ssLy6zv7vH0sIyg6s3CQ0cej71Rh3jBzTrTQZa\n", + "sHbpAeKxDXXVqtdpGkXmS05duMC1q+9wcPs2gdYMuh2iKESPBrR9j9OLc9SDEFGv0Q0lDIf0R0M6\n", + "vmGofL7z2wfgCR5uB8j5BsqHU6c3OOjsoIR1tKR0ShhG9hBHmNywXKK1QZvj4FW1jqrEV+5GWh77\n", + "Ki5yMq4Ol+bOicr+r6D0CyKlTCGXlQruZ61dzrf8OQv0Z20E5TLKYO6+V5aju/UtlzWLKKxKbuSu\n", + "Kg2fY8+fePc/YkpzcC3AZRYLbGV3gCioDkmcpSwsLNAdjWi12ozSQ5ZWVlleWeHG9ev8rb/7d/mJ\n", + "z3+Bjz3zLL70MSoDY6mwKploGWBsueLYdXcgpJQTh/TuxCuzUe4mUQXw7nMuR1Ck8uIoNppiAdTr\n", + "daev8skrBZ4np54vNpwqqqDMDRSgXN60bIWOL7hZi8podWxBuZuH2zbfC9CWvHRzOAY05VTeKI/V\n", + "wdrgTaz0tDH4wuflV17h7u07PHTxIbyWT7/TZVkJxmTgCXo7uxgkLC0TbJwhmJvDJIJsqFi6eJr9\n", + "uzd45fsvMu/VObt+mtH2PTyd0esd0ppbJ2j4xGZMPxvRu9sjjgfs7tylvt9BR4JxHdq0aA0VyStX\n", + "0A+cR15Y5+Mf+SgvvvgiZ8+dttHO6xG9YZ8giPKzWGtVKlEgfYQ8zgVWUb0mP6eoAsYyoFgOtbK7\n", + "7VjlIFMGTfdalR64C0yFF8kyten+uW1xtcFmzYMqyr14x73vyrvdze53u4GV5335vMvt5/JmMCvd\n", + "j9Mop/cNwIOgOJm1B5THnVPZT19oUm1QKkNkCuEL/DAk6fQJAo+l8+u8u7fNqheQGMOHH36Upx76\n", + "AK++9hpXrl3lx77wBRYX5vClRChF4PsYpZBZan2Na33kB8ErJmauO1wCc1f+5Ype3FR4Myzeq6Im\n", + "yvExywNWJV4qfhdlu9S/++eyi9Lz8LycChdySjRTgGOxqIs2lr0xloHeKJNbtjKJBJ+3Nm+fW9/j\n", + "VH6Zsp9MdnX8sNJyE9bPx6z5XK5vud+ksEENijHwvYjRSPOVf/MtTp26QL/TZ6FeZ39/k2atznjY\n", + "QZgUz8/ItKDT3eHspbMMuoeMuyPOn11HJCP23r5GNBzzwr/9Kj/+4z/B3mIbNRCkPozHGZ3xDiZ6\n", + "i26SEnfHREGApyTGC6n7AWkywpgxMYK93W2GuwfIxQaNxgLbt+9y6tIZZCYhyQjqEZmAUIGvvdy3\n", + "h9WsKix23Y3vOLgW433Uv2XZ7/H5djLrXgal8ly9HyHjEiFlsCoICTdPV3tjVn3gOIfopvI6Ka5V\n", + "le+2cRaglwG8StbtEiDuBlZF5VfV5/etCEWprAQc09Rs8aeSlMS37Hjk+SDtYvcTEJ7HmUvn+fK/\n", + "+ypRnFJv1DnsdlGex/qpU7QXF/jpf/KzfOLjH+dHP/dZhp0uARLf85BG4UvITOGnTeT+JGxZRitr\n", + "5ensiF6uzlVQD4WeNlQfglQNZAEkBZiWT6JdWXVhzCOlRClNlmZTeYHlZIq+OvKNfbSwXY4jUylZ\n", + "luWgZ/C8gto/6u+i7DJ7bCeSmJThyqyn1SkdUDbHdWhnTcgsy6bKF8LV6T/ZKrCoQ5XoIIg80lHC\n", + "8vISnc6ANFFsbx+gVAAyotWIGOzfI+7tkxpJvVYDHTPQCf0kYX79NHWjuXPtCr3+kGYIO1t3STfv\n", + "sb4wRz8Z89orL9Bq1dja26V/2EelB/hBQC1qsLA0z9Z4hBeGRM0WWQbNhRbzPmTJkGE/JqtL6s0m\n", + "KqwT+jX8VCOlRygDUDEmgBTrhdDXHgaByjWyPKcP3M/yHLT9f1xsVy2OgJPEVkU6icU/TtUfiU5m\n", + "PV/mNqu4u7LqbhUX4BI6Vam8GVRRx+6G4yoNuOWV83c5WbfNVWH9ykScWzcXF3/filBcirt8yAC2\n", + "IVmWIZUkA3zPy2WZGqUVSguUkiwvLZHFCaM0pu0vsr4xT9RosKEUg3jMD//QZ3n9tVf5G7/zU/yn\n", + "P/mTPHz5MsNBn5rnE+eROIQnSVVqT/h965FMeB44VIQLzkkeAsoVdRRqhkW7ygMchiFw/IS8SFWD\n", + "OcVOIibybze5vq2P+nGS6wRQi8lQr9cdKqgQk0xTRVrbCONFOgJVJtaiBVhWhbYrt6Gcj9u24neV\n", + "V0F38zgp//Im4m6m3W6fRqPGzZt3aNTbRLUmL3z/qzzxwafYvnkHkSXc3ryLjyAA0JBmikZzHtnQ\n", + "nDl3if3+kGFnwPryMru3bnHz2hWaKiPTKX6jxp3bt1laXKTX64JWJKMxUkr6nUNW1lfw2jXkXI1G\n", + "tkgvSzAC1tdXGB4cIJRP2uvz0je/w4dO/wQ6U+zcusPNF17l8hMPM9KCIDWIwEP71rOeZyQmV/0U\n", + "pfa6/VcGt+pD3uMbqh2baqB18zlpQy5zrSeJBoq6F4RBGQDdTcidP+67RSo2ieKzqrwqnyNVG6BL\n", + "dBSgXxWsuZqDObrnipyqrD3dOlRZqJ+U3tdDTJiW8Zbl4cYYfAKCvE3CntjgiwBhDJ6UhEgW5+a5\n", + "uXWXx1bOs384QPZGjJKERqtJ4EU898zHMEbzz//lL/Lxj36UT//gp0jSBBmFCGMAjZTWFaXWdoMA\n", + "AdIeGiqVIcWRv5YCNAuDhuIgrdhtC3ByzY2TJJk6oHEp3pP6p5hAWukJMJcnWfmwsrjuTm7brmyK\n", + "CpLSw/OmfaUX77iHg1OiIDUtv3frWAYSl3pxx7RKrOKC+6TNJ7DDRer3+5P6lsVKAFG9TrfbY2l5\n", + "jSw1fP3ffYvdnT3qG3NcvHSRrRvXac0tMe4eoOIhsc7QGHrdAXOrawRhAz8esdCSRNqweecWYZLg\n", + "SUEgJfUoItHKmsxHIVoZZL1GFIXEo7EV12lNFo/xPUmSxDYAsTCgEkb7h5iR4k6asfVvIj7x8U/y\n", + "o5/9PH/tf/6r/NQ/+b84vNenKTy8DIYBJMIQKm1tIDBgjm+e5bGsuleeZ9Op2qrYfcelmE+KYuXO\n", + "eaj2SV9+3q1XFTiW61UAf/HdFdOU14FbB3duuRyJ++cSZOV+rVo37txz532ZY3UJnzIHcD+xiZve\n", + "dwAvy5fKjZHSAy/f8SQ2Sr0RCGlItMLLJJ/86Me5/uJrdPo9rF9en7lGRKPWIDOag8N9kizmU5/8\n", + "NC+8+Dx3tjf54k/+QWphiNAZgbBGEjoZE+TBHxA+wvNByNwJfUkWbMzkULCgvpVSE4tNl0L1fX8i\n", + "q3UpkVksnHsCfWStiQ37pI+iC7mp+F1QyGX2FY78uBTPFODvsovFJCu4jHIdpZimlMuT3i03U9Mi\n", + "lOLQ100TUVnJarPI634sZHGIW5Y/FotrnI6pN5qMhjHJWPGdbz/P+fOX0UoTJwmb9+5Rb7WIfEk9\n", + "rbN/cMAw0Yhak9byKbb3+/QGQ85vbCCTMSIeExmF0IJhv0c/GSKjAKMNZ9dPMdCHZJjcDaKif3iI\n", + "TBRZZqxaZaYxCrbu3uNzX/gM7165BkoybkREa8vc7uxx4aEP8vADD9GoNag1Gsg0I5CS1DNkwh5S\n", + "B7nqqMdsgCtzefcTiUw/N/vZYq65FpjlNFMz6QQKvKhzFXiX53M5H3eeuBxHFWVdntNV3HDx54o/\n", + "3LaWtXfca+XDy6r+cQmUqvv3o7yL9L7qgbtilDKrVHxmRqFyB72uu0jP95BoakgubJzlW1/9Gp87\n", + "dZpOt0s9jOz7aUo6HtMMQhpRyFiPefrpp9na3uJv/u9/m//ki1/kuQ8/xbCzh6czWvWINIkt8PpF\n", + "JA+7YATiWF3LwFU+WS9YL1fmVh6YYiDhaEEUeqrTlCj5uer0gJeNIKrqCHZyFZOxsKRzxRhunu4E\n", + "LC9SrfQUBVNlNTppv5lebC77WWZBi03PDb7gUiwnsepuHscoqNBDpZrQq3HlnXdZmF9iZWkZreDm\n", + "9esMhwOEFMw1W/gZzIc+jBLqC0t4zTn27m4y325jjOLGtStInRJFPnGSoZXi8KBLKgxhGLK6uESj\n", + "2aQXp8TjGL8eMej2qC2ust3rsrRxirlTp/H7Yxqex6kzF7lw/kF8GfLa7Vt84EPPcGvzLkko+eBz\n", + "zyCiBqNxTK3dJuv1ERp0CGMkNS0QBlQFzpap2N8tiNu+u/+z7jwpJ9das2pt36/8k8QHVdxalQbZ\n", + "LO6j6rCxStXPJbSmuNB8nlaJgN3+mNV/xdx2KXiX8HDbcL/0PlLgHraurvhkWnZcgJOPzGPp5Q01\n", + "hsQY/ChEZIbTy6uYmo8wCaiELDFIIAxCVk6t0+n3kKEkiJbojQesraxw+dGn+bVf/RUOD/b4zKc+\n", + "QSgMo2HfWrlpG7Xayw82rbN3gUJPgUMURXlrHEDNlN1scsrbpQaOg3L1qfZ4PJ7I04Ep9qtMlfoV\n", + "cvGCglJK5Sw2WNNra7lXuAbxZM4tGFWpYlhssNMTVOP5wdSpetkXxmQi6+Pm8AXQFg6RiucnboId\n", + "HxtlJ0BVqegXpdRENXWqLtpgMkEg4caVG5xZO824P2BpaYleZx9pFKPhmFAYAk8RC0l9aYnLTzzF\n", + "IMlYzDSB0XS6hyTJCJMkBKFPEISMsiTfGBNqQUCqFSgIowjf9+n2e+zvaZ77yMfobt/l9GOPYmoN\n", + "etfuoOOMl15+nQtnzrAyv8Tjlz/AamuZ1WfPcOPdG3zgE89x/c23CKOAzYN95j0fmYIRkPiKWmYj\n", + "7Bj/+EGay2HdD0yqxB82mMhsaHCtqKFaa8rVxnLHqTzHqqjUYs5U1f1+FGtRRtUhYRXl7eZ5Ehfj\n", + "rrmyqLJ4tpC9z6qbm1IndoH7eT+Os5zeNwCH476wy5NMCBsE1UNYdTABwggkgkxYK81QeCRaEbQa\n", + "7Nzbot1qk8YxUa3BcDig0+kQ1Wu0ghadww79YR+kIPVq/Minf4i333qDv//3/wF/7I/8YU6treAJ\n", + "GA36RLUa43hswcYPchn09A5bNXGFEFbNjmnqM03TKQ0T9z2X4nBFL7NOud2Du7KBjhtyrninyF9p\n", + "dSxfw7SbSxdkq8bEXYjFvWKxVlErLqC69S76owzaLrVefJ+1MIApTaByP/i+T6oT6vU6Uvtcf/sa\n", + "ly4+xGg4pLe/izQJq0ttzDhk1OvTNzEJknPnLtFYXKK3t8/Djz1C3RO89M2voY0irEfESUo9lOjU\n", + "4NcivMTQWpgjVhn97oBWEFGLIuZ9jyCKkEKysXGWGFBhxOHw/2fuzYMsy+76zs85d39rvpd7bV3V\n", + "1VW9V1f1pl0CWwIZiUUwgwwOzLAMWCwTJsYT4LGDiImZMbZngnHMGAwzDkAgIxAIkAwSIEC7hJaW\n", + "1Gt1d+1b7svb737P/HHz5jvv5suWYDzRnIiMzLzvvnvP8ju/8/19z+/8fgFZprh2+w7dXo/HHzmP\n", + "a0ria9c4duFBEstktb/LAyfuZntng9Dx8qw8SUYWJ8QC0iTLU4GVUp8V/VuWy7KC0/u2XITYC1lx\n", + "SCnvd0wLDnWYxVQGLtOokWmWQ7kd5XJY/PEyki2/T1/kCipP/265HdMWnGlK97C664p6mlVy2N+H\n", + "lVc9oUMxoIVZcaCzTQlZLlDKEJiZQCqxlwdP4GSS1DSYO3aEtbU1Fs4tEEYRW51dwiCiWquRotjc\n", + "3iUIQ6q1GrWax64/Ymu3y733nMGUZ/mlX/m/+cmfeA+uZbK8vEC/s0uzOUMU+PkRcm1Ff6VOTrMM\n", + "lR48SakrmWmKWleWBZIsm3BF/5RRffHcw0zHcZ3F1JjjhblbRhPl03Ll+hTtL9D0NOWgt1sf67LX\n", + "SZlSKzaBi3ceFo9Gpwv0TdMwDPPJZ2RkoeJzH/84rWaLF55+lhPHj/HylYtYhsKouLSrDertFrcG\n", + "OyzOLXHPfQ+wNRjRG/kszM/SW79NHAXML8wx2O0SRCmpH4BhMgp9KjMzzC4u0dnYwnIcvEqdmUYT\n", + "y7LY7uyydvEK8/fdw9ZuH8+wcBwbI0lJSBgRcWNrhSPeCRbaVdrtGWaGXQhjNm/eoVKvsjPoYVVt\n", + "lCExhMSREmlCmhyM4ldWOtOUwGE+85Myc7jy0GXhMESsy6j+vWnz6DD0O81q+JtYEsWzykp7Wv8U\n", + "ddLBVbGnNa1e+sKgy3z53sOuTbMCvt73p5VXVYFPowR04ZBSkigQKrf6i+zRmcoQpoklJMLP3eCO\n", + "3X0Xz33gLzlx8iRRmlKdmaHleEjDxDBM0iSjtedXLA3B0fkqi+0WW1s7hEnCo4+9hj/40J/w2IXz\n", + "VOt1LMclDAPiKMC1vDz3nsbJlhVaUQyZx2wpFEnZ/ahAltOQcnnXvDzgZaSr96XuTlhQOuNUaXto\n", + "XZoTdc+yLE/CyqTgFkq5PFbl8StKEWe9fF2fLEUdy0i/aGN5AurIbhrdVJSyJ0shN/vcvJkiYos/\n", + "+9M/5bGHnmRupsWws4uRxvjDHmZoM9rapO5VSV2PhaUjuF6V7eu3qdUrRIHPzWtXyeIQ07LxKjWi\n", + "KCPwuygzRZgGi0eWCZKYzJA4rsPm7i5JnLC8vEymFP2VNU6dOU3omDQrMyQLswTb22Sk+PGIyzde\n", + "4tmLX+PsyhW+c36OumGTCbhz6yrtSpXmbIMokwyJEAKsMCUoKIbs66O/shLT0ep0hZj7jB+mLMub\n", + "0WV6RAixv99SdgGd5laqK87DrIOylVUu03jt4ntlUDjNw2aap0kZWU97xzT6pVx0i6Vcr3L9vt7i\n", + "Wy5fV4ELIX4NeAewoZR6eO9aG/hd4C7gOvC9SqnO3mf/HPhhIAX+O6XUn097bhFPu0Bakx4XYwUu\n", + "pYGVKhKRkbC3eZBBIpI8QWgKwpTcffYMf3LzN+j7Pl6ljrRdjEoF07S5c2uVYX+AFIKaV2Gm0aRZ\n", + "sxGWweL997HTGzG/dJTFI8f5xKc/jldxuOeuY5CEuLYkTnLyUbcasizb9+0GXZGA2FMg+uAUnxeJ\n", + "GsobQOWDB4XwF26L0+iEct+NBUSR/5mhx78Iw3BisqVpnifU9ewDKF+PvKZPTP09Oj94GNIp5wPU\n", + "PXf0xarwkCmjL91KmVbK/LvuUimEIEpGrKysUK9UsQwT0/O4fOkGUiYYKsE2baIwZNTHoIa/AAAg\n", + "AElEQVSLibCQ0uDOnRU812V+do6tO9fp7exAHBFmGa3WLF6lScc02Op1aM7MIIw8XnijUqNSa3Dz\n", + "0jWGgyHVRgOExPEkqUgxHJuYhO3uFsONVQypyDIfK0kwMnj+U5/kypU7/PhP/FMW52ap33OWj/3h\n", + "h3nHd307HTNhV4VUFBhBzECmGJaJmaqpikVfIMuW2Tdipgtx+GevtOldfm55PHV+vvjMcZypezzT\n", + "nnuY6+1hXi/F9/X2l8Na6PeUrcRpHHrxvfK+lj4Oh/V1eSEq10N3Sf5GyjeCwH8d+L+A39Su/Rzw\n", + "MaXUvxVC/Oze/z8nhHgAeDfwAHAU+AshxFk1JbiwrkzKm3V6ybKUbM8DxDVMTFNBRo4QgMzKE4ou\n", + "OzVm7lpit9/Fsh2G/pCV1TUqVoVUGswszGMkKa6QdLq7bO/0EFISpxmG5VKp11GZ4g1veDOf/+sv\n", + "kyQJD9x/BmUI1CiELCOVEO+dLjRMA5Wp/CScyLlkZQhQGXryb31gCiVdoFt9kKch3EL56RseZeGY\n", + "JhBSFpMgP6xT3GM79l4CVxDSwLQEKJVHCylNKt3a0NGtjr50JSsYb+WWKRcdXelWhn5fGaVM4zSn\n", + "lUyp/SzpYo+7lYYgTWOyTGHbFV54+gXiIKHWbPD0xS9ipRG2oag16hBFmBmM0oS64+RZ5VdWOXrq\n", + "JPHQpreziSMltldHpBn+KESaFq0jR5DNOo35OXrBCMeqUHEqrK+uYbkmioSdzhZHjh0liiOev3OJ\n", + "0aZJxfCItnepphKVJkhp4WCAyOinIVt+n/e+9ze478QJvvkd38q5Jy5gBQkVx8ZSFikZmQTTYBzl\n", + "JU1RKRiGSaLAsE0ykUdjNwBjL+hVwqTFeBgKLETxsG4fn/IFEHvx5Mt3FYqxkIdcPgvQoy/e36iX\n", + "UdlS14vcs3z3vqW1YTodM83CzZ8zeTJav0+/X5fp8TvGIA4tEfh4wVD7vw+zGPRr/0UQuFLq00KI\n", + "k6XL3wG8Ze/v9wKfIFfi3wm8XykVA9eFEJeBJ4G/Lj9XR3r6YJZNDdvOzUkyRZYkqL2GG3sD6psp\n", + "AkG7F/Pm734bFz/xJe49dZqeH9Ku1KhJj53QZ31nnaZp0ag2WFpu4zZOkES5chsMBqxvbDIYDEiF\n", + "Yn75GCs7fT75Wx/gx9/zY9TjDraAUOZH/i3XwUiBKIEkD5IUkxELsC0Dq+QZIqXcP/JecM57fTux\n", + "sVkosyiKsCwr34SL4/3VHqbTGcUEGCMYPdPP+KCFflI0/944S4hOPejvKKMM/Z1lZV8W8GmeBPoi\n", + "of8uZKE8gYrPDzPnM5XviWDIPPqkKYnimCSNcF0bVIWXn7vKvfc8yG63iz/os2AK2PNzN1NQwsSs\n", + "2MzVqsT9DmY6Ih5scfHpG9y6co35+gwVt0aSJkRxTBpEhDWLxdOnOXrkBM8/9zw1zyEajhh0e6gs\n", + "RlgGftij23OI+wGDLMGdncVtztJq1OjEXRIlMBOoKAszS0lUxsi2OP+ax3npS1+il/ksPHyG1Zfv\n", + "YGRVGjMNNqNdTNuikiiyOEY4NiLJ4xPatotnuwyjgIwMVIpIU2SaooTYP1k8zfor5KP4f1IhTpY0\n", + "PWiZlYu+WBf/T6MuvpGiL/S6PE6+S782XjzGf0+6AU6Ty6JfdM+m4jPdoplGUeXP0sHnwb29PJRB\n", + "kdtWTCx6Xw+ZH1b+thz4olJqfe/vdWBx7+8jTCrr2+RI/EDRD27oZnmZDihOMBYdV3gXlIUhSRKe\n", + "eOQRvvAnf8FmZ4MkBkdUUNUKC615FqsunmnQXVsn6PdZ2djMBz1TzM7Ocdfxk0hDIgzJIBjiRwFb\n", + "W1u87zfex/e9823MVD0kAkulECQIQ2K6Nqi8E22Vx8uO0mTqIOjmWXFNV3y6kircE/Xd/WkKsOiv\n", + "goIoK1Kdd1dKTbh2FZuUQoj95Mz6Bmv5YI3enqJME/6iTochqrJfefFb3+TU5aJsGRws+WRMkgTL\n", + "tomigDRJqFaqpGnGH3/ooyzdfQ9mKgl3OhhKEagEVyjMJEUZBjgGx5eXmT1yjJevXqbVmoUsY3t1\n", + "FcKQUHWxazVsaRGmKf0gRJmSertFLxhheB7zi/NcfvZZkiTBVAKRKpJRyO7aFu3UZsE0cdM8r2U2\n", + "V2dzsI2TSdw0Q5g2tcTintocN3opz3/5Szz8xtdSa7TAdumY4EY+QZzCbIXR9jbHajOEoU+sFKEB\n", + "hmsRqpTM72MpsZ+7NDUkgZG7wZocRI26d9Q0y2ha0ZVNMSf168VnutIuLEkpD1qSheyWn1FGxcUi\n", + "P032dMQ9Vs5QoF69Pbp7r/6eslIvKJQyNVKW36/XT9PvyW1WvR66lfH15T4v/583MZVSSpRjtJZu\n", + "mXZRb9xBZHgQeekcma5gdMVjphK35hKLhPn2PKZwGPoRg9UOhmWBhEatSsWusHT0OOvrm/T7A7rd\n", + "Hhtrm9iuQ61epVqrgWHz6EPn2ens8lt/8Pv82A/9IE4KFhLXtBhFISEKJQUGAlMJrDTDMU2UPRl+\n", + "Vhf4aXGQi/bpDv5RFO0LWkGl6K59OtVQKLsiZ6ceoa94r45eClSvK0m9HtrYTozDQQSi9lFEuU6T\n", + "E2k8hoe5uOmKfRqiO0yQreLsgGIv1ZjAsj1GQcqtm7fZ2RpSmZ3h+MIRnrvycU4sH6E/3AK/hwpj\n", + "eiIiq1Q4Yjrs+gmxMFhYXGJj/Q6j3V2qhoEjMrqbG9SbLUzHwSGjdXQZu1bhxo3bVBpVDNvCcEzc\n", + "SoW414W9BT1OYzYbJp6haPk+C7RpVRo0mzH+yiaWdFi4a5koiZhfPoZ65goPvektOG84x5W1bU4f\n", + "rdNeXkRud7Btg4997pO85fHXcuX6Kovzs/hpQGJKlIgwpYFlgBmnGEqQCEUiFIHMqT5zrwv1DWM9\n", + "Fn6Z4jqsTFBnJUpm2ngViqlQqGWlpcts8V1dzsYpyzLtWZPK0TQPi899ULbLc0//Thno6O3T3//1\n", + "XAeFYGI+7N0xUZ/D5PwbVd7wt1fg60KIJaXUmhBiGdjYu34HOK7dd2zv2oHy67/5O/uVPH/uQc4/\n", + "8tC+4OgovLzhoG90FQpuX1GNfO45cw+Xr1/FPeGAMnHacxxfmEcmAlyTYegz6A3oDW7jBwG27dBq\n", + "zOA4LtVqlW63Q6fTpdfvYloGse/z6Gtew/t+7wP8t9/3A0TDkDCLcWybSCoyoUiVwshSskwRhckE\n", + "11heVXVlq7dL3/ATQuyj8GKzVBdaXag8z9v3AilQbPH84vv6u3VkXEyccjo33a1RV976+/XrUw/Q\n", + "TFnAXsmS0JGOjuzK1Ey5CKEQoviuRAiHYJTQbM7x9Fc+xrGjZ9gOenz+83/NzJ6l0l6YI941CHo9\n", + "giTEa84hK00ur6/jORVWVjfYvHWLhmVTt0zSICDwRwRRiHIc5o/fxZmz9zIYjRBSUm3U2FpZJU4T\n", + "ao06wjRRYUToh6goQcwbWJZDnKXIRFG3bJZOnKSrXC5fv4awLM6/9nFsBTVMvvCZT3Ky6XL2/guQ\n", + "GbRPneTirb+kuR1yrm/y8T/4KI9929tZEQpHWKASjCiPE97v96h5HhGCBIgzSSYFpjTIOOjNY9v2\n", + "xJwbI9qvn5GnbEUdZvbr89YwxlH2dEur/GxddsvvnK58xwGsxrI25vPLi4wu0+WFRwc85ToV9ZqO\n", + "wHW6ZpK6+ZuULz/1NF966mvf0L1/WwX+YeAHgX+z9/uPtOu/LYT4RXLq5AzwxWkP+NEf+kcTQlLm\n", + "toqGT8vcXF6BCyGw0owTx0/yxc9/hcfPPIofpvT8Ef4gxAwUvSwisSQNZeB6Jq7rkCQpQRQQxyG7\n", + "nW0c22Z+tkW71SBNYoajAb0o4My9D/Brv/lb/OC7v59gMMQTApWmqL0MPwpFZghs08bRJkLRtvKB\n", + "E90UnBbB0DAM4jjeD1+rT6ri2Tpa0umSopT7Ut8sKi8IRb2KZ5ZP0hX3Tdsl179fPLu8SaOP8zQl\n", + "Xp4Q5bYeVjKVQMErYmEaHvVala995Xmq1Va+ZxLG9Ld2cIXAVBEiU0ivRqps6p5LY+kYK6OYbhDi\n", + "eh47nS1G/SFVElAphsqQjk0/DohVRiMK6Gxu0R+OOHX0GCjFauBTnH2p1OukTkRKftp43m4ikpRR\n", + "GLDud9i1UkBSP1Jj0LXZ6HeJvvAUqjvi6NE5TJWxefEKteoCfnfA4pFZbNsifuEqr/FabIgh/+H9\n", + "7+f+h+/nmy9cYN5tYAyGmEmMVamSioxYZKTkeT8dJSGFOIsPKKY4jvdpSb3vX0np6GOpj7s+hoW1\n", + "dRBFJ/veU8Vn5XMExd/FhnlZbstyUlBoBxeOjMKfvfyZ/r7yYlWACSnlBKjSQdG0RWQyDd1B7xXd\n", + "AjksabQQgiefuMCTT1zYv/Yr/89vTr0XvjE3wveTb1jOCSFuAT8P/GvgA0KIH2HPjXCvIS8IIT4A\n", + "vAAkwE+oQ5bxYkXW3eB0BK4jAdu295VYUcq+qEopXNvl3nvuZWV1g5Ef4NXaCNeFUUIYDFjf3sJo\n", + "VsmUSdtycFyHdrOFYZj0e32Ggz5bQUAax1SqLvNzsxxZXGTOUtxeW+Gh84/x73/91/jpH/8xIj/A\n", + "NW1klgIKYUnCNCZLIojGpmGh9MomYBmhlo/d63G+dUVWVmjFBCz6VFem+uZU4b6ne8Dok7Tsc6s/\n", + "p4ghnlNdYv95hV932XVvbGaOY4cXz9fpr2LcCmQmRHECcLJeRcKPaSX3N1YgJUJlCGFQcWr88Yc/\n", + "wmMXnsRxTJLdXVqWiT/q45mCqOcjanV2DJdjx+/jvgfP84VnX+BUq0HY67CxukYNgWta2KZAOBY9\n", + "PyBFMdNuUa3XePFrz2CYFkfa86ysruJ3urhCQByDZSBsG7dlIS0Pt+KysrGKU/G4tbXBa++5m/kj\n", + "y1y8chlzqcXWZgcjAykhSALe9oY38ofPPMdxWxDtdBmtbnH+sXv5zPZnqM+7nDtxD8P5Rf78S1/k\n", + "9uVrvOf7vw8bgWU5eBWPIPHJsgxLSGQqEVFKnKakMp0qh0UYgkLecmWrXkHJ6GFdJ/ljHQDoG/aF\n", + "HBXIVKcMddnWg60VMqbz4zrdo8tPmub3x3E84aqahwWYzJQVx2OlrCvv8oa+74fYtr0vu6Y5yduP\n", + "+2M83wrgU4TjLeS/+KzIlKXUpOtrUbfy/D3MfXb/3d8Iz/Jfuggh1F/96e8fQGU6daKvumXf4TIX\n", + "XAxCGKWoWpU/+pOPEOyMuP/cBUJh4SmTmnCxGnW82SZJd0gYbZOkMWGYJzkwpIHnulRcFykFSRwR\n", + "+EPSJEWaFtKxCEVKpGL8QZ+//8Y3IgYjZBwhhCKSKZHIsDAw1ME8l7rA6pbF9FgUcr+tOhrJsmxi\n", + "w2cad6ej1+IenT4pK1odnZctIG289n8XCKp4tm4F6O3Lf4wDddXLJOpJJvpr/L5xwK37z7/5wDOe\n", + "+8pfgswnRNVt0O/6fPFzT3PpxeuY0qE+W6d/9TpJvwcuEMTIzOSm78PSEc7c/SBJLOiKjPPH61x5\n", + "4Xk2r11B9XdQwx411yQTGZGCyDC5++wDxAg2Nzao1euYhsXmxgauZeCaIo8HHodk0iRI4N5zj3Bk\n", + "eYHnL10kVgleonjwrnvIbMlOFvL88y/QSE28zCRWKUY65PGzD3FrtYPRXuTe+x8g7O6wdKzNiePL\n", + "PPtnn2Gxucwt0+BSNeGlzVv0tjd59/d8F+2qh02GkWW550mi8tg+SiFMgzCLDyDrXElPykuBFJVS\n", + "XHjttxzo8y995iP7NF0+7mP0fpg+Kd6bppMxQOBgJEHdStPlsgxeJuuczyM96mfuQjvpEpv/MFH/\n", + "4n7dsi2K4zhEUbR/MKmQ9cJi0eVbV9blhapA3VIWwM6YUND6vNOtX8MwuPCat6GUmmoSvWonMceB\n", + "oA56MehmF0xyrkWDixVe90Zp1JqM0oRve+u38O9/6Ve5zwAXwcbqOqFbo3v7Js25OVzXpd40ME2D\n", + "enMW13EJwpBer8fmTgcBVCsOrdY81WqFnc1dYvLQpNv9PvNzbf77n/s5fuUXf5He+jpZHCFsA8M0\n", + "JnzAi7YU9Z/Gremc/rRNRz0++rRA9dOiERb3wuSO++HCLzQhO+jaN14E2J8QxfN0ZFOMS/G/YVgH\n", + "zNPyZuVYiP9mUdj2i8yTXhuGxaA/Ig4zbly9QRrFWLbJYGuFzVtXEVFIba5BFmegbGqtNo0TdzEK\n", + "A7bXdzh1/mGuvPhVVu/cpG6bGI0GoyTGVwlhmhGkGQtHF2m029xZWaNaqWBLydbGOt31DWLLpLbQ\n", + "xjIl1VqNhbtOMcwkr3vLW1icbfPg44/Smm/z8Q/9Z9ZW1zh7/iF6/W2smkfaC5GGxFCwFvh88GMf\n", + "4R8cf5TNr36R5MgC9XMn6cYBfcvg6KnTdJ+6wj2PPUJUi1leXuTO7ib/8n/9BX7hF/5nWk4Ff6fD\n", + "QrVGmgX4gU+11SCIwgNJuHP5meZjPbn5Vy6O45AkCVEUkaY5TaEDMMMwcBxnH3XrHk06oCmKPj90\n", + "eqWY22Xwo5ex4ss38AvEnD/ToMhCVFgZud6wDuic8rPL1IxunRTPg0l51y1epdIJoAN5GknDkPuL\n", + "iJ7dqgCmkHveeZ43ce2w8iqmVEsnlI1SasIsKQShfExbn/xFKf72/SGWaTHXbGBXbUbBEIIB87NN\n", + "avUZGjMNurtdBipiOMr2Om8HJQRCSKqVCl61RdVzEUIxCkJ6gx3SICbJMgzH5PSRk8Qq5p3f8S7+\n", + "3a/+Kv/we95Fxa2QxREyk5hSYpS4waJdhYAWXjfTlFWBFIr7i7jc+ue6wp6WxKD4TOfv9P4uI119\n", + "E1Kvk5RyYgHIr2cTY1bcV3xP35zV/y4+LyZO2f/fsg7mUCxP1mlFShMhTYQStNttPvbRvySOIo4s\n", + "LZJGKTevXMIwMxqeS9DvEqUZkfSoLyyyUKuxub3La197jqE/5PrKDUQSkgmBbVrYtRq7/Q6jVGF6\n", + "Faxagxu3V1BJSrNdY9TvM+x3qbk2jlL01tdZWlrkrmPHmVlcwpiZpVZv8My1qxw/ukxnfRsbgySM\n", + "WL12k+pMlbc88Rq+8MnPsrmzQ3eng20JZqpNZMVkN9jkzs1LnLq7hWtX6A58mK2xUROojRVk6LK7\n", + "GWJ7Fv/kh36Mj3zkYxxdWuINj51nY+TjqAyn6hEnEVEcYlvOAeSrL8Z6f7/SIiqEwPM8TS4mPcqy\n", + "LGM4HE7Ixli5HfQ20TfOi+vljWyd8phWyrKYy5+FvhAV96TpGJzon5UDrBXv1Rcb3VlAl9FpMlt8\n", + "b8ylFz8ZaTp+f0FfFUxD4To9LRVbubzqCR1get65okOKI/c6naCvnPqgWq5J5kcMdne4/9z93F69\n", + "xYW7H2B7p4sfh8gw5f4z99GXCaaoEkUJa2trbO3sYEiD4SA/QDPbapGmUc5zOxYmgjRJyKKYcOQT\n", + "GwkpMHvsKP/2V36JX/j5n4fRCDX0J2LDlbnkwvSCcXIF3WQrBkzP5KPzhMUzdSWn84NlJF58r+AA\n", + "dW8THVmXn1HUoYzu87Ga9DMvng2TE69sUpetCCi7TqYH2qa36TCFEsUJArBMh7XVDT776c9y5q6z\n", + "bK6vMdeeQw36pET4saJhmfhSMsgSahWH2y++QOZaBP4MweoGKvZxDZPI97EcF+G4eMYsSexTbTSI\n", + "lWDQ7dLwKvSGfcJwRH6IMsOWEgsTEcVs3rqNnyhee//D2IYJ0iDsB3z1s59nvtXgdW9+M3/0R3/A\n", + "6173GsLdDkIKgiigogyMfkStUeXZzWs88e638pnPfZ67zpxi5vhpdlc6LD54hva3OrR6MU6k6Gxv\n", + "IaVDvxty/uzDdMIhv/y+3+Yff//3Ii2JkcRYcUzVcYmzybCoOrWm93n+9ytsHGu0VjH+eugFKSWu\n", + "6x6w7PL5PN4E12W/PM5la7CQhbL31nhhUBPhK8YIe5qHjJz6bJ0W0a2Cct3KDgBFHYIg0GiUMf8d\n", + "huHec3MaRQiBbTv786EYA90jLIqiibSGh5VXTYHrpkOB9HSFUzSq7FNcXvn0Do4Dn6rlEGUJd999\n", + "F9evfYr5uTau65EIAxmmvPTSRULXwh+mWKaNV6nw8EMPIqRBlil2d7YJQp9erw9pipA1UimpVDxM\n", + "KUEogjTAc6ssnzyGMCX/8b3v5d3f/h00bRuSlDhKUBIQYAhJtpdEGMNACSBTJFG+6gpjEnmUFy1d\n", + "mcNkFvZpMYnLForen/mGcYF4C2GfvoGpRyjUr+dH1Ccnnj4Gel2LjZrD9jaK+/NxJO+j/Qzqegq5\n", + "w2NdJFECUhJEIR/8wB9CarG106M/GGAg8Qc+tbkmKuiTphlRGlNvtXBtydbqNmazyvNf+RLhxgae\n", + "Y2LbAstzMTGJghBpOcwuzHHsrpOs376DMkYYbo3BaJOt23doOx71iofMUirSJQsTLGXQ3d7lpRcv\n", + "YjSazC8ucf25F2h6FV689BJHHzjJd//g9/Gxj3yE2XYb2zLIgpCWtLA9D5WkDIhZ6W8T9Po897kv\n", + "Unv7HEvH7mJna5dTFx5i9emLDNZ3qdoW/cCn6nl0d/ookfLYI4/xf/zSL/OP3v1fc3p+DtepEo98\n", + "LMcmVQphiHzBzBRk2V44CAOk2LNGBfIVNzGLk4/Z3lhN38/RwcJ4rh8Mv3rY/+V4PFmW7Z9h0N+R\n", + "K3YLKcU+nTNWvgcpmvze8bzTZbdQqoW8NRpNsiwlifON/CQdz78sy0AVG7mKarWay2SSkGVF4Lni\n", + "VGtufRSx/i0rmqBHi/YVFndhDUwGqTtYXjUFriuGokzjaPX/dZOiPIhSSiyREskYTMl8rY6RpNxa\n", + "uY1MDExhMzu3iHmsgnAc4mTIaDgkCHyuX30Ox3Fo1GeouiateoP52Tq9bp/haIifpPhZgGM7zNQa\n", + "NCpVQCH6isfOXOCZ6Cs89eKLPPLoIzSSFNu0GKkYy83DhtpCIg2DUMIoiZFC4JLHjygrQ10B6yak\n", + "LmRlt6oyn1f0iS4Y+fNy97XJPhQYhnmgv/X66OM0RswHIyceDEY1RjplDlMf93wCFl5GBdcuD7xv\n", + "WrGxMNwaf/7JL3Ll5S1mvSa15jJ3djpsXb1KNhKEm0OUjNg1MoRQHK3XIPRxTMWMZbK1s0Ovu40t\n", + "DNRsC6/RhGGGk1kMY4VRaWLMzOH1YyyryYiY0epN6qGgGgWYtZS5U0dRYUa01sPE5ejxk3T9AVG/\n", + "Q9DZ4vadmwRRwNXb1/ihUz9KFIccPXmUnfUN2o0KnbrJIIxoRQZJkiIcm5cuXubU3HH6V1dY3V7H\n", + "ePwMwncIr25jziyRBhF2OMCpSFIX7CSjoUz8nZC3PfxGXnj6Mp8bPMX3fse7aFcqJNEQYUuiLAKR\n", + "YYoMA4WBBCVIMUgw8lybWcwUkdgbE3PCpc4wph9cG99fKEu1T6Ho1nSZ+ivKtIQi5U38sWdWQppO\n", + "7pONAcG4DgUC1wFi8V5dqe/XL03JVIY0JI7hYCt7PxdpuudpojJFkhYJwidPkhsGSJnuswymae/x\n", + "8dEEdZSm6T7iLiwa3Qo5rLyqCR3KB07KK2HZ3CsrfR3BSymxpEuYpDhVl5mGw4ljR9jcXOOJ84+z\n", + "dmedly89h+V5hCql3ZzBsR3mjyxTqVQY+T6WadLt9li5fYNMKaqVCrOtOpXGTI7yRj5RELGzuUV/\n", + "0Kc128QdObz+NW/gP/zHX2ZmZoYHT9yF7/vUKhVGoxHSEMTSIA5DhBTY7JmBe6c1JRwQyDLnr5uF\n", + "OhVS3oTR+0bvn0LRFpNHf64QkmzPP1jv3/Ix/kLYdDNzvDAc9B3Or4sDil5fVHS6pMydw8GY5NNK\n", + "vdUgigWf/dhfYjpVfBXRnqljRTGGY5M6NtJUhCkkUUy9NcMoTBkGHU6dPEkYjNhau40rMxKlGA36\n", + "RElCo9IC16TqOZw6eRcbGxtEgc+5Bx8gTmM6JJjLQ5Q/YKe3RdwPmKvNELZNkoqFmK3RXVtnBosv\n", + "P/0sJ+45xac++yl+6Ed/GN8PkAa84Y1v5IO/+wHcSpX7HniASy9dIiRGWpLAD0AKjCOLVEwTWwga\n", + "WKQVm9WNDnefuQ83CxkIwfXVFSxb4Mw08awKSRjRkhlGb4e7T53kf/wffpb3/JMf4e57jmNFETUp\n", + "ycIYUyowJYkQKAQqy3JUDqhXOFxdpjF1OmXMMx/cuITcstP3ZnQqozy/Jz041L4Vqd+nK1ydUtEP\n", + "t5X56cK61PWI7hBRuM3qsqkzBDp42vfE2XOHLp5X9JFhGPt5W7Ms0zZ3Y4Q4yPcXNJBOK79SedXj\n", + "gesNKJtSxWe6y08ZeeoTWwoLCInDmEQolpcWefbp5+h0t5mdbzC/3MZ0XMI0ZrTjE4URd25cp1qr\n", + "YUiJZVuYQtJuVPA8D9M06Xa7bK35mLaNFAZVt0L72HEMQzAYDRkGfdZXNvjhf/zDfPpzn6FZqbDQ\n", + "bBD6Ea1KjX4wwlcJ0pTYWZ6MNlUQCoUUYGSTwYXKYWgLZFsUnZcu/i/36X5/aAsDsJ9rszwOBVIu\n", + "0zD6z9gFMf9eGTmVaZJ803SM1PQxLdMyeh2L9pY/O0yBZ1nG777vdzjSaJI5VVIhuHb5IjOGgfBq\n", + "mFUHYQp6/oBqq0GtMUOnM8BE0huN2Lh9jaolIQkRpksah8Rxgh/E2I0GJ+86jWMaEAU8cuFhXGmw\n", + "e2MNzzJpzM3S9JZxbtmkSUx3t4OyXO47/yDXu9vY0mD9hcvcdfcxXrr0Mm6lwhve+AaCJCSTYFg2\n", + "b3/nO/n0X32CGMX80SPcuHYNI81wHZtGo4Fs1rj33D1ce+ky7bvuImjPMFIweuYZ3nDuIZ67fZsZ\n", + "LHZ3+/QtycAaIeM8wFqz4jHo9vmf/sXP86E/+zDb6ZDH77kX264w6g6xqx5RlpEZilTmLocy3fOJ\n", + "ntrbedHPZOiLcdli0y2usRKdHvtdt+AKZVr4fOsyqMuYLkdhGO6/Uz/UVk7IoP8U8614tn6oqVDY\n", + "Y68RnbotFpLcYsy57ZQkyQ68J4qiHMhpXixSShzHnlgoLMva98wrz8NXKq+aAkS5HNgAACAASURB\n", + "VNcHUV/ZyhO3EBY9mQFMxiUo7t3tdPBq1bxDDMl9957l4nPPstPdoj+06Pf7WLaL5bnMuHOcOHFi\n", + "//nDYZ9er0enu4thGIRRRrXW5sziKaLUIAgiOjsdtjfW8f38oMTsXJv2bBNhGWysbvLG17yeT33p\n", + "03zvd34nchQxGI4wbItIxdiOhR1nGBmkKiNOMxzLwtI8bXTB0hWxvriVB7Sc+09X6LpJqHuhHFb0\n", + "9xZ0VdlX1jAOUiBFvfXIiUKI/QlRRubTFojiQJeuAIpDHK+EQrbWN7j+8mXOnXkYe2GB2JTc+OLX\n", + "WGjUSC3F5vYGSSpwmy3uu/AEvWHAWvcyzWoNjNxbIh4OmKmYpI4BoSLLYKPfwXIkS1lAxR8x47nM\n", + "zTbxMLj65S021m/jex7u/EJubUUhV+7cYenUab7ywvNYnkP39joPLC1ybXeXrzz9Vf7Vv/kFUgGG\n", + "ZZKoBMt1WDx6lNe++U18+Qtfwg9jjFYN5QdUDBfbMtno7XCqYqCiiOGNNbxWk6jiYfg+F59+hnDo\n", + "YwUxs24Fs24RGIJsGLE0O8dApSxWHbrb23z3d7yL3/iD97Py8nW+861vZWlhiSQckiUxhiLP+yoU\n", + "ytiTr8PDa0/w0GXXujJFNk1p6h5Yk+BgHKunyIajW9hlNK7LlOu6+3OoULg62NPBYnGYpvhMr2+Z\n", + "A5dykhHQPUXK7a3V6hM0og5Mi99F231/OGHp6m6/Ot0z7US0Xl7VrPRlhK1P4DGKkxMN1AWjbKJZ\n", + "lpX702YZSZxgSsnc3BxRFHP0yHGWl48jpcnA90l9xe07K/k7hMCruJimRXt2dk+gFGEYsbK6Shxn\n", + "WJZDvV6hXvMQKqce/GDE7vYOwgTTMthcXePuk6f5hf/tf+efvecnkJnCSmJMUxIHEVmSYUlJJiWG\n", + "FGRJSpglE9TEtA0+vZ06J1woSF1I9P4tI5WprmJjmnC/6II2qfBVzs9qyGCaJTWeqJPJb6dx58UE\n", + "0tGSboYXLo6Hlc9//FOoIKTX7yBUglVxyRIf0zUgjEgNSZTBTGuRUDms93osnboXU6VcefrLDP2Q\n", + "pldBECOFgSQ/ZOF6Dk6jxvbmBtvXb3H+wgXsNOW5rz3FXbNtkoUm4e4ug34fx3MYJgGt+07jtGbp\n", + "3t6AIKbuuGRVm6ee+io/8dM/xekz9xDFUR4/J8vAEmQqpdFuE6WKWnuW+5fnWL9zG9EZIlJBHIV8\n", + "/JOf4O2PvRkvyejdWuFS0GMmMKkZktc/+QQ3vvgMfhjRiXoEromjDO7cuk1sQmxKZAaDwYBve9Pb\n", + "2B10+MBHP8r3vOvbabouZiiwVIZUGYnKSEQK5CGJD1s4dVRbjFcZfB02zvk+DBP0RnFPIXN66Igw\n", + "DPcVarHIF3pCf58OHsoblLp1l1MTTMhuIZv6/Br7aMfIvbMGOU89Rvrjwzi5v3mx8ai/twCfZZfF\n", + "/OTxGKToNKLOLryS7MPfAQVeVLDsbQJ5QwvXHH1QivuKVXbfdLIFUmSYjo0jBEjJ448+yUc++meY\n", + "dhUpHOqVOo1GE2/ewzTzHd4kSfBHI8IoJI0TXM+hVqvhOA69Xo+036HX22Fraw1TmjQaTRqNJvPz\n", + "bZaPLDLyB2ztbLO7u41yLX7gB/4b/vCjH+Vd7/g2LNOGIEAqmSditvN3OjKPoKfEGL3C2DLRXbX0\n", + "fimiFOrIepr5WvRT8VmOHCZjqIw5O/a/pwteManGJT9dmd+rm8nF8WoDPZdima8shHQaNSJlfhoz\n", + "b28xrhLLKlzUppuS11+4RM326A66eFnCypVN/H6fykxGXZgoy6FRb9JaOMLV2+tsd0c8+MBxOhur\n", + "pMLAdD3CUYjrOag05+0hR1PVmRZmBkuLy1QyuP7cc3gopO8TZBFexaM77LM7CIirNvede4gb124S\n", + "hRHR0Me0JB/4iy/yT//5z/LgI4/kMbrJ+8q0DOIkIUxTbMejvbjAztY2p44ew7ZMbl68RLA7wjNN\n", + "nIrFzu4WQdqj29nk9vY6cW2WdK7FVneH1sI8qrtLwwTDMRCpouq5KMtC2QahH1JzKgxHPkfnlzEr\n", + "Hv/Lv/s/+Zmfeg+ztgMIPMOC2McAhBSk2eHKo2zJ6a5wxU85rnwx3kmS7W825h4aBcgQe/7ZxRFy\n", + "c0+hFYgbLOtgncYKc3KDs5BxPVpn2TuqPFfK9KwQgiSJUSrav9c0zX1Fm7c1P/GZK2j9eP2khaAH\n", + "pMvlPp367sk2iQOLZbm8qhRK0UllgdAn9jQuWF99LcvaVzJJmrvgqDQGBMowsW2bkR/Qai8Qh4qV\n", + "Oxus3t7Bqlg5520YWLaNYUhM08BxPTBMOv0hYjAiSRJsx6I9e4SKVwNg0B/gj0b0eh2KCEa2ZXL8\n", + "+AlGYciw20cZFi9eu87502eoCANDCqQliA3I4gQrynIUZk7uehc70OWi95XeP9M2CXXEO2k6TvqH\n", + "688sJl7Zk0R/tv5e/drYJBbo2cz17CvFd6Z5KuTvPxhHHdS+4tbNXr00qzM4XoXV/g7J9haj1TUi\n", + "A26HIW1hs1vxuHDvg8SpIvIj2q0Wd27dYuX6JcwkojHTIhYpveGAVI1wDYswjlk+eQKv1mDl2nW+\n", + "+ZseJ+j3uXjxRZrVCo5dpTXTYJBGbCQ+fhJxduFerjz3EsNRRK1eZ3s04uUbl/mpn/0ZHrrwCHGa\n", + "5vlz8vVhr+G5XPQHQ/pDn6Wjx9lY3aJSq+E2GyT9gKrtkRqCi5de4k0PPU53a5v09hrD+Qy7YjII\n", + "fY7PtTCrLjYxz9y8QioliQzJhCRVAiUgGIyo1aoE3QHRcMhP//hP8lef+CRvedPraHkeSoJUgrrl\n", + "EMVx7vJ6CP+qnz7U5WzaqV997AsKQpefsnzr3ykCwI2twYMeW2WlrM+HsqdLId9jEDI9QYNeN8+r\n", + "Tnw2poPyuDvje+We/MsJEKbTMfq74jjn0Mt1LffJ3+lNzKIUlSxPbn1QdQWl/+i7w7blIDJAQ2vN\n", + "eo32bJvnL77A8aOnOH78GO3mHMPEp9vrsL29TdpLcRyHarWKQtBwHJIwIghGRFFMlgzZ7XSR0qBS\n", + "qeA4DnbFpT4zg23b+L7PcDgi8CMcy2EQ+Jx/5Dy/8zv/idl3fz+n5uaxLYM4TcjzB4ElIBbkfrla\n", + "e/Ud+vImUNEPxX069aLfU0bYOlooC0l+79j8LUc1LFMg5Wu69VAeM31Tuvx8fbzHpm02wWPqpbzB\n", + "XZRBlDAz38Tod/C7PeZrdXwzYxBGdPsD3LkWuzs77HZ8Fo6coFavc/3aJSwVotKIFHBrTRLDZdDv\n", + "sjkc0V5YwHQrbK9vMVNt0pppsTMc4WbQW1snsSzsLY+eAyMX2gvLXHr2IhYW/TDiwSce5eqdG/zk\n", + "P/sZzj/5CGGc7qXbI49ameW/4zim2Zzh0ktXGPo+zTRja2sHuSs4e/Y+bgcZnTtrDEZDUPD0xWd4\n", + "86OvY2dri5euXsadrXP95g3WjRXOnbmPU+0lNjbWWA+GxBKa1TrBKCCRAstxCJIIMzOZtapsXLrB\n", + "27/pW3jfB3+bb3vHt+IsLeEBw94Ix7IQ5uGnHsunc8seRcV462NX/F9W/jrtUbYkx/I5edhGV8rl\n", + "5wghJugWHaiUUbEuU7rFO/n+yQ318gJRvD9fZMZ8dnnelPvGNA2y7OA5ibKyP2wR3R+LV/z0/8cy\n", + "rYJlgSmUlc5JFdcLZaCb+yqTqDSFNAORO9djWdz3wD388Uf/gieeeIz1m+tsrN9BmSaNZpPTp09R\n", + "qVQIghDf9+n3B4xGI0ajIY7j0mg0cMwGAgiikDDM2Nnewvf9XJHbNtKQeK5LtVrDti0qQtLv9fn5\n", + "n/uX/Ol//jDzb3kzFSUQhshP+gU+KWCY5j6CL/qk/Hd5AMuWSDkQftGHulvUeBEcH5CZRNIHlWN5\n", + "gugLaZnzPCxegz7G5YVIr2/ejklvmnLWlMOQyMbIZzZT7KxsUktTUiKIFI5jE3qwNNtGxQF+Z5uh\n", + "YbB2+UWGww41T2J4BoE/IhE20q7h1iWiMUPiufTCmDRW2FWHWyt32Lp5AxHF2AgGwYA0CMGu02y0\n", + "WLt8nTnhMegMWDh5DGGZZAY8/uRjdPwu0nTz9grI0oxUFe5pJqORz82bN2k0mqSJYvn4Ce7cuEHY\n", + "H2FVK+yEQ2wDRJqxtrnK5uoKDxw/wZ3eFs989SvMLC9x/JFzZKZEdgbMKou+YTAwDeIowkgVQkji\n", + "JMrpwVodU5ioNGX9+m3e+ff+AU8/9TUqT1rMOBbzM3WGIx95yMGpw+SjPDfLXip6uIxpSklXjNOs\n", + "vOJHD9hWBnL6nomeDKWoX3G9ECWdZinL2Vi2J+WwSByht62g+8oOBHr9y3tbaRrvuzMWKF23eA3D\n", + "wLbtv7uxUMocuNoXagN9A61YFcsdMk3ZZyo3ZQwpkAJSMtI05PSZkyQfGRHEPZaONJFZi+4wJoxj\n", + "1lbvYNk2ju1g2w4L87OYhslwNCIIArqdXYSwsCybaqVCtepRqTWRQuIHPt1Oh1F/gO8mpKmJsHxs\n", + "UyL9hM/9xadotds8d/US5x9+EBmGCD/CEQbCEsQqIz+yOUYEOm9XXC+nkNMHtYxGpm5UUnikFJno\n", + "J8Np6ohZRxpFncp9L+U4TvI01FKUaXSP7iapb7CWg2LpQv9K3jP3P/k4l556Gk+YeLYBWUTc69Hr\n", + "D7AW5zDJ6HW2qdsGZjQi3F4hGO5i1h2azSZutUIQQZqa2LUmS6eO0Vic5/aVq6T9gEqlzktXLrN7\n", + "8xZzlok/GhC7ktqxBXaHfXqXb2DujkhlzFvf/q0cf/IClWOL/NVH/wTilMzM9zkked5KpMQUxb5P\n", + "xnPPPIvjeNimg+u4DIIRp06e4tnPf4Hlk0ex203CnR3MNKVZq3Hx5ed55P6HWV6Y5dSx47ztbW8j\n", + "rdpsPHeZFz//LMdPnKBRcemmPoa0saSJrxSuZYMpGfojTNNCCEnUHZIMfN7yyGv4wue+wH2P3Ieo\n", + "unh1h2p4uAI/7ATwNDkswFcZbJURell2i+focYTKMYR0Ra7HEynu1/WEjmyLIGtF0R0Iygi7DBym\n", + "WaN6nXUng2KxKW/OT9NfRR+WFf7fWQqlfALqsPCOZRJfiPyUXt7Igq/dix9iuEghMQwwUAiRkApF\n", + "1XV54okLPPXlL3D25N0kQUyjeYSZeo3KQhXDMBmOhoxGAWvb23tK06LVanF0cQnbqzMcjugPBmxt\n", + "bTMYDnBsm3qjzgMPPIRjO3Q6HXZ3dxj4ffpBQM2ycKTJ3WfP8v4P/x5ezePCqXuwRZon35WSLM3y\n", + "pBAlVOo4zphO0cxBmDydVjYvCxcnHankPqrjPi845UnO7eCmoo6GdKpD9xoyXoEnnTZZ9RNmOlco\n", + "pSSOwxJllMcGzy2rPa+NKcWr1wjCkKbpILKQGEAY1Gs1zNl5At+HNGN5fpFbV6+g/D4LTQ9FzOb6\n", + "LdrzR7HsKo5wmF8+QuPoIt14xNFjR5k/fR+3Ll/mzu07MBzgWiaj0QinNkNfKZAGdpyx5Nb5ptd/\n", + "ExuJ4ubaKnfX6zSdBsPdAXEzxTT2zOpiwdprY78/YGdnh35vRHtmljAcUJ9v0bl5m4cfPs+nv/wZ\n", + "zj5wDytRSNId0B32SXzF1u42TqXC33vr32d2bo6rO2usrq3SkCZyFNKebdHLBPEopmE3UFKRkGEY\n", + "JngGCQLP9nAMC88wWHv5Gv/VO7+LD33qT4nqNsfm56mIrOycpE3C/Pi4SjPQ/LoLgFCAjlw2CvTM\n", + "AbnTFVYuF+wnRwF1IIx0mV/WQU4ZuY+BR3ECVN/sH88ffdPVNM2DHiPZWOewH1cFsjSvY16FfI7p\n", + "dSvaWsyFvF7s94OO3nWQtM8mlCyDw8qrehKz6Ggd9enuPLkiiibuLSKf6QOWd5xAiARE7sKaAioT\n", + "SGGhfHjra7+J3/jN99J+Yo4kTemtZwz7Qzqmj+XkcSAMQ+JWKyRJiilNglFEv7OKaa9iWblJc/L4\n", + "HErNopRiOOizvXZtvw6epWjXW8RxTBAnmFS4fnOVb3nLt3H71jWOzR9ltlFBmhlZlmDK/CBz0Z59\n", + "tLAXG9vYS4WFUGQqQ6npOSWLMv4soziKYZr2Hkede5AYxkE6RFfaxU+Zf9evjzeDDnq+6HUrK3Dd\n", + "PCzoH/2Z+Ribe88r0slZxFmMKaeLanjpNmdnFxEioTPs0PcNtmNBs30MkgZrw3Vcy+Pl67cx/R4L\n", + "VUWW9NkJIkIMAlKMuEM06LM96MCXP8lg8yZZxWZoWEg8Zi2Xu5bn2A26MNPAqcxgjVo0Z+oYbspS\n", + "ZHHl+Re5pgS3r17izm/9PqfcI9hGHWF3SOIICwu1F+MlS3NF3tna5tbNO8wvHCFMJK5XZXWjx9zy\n", + "CdJuh3uXTpKtdjl24gRXb11neGsbA4/P3brF9/+rf4FcWuLGxho3r1wjGUS02m2sKMXZHrJspmxk\n", + "CbtGyPoopt2egWhEnMUYBgyiIZ5h4AeKRsPj+aef48zx+3jmqStEp1OMo22axvQ4HKGKEZnAVBKp\n", + "IEqDiTk9dkMcK80CcBWAYgK1ColAIIRCMFbySTYGAYUVqu8R6bInpTNh0Y29UQr5LnJyTgIVHSDq\n", + "Hiv78ir35hTFO2Ec/4S9ebU/A4sZMDE/9bkxrsPkOQ19fhT116mow8qr6oVS5lOLDBx6AJcoivYH\n", + "JkkmXeDGSr24Nhlj2jAMlBCYtkU8TKlUKly9epXmTJN7732UilslThI6vQ6dXockjUnThFqtSqvR\n", + "wjJMer0+u51tut2cUjEMg1qtRqXi0pppUa1UUErh+z6DwYDdTic/VeV6zM40iZKY3W6HY8vH+PSn\n", + "P8M//O53MUpiBCKPWW3JfQ4sTRMyle0FxcnRDUIiEUCGjomKNialI7zJXuAs0xxvipTN2zLHWEZF\n", + "xeqvb66UUUXxfSiC9xxcfCf594OnLnWEUgTwKu4rDnKsrq5y9OhR1tfXp8pRd5gw2O6wsNDEEhLb\n", + "EFw49xCWN8ONm+vUjlcIVzoMN28zP2uxNdolHirSyCIzJUGoqFYaNGuLGGca3PzSNl5ljsFoh9kl\n", + "j83eFnFtmaudAbVWC9fJePHFL2CbS3g1iW2MGHlNor5kKzVZ3R7x7MWv8IYf+QH8yi6jCFxlkGYZ\n", + "hhQYmnud67nUalV2dndZXq4jpaTlVagbJpESXH3pRRZqFWZlizMLR1mLJTcuXud7v/0HOFufpdsZ\n", + "8MH/9DucXjjC6eXjRJ0ud3q7LPgZxxfn2Vy/g6h4nD17N5u37jDvVYlJyCyBaZlYpkSkGY7j4Scp\n", + "iWVw+tRJXrz4HEdmHiWZnkOAcOhjSAOkhSEkxp6izxFjbr3q3kzj8TZI9/zsDcabiGM9ANnePC90\n", + "RJk/niZL+iE1nWrUi26pFvpj8t0HwYZSaj/rlE4N5bTQwdSFuqtr2QNsWinTpoV1WxQ91Mhh5VVT\n", + "4OUj45B3RBiGhGG4/z9wQCnrRVdIxf8TG3tCoAIfr1bl3rP3cv3mDe6//37WV66RpCkKiet51Cou\n", + "lm2Tphmj0YhOZxuBIo4jarUKi4sLSCno9/uEYUCSJKyurJAHr7exHZsgHOF6FRSCMAqId1KCIMCy\n", + "bWzTxHMqfOLTn+LR8+cwTAtDmpApDFMiDYGFiVIZURTu0wfSMFAyD3ylo5lpPJkQRTLkws1JTPCG\n", + "BfV0ODoYC++04P9lE6+8GBT3H8Zd68gcJieoEPnBiOK+AqEfOXKEMAxZWFicKkdxNMCtVdju91Gm\n", + "xJlpcvK+e7iztsX5Jx/GT3a5ufoc7ZlF+uEOgyil4boY0sFqzlA7fZJ+t48XCTZuvUTX36XqeKRZ\n", + "k2A75nRtmYXGMmm9yc1On6RvcNw+x5BVdjc7NNptNmybyEkYBUP667e5/+4jPPamx1A1GzOUmJmB\n", + "IfeWXzVuv23ZdDpd2u0FPNchTWMMx2Q36tMPO5x+4hGufe2r9G71cVo1WGxw5vTrufv15+htrnP5\n", + "xUu0I6h2A5JKl6EI2VVDOlfXWO7ucOzYEtdjn1s3L9OwPOLAJxaKOFZke0gyDAI810WaBkGWYFZc\n", + "Hjv3CL//wQ/xjrd/69Q+N1QGGYTpHgVAAQT2YviTIASYhpXTLWmeFg8hMI08nEOaZcRJHjDLkJrP\n", + "uBB7flp5Zx3GtxcyWFbauryWNyR1nlt3jCj+h8lzFQXlV363Tm+8Ekgpgxi9lOdCMV908HMYPamX\n", + "V02B60pW94GG8aqaJAmu606srmVFoZscxfXis/0V0zTYWt/g3Llz/N4Hf58nnniC9myFWqVOnGTs\n", + "7vYIRkMMaWCZJvOzs7iuTZyEdLtddnZ69Pt9sixH8QsLCzTrDeIkJPAD1tbX/l/m3jzYsuwq7/zt\n", + "vc98xzfmy5dTZVZWZo1Zk1QSoAmNqFFrACEZEWAEmO42gQnb0RFtYUfTJhocwWTobsRgBMbYEkhI\n", + "QsJCI5pAElKVSqpJlVU5VE4v8413PvPZu/8497x33stXQNiOEOefd4fz7r1nn73XXutb3/oW48mo\n", + "NHoSAt/DdX1sy2U0HJae+WjE/Ow8o3DA1dUNjhw9BDrFkpVKYHXDDLY9TXrIckLrbdhod8KnfoN3\n", + "IKdyXC1L1jxybpro9bHay2SpPOK6Ma4mZ3WP6ptv3XvZbyFV59Q/pzqq52ma7UrWSilxXZfxeIyU\n", + "ijwL951H0oS4jSZoydpgg4W5BbYmW+Rmguul9Mc+Td+wZFmshB7W/GlUBn5eYM10mTlynKfii9iu\n", + "w20HfILMpthKcRsW7/zhH+TCE49iWZJX/cBbOLu6yZULK1i9jFkfPvBnH6OXGfDnuXLlLFYx4VB3\n", + "jv/rF34R3WkxHGiarg3swE1yO98g8FyPRqPB3OwMRue4jo8WGtd2CC3FzPISq5e6iNGEqDeisziL\n", + "O9/hwOGDnP/YX7N17hLXnz3P/a9+DZicvEhJZc442qIdOzjr4LQ8jp08Tm8yobAcCm1ASIQWeI5D\n", + "y22g8xzHd/F1BrYkHI1401u+n9/53d/mDfuMuSMUWGoqggW22aGeVhtvGE12YbtSSoQUGJ0jhcKS\n", + "EmEptBBTPHkHH96GXsyO9kk1p+rRYH2O7VfwUuWL9hbHwW6xq7pd2dt8pdxTdjshZa3DzeJxQtws\n", + "hb33nOp4PhZP5bzuvb7nO77tWih1Q2zM7u4clmWRpTu96Oo7WjXQdaqcVLt3QikESgjiNGVmZobc\n", + "GF70wod49OuPcmRpDsf28Nwmrtuk1Wjguj6TMCbPQgaDPtpkuK7NwaUDuK6P1gVxFNPb2mB97QaO\n", + "4+D7HouLC/ieT5LGxFlOpguG62sUWYHvBviOR7PRIM5iojThG088ycyBRZwiJ8szlAQ1ZYlUTX31\n", + "9tiAoUBSaovXvYM6hlb3LqpkS32cgZtw62qCVHSm6ti7YOpeRMX5rp9fh8PqR31x7GWZ7PWiqoRV\n", + "udgByutxXRfLdhhPO7zsPbLxBKKEQhpmXIczp06z3t8qDYQU3Lh+DaXHDMwY1WjimCa2pTFRH993\n", + "8bTLAa/LyfkW54aX8AqfgzML3Hpkia9+4eMIO8OfnePi+ioXN9Y585Lb6V8+x4FrXX755/4dX7v0\n", + "LE9trrA1WKdjzfKPvu/NBI1ZEuGz1HSJ+jcwntq+n1UkxVROOI3LVn6tdhfPD9BpxmQ0ZrzRZ/bo\n", + "QU7eeRef+eMP0nYcYvMcL7rlNj7yH9/Hi9tHUMMI37FYmWzhygbXV1foDdaJ0gHx6oQXzN3LDIa1\n", + "SxdxlxZYH/dwbZ/AblCkBRKBMmVeKQ9jbE+RpynKGPq9Ma983f8E7/kvN425MIo006TKYEQpCSGE\n", + "gDyj6jpjMKV2fFb2gbRtG0tYCG0w0mCQaCPQRpOlGUaUlL1tiM7cbJT3zrG93m59btej0/0M/n4F\n", + "N3Uncccj3908vX5Ujma19ixrNx13r1Oz97295wkhththVL/r7zLi39ZCnjqeWseMKg9sh+kApYda\n", + "/e8eFsV2gUQNa9Jltt9gCHy/rHyS8H1veQu/9du/zcte/IKSWTKMGI02aLfnkXg0g8aUlKHJdcpw\n", + "1CfSKa6b4Ng2tmMxP18mMQeDPv1+D6FLMXfP8/AbPtK2CRyP0WCMzjOyIiOODcqzmZ2dJ+i0+OP3\n", + "f4Cf+KEfRGXJ9qQXotQfllIgkOxAkPvzoevYWXWjdzRlbtYK34/KtR+EUn/+t2GC9d9S97Crc8ti\n", + "hRIXreAcY3YL9lcejpRWjSssS3U5WWA7LoXWdDoz+84jK0qJx+toJWgvHaQIDbluEMwtMNQe/rUv\n", + "kEQ5G6JBoRUUQ4yVEBYJXrvDpcEWW/2rHJ1t4YeSqNBsRBusP3GFmabLbUeOkfSgq7o8/Ncf492/\n", + "+qu86r57eeXSnRBkWIHgxSfv5tMf/wBv+J/fxu0PPEjmQlZsYmcunlQkUiGmokjosrpUF6V4fxSF\n", + "XL1yhcUDGZ7rkirYjIZECh6/epUiS/BO3sLGhavEF1cIHn6MF9x1L5lj0YtDxuR8c+UiQkK4vkFR\n", + "JCQiZuy7XB9vcGL2BEWa8dhjj7ElwbF9fL+FpVza7Rl8N0Cbgk67yWTUoyhyMgSt2QWS55GUzbTB\n", + "SIGybZASJXZyU2XOycGyFGmWbLcXLJkrBcqUazNNS40TxFQmQyiU0Mgpw0UXBZmpPOTKky7ndVmQ\n", + "Vq2LncYNO966QYidSLycm/W5vDuRX/9b542X37lTTbzjyJSJ2Dr0Uj7mpnVRt2d16KVeiV7//vqm\n", + "8A/aA9994TuP68aheq9ecloPUfYaoOoQZscHlZTcnSLP8QIfy7F54P77+eojj7B88Agz3Xlm5wIw\n", + "il6vx2g0oqBs/dTuNLBsm0bTn0IK5aJLp+FXu91iYXaWoBGgtabf77O+vs4kipBG0mm1mJstDY9l\n", + "O4yiCZMkIQgauI7LU2ef4fTxYyih8AKPKBxjb4sIVcoZEgSIPRtcNUaO49SMY2XQ2TaM9QlUH/u9\n", + "4wk751dhcPVa/X+q1/b+7/6ekd7l5ezge3rXIip/946XlGUZhjI3ACVfzhj0HQAAIABJREFUWj2v\n", + "JkSO0wgYJhnDVPPIk88wyDULR3L6ozEL0SpHgw6uLkil5rq2eS4KiG2X5c4cgejj3jJLfvReVp74\n", + "CxqO4NjxZRaXFhhu9Hnu/DUWLIf1r32eX3jn95P98Bv41f/7l1jvrHH+0bOIxQdZNBbKEbzmLa/l\n", + "0kYf6YPJJmQ6ohCzFGaq80JpwI0BgSDwfMbjEb2tATdu3OCJxx/HWZxhPB4z22ghGz6ZMCyfuZvl\n", + "uUMMLl9jtNJnc2aTD55/hCPHDrPQWGBMjrAFw7VVdBwh7YJRWvDZx/+GXBhOHTjGnUGbs70Nmm4T\n", + "r+FDo8Gl9etcWVun2WySxQkN2+bEocNI5XLh/CW0tb8B8VszTJKYPC8oTFFWmlJgWzbCsikkGCQZ\n", + "AqRFxc7IdYGHLKNJyyr56NMu7UYXpHFSFuJIWeaUonQqx1DmovJ8Jxlfcb4rjnlpL4qpw7Azzyvj\n", + "XxrOHRphNdfqxrY+p6u1VBTZrnlefWY1f+vQZHXuftHmXoNcX8d7oaDn89r3O/5BtFSr46b15+X7\n", + "dYW7ko+51+hUHmd1LyR7Qi0psS0LiSCJYk6fOsWffOCbPPjC7+T61eu4Tkqr0WVmps3igXniKCHJ\n", + "EgpdMB5NiKOQRiPAsiziOCZNE/K8YDwaoqZYred5BIHP4VYTgyBLM8ajMePJGKkkJHHJLpGCSRLx\n", + "0P0v4C8/8ylOnThJrgvCOEVKC8u2KPIcozWYUmgfBLrQ6FrJ+zbVap/S5NLL3es13CxVUI1/nT5V\n", + "ffbenEJ9I3g+w733PhbFDjS2H05e34wdyybN06nmSdnaK8sypGMhlWQ83h8DfwaLUZwznOQsNzUz\n", + "2YB8eJW8eIpG3OOCbGOiLdqDNTaziK8Xszw+OUbbDWgVj3Lb7CrXNlKevujSbWSsrfVpbUg2V59D\n", + "yAmzS7OIYJGvbwLXUsT4WX7qn7wK/+A51odn+MsvtXn0kU3+5b/+RS71VylsH11IBAFaCQqvgTYT\n", + "pJBQ3YtpaPXss88iDJw5cwYhFc1Gk2EypnX8Vg4vHmTu4EH8mQ4NN6CDwxc+8BE+82cfIeuHdObm\n", + "ePB1r2bmyEGQksSkPPvs0/zFn7wXr8jwA4eQjL9+/GFGV25w9623c9/cAv0kIRn0OH7bce570f0M\n", + "hcEoB1MYrMzQUh5CWEwMZPp5pEz9sppzNOjjegG5zEr8PS4V+ZI0AqDVauAGwdS50EjbwhQavX3f\n", + "C4q8KGmEUuJ4Fo7nlYa40Hiet91irK6hUs/d1D3m+jzbBa3WEoN1ymp9Du6d8zv4/e75XX5/Kci1\n", + "bV+25/T+RW31pP5e6Yv6WoCbqYx/1/FtZaEAu7CnvZBA6Y2ltXBpx5Or47bV+bZdCqIrsZtfWaQZ\n", + "rueiTemaz8/Oceb+B/jSl7/CC1/4EHmaEyUT1m9cpNls43ke3e4s7e7MNMwdkWYp4/GILMsIgoBO\n", + "x6PdbE4xYc14POb8+WukucZ1XNqdDt1uF9d1y4rO4YD+cIsoilCWg+25vOIVr+Rd/+bn+He/8PM4\n", + "UoDOiOMIW5W8WCVk2aMQgRYao3eaE1cTpRKyr9/wcoLlu/C/MhzcXYFWjXG9+06ddlhN7rqSWx3X\n", + "rmOHe41yeYhd97c6vw6hVL8tiRMKiulCNSWfvyhI86yMKJ5nqn4ttMm1h+MHRMOIOx3N6TlDN76A\n", + "Y1b5yDNLPC0WOHP65SQyZrCxwrIlEeGAp85dILhdcmrBwYm+Ss/PuZCPmDhLHGrPMZskHF1e5MNP\n", + "ab7EYX75feu8WF3nV1/ikLSvMeOfxNcS11ris3/zDD/5T7+P6+eewc4LctVgkMVYrsY2GjPlsiul\n", + "EKpsYfb1R7+OZVlceu455hcXWF9f5fCth/FbDrGJIM8xSUY/GbCZF7zoja/lysYKwzTj//i5f0Pq\n", + "2Wz1+ywvHGSYhRw4cRRLGj713veSjEMSk2Eri7Mrz6F1zrETxzh96jRXNjb41pe/yKH+HXSOH8fu\n", + "dIlzjZIeBQo0OMrabu6w9wi1IIw1nttBAJbj40gxlQQuW7LZtmJra4Ozz1xmOByyuLjIzGyHwPLI\n", + "ixwpDFJaOK6HkqXqX5pnGFNgCQvLEaRpTjDdAKqGv/UkY9UQYS+FtW6Mq/Oq52XbspudwL3Gfy/r\n", + "re6tV6/fDGfu36S57uRUv7me86k7ZHu/7+/igYu/r6v+P/IQQpi//uxHd5XM1w1APXud5/H2gNVD\n", + "m/pN28Fn/RLg2s5mlwNg2zZJliKVQiqFkJLCc3jP772HUydPcvDAAdxpkiWJ07KaDEEQNImznCDw\n", + "cJwdrqsxBlOUfe2MKWGMChsWqLKjSxQRZym2YyOVwvM8XNelmHrMk0nI6laf7sIia9ev8cqXfRcm\n", + "TzBJhBJiSiOchmuURlnXsvLVeO3t0FOO504hzG72x/4qbPWJWXkZe2Vq9074vXBO9Vm7eeJmW5ui\n", + "vknsFxFIYyGsalPI0KLUYA+jhGajzWiS8oKHvuumuXTy9T9DGKVkkxArGTFnjTk1azg+kzFjx2zO\n", + "nea5G5or4xa9FJyix1EnpaEUT69u0Z0LeMlcyEM8xyVsImaI6KLznIOupoFN2DjJheA4W1HEXcUq\n", + "b/IHtB9cp9mdISwO8anzLb52o82L73uQFx3M6VrrRM2ANeFhbB/LpEhjkEiEEdPCFcnWVo+nv3WW\n", + "paWD5HmpVqhlQiYyokmCiMGTPldHfbaKlCxLOdadY9YLUK6i0Ba+06AQ0Ow28QKLpiv51Pvfx+a5\n", + "Z+g4LoNoQigNWIZO4HLHsVs5deQE0TAiysGbX6R79DjN5aMYt8FwkiAtC8exKOKMe86cvmnMP/+N\n", + "p1CFwc4NSii04yJVxa+ujJdGKoGYJuYFMBwOKPKYMIxYOrCA7zlcu3IJx7bwPQclQRc5ejqnfWtn\n", + "099P26Q+5/erc6gb+8pWlLRae9e5e52V6rzyu3ZDteXnlAnour0q5/X+trS+Rvc6Mc/ngdfX2j0P\n", + "fjfG7E/K/7YmMZ/Pe6uD/UkS3WREqlAEdlMOs6w0vJZSJT4mFSgLIQWtRpM4TUrjrQvSLOMlL38Z\n", + "f/Hnf85b3/xmnCk8MjPbptnokOeaKEzY7F/nypXncByHIAhoNBp02m2Cho/nzRDHMf1+n62tLSzL\n", + "ot3q4Lke7VYLo8qmD1u9Hpcvr5ZFSsqi02qxOL9AZ+4A66MRG1s9Vlauc2CuS+AHFFmKFOVC14Ap\n", + "NLkptuEkqNOc9stmlwa/jmlXk7w6qs9RquzZtxPxlML4nufVcMAdSUzY2cT24+bvhJkGpfbQyGpe\n", + "SZm1361BEY9jhIRGIyDJEyxLMTc3R55rlpcP7juPZrSgbTlEjsUwdRmYeR4fap7ohTQbis7lT2MB\n", + "ca9gYp1m6B4iG+e85MxxDroHefzpq4yfGdC+rcsLX3+azWdWefbRc+SdJSa3nuDq1nnmrvwxb16C\n", + "WSfj+Kl76I0skq15FrxV7MYFTp9+CdmhV/PkV69zx50Jy8vX2Ag1y/e8jOtbIzwnIM9yTGFKGEVa\n", + "WMpiYWGBA4tLRFGE47hobZB6gpQGZTkwzGngkTUD1j1D7iisSYIdxownI+JJzsWrq5y/cZUPffiD\n", + "6CTEdQx33nqYRQ2NQoHlMfRyrqVbNOIR/adHjNY2WLLbzDbnmG8tEF5ZxbhdGkdmKRoObhBw6eI5\n", + "bj10dN8xl46LyjQ6SYjiCOMKbMfBUDX1haARIIQgy2LStKDVatHuOGR5iN/MUa4LluLW03cSeB4r\n", + "1y5x9fIlpNAsLCzQbAbkk/Guwr4KLqzPpcoWVPS7ugOYZdk2a6ruBE6mjKb97EplxKvcklI7kWaW\n", + "ZVOPf6exSX0jsazdjbvreH2dHlt57/tFrdWa+PsmMv9OD1wI8R7ge4E1Y8w909d+DvgJYH162ruM\n", + "MX8xfe9fAT9GWc3+z4wxn9znM82XPveR7cVu2/a2GE1954H9NVOqwalXCVYDUheS30le3Mw/DrTD\n", + "RGh+9wPvxW01uf3oCdrapeH5OK0GozTFUhYNy0U5FpZjb2NuvV5v23halkWj0UBKSZqm5Hm6/Rvq\n", + "N833ffI8J01T4jguf7dRjCZjfM/hr/7qs7zjH72VViPAEoYiy3FdjyIrm1q4rgcl4WbHc5gaacsu\n", + "fxvTMFbnORJNicqZKYUNbKv0PCQgdJnc1QbyQmJMTqlIUCCELjm7xpDnIKSNUg6m0MhshJAOxnIo\n", + "LJtMCwqdYymDMimOSqFIUGiMdjBQVtAag7AdbMsl1xJQSOlgTFnAkzkFnm2xcvUqF8+d58bqBoNR\n", + "QlxILl6+QqvV4Q9/5zdump9n3vgzDCbjkoqWG0SmsbSgE7QZbvVJ/Ii80KAcbNulyFNUEXKgJVlu\n", + "GczgCsdmHWYaipW0B2HKA0dP0hqE6LUttG+z5gaErVn8RoNbZl2OdeFQZ4vWgTFNW2GNOwhvlpWh\n", + "xGGelgePXF1l3buLUw+8GmVN8FKNUhmjICQWHgEB5AOEzHG1hdHQtxyktmlKB6M1uiiwpiXpFT1U\n", + "UxbhKKWwRYAtJegR5889w+//7h9x6fwN5ma73HPmOIPhCrbj8uSTF0mlhwhcjnTbLNoWdhzSCTzu\n", + "vvc+mgvLPHb+GlZnEdwWR47fwt33nSbNMm47dftNY/71b5wly1J832c0npDogsBvIoQgTVKEsKYl\n", + "8Yq8yGg2S4ZWmmfouOx25fs+aZaR6wzXLTu9N9tNjCno9fpsbKzTbhYkSYw2Bc2mj5QChQGdYQFC\n", + "56A1Skp0aiOkJM8zHM8hiiNc1y4rO800WqakzHrCpqjYQEKWj025uWpdoATIqZqpQe6yLVXStNIC\n", + "rx9Vk4Y6JFP38Ku/e6VjK5u2V5GwOu66/+X/XR747wP/D/CH9d8K/Kox5lfrJwoh7gTeDtwJHAI+\n", + "LYQ4ZUpxjj0Xu9uT3Js0qx5XJdbTz9+1o9WlJStjXeeUVzuZbe8Y3+pc17URAt7xtrfzy7/+73ng\n", + "1F1YWiItVcrKjkekSVZ26VYSzyuLLhynbDbrui5RFDEYDJhMJnieR6fTYWFhHiHYfn0ymWxvNo1G\n", + "g7m5OZrN5rTYISUIFlldW+EFL3iIj3z0Y7z9bW+lQNNutinyHKn0tNGEg8aQFzlFYaad0CSWskCA\n", + "sncy8VJJlFAYUTJyFGXerMiLaSZBIpScKu5qhIwRWsN0UkphkWUFujBYysKSZWJVaw1+m1bDp7e5\n", + "jq8cVJ5iOQ4aSSYdUtUCzyVodkiiaZcek5GmCUkakRcZQmpyXTAZrLOxuUkYThiMXOJwwjcefpgw\n", + "DEkzg+M1sLw2wl1kZRDvnUIAFLmNMH5Z9ScLomSA7UhaM4JTd5zGUR7rm1ucu3CFNAEpPAyKQViQ\n", + "JSky67I+nLAw47Ka3sZ4WLAatXjtqQ4teYNhf5MsPchhXzArL3BCJ7R7Ln6yhPAKhm4IicFrFMSN\n", + "lEBsoMIRhxp3snKjydVzj3Hy1J1oVzOOh7TwMGmMZh4rn8GyniOyMoriCI0YUBNyXSaxjS62i1mk\n", + "nC5yo8HkGFOQmpjRJCbwJMdPnuLt7/hBfukXfoX1jTUuX7I5sNRhc3MT17JJDIyjmPbx44w2V+nY\n", + "isySpJZg/ugyb/mO7+QXf+O3ePjxs9x++x186Wvz3HffA9y2z5gbk6GUIElC2i2fTGuWDx5kdXUN\n", + "R7plUxRjqDruRNGEcByDAaUcbNsiyyMajQbrWyO0TtFGkxcxQgoaDY8gOMxc10UpSRiFPPvsWdI0\n", + "YXFuBkvZFGlCnuR0Wi0G/QHtVkAcxeQ6RWqBkJBPq5AtYSOcqcaOFJii8n5rzJLta5NTAw6gEXIn\n", + "SiyKgiiKAIHn+ds2qjLaaboD99bzVHVnrrJtddtVx96r3/P3xcD/TgNujPmiEOKWfd7ab0d4E/Be\n", + "Y0wGPCeEOAc8BHxl74lVaFSF7NXOVvveXZnj6rX6brjX6NcFb6pEZ91ThlrlX15QGINC8+qXvYyz\n", + "Z7/FS1/8EjZurJHHGYcPHcJybIyUaG0Yj8eMx2M2NtaxbQfHcaZGvexgL0SZULx06RJQed0B8/PB\n", + "dnInjmOuXLlKUZTetWU7ODYsLhxgY3Od2fkDPHPhEqdOnmAYxegsxZt2HBqHY4RdTUKJrer0qRLn\n", + "r8IuJVWpFKfLZKDGYLTBsu1dOYLSx9AImZfMAAxSWAgUgd8gS0uOuqDAsQUoi562EFmG41nYJsG3\n", + "NZOwz2ovZiO2OLsy4PzKgEGYE0XjHXyR6UQ1GiFL5TolyxDVUhZYTeIwRLRP0JqxieKU3CgSU/5v\n", + "4Ub7zk8lPQLPJU5i0mRMs9UiT3vMH+6Q6xFWnKHjCRQxwlhoYZNkECEJHR8lbGZmjhHNdTnlD1mf\n", + "FJy7dIn5NY+XLB7iqNtjZT1i9foWA79D1Otx3N4kb80i7Qi/Ca04AZ3gdjTYK6iZMcPJGVqH3sxX\n", + "n/ogB+aewmodJmjcihqvM6tyhiLEkpIgb+HplNikuEVOKgoSNQ3HhQPaTJ2VDKaVfqrKi0hNoxOU\n", + "MCOS2+++m+96+XfymU9+ikkUAwdIE0ma5kRZjN1qMxiNuOXgMsPVqzQdG6/b5svffJjHPvinfP3p\n", + "c/SShCfPPcX1a02OHDm275gfPXYEpSSWkuRpihCSyXjE8uIsWZptc/pHoyGWsGn5Np7vlc1Psnw7\n", + "sbixucLMzAzD0YDuTIcwjHBslzSNmJufYzgYlTRCYXH7qTPkRcblS89BkWIrheu0GUcav7FAmPZw\n", + "PBtl/NJpm0JSxpTMNbsyirkGVcpNa1MSBRBT5pMxpacz9cQxlBHb1CDbtj2lE5efWY/8YXcHqjrs\n", + "WEJJ2bbBrtZt5WVXDcTrUAvcLHa13/Hfg4H/tBDiR4CHgX9pjOkDy+w21lcpPfGbjgrPqrzTCseu\n", + "jnoYUU9qVka8So7VcdjKk68Pwu4k3k54YzkOMtc0lMND997Hex77Q85efIZbjx5HJBlFHCEkXN9a\n", + "Z6Y7SxD4tNsttC47mY/HY8JwzHhcik8FQQCAUtaUuRIRx+n2tXS7XXzf58CBpe1rDccThOUwmYTM\n", + "Lyxhez6f+PSnaXW7HFxcpNNqEg76eI6FzhXUMtRpmqKNQU538HybemgopEJPKXyoqlCi9DKMKAsd\n", + "pqNcjpOWiCmsgVRoA1EWYVsSyxJokyEsg7RsHO0RRmMWuh2efPQRpBScOHkHbdfhg+//OJuRRWwa\n", + "tGeXsfz1MiFsLCQWRkvyVGP0TgQmEWgNcRKj7BmM1kySjDAV2I6HcpyyAUbxPJS2PMZWHlFeYEkb\n", + "iebEidt47rlLSJnTMAHrWz0m6QSjXFAejU6DQhss20HZio04ZvPGJtK6waGDbY7ePsfKhWs8Z5rM\n", + "zhhOLMc8Moj4Uv8IyWiWF830ObQe48Q5x5dmOKUCsmxImnVxmzbOIZsJDp9/4gbXEotm+A2KsMfj\n", + "mze4/8zdWLlFK9BMTI+YDsrkoDYYmQAhHYTIKPICPZV0LXQpUGa0KesBEGgMcTLBdh0syyNJCnzH\n", + "4p0/+aPMzLX5i49+ku9cPsn6xohGOyUeDknGIdlghGiXNMADi0toDcPhmG+dfZpmo4sddMhTze23\n", + "38HSweV9h1wIw7Vrl2k1AlzH4fq1a6yvb3DnnXfhBw08z2U0GrO8vIgu9HSDMWRJhO06uE5AnCYs\n", + "LNxKr9/n6OFlwiii3QxACALbI0sTGn6TySSi0WyQpSl5AYeWjxP4PkWWohBcW7nGKEwJWi45ZcMM\n", + "pMKybGRhtj1rOR0zRGmcSzpyuQa0KcvjpZQIozCm2GZ/obNtQ70Dn4htwa26gc3zbNvW1N+r11RU\n", + "a3cvAaOOOuwtzPvbjv9WA/5u4N9OH/888CvAjz/PufuC7KW2yFTUZ6q7UTfGdZyoTnfbq40Au/nM\n", + "e3e3yvuuzhGibDA6yhMcJOkkxrJs3vzmN/Ebv/1bfP8b30y2NeLo0jJKuJw8dSuDrfK39nq97YTK\n", + "7OzsNsVJ65JG2Ov1cByXRqNJt9ul2WwSxzFhGJIkCZubm9tY/8GDB3FsmzSJWZhf4OrKdZqzs7z2\n", + "9W/gfe//U/7Jj72TKBzRcC3SLC27ueQaKUp2ilKgjJhK0k69gUrEygjcSoyqpJEDhiSMSrhFyWmI\n", + "V3ogqmhMK39AKEluChCQSU2SRgihcZRNHsWgBStXr/OtsyH3PfCdfP2Jp/m1n383UQrHb72TNCmY\n", + "6bpsXDmPP9vCUjZKOihhARK88nvSNCbOYyxLYdkKPS5xUy0EljQ0PLtsP2cMrpJId39p02hyg5mZ\n", + "Jdq+pNCKfj/i61/9BktL84wnY+yGIhcubtdHSEmWFygLFIKiiEmjAqUstDY8Pj5FcnmLl5/w6R4q\n", + "GKQbrCBZLGKWm0OuF1t8ddDlg1cP0kwT1KbHbRdHfN9yzm0HDYI2MmzQ33yC7ozhi1/5I04+dBw3\n", + "S7D0ExTFSX7pj8f84NveyHz6DMZO6dkaowzKWBRKYecGuwqSCo2yFHmWoyyrxFi1YUomwnVsLCWI\n", + "w5xOa444GlCYjDf/wPcznhi81jzaauB34a7lg+SjmAMzHYrhmMMLSxRxTjiKuHThMq7wKbTi6JET\n", + "vO3tP8SD9z3A1ZXr+475+fPnmemWMGIJRRruv//e8v5iiOII2y6hhySJpswrzdziAv3RmM3NNRYX\n", + "F0mTiNnZGZI4odstm6QMRyM8x0UbjYOLNxcQx3GZ4BUWtm0ThqV2vHJcbjt9F1obvvH4X+K5ZRm6\n", + "JSVpbkpY0BgkBkzpUUspkJYqheQoa0cUU9lZrRGypHgKU9kivSva39EacnYZ3fK13dDHXi2Uvd70\n", + "XjtVN957HdDnO/6bDLgxZq16LIT4D8BHp0+vAUdqpx6evnbT8b73f2Tb+N1/393cd+auXYyHela2\n", + "IvNXF7pfuFENWFWdVTU7rg9odSPiOEZ4JTamitLILR84wJve/CbOnj3LG17+apLhmCxL2Vq5iqcC\n", + "XNtDGAPakOcZRZYThxG+7+O6Dp1Wm06rRZxkhJOQUZKUGKuUWFLSmZ1jcX6BwWBAFEVkSUqeJOR5\n", + "Tm9ri06nQ39aBXr7HXfx9DPPcOau20nyBMd30VmBq+wyuaXLFb69aUkJGmxlg5wWOWRpWUBENQkM\n", + "jcAny1N0UVAUpb44WmIbv2S4WAVCUZZTK42wLDZ7KeNxxMzsIoHXRqUJy4dv45tf+Ar/9TffR3vh\n", + "EAfvfikSSTYZoxjQEBNaCxabyG1hLiF1WbmHRjk20pGITCA9hbQtutIHDOE4xBRFWdAjd4oeKl34\n", + "vUcyWaNXTBDSxrF9mq6gc+gwr3vN6/jsZz/HpnGQMiNNYpQBW4IsQOcZ0ghs5WIyMCi2WgHn05DW\n", + "lRu8+KSDGeQ8cVVw59xdHFZbvMJdwTRHfNm+nyezZRz7EMXgAuudMYdGIVL0CLMCu2XxzNnP0WnO\n", + "ojc7JFmbQ0c2OdPVPDE+zR9+8RLvfNMS7fQ8rumRZ5KmZVHoq0Sph3DnabY6JEmCMRoKMIgyb1FR\n", + "1gBLaookw5MBaZRS5AYtBIWQ/ORP/zM++5mv0E9Sch2SZxMOuD5JOKTpltoyc0tL9IYhW1sTXvXK\n", + "13Pfi16C35wBIblw4QpRnOw75u12h4W5BXzf4aknn+TQ8mGSJMcLAjKtKXVeDKNwgGs7oBRJlFHk\n", + "4DoeMzMWeV42BQ7HYZngn0pdtBpNbMsmy3PIDbYSuK0GpuETxsk2RJrnOeMwZByGIOD4iXuQAsbj\n", + "Ef2tLXSR0m21KPIEdCnbrHWBFIY401hWiSYWucbostmFEGWTlR0YRSPUbknY0giLXQ5hZYuqSszK\n", + "2axqVfaySerFPHsNtlKKrz38Db72yDf+x7BQAKYY+EdrLJSDxpjr08f/HHihMeYd0yTmf6HEvQ8B\n", + "nwZOmj1fUrFQKhJ+XdZxL62wMt71waozTxzHwbIsNjY2WFhYYDKZbHvJURQhpcRxHIqi2MatLcvi\n", + "mSsXmG/PMOe38QOfRMKYnL/8zGfxjeTYwUO0Ox3cTpvB1gRb2WURjlK4rrvd3HgymTAcDknTdNoY\n", + "ubXD+S4KJpMxcVx6361Ws2zNNoVciizl+o3rGCGJi4JcG/xWg9W1NS6cO8trX/3dHF4+QJ7G6CSl\n", + "7TWI43g7sauUIsuyXeX0UGFx5fuTyWT7fGmp7SjFCMjyHNdyEZmNUQWTZIIKFP1wwtPnLqKFR6F9\n", + "wglo7TIehbTsiH6ccWVtROfgMXACwjQnnQxQeUgx3CQdbTLXbiBmD6JR5LnBdgK0tkgLQZwbjLLJ\n", + "jGASJyjXxUuGmKkKne/6FBrSooTK0Bkmi/jwb/6Lm+bmT/3rX2Ort87m1ib9wYje1hglPU4cP8X1\n", + "6+sMTUAUhlgSijxD6AJd5NMeiqWxUbYLBvpOiqVS/OgKD7Qj7j8wSx7bxFtDTrDJYX/IqtPiy85J\n", + "wqigO3eKojfiYNHHs2N0N+WBky7zbPHlsxd5eK1Bp/FK/sXbZrh15hzCafBI/7v5r5sv4snNS/zT\n", + "t97CYrTKjPTRJiQyCR//9MN87vNfodlscObMPdx5550cPXoMratilp3oKZ30WJifY2szAlyUC82O\n", + "xxf+6q/58J99ku/93rfyx3/yXoyIGN64yJLvMtvu4CqLRqPJKMk4fvtd3P/il/LQS7+bi5dXSTPK\n", + "sej3uOfM3Rw40L5pzK+trDMaDli9scLp06cQEoJGm/5whB8EaF3q41uWxWQ8ptNuY0lJHMW4DZ8g\n", + "CDj37Dluu+0E66sbBEHJUsmyjDRNcWyboNEgTUIaDZ8kyYjjGCksXL/sLzqJ4tIzp6zIlJRsNtdx\n", + "aAYeV648x6VL5+m2AhpNB0xKUaQ4tiTLd1hvnuOSpSm6qKLbaXgz7XIvbbY3jHourdhT5FQ6ljvy\n", + "t3WPunpeP7feCBx2YOIKDq1z0+976NXPy0L5+9AI3wu8HJgHVoH/E3gFcF95q7kI/C/GmNXp+e+i\n", + "pBHmwM8YYz6xz2eaL37mQ7t2r3p4Ud+N9r5e7VjVRdYHoM5Prt6gTUDoAAAgAElEQVS3bXvb665o\n", + "QEVRkJiCtt9ATptE5BJyS7C6vsEnPvZxXv6SlzLT6TAJQxy7iS7YBd9U3n+9MWmdpF/xU13XRQix\n", + "XZFZJTMALKXQRmO7LsqyCZOYJMsYjAZIKXjiicd5zatfWdKwhICk1IZI0/JvXuRYlk1e5Agpt7+r\n", + "unbHKbvx2LZNmk6TKEpuN4YojCZPcyajCL/lE+cpmTA0urMIK+DDH/4koxEkoUWaKBzXx9hDkrzg\n", + "0JHjrG8OaLTaJEmKMDmBAzodk0YjkmiEzkKSOKPZbJcestvAclpg+WQ4xKkkFwotFJkIydOELI5x\n", + "bZs4TlGOT65LHZs8jfnEu3/6pvn50Pf8BFk+JElGuK7D6o01PLeJEBaWcklTWTZTmIa3JVQkQFjk\n", + "GoxQSNslyzSBtkgcjWVFzGSb3L/oc6wLM05Ia3ID2b+BcVzCuSVuS4cMOcBlcZinRk2+tJIRNVJu\n", + "bU+4PS845AzQ+QVmgiW+71X34s/lTJoRwjnFf/7yGT56/RTM9JlNvskx1ce3Fd2ZOxmsnef61ScR\n", + "UjA3P19Ge7ogSRI6nQ7dTpfA9wh8n27TpdNscvz4Kf7ma49w+doVHn/yMTb7fdbW+pw5cz8rK9fQ\n", + "JsWRMQ1HE08iZruzFBpaM/P82P/2U/jtWYLWHAaF7/lsrfdoegF5oTl9+uYU1rVrN7hxY5XlgwdQ\n", + "StJstdjY6tPudNjqD2i2O+U6EIZoEuE5DmrqdDlTpyfwfbTOyLJy/fmey2QSsrS0wOqNDfr9TbI8\n", + "JGgEzM0ulFRdIVDKJskypBQYIUmzDCkVSVwQRxFKSvIso90J0EXBoL/OYLhOmkzwA5s8T9B5WQXp\n", + "2FZJuRWCIi83dbldpFOtkXwb1t2J5iu5it3OpFK76x3qtqzuwdcRhrqXXX3WXmf1byvk+TZWYv7Z\n", + "TQa48iL3Et/rHO7qgivjBNBoNHj88ce59957ieN4u+xWa102VJjCKfX/j7MUKSRFVpYbW5aF5XkI\n", + "z2G9t8V//qM/4sd+6EcYb/XJitLozc6UwlVQ3pCrV69uZ5VL77tBp1NO3rW1NQaDAWmakiQJrVZr\n", + "2sknwFIWhS62f3+WZWXI5dl4ngdSsrq2xmA85tz583z/234ADxBxVG5KlkVaFDiug1SS0WRCp9sl\n", + "mUIylu2QpkXp1aQp9rStmmU5SEtx9doK/VGZ4dcGFpaPAJIbmxts9sc89a1n2OyNGfQjlg4coUgg\n", + "8JtoJD09QgpJK2jR8BqE4zG+45KmKYXJ0FKTpDFRHOL2rjKejFBKE4ZjpBKkeUZ3bpGZhSWcoEOm\n", + "IUlz1lnENpBMRsx02pjCYHsNtHTIp574e//tD9w0l17xtp8liXoYEzGZDHCm1XutVptxGGHGQ4yQ\n", + "WLbNKAwxUrFwYBnL9dnqD4mTjDjOKAwYW5eslTBBSYGtCg75GQ/MaW6fSXHEgDBMGQxy+vYsHa+D\n", + "ZbfpqyNc0Qe4EI145vK3aMeK1x6zuI1HuPuQg3v4Aa4evIvNuVN4meLUkfv4lfdfZKNzF3HyNNba\n", + "V5ErV7ljvsl4fAlUQV4UtDptMIZRGJZdojodAMbDEWmS4FoCQUGSJWSFptHosLHZI45jPNfFsgR5\n", + "lqGERa5D3EAwGY2Jo4R3vetnWVnb4FOf/zz/+7/6WVbXepw8cQqTaxxp8D2f6zfWufeeUzeN+cc/\n", + "/kkOHVrm8KFlfM8lL2ASJRghcFyXrNCMxyW11rUUo8EA3/VoBD5pnuP7PmEYsrGxzpHDh6cMpYIP\n", + "fuhP+cQnPkG306G31QOVcePGDYos58SJW3njG9/Ea17zGhrNJlprtvoDut0Z0jzHlmUzFqNLIxgn\n", + "MVIabFsiZNnc/JGvf42DBxdxLQdTFERRSKfZYDjoY1tTaHVaJbvNx1Z7dfatKaVztz0qCRT72jqy\n", + "LNtGGipm3F5JisoW1kvsq+/9B2nAv/KFP9+VuKwupCqbrbzoOs5dHXXa4PTztnfILMtKI0gZ+nie\n", + "t23YqpL3JEkg12glKYzGsRx0kpVetGsxkZpPffpT+Fpy+/Ix/M4sytlpNFxpGbiuux0hVDchzzNc\n", + "10MpOYUyyl6bZZFPzmQy2b4uIRWWbZetrTAUeXkOQpAB4yjl8soK/eGYV7/8pRya7WLZFlmWlypu\n", + "xlBQdrORSqFFyb3tD4akiSZPM2ZmZ1lf3cD3GwghabRa9IdjpG3hej5hkrOykXLp8jW2+mPyAowW\n", + "2JYiCYdEkx5FNmZxrk2URGSNBSxp03BbuMonTwxFrpGWjbAE/ckI27fLoolJjzQZs75+DSVSICPL\n", + "4pLJKG06sweIU83s/AF08xAWmng4oOW5ZGlGkhlSY5EbRVoYPvjLP3rTXHrNj/4iRZogTIakwHUU\n", + "nW6LOJ6QpDFWmhMlCUmW4fgeQbOFMYZJGIGQeI6DzksJ381iQNsIfCRhYdgYhcxIi07Y50BQkJsR\n", + "SMNwa8jnx03uPhBw30KTXj/m+saE1f6IseMjGzZ3tQwnrAlzXZ/hwjG+vhKwnt+BFoZOc5VXvOp7\n", + "+dI3Umj6LHcybjz8cbrJN9AotOwwHI1KYTNKZyWOIyylkAKUVKhpRfE4HBDGA06cuAXf7ZBGkKcZ\n", + "ppjQ8CUKRZFI/FaDftTn13/93/PENx/jzrvvJtUFTsPnd9/zHu44fQd333EXS3MLDEYjRtEE3w84\n", + "dvhmJsqFixeY7bYREhSSPBPkusD2PHJT6vJPwlLTJ09yHKXQRblmMq3pdtsMBgNc1yPPUp566kme\n", + "fPJJHNuiEQSAwXFtoiQiDiPW1ta4dvkKW1tbgGRmZoY3vOmNvPZ1ryObrkVdlJKxRguUpYiiMgoN\n", + "4wjXczBCT9kzV8jCATrP8H0Xk2d4tsUkHJVqiqIs/y+F5EqYsW6fKuOqNbu85fK10sjXC3OAbVtW\n", + "b0heQTh7S+rrSEJ1/j/IUvr9Or5UEEd1UTsDo286r/KwK2NYee5VCXhFlJ9MJtsCVJUBVUphG4VG\n", + "l9KXAiwpsaUiMhqhJA++6CE+8Pv/iduXjuC5Hm6jsb259Pv9UqBqMMC27e0S+yAIMEYTxxGbm5vb\n", + "kEtVrRkEPs1mY5qcKiskoyhBWQrXEqAVRZGT5gXDfg/HbXLrrbdx8fI1PvGpT/PWN3wPw+GQ2fm5\n", + "aekySNtiNJkQpymXLl+i1++xurrBaJggheR1r/0eFpaWKQpDu9WhNxiihY2yfZ4+/xwXLt9glM9T\n", + "FBLXXYZUYwPoiE7HoRVoomhCll8lzyb0NiLmZw8wyQqasy2MEvhBg3EYE8cJrc4cURoyGA5x7BaL\n", + "R48yc8tpAleQRhOMLmi3ZikKG4NPGGmSWKPtNVqeRyIysnCMbyvwPOJCERWCKN0/G58LiRYOFg6+\n", + "53L48BKjcY/OTJswGuFqH0YjrDyn0AWFtum0WnhuQpGk5EmEyQuUMJwW9zHSa2TeEM9KefDYYbqe\n", + "ZLZ7N82ZU4yygKWlWRy5wZsmIU98+WP0oz7hwWMstTrclzd47omnGYdn8c2YqHkrjwWHySZjbpcu\n", + "36E2WWmlrDRbfO3LDzNvBUw2XVJcVDfE848iJxLfatDsdHE9b8osMkRRiO95GF3q8AggMyB8h1uX\n", + "TqCkwGQOndYsOk7xnJTALej4LcKh5oGHvoMHX/5CPOHyuU/+Fffd8wKUpWm3ZnjDa76H3/6t32Tj\n", + "0mXe+sY3lUShVpMo3r94qtn0SNKYTrtFf6tHw2sTtFqEcYxjO0RJgmfbYCBouggDaRzh2TaubXH5\n", + "8mUOHlwizwsef/ybnDv3LCdPHqfVbCCEoN0u2VvKtjGFZjgYcHHpAlcuXS3X3WjIb/6//x+PPfYY\n", + "P/KP/zGLBxZR0pRNo4VFnhW4blngZrsOaaZxXMjygsUDx2hYCVevXWFz7QadZplXch0HPTW4uiiN\n", + "tzYVj3x3qb1l2VSJzN3aLGqXOmi9crwOpdQLF+uaQ3UcfC+d8PmObyuEMn18E7Zc7XQVvlyn2lSP\n", + "dwkhbRtwa9cF1z+zwqir5x4WGigk5NKQ64IsS3CUTVFo3EbAn37oQyAtXvLQyzCFZjzq4zoK24JO\n", + "uwmUwvZRnBEnGZMwRucJvudiWTa24xJFMZ3uLHGSMRyNsSynpENaNrooE2oGU3qLjk02Fbo3xpBm\n", + "MYHr4/k+11c3+eRnv8APv+MdDAcDXvCCB9FZQZrlZLkhTjI+9ZnP0Zmd5wUveBHN9jzv/t3fwg0s\n", + "Hrjvbl505m7WnrvC0vwS41SSN7p87tGn2JxEFHmC1jkCjetYZGmKJSRFZhBakiYGSzoM+1sU6UWy\n", + "ImNp+Qhe0CErHHTuUxRlYUcU91AqIcsm3HPyDrI8L3U+jKbXHyKVTa41aZoTxgmtdgvHcQhHZQVi\n", + "qx3g2DDorWIrTRpHZLlGS49fe9f/etNcevs/fzde4JKkCUHgMg4nOK5NGIUYrSmiIb7v47sOJs/o\n", + "93p4rkOaxLheUPKqpyqBcVTioRLDLUcO02m3MHk6nY8wHI4QUyfhlsO3sLJymbXVFZTKiJMRpshw\n", + "XJeVlTWCoItUPp7XINIFjueVSTIDpsiRxpTjLBVa52RxqSq5sOihlGZzfYMi1TiOj5IOUnoUWESp\n", + "xnYbGGkj9ZDAKbn+S8uHcfyAOE2RgGtLjE55yxu/l8C1cRzBcDBmq7fFRz/yUX70nT/KJAxZXJzH\n", + "cVwcR/IHf/Cf6PcH3HX33XRmZ/A8h3vvuvOmMb9y6SLzs3MUeU6SpGgEzXaLMEqI4xQvaJCmKcqy\n", + "aloiGa2gwWDQJ/ADpBDcuL7CF7/4Be66+87SDlhWqdSILJtFpCUuXeVx+v0+Fy5cYHV1leFwyKOP\n", + "PsrrX/96fvzHfxzHc7edvZ2oveTQ1mEOgDDN8DyHyWTC1sYqUTgqIwRpStgpLSG0UsN9RzwujGOC\n", + "oEExpRtukytkSZ+URu/yqut6RVX0vuON7whm1aswK0e7jo0/8OLX/sODUL76Vx/bNtawQwOsKxTW\n", + "Odz1ctOdndDaFXpU5PrqqJekwm7lL5FqkBJhS7QUU4lmjTQlNIGS9Ecj/sMf/Efe/sYfwLUctM6I\n", + "ogkCzWDQx7ItXN+n2eygEdv0vjzPy2TNeILfaJZJDwRZrhmNxsRJKbKTxBmWdEBA0PCJ4ghtynDe\n", + "VorxeEwcRXQ7Hc48cD/tuTk+/KEPkoQhDzxwP77rcebMGQyS9fVNeoMxt50+xfpGD8fv8ju/93uE\n", + "6YQsmXDqyBECIXnZd70Uy+9waWvMY89dY5Jp4iSj026RJBH/P3tvFmPZdt73/dba83DGqlNTd3X3\n", + "HXgnXlIcREqGIpEaKFlEHCGRYweBjUgZESASkhdFGZ7jIAiSQInzYCcvNig5tmwlQpwAphRIDEVS\n", + "A6/E+fKOPVbXcOY9jysPa5/Tp5uTX8JLA3cBja46VX266py9v/Wt//cfyjIn8LxuMAlSGJS5ltUX\n", + "eYbIH4JsWCcRH/7wh0jSmjxXFGmL5/mUZUa/5zIYBLRl2anitHptuVoThD1WUQxCMhiOyIucVmnu\n", + "LlJycXGG75mItqQuEoa9gOU6YrB3xH/5H/4b37dr9N31nde9u3cI/YB+r09elOSlphumWUnTKiYH\n", + "E/KOPRbHEa7jYNsWdV1hSVNbBAj4rU99ipfe+xJOx/HfFHAhDAzzcTvbDaTQNA3n5+fMZjO+/vWv\n", + "c3Fxwcsvv8yv/se/AoitB/3m3n8k2BFsZotVq3SgedNgmYI8T7i8uCBJVtDWeI5DEkdYtoVtaKMs\n", + "x3V0qlfXWVfdCb9VO0rxpnqMUbepU0+Go+j1uBHdhp5YFOVjjwkheP8P/9QPHoSyu/tsfH53O+XN\n", + "50VRPKZa2jAsNsUeHhHkbVtj309Odnez9TYbQ9MxNxR0RyetxjKlSVUVGIbB/sEBZdvQltpQxzRN\n", + "er0elm1zdOMpyrJisVxxNV+zcSgzTY+mVdx/cAfHdYE5tqON6U3bwbQspLDJ6gbX30e1Bk3dkJaS\n", + "WhnYtokUgiRN6A+uc3Bg8/xzz3K1nHPtqX2ee+H93Ltzhz/4w8+xNxrzxVe+wi//8i8xnc4J+30u\n", + "zy+xHZ+mafnABz7AV77+VUR/wJ2zC9okxfeHnD79LPcvpqRRjNsb4btj7ZnhWhzsX2O5nCGEiWXb\n", + "NE1N3qQoBa2pGAwOqZuEloqvfOkLPHXrKSbDISrU+Kxtj7cbq+lbCGmT5QWmZeH7JnWd0g9dpGmy\n", + "XFzSonAchygpqJuG4SDUAb+mSWsKsiRhGAZcnN37fl6e767vsoS0MCyHvG54eK797Iqqoj8Ycng0\n", + "ZjpfYVoWRZ5pXYZl4roOWdYyny0YDYZ8/Rtf5QMf+ID2AS+1XF0BspVboRJKF7/+YEASx9vT+I0b\n", + "Nxh1QrpXX32Vy8tLfuVXfoVf+7Vf4/T0lKIocF1/8yQdq2Q3klHiWCaN1JoHzw24cfMmX/nylzvY\n", + "osTxA20+V1UoIE0z3Yh0sIbrdMPIpgudAehM7HYh390m0jCMLR1RqcdnfZt6ZprWY/XrezXY71gB\n", + "3z3q7Bq7mDsvwgbo310beh48LrffGKXDI1hld5q7W9Cl1HmTrXhEsjcAo9VyWN91SaoSy7SYHB4Q\n", + "xStOnnqWZRSjlCQrYBotqBtFUbbEGdBC00BSpBpzCyZYtk2SpkynMfvjfeKioEmLDhoyyMuStpHa\n", + "JyVJuH79Oo5jEfoevuvqgmiaDMZ7lNLi7tmMxSpnMD7ipJXUZUGaxvzO//F/8oH3/xCB52E7DnGS\n", + "UamGW7duMV/HXM6uGIxNYjXlz778FVrbZbpaczA5JCkLWmVgixbHMCmznLLQobRVU5BliR4CqRaU\n", + "JEtqVGvg+z0so+Dq/G2ylY9nh7z4/A/RKJMyb5CmqTm0baNVlW2LZxs4nk8cJ6Bann3qlCzPSbOU\n", + "0ahHVTesVzGe6+E7JpVQFNEKQ7Uc7w2/b9fmu+u7r6vZgm+8+jrXT2+glKLf69OzbK6mM6arNUVR\n", + "4HkuJyfHJElEPJuTei5pmnK4p61iLctmvVxgmNovfBOFppTaJmoZlg1SEMXRY37gWZFjWiYn168R\n", + "pwlvvfUWzarmlT//IsfHR9391ezUDvHY36rtao1hdvWjpakU73v/+4miNefn5ywWc1zPwzWB+lHU\n", + "mezgkrLrlLV9hVY3t+KRSRV8exXlo9r1iDa4C6Ps2jb/86x3rIDD47mYu5/vUnZ2DZt2VU27RfrR\n", + "sODx54PHu/HN522r1YCbj4UA2baIRuFYDmmaoUyT6WKOGwRcXl6SRQmO30M6IVfLmEoZpFmBtCwM\n", + "BI7tsFquKSqDg8MT5osFgTAI+gec3nqB+WqJ0bZkWUYcx5ob7hp4PY/BYICUUockRxVL1yKLYixT\n", + "cHpywu17b3JwdMJg/4h1UhKvV4xHQ6bROQqL2WzFnXv3uHHtGqvlgqOTU3qDkIvbdymKCtUapEVD\n", + "0Uqeef4FLmZX7B8cce/BHXw/pCFjMhqxWsU4tknoWFStwnEdsiyh3+uxipYURYnrhpRpTpxWONLG\n", + "UDXRYonyGrJ4gVIWQW+EECatUNA0WLZJFKc0VUktJK5lUrctZw/u4nkelmEwvTxDCTiYXKOtG+YX\n", + "l5we7rHfDxgP+yzXy+/HJfnu+udYYX9IXjQUtbaFffhwyipac3zthHSVcnA4oVUt33ztNeq6oipL\n", + "9kZDnn32aWYXM77xjW/QCwIiYwVsKHia2aHaFkMnIFOXuoELgoCq0iyxjS2zZVlEUcTBwQHL5ZKq\n", + "zviTP/ljhsMBP/nxnySKI8JgI0LaNHpdEyf1CdwwTAxpAAaYgihe0+uPCHtDsiznm998ldbQIc2O\n", + "45CnGdI0qcuyc1vUGLsQOsjCMK3HYF3YPfE329nWJmtzw4rbQEOaWfcoOEZnHDwu+HlyvWMF/BF3\n", + "Um7tXnf530+mrcOjHWt37VrIWpahPRPkbnrG4/6624FGd+xRSmEI7eAnJdRVhet4pG1Nv9cjz0ui\n", + "WtOKskYSXa0RdkBSVpQ1mErgOR5FK3DCIa7wiNMSx+1xNVsQhg2rKOtEDDZNC54f4nQ8XWEKZosp\n", + "dV3j2A5hP2S5mKNokC1UTcEzz95CWj6LxQrbcrl5ax/XdbEsmyyNEaohTUsWixUvv/wy6zgmjpbc\n", + "vX0b1bT0e0OG/THiuGY8CPA8m7LIeOrG9c4jWXL//l2G4ZiDccjtew9pakWcZxwMh9A2OIZJf69H\n", + "VYHjjPCNIbYqqdMVRluQJRGW4eB6AbWqMEztJ2F5HlmW0/MDAtfDtG2SJEM2Nbeu32C9XpHnBZNx\n", + "j7oVxOs5prQ4vXaMbxkMQwdBTfAdvFDeXd//9Y1vvo5l29x7eM5oOEIqQd20PHx4TqMa5t+cMxzq\n", + "SEFahaAhz3K+8IU/xbM9XnzhOb72ta92qks9xDU3Xi/ShLoGNB2wqmu+8MdfIElSmqbh6aef5umn\n", + "nyJJUzzfw/Vcbt66yXR+wXyx4Etf/jLvffllJvsT3c2Lx0/wis5iWRoo1c3WpLYoGPRH2rfeEHiB\n", + "yYvvfR+zizus12vMRoCUGKZJUzeapGBI7TPeKixTku0gBrski43x3i7TrmkejxXcfH0DGW9CJTaq\n", + "8u+03tFQ483Os6tygke49WYYsCnQpmluZeObx54M9d2l4ABbkc0jvmaHS3Xe1w3VTpcusF0HpIFv\n", + "2VSGxcOHZxw/8wLS8aiUQBha/KIUjEYjlNA2sUXV0DYNliHx/RDTkAT+EWEnOljHOlczS2P6/QHR\n", + "esloPNJUK9cnSVLaRnF+doltmzimgxSKyf4hTQ1RtOBytmI0HDAYjkjTFMPyOLm2x2x6wcXFlNVi\n", + "yfve+z7yvCDKcgwBP/5jP8adew+ZzueEYUASzTm/OmdvNKIqc6RowarpuYrJyKVM5wQ2UNcEgU+S\n", + "pown+7imzWw2xR/26Y/2WU/nrNcNQ3+P2cV9UCYIi6ptaNqalpqmMomiCN/3SdK1VrOahlZGGibx\n", + "aoVt2xjSoFExlimRlpZ5H+7vUacxRZ4zm55h2xb/6B//Ll4vYDwcMpvNtI/MYklRVKRpimlY+H7A\n", + "wcGRtvr1A/JiSZZlpGnMfLmgKIptAEcvHDAYDlkuVpRlRdFIFnN9dI5jzV6hE5lYhk2apBRpzng8\n", + "5uhoiG3bBGGPMq9plOLOnTukWYoQgjJP8AMXKQWn10+5mk5ZLFfkZYOSkiDsIQ0by3Kp85qr6ZyT\n", + "4xMQOYahGSpFnuOYWm9gmzoRyjAs6qrFcTyEDWWTsl4sMERDHkfkeQqqoVUwW6y59cyzfPONN7h2\n", + "/RaqlSB02lJTNxwfHeJaFqYpuXvnDrdu3aRpWpI4RSmJH3iUZcFv/Mb/wL/+1/8ah4eHuH6AIQ2i\n", + "tbbujeOUMi8JQp+L6SVFWXB6eg3TNLl//z77e/s8uH+f48NDnnnmPdy/e5+3b9/j5o3r3LlzmyyN\n", + "ME0NSyilDaXqusGybJarFZ/97GeZTqcIIZjP57zy56/wwgsv8Au/8AvUdc16vSbs9djb26MoCr7w\n", + "hS/w4//SjxOGIa7ja//0rqaIJxywBZ01787DEp2CJaWB5/kcn5wS9iLu3r2LFApDgmk5SFpq1aIQ\n", + "2I7moe9SBneJGJvEq01HrZXZ9s5Mr9EECMRj9OofaBrhn3z2/wLYUms2w8zHyfKPGCrweCzSBjrZ\n", + "SNM3viC7lJzu/3pMDCTQftpN3WjKkgCEwBKGtmKtWtwgIKkqSin4r//7/46//BM/hW1a2LZHmtdM\n", + "Fysct0etBEHYRyHwPJ9GKUQriNdRd4roFIhSJ/J4ntfJ+02yPEMKk3WU4Do+cZrhe75+01pFWxfc\n", + "vHHKZG/EajVn/+CAqmkoqwbX97n/8IKirIijCNFqqbljGVR5ynhvyNPPP8Nrr9+mPzikrCDJdVxZ\n", + "XReMhj1m8xkGgn7okcXnxHHGapWwWKVcu/4Ufm/MfLnGdjwQJqsoZm9/zLqYE68S+s6Q0A5oipzD\n", + "/QG22WLZLWm6xu952nSrNjXlSgjW6zX7+xPW6zVSGvoY27aURdkdiUtM28X1Qr1B1g2ha1EVGeNh\n", + "SN00lE2DMEzyNOlOVi1BEFJV2lJAIGmbhrpqSJKEsqroBwF1U+O4zvZm1iremjTNEUjSNMM0LKQl\n", + "qJua6eyKycGEu3fvMJlMWMznHBxoBd94vE+R5cTrGU2rA6yjNME0LUajUYe/ttiWSVnk2lxpuSAv\n", + "ciZHRwz39snzCmnYLJdrVAPTqzmjwYhRf4jpNgjZYhpym2Rf1y112Wo+ddmQxBlZVhCMfPy+Q1vX\n", + "mIYA1dJUFU1dUVba7KltoShL7p895Md/4uPM5jM8x+XgYIIhDbIkwXUdhoMB6/WqOxUbWJYNKF55\n", + "5RW+9rWv8tOf+Gn6/QFB2CPLckzLJopiemFIvzfgajrF8z1aGtbrFZ7n4Fi62To9ucZ8PqeudBjJ\n", + "5eVDbp6esF7NsExo20eEhKZRKCUQ0uCP//RPuLy83J6ioyhCCEGWZXziE5/ghRde2J7W79+/w1tv\n", + "vcmdO3dxHJe/9V/9Lfr9DYTSnb7ZnLi/VTL5napg09Fr1+s189mUssi1EZroRHu2RdvZyGrk51GM\n", + "2pMsk03sm/7a40PKzfdWVfNYfZNS8tIHfuIHj4WyKba7DJEnf/ENB3Q33QK+9UXaFfds1i5kspn8\n", + "AlvWiWg1boXQtMFaB49h2Fr9BoIv/tkXOdg7QEhBkecI4Oa1a1w/miCEZL5YkWQxWVGSlGtapfBs\n", + "l1HPwbFt7VNS94iiNVEck8fx9oL0XJcgHHLz5AjTclmvE/KioCxrEIqsKvjm175MfO0Y17FIHIOr\n", + "2RQlDPrDfaoyJ04ypGEipIGhFIYUhOMJb91+nVJlBMEI2VZk64SyqvF7ATWKhxcXhEFIUzWcnV3h\n", + "W+B5fVxvQMslbVsymz1kONLFxvUcTLOHKVt6ZsXx6RGidXBND1P0KYuIqq2osoqqKilzk7ZpKatc\n", + "m3y5DoYpWa0XnaTfxFBm59diYlsGozBAWg6W4+F4LkkcMYcO+akAACAASURBVLs6px/43H/4gCAI\n", + "MWwfIcD3dQpLHEeoVndmvuchpUEYBLiOQ+CNkVKQJhVlEXN2dsl4b0TY6+kEIVVw/fSQMq+J45Q7\n", + "t2/j+wZZnvPCc8/x+huv47kOWRqhVM2gF5DECRfnD+gFAddO9AC2qEpq1ZIVOet4RZokWJbOvNwb\n", + "jvG9kHWUomTD/QfnvPHWXRYr3fH7fsDeaI9Rb0idr6lsyXodIU2B5/u4jrMdco3HE5I4xZES3/fJ\n", + "shzbs1jFC0CQC4ijhLIs8DyPo4MJrl8iJbz99ltcOz6iLlJCz0EIqIocy/fp9UMc2yFJMwzDYjwe\n", + "sFotSdOYui557bVv0O+H9Hs9XMeiyFMEAtsw2B+NSNOMe3fv4gYei8WUXi/AMg0EUBQFe6MRt9++\n", + "w+HhIdiC+WJBr9enKDXTq25LUA1S6eKtbWMtLi8uuus0IC8KsiTh5No17t67hzQMXn3tNd7z3HP6\n", + "FN40uK7XpdjrmVVV15RV3Q0fv7VQPrkE357xITBoWhgO93EcF9XWXF5eUOSZZkq1DYbjUOYFhnjU\n", + "MO7GPW6JEh3bTj/2SMDzaBYntmjBk83rd1rvaKjx5u8NDLIp1k8avzyya3xEPXRdd/vxJnB0gxdt\n", + "XpTN2o04gu6IUzUgJY3QeHgXEanZLEWB5/f5/Gf/iA9+9EfYH48RtCSrNVW6oOcHqKbhdN+najwM\n", + "1wNpUTY1WVpQFgV1nSAaCxMY9x2eun6AYZqU5a3tYGaxWnB5OSWNtR+H6wYcT8b6dRB99vaHVEVG\n", + "nqe01ZrAllieT6M0FBOGfeqq48ELgWVKlqslnuczX0yJVjH7oxMsaSIdE0MoBoMeffoslyuiVcrx\n", + "4Q0cQ9E0NY1quH4jpKprnr9+jdu375AVCaZtEMUp/TCgZ4LVZAyGIa6jMybbQEuQi7xlMj4gTUo8\n", + "L2CaTOn1Ndzjui7SkCRJg1KNVsG2NVXH3V/NFL3hkCROSIucXt/n6OiANFlz8+ZN8qJmFeeUWYUr\n", + "WkxpMOgPGPQGXDs+RrUtZZHpMI1kTZIkKKXY2ztkcjBicjwmSROE2XJ+8QBpSO49uEtVVNRlw/HJ\n", + "CYPAw7R1CPZHP/JhkiymrCru373L4eGEhWUw7A2YTqcs1gmz+RylWkb7Q5zAx3ZMxgf72rohr7l3\n", + "do7OXTRRwiPoDeiNDQbjA6q64MH9+0ijpd93OD1+ijSOsfyxNhmrKqpGBzmYhsU6WlCWNXXVCdaA\n", + "tqg4PjziwfkFnheyWMZ8/Kd+js9//vNgOPi+ji97/pn3cHZ+RhpH1LU2f1J1TRJHOK5LGPQoipJe\n", + "r8c6iqibBtOSlGWDaRm8/4deRgitMPZcHyEkaRIhpYllmhwdHZLlCY7dYx2t9HstdUGu6xrLtIhX\n", + "MXGSoKSg1+uDKjr8WTxmjdy2igbBxfkFVVWRdq6GtqMpuJuT9oMHDzC6IHKE9sjv9/us1zHz+ZIv\n", + "fenLfPxjH0cgUErbQ4AeYH7bLDGlvgVgAf2zSGlSljWeF9I0FUfHJ9y5/RZRkuO6Gj4RpolqHg0c\n", + "nyy8Gxrho4bT+hbYV6lHyszvteFs1jvKA9/sQHVdP0Yf3MWQHMd5LMj4SYaJbdtbfuVmEPpkGMRG\n", + "cr/7YthKJ9S0QumOuws+MCyTsNfj1dfeZLlc0vMD6rpA1TWWAbOLh/jHR13oQJ9SNGT5ikZaIE0C\n", + "zyBwfYxuWBFHMVoNVhCvV/ieR5ZkiEYHAD//nkPiJEWhi2RZLPEchzheUBQthlTM5ndYXK2w7QG9\n", + "kXYK7AUBqzTFtn2SJMM0BHGS4XoBhtWwTmL6gyGqrcnSDC/oIYUWVkwXK27deoYwaDClSdtK8irR\n", + "1CvDoqlK3nr7TSaHB/hhoDm+MsAQcDjoEUU5si7Iqpyg71IUKY5rUZX6SJlFFXlaYlkGeZHiBzpP\n", + "tCwLXHeE9od5lMzt+z7tMsJyHWohMOMVaZqQJksG/R5REtO0BmF/QFEpSNaUVUnbVhRZThprHHWy\n", + "v4chdF6NEA2mYbJYnuP6HoZlISSsoxXhwCWKE1xfcnrjBgaSsqxYr9cYpkFe5NiuiR94mKbB6ek1\n", + "zs7u0+/1ODt7wM0bN8gKC8f1yYqUKItQqsEoBbZlU5U1B5MjLNMjzwrOLubMlxGO5+D6LoYlmBwe\n", + "c3xyxN6wTzSbcXn1AEsaFG1Di8QwtZeOkmxTl0yn0T7aSvOXi7zk3r17WLbHCy++hGF73H1wzsHR\n", + "NYqyRDUlIk2IFgsc2+by4iGDwZBwFGJbNo7jajOoqmY4HJJlGU3TUpY5lqVTkoLA5/DwANDFxLK1\n", + "F894NCRax6i25erqgslkwipaYtkm0uiwXNl2boQuhmHQD3tEecbDhw954fmnKbINtxvKqgTVeYw0\n", + "Wui2sWvesLTyPN/OlI6Pj8mybEfIZ7BYrLZ15Ctf+Qo3b95if29CEPg7czaFNHaK4maqKbrB1u7j\n", + "aCFbqxSmZVLXTVdfLG7depp7928znV3hOBaGkJg7qstdKf0uc26TxqMx72/lehuG+VjxfpJG/eR6\n", + "xwp4EAQAWz/rTYdcVdVjg8mmaR7DjjaBDZsjyUZyL6VE6ix0XeiVQpr2I2+BDp/aTKUbQ2ipbqto\n", + "pCQ39S5tVjVZmvB7f/Q5jm89hcorktYlTkosQ5FFJTDj+skhV/M5vWGfwPdASrKyJE0T2lawXq2p\n", + "yprBQAsOBHCwt0/ZVBiWyXQ2RbSKq4dzzUixDPb6fbyJDwis66csF2uiKCFwDujfPEAaLctVxN7A\n", + "Z7m+YGzZCFkhzZK6UTQSXM9m5B6wPx4wGAy094sjWSwv8ZSWOBfLOdk8xHY8ppczPfDxPNK0ZBll\n", + "eLZNr9enjUuGjg0SaplRFAVJ6XPt1lMIaZKmGVla0TY2q6RidrXAPrJxXYHnSZapR0WFVAbJOt1u\n", + "wE3TkOcFaapzLpum4drRgDZrUQomk30O9/ewLEs7PlowvTrHtnXREY7E8x0cK6BtKswWyiLl7GFC\n", + "o1oEBkG/j+8HHN28QZ4XNEpwNZ1zeTXH9wWhP8ANbaLlkjyLGYQh+8d7WwvgLE1Zr1csZivqsuT5\n", + "559nuVgQ+C5vvvk6IHE9j4PJhBvuGNu2WS6X2I7Dm2+/xeLqIcvVitVqRa8XcvMk7E6CkrqsSC4e\n", + "0DQtVn3C4dEJlm0TJdorpiq14jdJdLEWQjDo96jyEkMIAj/AkJLCzHnz4UPG168zvfcGoVHTNgWq\n", + "LemFDm2lKIocFUIjJO/78IdACFzXx7AcBAbCMAl8gzzLsCyHIo8xDZssK5jOFgSBh23qGMH98YS2\n", + "qVgv5mTxGtfTuZOjYch8doFpmrimQ5mXWK5JpSqqqiAIfPJSu4RatuS5555lNp9RNGBgIKRBWVZY\n", + "tkFd5zRtjTQrxnt9ZvMLrEzbyMbrJb1ej8DzuHH9OqppKItKB4V0TeD5+RWW4zPaPyItGs6nc4Ks\n", + "oBf2sG0Dx9w0gzvMtHbTMG6jjUFs9CE6pR6gy5VGmhbKMLl18zkCf8S9e/fAsmiFhmEtQ6LqGql0\n", + "2Epba6FgXVYIpD4NiEe2IZv6rQkdzbYhhe/dgb9jQ8zP/j//+xYTesSBfLT77O5a8EjR9KR3wK4N\n", + "bduyTcIQG8x8B07ZdOGGYeA0LdJ1WCQRgecjkWR1A47NH37mj3jlc3/MJ37mE5i+i2OGNFVNWaQk\n", + "6zlFFnM4GbM/Gevsvl6PVimqtiEIevpNUlCVDUJpXLNuW0zL1Ck5hqBpGxzLoamabuMqiWM98Kyr\n", + "Gi8Mmc+0Y9vBwRFVVegDnTSoaz3MLMqG5TrCcX3SXBt2hWGP1WqJ51j6IjEkCoVhaGXlYrHCsGyE\n", + "sHBsh6ZRSFMSJwlh2CdNss4/vCD0XCQ1nmPR1AV1VWF6DllWIITE80Ok0E6LtmlSpDH9wCOOV8Tx\n", + "inB0ojsr6GiaOs9RwQ61Sm/KQuU0TbsVQuhOBIJAH9k3fuqr1QrTtVGqwbUtaBoGgwDVtJqCZRg6\n", + "AKCsKKsSKRVu58SItLh77wHXr58iEFhWt+W3DUq1lN1Ns/FVNzsXvSLLsG0bKUT3HgnKqkYISZIk\n", + "2+93XbfrUm2m8zmr1ZrRaITn6cdty9JB00o3E3medy6S4PlBBwHuWEagKWiWaVIWxdaWtK4qirwg\n", + "TxI81+WZ597DxeUVluNovjSKpiqBhsBzUaplulhwcHKK43iUVY1h2kipnTlNw9S+Jnmufz70gPns\n", + "wW3miwt+9Ec+RJkX+K6PlrnblGUBou2+19j+zHleaNio1X70nud1ls66mWpUw2qx4Nq1E6q6okhj\n", + "8iKDtsa0JFmSAHDv3l3yumG5XDJfzCnzcltg3/ve9/Hiiy9SFIUetirBxcVD3r79Nq+88hdMDo/4\n", + "t37plzk5uUYcx5yenlLmOt1o2O/jd3MAfY1tjKUepxpvGGvfbrz5pK4kSRLOzs5YRRcEvqf9jeqa\n", + "tq6wLRPVbKCiroa1IKS2pd9g35tOfQMZ7z7+3g9+7DsOMd+xAv7Fz+uch7Ist0PI3Z9lNxShqqot\n", + "oX3TqT+Z5Aza2W93mLlLJdzlnQshCKTBosowBz1cTJxGkKP4f7/0Cn/7f/zb/Orf/Pfo+SH0PaJV\n", + "RpGkHB0fYtAShh5Xl5eUecKNm9fJsozDw4nOv8xzjfW12mrz2rVTLMvGMEyKqiIvCxarJVEcY5sW\n", + "nu2BgLAX4HleF9hQaxqTH/DqN1+jyEstTOiFnJ2dMR7vs7d/gGk7FEWFZTsslxFh2EOaGpe0TIOq\n", + "KsnylChJyLKM5XKJ7/c4Pjkhy8pHrB1TYnUCJkOaGj9uWoRoaaoCU0JVZlRVwfs/+EFc1yXPK1ZR\n", + "qgtu3WgXxSJjb9THNAx6PZ+8Nuj1esxmM2az2XaTzfNcC3gsnXLU7/dxHc3iCAKdzrJxc7x37x55\n", + "VuK6Lp7n0ev1cDyHLEuZXl2QJjGmIbl+csJyudRqv+MjxuNx19XBbDpnvoqoqobRaLL1aBcd3BKG\n", + "PmEvIOz1Wa/XRFFEHEdbXLQfBqi2JQwDZjNNaTs4OCAMQ8Iw1HTG5ZJvvvZN3U0pwdXVFcfHx1tr\n", + "46LQ12bebQaO44BSlHXN8ckJy/VKX9elFr5s4EEpJYPBQFNWu6am6Taa9WJBtF7hhyGO5zOZTLAd\n", + "jySJKIqCqspJEz3YXK0jRvsHjPf3qeqWulHUTctgMKapa+7fu4/nelRFQdNC08Lrb3yd0cDn6aeu\n", + "Mx4OUUoxn62o64YwDHTClG0ym0d6M5Ky4y7bBEG4pfltYhGllLi+h0R13tvQD33SNCaJ1yha6qpE\n", + "AGdnZ0Rp2jUTZbdRehweHjKZHGB2mZab+/+1N17ni3/2Ckle8Eu/9MsIafDMM8+wv7/P22+9xWg4\n", + "Ym9vqOGnumI4HJLnOYOBngeNRoNt7Xm8Vnz3Ar6Bbauq4ktf/VOklPR7AbQtvmOTJwmqrTuKZGfG\n", + "Jx4xYnah5J36uP0/DMP4riyUd9SNcNdu8duZVQGPDTGfPE7sYuX6iXVxl90L0I0tOsL+RqqvjyeV\n", + "bPXwQ0mqtkEaBp/5w8/y2c98lp/6qZ+m1xtyfHRElqRYlq1pWUmCNCRlUWAYkixLMA3YHw9BtRwd\n", + "7CNMQasUtmkTRwlNrXm1Qgid+I7C6YpRURRYpk0cReRFhmlpw3fX9WlbODt7iOcFWLbdyfIzhsMh\n", + "dd1y5+7drgPMuHHrFkVedvQvE4WezNd1zXw+5+jokPl8RlnVBH7AU7eeZr5YUtediMCWFHmJIQ1t\n", + "yF9W9MOQ2ewKzza5ujrn+PAApVqatsG2HIRhIqWJaTmYhjYqUm1FHMfYtkmWJlRKn0Qsy9zCZHle\n", + "cP36DeI41hxxz+PO3bvcvHZ9i2kWXfKQ3nh1gHRd18Sxpg/Wqt120LZhsFot6PVCPM+lrmvNyy9L\n", + "hJSYRg1ImlYxHO5RlDXCsBDoay3LE534U1eIDpJzHJ0gY5gGTV1TFTlZnhEEHqPBkLZtWS6n2p62\n", + "0alPAolhmNsuOY4THNvRG3Kl7ROazpPec9wOb25QAoJeoH1zJLiWS9ZBS5ZlkaV558WR7iiTFVVd\n", + "k6cRR5M96B6TpkWRl+RFQds22kK5KnEcm6vplNObN8kyXaBH433SrKCsGsqyhC4YWyioG0VZNXz+\n", + "85/h5fc+x+HBHqaAfm+gN0XLJopWlGWBaZvYTrA9VSilts2Wvh4tPTRVirrRkXBVWWI7NkKAbRo0\n", + "dcV8MUN1X0coZrMZaZpun8uyLPo9HRSuIxJ3TexqPvf5L3B5dcXk8Ihf/MW/ymi8pxs71WBZjq4B\n", + "VY3jOIyHQxYLDceYpok0wHU8hNxQlcUW1vhOCMaTXidN05DWCRfnD1nNp5imQVMVBK5L21RIdkNp\n", + "Ou9y9cglcYMs6AyBR8VdCMHLH/r4Dx6N0HGc7qaMt7j2ruk5PBpSbi6KJ/11N7/8dmBgSVTT0ABC\n", + "KU3UNwxs69GLIoTAsA1io0ZmFX3ToKLl7/7W3+etr73Of/Q3/x0cx2VeF5wvpth5g/B9PN8HAupW\n", + "Eac5Z/fuMZnsE/Z73L1/xs1rJ3z1K1/H7zl4gUfgBVimReAHDPp9jfU7LnlR6JQPAGxMw6Q/CDkJ\n", + "jyjLgqIoubi8II4TTk6usVpFmIaD57l4foBSigcPHjAc9Lm6utLQRpHiuy6WZbJex3heQFlVnJ/d\n", + "ZzAYELgOxy+8iJR6YHx1dY7vBShLIqTAC32SJCGJU4xWYphweXaHLEs5eOoGzz79wzRNqbnJUsdY\n", + "LRdrLq9mZFmO5/rYrottWxwdTUjimMDfJ861Ne56vWY+n5IkCXmW83uf/mdUVcVqpRkLH/zgB6kO\n", + "95GG4saNG9rmc7YkiiLSNGU+n3Lr1i0sSw+BAi/Ur1WSscwTjo8PkVKf4vr9HmmWUFU1VVVSJEui\n", + "JMU0HaaXF4ChaaN1y95kn36vj2WZVFVJ1bQsl0uuLqYo1dAf9PA9D98PuHnzBnmRcf7wIft7e1y/\n", + "fkxZlSyXK5pGcf/+faqqJvBD6u5a9R0bU0Aroa5yxqMRtGAYgnB/jGUbLFcrgtAnThKKsuDhYq09\n", + "5j0f0et1xaTl+rUj6kZ1G1xBUZaU+ZqyynAtbW3sOgamaeP7DlmWaTtUqe+Bk5Nj0kif0lZRxGo5\n", + "Rxombd1QFSVRkhCGPfK8wDRtTEvTYEfDEXle4LsOq9W6K8YwmRyQpgmraEmSxNt5lOtoa4jVatWd\n", + "ArRRlecF2JaGvnzf5+LinJu3bhJHEafXTlgs50jLJk+TLizFIwiCraW0ZTnkmY4kzDKdcKW7V4GU\n", + "BvP5gsPjYz760R+l7EJdbNvm1VdfZTQYcnLtGEsK3nrrNmVe8vTTN7m8nJLnOScnJ8xm804oJfF8\n", + "d6dZ/M4N7oZ0sXVRlSanN24Shj1uv/UmlmmQ5gWoFtMQXfh402lBHOCRfcimEd2lR2+a2u+23rEO\n", + "/DO/90+2roPbwroTCPqI2F5tf6GNDHWzdhkrUkqKDk82NPETKbQYQqCPImVHuDdMg9LVz1MVJZ/6\n", + "1G8SrSP+lU/+FfIk0xmOQhAGPWhb8u6GUUISJRlBf4jtOETrFVkSoZoC6pLjwwluYGFaElOa1FVN\n", + "nmU09ab7t3A8D9PS5k6WaWEZJnmpj/NN22wHsj/yYz/7/X1T3l3vrn8B19/7+7/JK198BWGZPPfc\n", + "c7z88vswLR1evlqtuXnzxpap5Hsue+M9iqLqIDSYTPa4uLhif39/C8v6gccGE7ftR+ZTHWVl25Vv\n", + "1Nsb645SbQIhKubzGfduv4Xr2drlTtV6GNrpNTaU5d3CvWHk7c71hPjuocbvWAeuj21sVYq79JtN\n", + "0d7gUBtZvVJqi5lvTGDKjed018VvpfRNixKqy2GssaXO68vyDIEBaclZNOdv/y9/h/fefJaf/4mf\n", + "JHRcvEGf2eUUr4KzsyvsvQHDQR/XdcgrnZazXCywXRfTkAwGQxxTEi0XvH37HqO9HkGo8d1hb8De\n", + "fohQunPUhjzaPrOsa0xp6BgnKXBdB6SgqrSt6rvr3fXu+t7r/PySr37t6/y7/8G/r5OxwpCyrGhb\n", + "sCyb27dvc3J0RF3XhGHIdHbF8dE19veHXF3NOT+/5Pj4kDTNybKM4+NDkjQlTZMOumtYrdaMx2OE\n", + "gKKoOphDdUNVpamPbYswtFxfGDb7exPapuHq8lzz5Q2Lusy1VbWQmDshNvCom9+V0j+pZ/l26x2l\n", + "EW4MW+ARprQpxrsT4d3B5OaXK7tBz6aYQxeN1g3xUJq20yqlU73LgiKJccOASrXM5jN+8zc/xYde\n", + "fB8ffOllQtvXDIfS5WhygCe1mjCtS1bLJXlRIA2LwXDIaDQm37ACmpo337rNZLxH2BuRFQV5uWY0\n", + "GnJxNSfwbPIsx5AS23W6DStg6HnUZYVpmMRx1NEpTQxp6hPEu+vd9e76nuvhxRW//p//FzRtw2Aw\n", + "YD5fYFk2q1XE008/zfRqSpFr0VASa3hmvV7z4EHE9evXCMOAPC90wPGwz9X0CtM0GI26oe18znA4\n", + "ZLVaAdDrhTqYwtq1hVUa6toJOkaaHB9dwzJN3n7rTexegDQsAsuirErEDutll2m325XvKsu/0/ru\n", + "LPH/H9eTplMbr4C6rnFdd2tctfneXRHPJlghDMNt162hk84JrOtgDcMAAf1Bn1opvF5IUZXceXCP\n", + "//Z//p+4NjnkR59/H55pY/Z9wsGAoDWwy5aHyxmLKsM1LYKgx+TgEMe2eHD/Hg/v32G9mOKakmEv\n", + "5MXnX8T1QzBsTMtHGi6XlwvOLy5plcTzA3qDgcb0bIuiKjXtaLUijRN8z8dzXUAfobIs+/6/Ie+u\n", + "d9e/gOvn/vInSdIChCYPHB4ecXR0TBAE3L9/X0vx8xzLNEnTlPFoRBStCEKPt2+/jZCCs4cPaNpq\n", + "y0oxDMl0ekVdl0hhEEWplri3sFysKcuGqmz1IFUp2gZUC7RAqzHspm4RSPb2DnjmmWdZRzFCSMpa\n", + "h5DrP2LbjG6G30/ahvzAduAbiCRN060lrG3bmKZ2sNuA+xsZ/KZQb3jCG1fCDZRimibStDVFLM8x\n", + "DAPXdjBNk9ligRv4mI6Naip+/zN/yE9/7OP8+Ic/SrFOqFDce/sutjBwkazjiPHN62BIVldziqrB\n", + "dhx6/T7XT46pioI0TXn48Iy6hbpVuF7I5PAYpRryPCWO77FarIjjr3PzxilZEuukes/BthwGwyGD\n", + "cEgWxxR5QVkV2LaFNOVW5PTuene9u777mq9WHB2dUBURdd1yfn5BFEW89NJLjMdD2lpx9iBnMh7T\n", + "NDUX5xcUZcFheEhVVZyfP6Qoio4GnG1VpQcHB1xdXWKZHrZpkKW6ix8MBpRlQRTF20Lb64XdPE9o\n", + "XYcwsC2TtgVawd54gmmavP7aq3i2RhcM+a0xkZsOfHf9wA4xP/cHv7v5GGA70NxIrJ8E8nf+7Xbn\n", + "2sArG5+UjUWsUArLtHBsnTdZ1jV5XTFbL/mH/+QfszfZ52c+9JfI6wrDtQlNF0/azFYLpO9S1RWW\n", + "0tP2yhKAQVPVqKrEsU2oKyzDxPMDqgamizU1BnlR4TgWgpaqKoijJQYNQugMzUHXhZuWRdgLKbOS\n", + "dJ0wmexR1SVSCqpGc7P/yi/+0re8bn/8h/8UIbR5UxiGNG1LUZbcu3cfpRTvec97dB6nbdI2Ja7n\n", + "k6YFrhtgWg6rSEuXTcfGtu2tMX5btQihsA1TR0Y1erLu+T5lVZJkGXfv3eXg8BBpW1imZi+4Hbun\n", + "aRocx6FVijQvdPQUCtU+fjw0TXu7WW844HVdc/bgnF5/jG07lGWB7wcdH76k3+9rD5BaS909z0Oo\n", + "FsOyqeqG86spnq8dDIXQ4hfb0cNhANvTsxbb0MNsz/VIk4SqqiirSouH2lazFix3S1s1TYssyymr\n", + "mrrz6MiyfDuMnkw0tbFRCikNirJCtTVSteTpGtmUGKpiMOjhhD5N2wWUCLPLVoSmbknzgjfefJu9\n", + "/Qm9Xp9GCHr9HlIIzYmWYBkSRKuNqtxN42LQVApT6vdDCKirAim0W59h2VxOp0RxxvMv6nDpPC+1\n", + "iIUWUwqaStP22lZp10jDJE5SXNvkt//Bp/j5T/4coLQqV0kQFnkFcZqCCZ5vU9U1nulRV42+Xzra\n", + "n+M4HYMEmk5kpQBpGniet72vy6La+psEYYg0NGc8TVMcQ3J8fML5+SWWY/OzP/1j33JP/NPf/zxZ\n", + "ltMPLAzDZDgckeU5bdNFliHohT7rxYLRaIhA4QU+0+mU09NTZrMrHekXRezv7xNFEYPBgKLIGI1G\n", + "zGdrRqM9TFOS5+VOfdL5m67rbotu6NlbZo+wjI7rvW3Nmc0uefutN/BdB1M8boO9Wwd3bWSF+AHN\n", + "xNzI4jed+GZtjhHQSUuVQEhJSxdEKh4VccuyUI1O7tATY4VRNkjXZlYk9FWDSiriwGAZGvyvf/dT\n", + "/PDhM3zsw3+J0jUQnTnWOk1JzRwzdHBdG8fpkSQJ0+mUKiqwrIDxaI/ewX5XQGdajFMWOI7D0fEI\n", + "13NYLOasFgmz2RrLsnnPUy8RpxlRFOP410iziLNphOvWOL0xg0mfycE+cRJjWzZlnnJ4sP8dY5X+\n", + "/Et/Qdu2BEFAVuS8/vrrvPjiexmPx0wmE9q2ZW9vj/V6Rb83oqoqPNfBcU2SZM2w53Ln3j2eeeY9\n", + "LJdLFIoWi2QdYRom67Lq5g/a43y+XPDpT3+amzee4vT0FNew8V3dQdRCkWURm+g7Q3TWnVVOlq21\n", + "glAGnUCls8e0LKq6QilJAzS1TjF56b0/hO+2tI1ivV6zjjIuLy5RQnL7zpvcfOoG4/GQvcNr5GVG\n", + "WWqBj21ZIEpGfavjCWs+sus4nF+csV6vmV2lRNGawNe0tMPJPpfnF+yP9xkHfQa9AWVZs1qtWMZx\n", + "R32rCEMNm1mWxWw21xho0zI5OCAIAtq2YDDsUeQJUbREVrkOaO5OiYdHJ5iWq0VZTctw0KOqCoqi\n", + "oGy0rPyN117nS1/6Ep/85L+MYUikyDkY9UGlmKaFnL5BRAAAIABJREFUETxKbEmTHKffI81SFssV\n", + "pmmR5yUCSVlqDLfp0o/KsuBP//RP+Bt/49/khm1jGA1S1bih0YUrFCRFge14WswlDRzf05uv6xAM\n", + "Ai6WV3iDPmmacbFYIaWBwGA4GnM6PqEoClariCqvqcUa13UZj8dbEsJ8PqcqH6VmDfoBYagNt9Jo\n", + "rXnyjqtteh2HJM+IoojFfEkYhgRBQBD6nF+dIwzB5eX5t70nVF1wcrhHmWc4jsPDB/e186FpMBwO\n", + "eeONN1Cq4eYzz1BVFd/4xjc4nEx48aWXSNOCppUoTEbjCXfv3WdyMEGaBrPzJes4YTgYM1/OWC4W\n", + "3Lhxk34/4M6d+/T7fQaDHovVGgyDMAh5eHHBYDDQzUxZd54rCtM0qKqGyeSYtpXcuXMHz+0cCdsW\n", + "29Quj1VZYtuO3vTaFim/d3n+rh24EOIU+HvAAZpD83eUUr8hhBgD/xtwE7gN/DWl1LL7N/8Z8G8D\n", + "DfCrSql/9m2eV33uD353Sw3c7Dq7CTpbQ5iOy6069RLykb+3aRh6t1NgSEmZ5wjbRDRgGQa1lGQG\n", + "TNdLfvsf/iNOj6/zw+/7AOV8TWnodI3hcIjdGfRo4UhN2qkDVdvi+T5ZWpBl+ZZcb9s2Yehrj42m\n", + "3qZoADhOQNtAXbcURc0qSpDSwHZsqroE2RDHa6q6pOc7DPshAsWgF9ILA/IsRUrJx372r37L+/GZ\n", + "3/sd7dPRiUDKsmSxWLC3t4+UWm5eVTWGlNRV2QkeGuI04c6dO2RZhuXYfOQjH8W0LGzLZrVa4Tlu\n", + "56uuTe7bVnHv3n08z2Nvb0JVVhRFSZqleJ5JGIbkeb5Vsz1pHgZaeKFaE7r3uKhKLaJqWx2eUFQ0\n", + "LejkFQuJLkaO42A7PgpBXpb4vs9sPqXp1GxIgRAOZaUVi5P9Paqi7LwwdDNgGiZt0+B5Lo7nURRa\n", + "IJQmMUHg47seaZqiGp1tuF5G7O3tg2vs+FMIyrIijrXN7+mp5qcniX4/TaNTVxoK17UxDIE09GtX\n", + "Vw1xmiKkxXodYcsWgaLXCxFC0e/3uLy64OLhOR/5yEcpO4+MtlWYBmhWmqAVj0IBmlpfe4apFbrr\n", + "daRpqba7FacZpsFqteThwwcURcHLL78XUFsRkJRSc5ERqKazKxBaRUhHs63qFtsS/M5v/wN+4V/9\n", + "16iqmuFwTJ4VSGmQZTmW7VFVNW2r6PV6FEW2jTzbnIo3bqGbbnLjJOp0YcOmadG2mtOulKJFIQ0D\n", + "39OY9eZEvjG1UgJ+/mc+9i33xP/9+38EQtDznG1DmCR6WNnv91FKMZ1OGY1GTKdTrl+/Tp4k9Hra\n", + "cuL09DpJkmoTLiHIcn3Kcl27I1Q4nYrW6uT8gvFY2+hK08AwLYqOgCBqhWHIrT2IYQg83936nTdN\n", + "jVItd+/eJV4/1DJ+oZWhnuPQ7sjoq7pGSvN7Sum/V4mvgP9EKfUXQogQ+KIQ4tPALwOfVkr9N0KI\n", + "/xT4deDXhRAvAX8deAm4BvyeEOI5pdS3NbV9MoRht3BvCkHZ1JjowQCGvgA3fEmhFG3daiNBBbbn\n", + "scoTBk6ASkuWqmQdmvzmb/0Wt9wxP/b+D+PtDak9n6pSxEnCm2++jW1bnJxcYzjsI6XAcTLyXHfX\n", + "y0XEaKQVYGmakaYpeZ53A48Btu3gecFWNhytr5CGieNoB7zDwwlRnDKbzWhVg+2aeJ6PVZtkZc7q\n", + "7gOuX7tGVlTcvvMqh5N9jO8wWn7ttde20IMQgouLC5bLJZ/85Cfp9Xqd4MHCsS2aRg9FvvKVVxkN\n", + "9/jID38E1YkS6qamLBqSJMYyTZIkwvN8XfxNk9t3bvPsM+/pLkILKWE6u+wMqFp838eyLF0Eu3lE\n", + "mqb0ej183yeKIt1VpTn/H3NvFmzZdd73/dae9z7zOXfsCY0GCIIASXAWKVKUSIqmqIROHMliUnKV\n", + "qxK5ErkU5ykPyYMrT67yS8rlylviSqpSZSu2wyjWQDGS6ISkJJIiQUwkpkajp9t95zPueVh5+Nbe\n", + "3SRAKsMDuasaQF9033vOPnut9X3/7z/MFwtzUFsMhyMsSzMe94ljuceD4YiqrrFVICrCLCfNCtKs\n", + "wPVcFos5Fy9dpKwKFouFebgLzo5PmE2nuLaD8mDn0iXWqwVFIQERq/WK88UcZSkx6wo8dvZ2DdRQ\n", + "YtkWylEEYchkNuXg4AC39qgb2SS3trZwcsgyTc/2qMoYz1X0ticoy6IsBKpaLeYkyUbaYtfBD0I8\n", + "z2enN2KxWtHvDVicHWIpuH79OoeH96hrga7+zm/+pnRnfkDTyH1EN9RVCWi09YCloJSkV0W9iOVy\n", + "YQQfHlmWkmYJ3//+9wF417veheu6XL58Gd+XTXQ49LAsRVNXD+hptkA4cbwhCCNcz8VybCLbZjjo\n", + "STc0X+B4PovFAsf2GAwiRqMJeVZyNp8TxwlJkjAe9+n3JbeyMDmWJycnRFHEcDg0vvg1VVWSJGL5\n", + "W5QVoZH/13XNcrmkLAqO1zH9fp/hcEiSZKYKtTpCw49eaV5w6fIl8rUIh/b391mtVgwGA+7fvw/A\n", + "e97zbu7ePcDzPI6Pj3nysce4desWtm2zXq65dGmfF1/8AVEUsbe/S78/4PsvfZ/dvV1sz2d9NicK\n", + "Q3Z2tkCLQnp7d5eyqjg7P+fS5X3mixWqaugPBixWK6IwwPECTs/O2Nqa0WhNo0WdeuHSJV564QDf\n", + "dQDNcNAnS+XQqR7KSdBavQUT/9Hr/xUGrpT6PeC/M79+UWt9pJTaA/5PrfWTpvputNb/2Pz5Pwb+\n", + "G631N3/k++iv/emXOhZKK9Bp2094KOC4NpXxQ1iqZVlQN7iOI05iWr6eoVF1A7UmGA04zTb8wR9/\n", + "mWKd8oVPfZYyzhhvbXO8WTD0RSnpuu5DasFzXNdjNBpSFAW27eD7Hmke43muwfXE10QpxXK5Mhif\n", + "VOWe5xm/YUVRSFBA0ygsYyRVliVllVMUGVVT4zo26+WKOBaRwWQ0oBcFuI7Nv/vv/+Zb7v/f+49/\n", + "nb29PVarFdeuXWVnZ4dbt25hWRYf+9hHWa1WsoGu1oSez3K5ZHt7u3MlbCuaKIpEEapMxWiYL2EY\n", + "EgQhWVYY+CXqqpkkSdhsYu4e3Obpp58GFK7jMhgMumF0m7bT7w+kakQzHA2wbZvYJIs3NCwXK7TW\n", + "jMdTkiQBLKpKEwahVKGeT1U12I6Dsizm8zlFmRP1IlHwlg29XiQ/z7ZJ4gTdNDiO1y30fr8PQF7X\n", + "NE3NYjGnrgq0rrCUhW1buI4jSUl+KMpDW9bCaiWfq3iKw3A4MEVD/UBYZrkGN3fAtMJ1XbNYLlks\n", + "18wXS7S2Wa7W7EwHDPoRk+mYqipZLOY0Tc3e7g5R1KPIBTeu6wcVuNaygXciN8vt5hZFVbJYLLh3\n", + "TzaoCxcuMJ3KDKEs806S3ev1WK/XBEEgqkylqarazJocmkZjWw4NmtVGEoyaRihxf/XNv+RDH/ow\n", + "YRhiuz55Xhh82yLPSrGDiHridqgr2ZSLQgoXQw8uy4osy7tZS0sPljxYh6IoSbO8M6CzLAs/CKTr\n", + "yTJCL6TSEq9WNzW/+rlfesua+P0/+Tp1U3N1b7fbO1oSRL/fl7CPSJ6VixcvYts26WbNdDpjOBrw\n", + "2quvm8Fkwfb2Nnfv3mUwGIrPi+ty895dHn/8Guenc9Ca4XBoAjVSbEdM8xarJVEvIrBt4jjFDwLT\n", + "dZRmhiN2Bq4ruZ+245Bu5hwd3idPE8oiQ+nGPJtGidkVtIr3fPBT//8xcKXUVeD9wLeAXa31kflf\n", + "R8Cu+e8LwMOb9V2kEn/LVRlfCHm4HigqWxpN25ZTPfBB6aa2Shz9LGXRqAbLnFg+itBzKDyLY53z\n", + "v//hH+ItMj798Y9TKNje28OppNJZx0sc5TIejyjLitFoyHQ6Fdz07JzpdCrmO0GIFzjE8YbDw0Oz\n", + "0fWIoogo6jPoDymKnMViyfHRKbansGyLXtRnd2+b+XzFcrkmLzJcz6NpGsKwh2XBcrXGdgPCSGFZ\n", + "mtPzBXfurpk+ZKzz8PWLv/hJTk9PmExGNE3D/fv3uXTpElVV8MorL7O9vY3rDtnb3SFLMmazGaPR\n", + "SEzvoTMUakVUYoGuKcuCXi9is9nw1a9+lV/5lV/BdW2qqmQyHaKUTRgFoODpp5/m+PiYixcvkmUp\n", + "Gs1oOMJ1Xfb29tBaglnDMCQtC+7dO8T1bJNN6uE6DluzWbe5OLYZVleKPC9kAMWawWCIqxyUBaPR\n", + "gDSV4dZysWA8GnN4/x4XL16kqmpCP+gw2aqqSLOM2IRIBP0RKNi/cImiyCnylKoq0Lphs9mQZjmz\n", + "mUO2jlnNT7h69SrjyQRbWXiOI4cIUiB4A4GclGWRZCWnJ8e4rhzyriXDOdt2ODo8ZntHpO/jyYws\n", + "WbB/8RJ5moj/dlFw8eIFqkK8Y6IowvcD0ljyLNuw3bJ6KNhb52RZxs7ODi+++CKXLl3ine98wnSB\n", + "HnEc43kOdS10OLGlcHBdH9t28FyHqsoRiUQbINCgLGiqmuFAbCLadv/evfvGXbDA17LpHh4eY9s2\n", + "g/7owSDb92lMhXxycsLx8SFbWzumM/OZzUwm7GrNcrFGWZrJZNKlrruO1X0WLeRnW4rJeESVF0S+\n", + "dHQ/7tJ1wd7OLuv1muFwaJwP3W4Td12XXq+HUorDw0O2trYo65JNsibJEp545+PEccbR0RHzxYLt\n", + "nV0ODg4YjUZUVcMjjzzC7dt32d/fx9INt27d4amnnpSiJsvxfJ/Z1pTj0zMaLyDq91mv1531xf2j\n", + "Q2azLTZJQhgEeL7HJk7w7JDZbJc3b1zH9wLyRN5/VWbUddlt4Jb1k7ng/482cAOf/K/Af6G1Xj/M\n", + "CtFaa/V2ll0P3eO3+2IURV2STovzta2D+ZmymT+Ul9dRbvQDX5OHja5GeKx1xcrSfPs7z3L/4B6/\n", + "/sm/wTjsYfshZ+slvTCi5/oEOxGWZYlhTlVS1WJnOugP6fUuYNsuWZaxXq/AknZvMBgYW9OCs7Mz\n", + "5ufnHNw9wLYdZrMtLl26TFGnhlNa8PIrL+M4HqPRGNfxqZuaIBiwWa/IixzP89na3qMqc9arJZXn\n", + "4vkOh0dHb3fLODi4y9bWFkdHR3znO99hPB5z6dIF4zURcufOHfb29njt1dfoh33+vb/5N5nPF2jd\n", + "POQpIYrVLEtwXI8kyYiTNa+9/gpxnPLudz9NnmfmvtodzVMpGA57bDYbrl69wsnJGQBvvvkmo+GY\n", + "0Uj8x8GiNd+fr9Z4nlgOxMkGpWAxn7NerXj22e/x27/996XlVhZhNCIIAgbDIZskpmkqDo/uS0Xo\n", + "OAz6fUajERcvXmS5mNOLtjk6PCQvCtbrmO3tbcLQZzAYUVaVwThXHB2eotEopbvqVKmG+fmZGa5a\n", + "vPDSqziOyyhyeOmlH1BmOR/60IeYTid4nkZZkKYplmWxWW+YjCdsTac4uzs0TU2RZoZWesjJySnv\n", + "fe8zFGVDGEbYrktVbIGCqNfj5PiEOE44Pz/Hc1xGoxGbzYbVckk/Egc/lCxc33dFsWcpPFcO0OvX\n", + "r3P58mVzeJXk5kBqmob1es1gMOD87JzpbEpViqZifj6nP4iwVEMbJtCumyQVx7/cbPpJkqIeovA6\n", + "jpiKrRdLLl26QFU1oC0TwFBg2xZFlaF1w+7ODlcfeYRNnFCWYk+7mAvsNRyNePTaIzR1yXq9Jksz\n", + "8ey37A6Sk1Qt2xRRGRdmE0JXoQOHHxcsZqsazwbluUYpKcWKZ34/Gg1Zr1fG6dMlSWJ6/RA/DLn5\n", + "5pucLxaMhiMee8djvPHGm+Rlyc7+HkVdEW9S+lbPJP2ssIEnn3wnR0cnFEXBZDbjfH4uthujIapq\n", + "mM/n9HoiDspzOag3mwRQbOIEJy+kurcUnuvj+xF5FuMFATQVlm1jGTZdZeYGP+n6azdwpZSLbN7/\n", + "s9b698yXj5RSe1rrQ6XUPnDc7jHA5Yf++iXztbdc/8P/+M87rPvDH3wfH/nw+7u8RN/3uxAH3/c7\n", + "miBdIIPGN4O3dujZKE1T1FQ9hz//1l/y0jf/io+89/0UnkVZV/hxzmTcpwxc1DqjKDIa3YCCwTAi\n", + "zwqqqmATrzpIR2CTPkWZo3XNcrHGdT18L2B3e4c0zZhNFXGcUBY5CWB78nrEGMehrjV1VZgAVB+a\n", + "mrIocCwbXWvu3r5DELhEkU+v57FeNfj+2+N9vV6P2tCjLly4wHg85oknnuwqjtPTU55//nlGwzGe\n", + "H3Bw/5Ct2YzA98mL7KHqZEVVldy/f58kTZhtbXH58uWuI5LK2O04+O2B3WLleZ4zmYxQSqxO0zQD\n", + "DYvFgjDsce/ePUmKCQYEYYDr2uzubrNcLrl86Sr9Xo+PfvQXABgNBwCcz5diOas1US9CKdV1R0Uh\n", + "9gPr9Zo0TQl8r6N71U3DZDJhvY7J89zMLgIqE3Y9mcxQyiLLEnLb4d69u/i+h6U8BoMBuzu7PPbY\n", + "O4nCkDLdAHB2eoJj29y8eYcoinj66aewcHBdm17YI89z5vMzHNclNB3kYCDvIwwj4/PtoGlYr1b4\n", + "niWbS1WxvbvDuBihlCbwPOqmYtDv45qwB01rBwF1WdMYA6s0TY3Aq2F3dxvLku7Jc93OslY3UtD0\n", + "ez2UhqauWC2XzKYT4lhcIptGoruaRiCqNoNxMBATLt94eLeww9aW2CT3+hFZKvCA43q4nnFAVIrI\n", + "FmOmqqpYrwVGC3wXFfgMBmLAVpUNeZrQ6BrHtnAiec2N1pSlFE+27ZDEawLfoxeFuDY0RYaui25+\n", + "86OXS02RrAh7YwmOyNIHnu1FjuPYOI5FksQoJdGBtu9wvjxnsr0lzpKbBavXNuzu7nHr5i3cwCeI\n", + "Qvx+wHq9EujUhEyfnp6yvT0lTTPWmzWjwZDlekW8XrO3vdslgwlMmXFyckavJ4XPdDoRMkCS4Dse\n", + "Smsm0y1efeW+CeDIgZpnn32e7z73ktkf3/Ztd9dP3MCVrNx/BvxAa/1PHvpf/wb4u8A/Nv/+vYe+\n", + "/s+VUv8tAp28A/j2233vv/t3/vYPmbi0G3aSyGCkTaWwjGTV0q2yUv78ZrPB9/3OoMqyLI7qhMXx\n", + "hu/926/xiY/8PPuXLuL2I+L5msX9E+IbGf72mMl0ytZkgNYNaZpxcnxM1IuYzWYAnedKmsXUhhM9\n", + "Ho+ZTmfUdcPZ2RlxnHTGM/v7F0wayCFlWZPmKZayiXo9+j0fz5MW/+DgHr7vE/gug34fP+jheJ6h\n", + "n5Wcn52wXC0Z/RgIRdzlhHq1tbVFkiQ8++yzRFFPKqDdffK8ZG/vArqGl195jatXr+LYiiiKmE6n\n", + "JMkGx3HxPJ8rV64ym00oq4ogDLvWWoIh+ty6dYu8SPG9UJ4HS5GmcceEWa1WXL9+g+vXr2NbDmdn\n", + "Z1y9eo0PfvCDfOELX0A5EcfHR9iOYOAvvPDn/PzHPkpRVNR1ycnJCePxhJ2dHWY72ywW4kBYlgXn\n", + "5+coZbG9vS32rrZLv9/n8P4xaS5MneroiMceewytNVtbW51DnWDYmpOTE7IilhScuqDIM6Ig5D3v\n", + "fhoN1FXFfD5nE8fcTVNGkXRlW9t7+J7Ho1cfx7I08/k5/Sji/PwcP3C5cuUKRV2x3mxYL1fkWYbj\n", + "OJyfn7O9vcNkMsByxdPC9z2yNCHLUvI8Zbmsqcucu3fv8Mlf+DhlWpAYPvzQQFEtrVY9lOXqejYn\n", + "JyekaWrmMzb93qDDsWXgLEKQvb098tZStidmcb0ooq5KNIq6EeYUBivXWrNcLJlOZniuT2KgHMuy\n", + "SNPEKJ5d4jgGrZmfn+L5D9z0rPpBF+w4xjq2Kn5kM0FYOlWN7fzwPMu2Q8pKIJWmUR2M43gWdVWj\n", + "LHB+DJQQuC51kXMU3yNOxJ99vakIgpA8z1iuzrl69SonJyc0jSaON1zqXTIznSUoi4986MM898Lz\n", + "9PohO3tbNHXNa6+/ynQ6Iwo8krX4q1979FHyPOfGGzfY27/AztYWx6cnDPo9PN/nxo3r7OzsEvUi\n", + "bt++zWQ8pt8LWa/XbO9sc3p6xnA4xFLgBw55VjKeTMiLgpnbR3k2dZnxkQ+/nw998Bnh5iubf/Y/\n", + "/Yu3fe/w19MIPwF8DXiBB1DIf4Vsyv8SuMJbaYT/NUIjrBDI5Stv8331N74qe37bIrT0mYej1Vox\n", + "h21LyrVSSihihnJouQ5lXXWGV/Eo4l/90/+eC8MJT77/GRrXwrNsbMdhGPWw4oLNes3N5BxVVExG\n", + "YzHK54HrYetC1oqKlFKUldCjkiTB82SQKdRHoUEpFMpSEqTgiaClZUOI3aRwt2UaLxmVtmVTVBLc\n", + "oK2GMAy4efsGSmkUDf/Zf/pfvuXz+Kf/5B+itWa9XktwilZkacrJyRlPPf00i/mcOElEnGISuW3L\n", + "YjAY0u9FNE3NY9cepWlqVqslj1y5wunZWacAq6qyU7VmWcZoPOzYNkmS0It6+H5IHAstcTKZ0TSa\n", + "2WyL+/cO8X2f01MZGo3HYxpts7UtPuJlWRi/iRGNVuhG2uc4TlmuV7iew2KxwHVdrl17lC55Js/R\n", + "GtJYMH3fD4lzqbJa++HWegHj+e4HPkVeYFsWcYYRhmyIehFh6BuLVafDSLUZgpd50dHd8jzFUlLF\n", + "eq7NdDoh3qzFz7oscQIfBTi2jW05pGnKG9ev8/g73oFS4jGvbGN/rIUP7DqOHICew3q1wLYstiYT\n", + "aZfLCm1w77oxLKyH4EHHleqv1xPvcMuy0A1Yyuo24daOwnEsqroiDEMzJNYSgKAVlsmMzMuigynr\n", + "upZEoyxDAZ7v8Wf/9s/49Kc/zWK5JIqEZSUME9sEDHsdi8yy7M5WtWlqiThrA5mNJUbdCLbtOR5l\n", + "WeB6PkEYmBSm2kBbFpZtGQ60RZ6mHQ++aRo+8Qufesua+ItvfJ08z/DCiDAMKYqCzUagJBmeekRR\n", + "yHK5Mh7pPVw/6NKv2r1mMpl0PiS6aQjCkNVqxe7ONqvlGtuyxC/f84iiiMVSuPG6TfZRCt8RGCjL\n", + "Mra3t431bUK/L92Z1kLddMxspalL0BWH92+znB/j+zZlniASToVCntH3ffSz/9+GmFrrb/Dj/VJ+\n", + "+cf8nX8E/KOf9H2Bjj/c/mqpRP1+n+l0ahI7FL7rdfhtUzfYysJ25ZRPkwTlOkLRsRS/+7u/S5ln\n", + "fOqXPkVGLYuiLDk8OeHQOWGgHfb6E565/BRlUXN8dMTrr71BWZbs7Oywu7uL68pJn+c5aSaJ2Mpw\n", + "O7e3t8nznNVKhAu9XsRo1O+goMViwfxEKEyB7xMFoQQbbzbMz84oikJcCsdjer1+hzO/+vrL3Fwt\n", + "mG1N8Dyb09Pjt71nh0eH9Ho9LNsijVPB4k/P6PeHvPbadYqioN8bUtcNaZrT6zkEYcC9w/uMhkP2\n", + "dnf587/8Jm/cuM7v/PbfxzEWnBJN5XbRYO1ibIUhcbxha2sLgB98/wfcuXPAZz7zGVxXPN3v3z+i\n", + "3++zt7fH448/QZKYAAssFotz8iKjNkzS7DjD86QrKaqazSam1+uz2ax4/PHHuXnzJi+++CLacIjf\n", + "+973Mp1MqWu4fv0N3njjBpeuXSWKInb29gg86QbyLGF7e1uyLBcSbrtYbrD9CN+3ePTRd8hwyHRv\n", + "dV2xmC8oy9oc2B6D4Zgg9GXRrlZYaJJ0w8nRIXcP1uzv7zMdj1BKsU4z1uu1VPlZxrA/YDqdEkUh\n", + "682aRktlfHp6hucGpFlGLwwAje/1ZEhW5hRlQS+KaGqJywujAXWtaXRFwwPztryQJJ88z6Vbosbz\n", + "Q+pSm/eg8X2fMAxZb8z7X4hiV3Jma/K0pKwqqqamQTJlB4M+tvGJn02nMpw06sGmqbAtxdnZKbPZ\n", + "jPF4xGq1ZjKWDrEB6qYi8ANT0Mgz0+ga13WEbVVVNLowWH1FlVcPnDmbhloLa8TzPEajEbPZTOAo\n", + "28YJI84Xi64zg7du4HlZk5cN2ClKtWpuRV2XrFYieCoK0XWcnZ2xWhaAY2CjAa7tkKxXVLmwZwLf\n", + "l+fe1kSBw+L8nDzPGfT7pqBrSOKYi/v7JFnKJo6ZbU2kEFIu08nYeOuv2d3dJUsTgYxM3kEQCDxc\n", + "NWIfXabCST8+uiNiKQW252IrG9tygZ9RKX1bgZvf/xDL5OF4NVvJKSkRXwK51E1DXkr+YZJnKNfh\n", + "u997lm9/8zt8+vOf4/LePmGhCZWNCjwqG0oLagvqrCBY5eROgGPwvqLIybKURgsvVuvGUAalWmlo\n", + "xL/bFSpX69uyXq9pKe6d8Eh5aG0Z6t2mo0+JGqsEszm2uYPrzRqtGvzAw3Zt3rjxGv1Bn3/wO//w\n", + "Lfft61/7Ei+//IoR8CzJ0pymEWn3crmiF/UF39SaIAqkoisKojCg0Q1FLrmWyhJq3PZsC9BE4QM5\n", + "cFuF+OZBruuayvgbbzYbxuMxH/7wz1GVFWmaMxyOpF3NCsMkCLqqZjwaSnWmhVudFQV1oymKkiQr\n", + "ZIAaJ6RZxmopm47I60sa04KXZU3gB4Rhn2vXrnHt2uPcvn+fNE0Yjoaslit8T4Q0tYl3a5qKN998\n", + "k/FoxIUrVwTzthRZJlTJsixxXBfHcXFdr8v43MQS89VocSfyfU+k14GP0mKPsFot6UURXtjHsR1h\n", + "YdQNumlYrVb0B32qusb1XRzXoawqHFvsGSwLyjw3Vgspru1Q5hlhEIocHkVeNDSNksxE+0GwSYsg\n", + "xHEsdMS6QuGg6wcpLnmekucZQeiT5/JeNpsN+/t7ZEmBhYtp3MCS9ZamqSTUex5FmmIpidj7gy//\n", + "G37jN36DPBean1gcWx3c2aY5BVGPusaQD4wNqiVDY4FHhe1SGqgzj3OUUeY6tovreSRZ2tE05X0I\n", + "rKSDAZZlEYURVVnytz7/q29ZE7//R1/Bcz2qUii0QSBpR21gTPtMO47TeQwtTladfL7f75khv4R6\n", + "CLGikBQsxyEpS6mFbYc8z9maTGUfMh1DlhdE/R4aTZlL9F9koLj1es3Ozi5Zlpvq26bXE7582Wiq\n", + "KieJl9iq4uT4gH7k4RihotIKtMwZnvm5z/xzeg5nAAAgAElEQVTsSelbxVb90KS1xZRbXnIURaTk\n", + "DMM+DtBkFY7nUaHRrgu+DN1ODo+48+ZdvvCZzzEdbeGUDa4fUDYNTVURL2M838MLfAZBn8byqauY\n", + "qk7ZJGvCIGQyEwVY1JuwWW/ARG6FYSA8bsdluVpwenyC57qEUcRoMMR17a4q11oThi6O7aAcm15/\n", + "ynodM1+cdWq0yXiM64uScL1ZEoQOlu2SZSl37xzy6U9+qhuI/eg1Gs746M99grqueP75F7h58yZV\n", + "VfH+97+XW7duk2WZCFI8B7uSzdL1XbBrjo+O5UF0PCxtc//olCSreOSRKzz2rieRxVeB1vSiHmmS\n", + "cHhwyLPPPsvHf/7necdjT3Bw94DRsE/P9/GGQ+bzOWm85OjwLmHUJ4p6lE3Beik83k226VzWoihE\n", + "o2QDLWoWizXb27vkRUmAwrIDXMdhPwjxfI/ZdAvbkTSlo6Njrl+/znyd8Z3nX2Jrd5/+uIfjemzt\n", + "jEnTlLOzM7I84fT0hOVyQZalWL0h6RvXeeaZZ+j1IlxXuPhJklFVclAHQUi/3ycKA7a3dkiThNpw\n", + "4xeLOUmcMGcNCpHzb1/EcR3ycoMduFRU1MgB5UUhWV6QxCmbTcxoOBZGT+RTVhX9qI/WDVHQw3VD\n", + "As/BsQqUktAQrRvC/gjH8ygyGbI3jRz68UZyI13XQVc+riXh0HW74FH0ez6OJYVPL+jRAElac/36\n", + "XS5fuYIb+BRlQZkXWNrCcT2GfoBl2dRVTX8cYikLTQ3KZrFaEscbdrZ38PwA1di4rk/oaWpdkmcp\n", + "aZJS1gILVpXwyB1Hmc7aIgxCHNeRwy4ICCyZp8g8S37uMPLFJsPRlFWNa4V4dkijfIEUK3B+TCUq\n", + "KfPSjSjLpSgbgp7MEnwDn9qWTZKnWK5AbRPHo65qpvvbrDdrST+yFL0g5O7dA/auPGJSkUJcu4dl\n", + "KzP/2TCfnzMaDYmTGGVZ2JkUMVmWs7OzRZZl6FrjujZbW1PqWsKlt7a2yJIUmpq6LCjqlKos6Pc8\n", + "bt08oBdEuJZQKptaqNGW9dcX1z/VCrwd2LwdlbBlTFROQ50V9L0Qq9aARaE0KgzIa8lJ/IuvfQPf\n", + "cfjA0+/tKsd2EOkYsQbQGejkeQ5WZdgOluFJi6glCOTPOrbbyYM3m9hMg5sOc+28e00YQ0t/LAxe\n", + "LgKGmsCQ+lscL8sy6romTVNGoz7L1dywN0KeeeaZDnd/3wff2i6+8NzXOiFOSwlcLBbcuHGD7e1t\n", + "Tk5OuH37NnVTgdWIeZCyODo8pijEQEkb06eqqvFcl9nWjPnihDzLeOzao53owrEcelGPvd1dirxk\n", + "OBiaMGLxfFktFyhgMpkw3ZqJ4VTd4EcRti0HXPu+0bCJxUgrzwuzgYtJkG279AdDai2dWFEUrFZr\n", + "g6PW5HnOeDxl0O/TaE2WZri9Prdv3SZJEk5Pz80MAi5c2GcyGREEPpZtUZY5yeK0CwxpqzDf92mD\n", + "ruU1Cce6ruTetJCK40hGqTbCmixLqKrSVFAZaZrg2gKtrVZrVoslO9s7bE1n2LZDkeVYtkVWF1R1\n", + "TZ4VOI5PnmYdhdaxhCFjWTK8azDGUmiKPAcappMxYegxHgwIQp8iTwkCH40LloNlKapC7AREEOOQ\n", + "FSVxklKU8qzduXfAYDhge3sH33XNM1AZzFZk8jZyj5QFYWjTaMHR43iDbizytMK2RALvejZBIGEk\n", + "nrmf7TOudQP6QT6mQDiV+e+Kpm7MIN3DshyUaS9c1zOiOF9mII2wd2S4XvOZz372LWvij/7oywDY\n", + "riUpXLaNZTvQ2rXywK5DKYeqrvGcpns2JcvUxmozUtMUhUC8k+kU1/LNYHgX27WM6dyDAWxRiklY\n", + "WdVEvojK2j2ovRxjZet7gUDDgBvanJ+dMpuNuXdwl1EvQmmBDS31IOu30T+jiTw/GqXWvuEfdSVM\n", + "45TI8+VBSzKCKMIKfKqmpqwrXn/1Ne7cusXnP/s5oRpZCteWyLImz4hTadGHw6EkoXsuXu6Rl6kJ\n", + "RhW5uOcJXXExX7DZxAbjFsHOYDAQnNW0k+3wy7Zt4jhmMV+YpCDwggjP9xkOh12ittCr1kRRwHx+\n", + "Rq/XZzwe8s1v/SVnZyd88YtfFErcQ14ib3dJ56vklDc+woHv89i1a7I5RREX9vfZxBvyIuPw8FAy\n", + "//YvdEZRWSaKuf5QZO/LxZyqLGjqmhs33qQsS55+6mkm0xmb9YbXrt+QAGAlLeF73v0UYPHYO96J\n", + "Y1s0Tc3JiWQL7u7t41g2y+VKsE8xO5EDD0Vi0uhPj++yv3cRUJRlzf2DuziBqCjl0JiR5ZmoBJuG\n", + "N998k+OjisFwyGQ8psoyzk6O2N7eYXDlElkuPjWB6wjVVGtUU0tgru93ifZJIpYGrW9M23JHUWQ2\n", + "eUl4WsxXFGXcDRN9L6TXD7FtV+irdcnpSYmtety+dZtXXnkT17YYj0ccH3+fT37i41A3lE2GZzuE\n", + "rkWlNFt728RxyqAXkmUlWDZ5VoDjU1UlVVFwcPdNgsAzMwmPrdkO8XpJozXLxYoLF/Zp6oq6EWZK\n", + "GHnkeYrtSJh1rWV+U9caZdkcHt1DWQ5bs21cX0KP43ViKKM+lmUzmUxFRJIXRsXpkOWxWQc+4/EY\n", + "hY2tfHQjHjFVXVDXsjFr6J5dz8CSSj1w2HPM4PThsAKFBF5XVU0DXYYpQJJsqKoa3w8leFwJZfLt\n", + "LtsEJpe5wB5ZmgrRwPMpiwLXDykMvXQ0HkFZ09TiNqmbxvh8a3xPNt3hYCKK5nBAXWqyYo1SmuVq\n", + "QZLGXLp4gaqRsPCmafB9US+XRUyaPBDKdU6fpmjrRUJxtG15P4eH90iTBM+ziYJAIFpL4Xkujm2Z\n", + "2cdfH9jwU02lL8uyO7nhQcJzu3nbto2yFdpgWU0NludSATg2t+7c5o//8Ms88653EzkeFy9fksqm\n", + "kqQb13UJwhDHtknSlKOjI4qiIAwCev1WTRlSlZWx+NSdzLfFsGSKD57nMRwOO550W1UMBgNTMQjt\n", + "arneUJYVi+WCqqq4dOmSeV819+7d67qBr371z7hy+RJf/I2/LbxrM+RoceAP/fzn3nLfXnrua9R1\n", + "YxR0wtopikLcCZMUy36QkN2+jyRJuHnzpqlsVxSFiJAaY6HqODYNFUrZzOdzrly5wuH9E87P550/\n", + "exhGRnRh4SjF+9//fu4d3OXs9ITxSMRN29vbjCdTWXSWJUyduqZuKhotD7GlLJbLFf3+EDT4nnDl\n", + "o16PtBQpflUJPc/3AizbZjgcMBwMaXRDmuS88cYbjCZ7ndWCUjaWshiORigFSRITxysRIDUVtrE5\n", + "2DEugsvlkvF4TFVVXeXdmel7Ln7go5RNFA2QrgziTcJ8Picviw6eofHY29ul34+wLEW8WaF1hR84\n", + "OBYEgct0OqEoM+q8oMgLslxa/aqBRlsox+PsfEGcJGzimO2dXcZDD9+1CPygY16NjN90VZXE6w11\n", + "U+N7PptEBExFkRsYRYOW4dhqHXP79h36wxGD4YjRaGK6jZTKSObrqkIbpkgURWRxu7F7VHXO/fsH\n", + "PP6OR42q0UU1NrYtQdy2oySFRmuUbXV88jzPheqYpx1brO10WqVlu9YdW5gsfuBT1Q/sU5taUrTQ\n", + "bTp7Rd3UfPqzn3/LmviTr/yJdKOehef5Qo5wHDzfp24kF7fRigaNbhoswwqqyop+r9etodbiWAHx\n", + "RqiynudR1ZkpqoQSOhiIU6nn+7ieRxwnZKmswbJIGI1GnZ7F81zOTk86Uy/bFpaN53pgaeLNBmiw\n", + "lcZWCs+xyLMUx7E7iMmyrJ+YSv9T28D/6s+/3H2YD1oc1X3oYPxQ6pq8KAh7PfKyoLEVbhBx49ZN\n", + "nvvus+xMtxhHfXa3dtiYh6a9YS01MAxDwlDsRNshR5mVhukCUtvKfRDPZ/E8aD2Ny9IICbTqhDSt\n", + "D3CeF9RmwOq6rjADGhmGSjp6SdNI+zgY9Dk+Oea5577Hr/3ar7GztUUUhvJ6ylI24lSc895uA//B\n", + "c1/vKvS2uhHObdX5M8gDLyKNFjLyfaEv5kVBnuXE8YaXXnoRraE/6KNVw9nZOf3BkPVqw2K5pihL\n", + "/CBEa1NBWYrxeEKy2XB0dMTFvV2m4zGDfoTnuWzWGxLzPobDkfBkt2cdHTRNE1OJSeWlkEq91xsI\n", + "W8jRBkZoiEJJaS9yGYzOZrPuUDqfz2lUgOt4nM/n+J6P78mQcDKZIOyJGj/wqMqCLE6oDNS2NZsx\n", + "GA4oChGs1E0tdEbbRjcNWV3Q+n5bygZsPC9gtdyw2qwJQ8HLfd9HNZ5RwAYUZUaRJbiezSZekCYb\n", + "fM82JmjCMCnyAj/ssV7FaGWxSXJWq5hbd+7y2DuewA8C+oMBuoqxVfNAVq4sbNtF64YiL8QHvpS0\n", + "eWUrwxUWOK0uxQwsyzJev36Di5cuEUZ9LNvG90N0I8+OpawfMrYqjdDMMxRd0DS65ODgNs+8793G\n", + "gsHBswPqmm59QYM2A/6HO1OxuxA6nqb5oXXewprtWm8ajcbYDVu2eIzY0p3b6kG4OQo+9guffsua\n", + "+NOv/B8G3pQCTALD5TO1LaHrad0yOdVDXYFLFInXj2d8WBQQJ4kQG/KcuqpBFT90CGnA9wM6f/tG\n", + "KLvKsun3fIl6NPc1y5IOqgsClyRORIXp2CjH4eTkCNtS+K5DmYvXe12XYAQ8GjkgP/ixz/3sQSjL\n", + "5fKHaGvqoQ+r/XfTNDjKFkN5W6GbGuU4LNYr8jznxRde4De/+B+xM5pS5kVn9iMeJgH9fh/P81gs\n", + "FiyXS27cuCGihl6Pi/uXGQ7HeJ7HarXoLDdbf+I0jZnP551XS+u0l2VZJzZqGlFHDgbihZ3nOUcn\n", + "R7ieT68X4rhi75kkGY5j88Ybb/Da66/wD37nPyeJYwLf5/T0tPOzKMvSYI7x296zVs7dHjctXt7S\n", + "yyylcD0Py7bJsgLXdzuOvK1KPMfFAgLf5fO/8isCT9x8k9PzU2bTGUUpcFIcJ+xfuMSdg7v4vo+v\n", + "FOvFmvuHR8II6fWYL5dYtnhRn54cd1DTcDhkd3cXz3V5+eWXmU6n7O7udOrSIi9oas1wOGb/iSdY\n", + "rzcisCgSTk9PBUNtNI5lM9vf6w7KOI45ODgQ4Ydq6IUOjz/6PvJcMPMWzjo7OzEsEzFI2t/fx3VF\n", + "BFRVFZvNBtCUVSk2Csau1LIsJlvCUZ/NZihlc3j/mLOzU/Ks7A508Z6pSGOp3E/PFuIlE4WAzd7u\n", + "BYajPpvlEtAcHR0TDQY4XkStHPqTMacn54YW1/C+9z7N5ctXWK3X9KIeZWVjWdLtrFYrvCCgyMU6\n", + "t98fcnBwr1svRZVTVjm6loLBtm2uPfooUa/PdDblytWrxl9GDsLCpLFXRWmqPKurLre2ZzRGeu95\n", + "LlVV4LoeR0cnhqIYENcprhvIMDLwRQ0q/yDPM5Ik7tSydVkZOXgpxmGGCtx2da35m28qZSkUbKIo\n", + "fLAn0MYuapr67QvN0OTMYsT2rQiqQUzlRIMgeoGiKISqGfjkWcxyIcKaptGsje1zLwxBF1hWjbZr\n", + "A1XKM7LZxFy5csVU5wGr9RqwKE3QehLH5iBShskmh3AY+OimJgo98izBN17iN2/eYDYZYyuF5YnF\n", + "ReDL7K3RYmT1cFbC210/1SFmy3FtYZQWE3/YpVDV4AYBWVNR0VChOTg44Ev/6l/zNz79y+xtbROY\n", + "qbLypIJo/bnbSj4IAlrflHaAKMP91oMcQCrZLMu6g6WlESqDOxfGn3pra6sTNrQHRmvAhW1TViXz\n", + "+dwozwQve/3117j22KN87pd/mThujXa8zqymHWq19+EDH33rwOYHz37NYO0/HHjaCira16KwAMsY\n", + "yrfvU8RKQegDLUwlYc8YUctiseF8PidJc+7cPWCxWorUeLlkuVoQRT18Yy86nYxQusF3HB65cpnh\n", + "YEgUhuRlwdHRCevVmsp4j2RZSr/f6xbsxz/2CZIkFS54XuC5PpbrdNSvdtDbdhZtTmrbXaWFDAXr\n", + "qsH3A4qipBf1zGcFjuuYBB9xBuz3+w8SYMxnKD7W8vqGw6Ek8bhSfadpRp5XJEnGdLoNyLBLo1GW\n", + "CGc81wyxdavcFZpcYTxukiQhCkPiOEEFHus4ZjE/x3Mc0nTDxT3hlHueawJbTCK5I+2+OP/JM2tb\n", + "LmmSinDHVH7L5ZKyysnLFM91sJTFarXk7p07jMZjnnnmfeRlgev6aBSu46Eb81qzHNd1yPPMrBWF\n", + "49pQN93vPc8lTlYMRz3TwdXUZYNj+4h7ZCnrRkFjujTbthmPR1RViWPZHd9bWUq8VurKDCWFYFDX\n", + "Nb4XYJvN/WHoFDB0y5IgkMSfX/rsW2mE3/rzbwihoBQltza5snXTYLtuJ9F3XHkPlmVh2Vr84oPQ\n", + "4NVt8Vfj+y5ogeJae1fLEnhms4lxPXEjbRlV7XBcYFQJRMnzjCAIiDdrijw1XYeF53sEvqRO7V+8\n", + "xCsvv8xoOCDPUqLApzH3R+YJdIPYn8lEnnaTLEsxt2k5ku3m3bmwKYv5akE4GlIWBX4U8o2vf50P\n", + "f+CDPHHtMRqjdrRdm02Sdk54LXziOE6XsiJOgCGTyQQbqdha7+ooEv+NFmJZrVb4ftCxPfb29lFK\n", + "cf/+fV566fvkec6FCxe4fPkyWmvOzk7I84LFeonlyAO4vb3NC88/z7Pf/S6/9fd+i8cevcpmvcb3\n", + "A1OxJMYvpZbAY9N+uq77tvesqEoaNL7JA1VKIJ0Gjet7aPPhu65NUzXCLLBt4liEK77hLOdF1g2d\n", + "bNvGtV3iOGU8HuF6Po7tcfXRa3iexzf+4uso1VCUKVpXlLUijHzieMPuzhYXdvc4PLzPnbu3qSuN\n", + "7djs7e3jBwHvfeYZvvvsX/HEk09y+eIldna2ODs9pyxLcYUrK2xlcX5+TqWt7rkYDgf0+16HSy6X\n", + "SxaLBWma0uv1mG5POyimrjRK2RwfH3eqwyAQTP7C/h6PXrsmg+bFgrIU86f1esnpqXQNOzsi3tK6\n", + "JtmsyIuCXtCnyFYM+n3KImVn5wL9ngg5Nol8r+P5qRF+iG/I1miM7wvckiQZtu2yWG5I05RkuSJO\n", + "E2jEbnbUj7jyyCUcZaGamqYqqcsKypQ0r1AmRMC2bYqsMOtBnoF7B4e89NJLfOADH8CyLcIoIAoj\n", + "ozeQIAvPDEAloEHCOOqqRjdis9tu3q7rMplMKKtcrCmCoCsGtFZEkfi+BIHHdDpFaQtLibhEGCUC\n", + "16R5IeZl8znn5+cURY7r2NiWje/7xo897Nbjw5CEZVnUTU1Rtpa6DyjFbSeepTm5OSB/9Kp0TVOW\n", + "9IOgU0C3ebmVbnBdD1OhdQeDrksUMiy1bRvPF1WkheQLSPVfi+e7I/sUGra3t7Atp2N/1UVOWcsQ\n", + "VylFkkhXnRno1HVdoigENK7rkGw2eI7D8dExvX6f4aCPbVl4jiRgtTkAQSDU5bpufnYr8K//2f8G\n", + "0H2g8GCS3TJU5CQ17UXokxQZX/njr3Dj1df4W//OF9iezqjriuPTU8JBn77x7GjpS71er/PBbjfF\n", + "ltYkWX8DgkC8CirjxZDnRYdxt16+ICnT7WCs3+9hWUJHXK+Xnbw2zzPyuqLWwtt9/vnn2d/b59d/\n", + "7T8ApamKUgYpRh6tmwdJRO2h1dqAvu/nPvOW+/bSs/9X1/K3XUZbWbYD2Ma0fIEn4p1Wzi+bFNR1\n", + "afBkz+CfFVLrKCQBRHjpvV6PP/mzP+XLf/xHTGZjtnem3L9/nwaHyXiEhaQgDXqhcKbnC2azLSaT\n", + "KWHU5+TkhNAP2N7aIopC5otz8jRjOBiwt7vHoD+kKk1Ki+vhBMJckE6i7N6XuFZWZtPJyfKcqN83\n", + "c4OKPCuZzbZEvdiIIKOqSoLAZ7Ve0jRQFCV983c28UaqWS3V/HqzAS1r3PPh+PiU/f0LbG/v4jo+\n", + "QdijadoJiRY5te/hBcLAEV+XmrrSxnSr5ODufcKoh6UsZrNtcmoxN7MUuinRdcVkNKDMMmgkn7L1\n", + "+shpcMznaBmWiu/73L59m9deu86TT76Lra1t0iSVahYtSUR1jaXg9PSU4XDIZDoVdojWZh4ivvny\n", + "Wquuw2mfo6Zp6AWhuYcCcxwc3CTq++zuSscZ+hF1pShLoRc2jUjnHc/v1nCLceumpjJd4Q9vQoo8\n", + "z6Sb82Xo6Lji+x4EvsGztelGLWpj5tXUmo//4lsx8D/4fdlHqGtU58fiiIAMJKOyedDpaxSOJSEw\n", + "Td3geXLw1caSoxMgId5DCtesKXEkBQRnr2sMSmP+fo1liZd8kggtdDDom7lWQmAOss1GtBG2IxAf\n", + "WmMrTW2e2dKYsJlpBZZt8/T7PvmzV4G3VxuC2g5BgG4q7DiOJMnbFufzOSfnZ3zzL/6Sz3/mszRF\n", + "RRYnOK7LpcuXyXRF0NislivhpVoWdVnRCyW8oKlrqQg8jygIWW4WHNw7YLlcMpvO6PcHDAZ9kuSI\n", + "8/Nzw/vNuHr1UYaDCePxlF6vz+npCUVREoY+URQSRQGL5Zy7B3ek+o18kizj+e99j//wi1/k4sVL\n", + "rDcrAt/HQtHIdAIzpcA1/iiu45qW0u+YLz96PQwLtTBKO+xq4Ye6rg0+qfCcgKLIu0pdMHK3kz03\n", + "WjyblVIox6HIa2azGefnC770pS/x+vVXufrIJTbxivnJMf3QZxFnnJ4d0VQNdVXwvmfeS5YlhFGI\n", + "47mcnp/jJymXr1ymLioOj4/JDY1qMpVQ55dfeZU8y/n4xz4u841aU2mRe1u2xag/AA1ZnpGma9Is\n", + "Nd2JRRSFxm9DmBRVXfLGG28YfDVgNpsYqCagrxs81+98U55/7jne+c530u+JlL3l8rdyc61THr/2\n", + "GFleoJTNdDIW/NNw2tMsJU0TsixGxaqbi7RFSJrkvPbaa2xtj+n3xU6hbhpC28N15cDuDftslith\n", + "mrgS5tA0DWWtqYuKkrYjtfD8kCzLuHPrTe4fnfDJT37C5HWGpGmM4zqdSlmjJcSiqam1fDZxmnem\n", + "U22V6Pkubi8kTVIcpwdo6lo2zLooO0dH23bEC99zOqZTFIQ0tUKpNnyloG4EXmyj0QTyCHBtB8ex\n", + "Os1EC4/IPEjYG8ulZKcanmDHxHrY5M73fWzXI4p6b7smxpMxRVniKgyZwKKqayzbRjWa2gRCgEIr\n", + "qexDL5IO39ZYFuhG7Eceik7Hdh3QMm+ybAcrcHBdx3wvcAxVsqwL6roiTlYsl3O0htFoZKjRJfFm\n", + "zWw260gV6/WaxWIhiUmeR1XmVGVFU1ckSU0bqm07LqCNA+WPv35qG3jbqrUv+OEPrf1l2zZZI94K\n", + "uxf2+Rf/8n/hIx/5CO9+11PovGR+ekpjQXxQ4PYjhniMx+MfoieKpHvUYW51VVPUBaPRiOl0YgyA\n", + "StI05eT0BNu2eeSRR5hOxTJys4m5f/+QW7duo7Wm3+8xnU6MTLfh7OwU27G4fPkiq9WK7z7/HNiK\n", + "3/qt/0QUjWmC5/umKvZQysJ1PCMeetBtPFyl/DgIpdINjZKYuaKuKI1rm+u6rJN2gGJRVCXKeEy0\n", + "ByHQwTPtz5MW1qbRDWWa4nsRJycnfOtbf8Xrr73GZDJmvVkQBR5VXeG4Nr2eDBVd22Zvd5eqrnE8\n", + "l74foSybskq4svcoB/fuoWtFU5c89dRTWJbF6fExr92/wXQ8Zm93j1dffZUokirlwuVdPF+SX9br\n", + "JSCdVBj5DIYRyrKoTTUXbzImkylNo0WIlbZtsy3inSTh9ddfN94c4h6ZZRkf+MAHOpiuqqqOctl6\n", + "1DS1hReFYjSWl6zXS2zbI1/OO5OvremYMAzJq5qyqlgu1lR1RZYJ1XB/f5/ZbGo2ImFDqFLjeULp\n", + "TJZz8izBUkM2G+GaW5aLZXko36XvhYR10Vk2+J7LSy++yFPvehdZFuN5AQcHd4zbXo5qNGEYYHse\n", + "y/ncxJpJukzQi8TGtSw6TnKSbGQwZw4O12DDWZazM9syXRwEfkCSLlnH50TRlLOzM871OVpbeG5o\n", + "OmXpRloPltZ8rmmEMQN0qupWcR0EPSzLxnUVrusxGDiiFjbPZ/u8Nk2D5bhmmLshSd5+I1uuVlgW\n", + "2J6P1g1V3RibBIeirHCUZWyjrY5ajHFPbJq6Y8SIoMeideRU2CilaaoSS4nQp8hFiPSw8VutS5TS\n", + "xMmGIPDNc1XTNJrpeILvBybgIWSxWFDkuUxULGVsDGwspQiiqHsOq6oylhc2gR/8xH30p1iBy5S2\n", + "UdK/tq5+TVHhux51VZKWBUUYEXg+f/H1b5CtYmbXxizOl0yGYy5ffRxtWRR1RZJnVGlKo2y0BctN\n", + "SpKck+clnnfWJe64tlQMJ2cLwVsHA6oGev0RYSTm+sp2OLh/iOO4jEcjhuMJcRJTFoKll7rg/PzM\n", + "eBvb5FXB8y+9aBLGf5X3vuc9ANRFiefYNHVtNm9F4AvbJIgC8iwjN+KFRgv3tdYNtvNjrDM9vxti\n", + "Wh7GFdG0h8ruHsYai6ZqcF3fLMj2ZH9oQGyLRwlo6rI2D3/Jt7/zHZ77/gtMtsVD2g080DWu1jRl\n", + "Tb1J2N3ZZm9v3yRwh0xmW/zJn34V2/Xwwx4vvvwKWmsG0ZDtrRm37hxQmir8nY8/ged73Lz5Jrdu\n", + "3aLIc8Nfl8rl8uWLXLlyxbADpK3NsoyqFCjBsi2Go4HQrbC6NHbbEajEtm36fck2XK/XfO/b3+aR\n", + "R66wY4zIPMuEA9uQJCmB66CrnDjdYNliKBXHMePRGMt2qYzDYd1UFFWDVSrKusQyEWfecIjWkCY+\n", + "2SbF0hAvVgBYlsIPAgLXI4szhr0+qe3g2pZAKU2JasTDRNkORVERBQEKTZ4IJbaoS0bDHpOx/Bxl\n", + "2ezv7kkwdBabTVhRlDWu54kDoutwenrK3t4O1DVZneMHPl4YkdkO/zdzbx5k2XXf933O3e/bX+/d\n", + "07NjAAwwGCwSCZCgKEI0SYnRYomxaFouypFV5SQVJ7FViWOpUpWSaJWrZFGyLVmOo1RsWZYUaxct\n", + "0lZICVxAgARB7Nvsa0/v3W+7793tnLgBUB8AACAASURBVPxxzrn9BhtdrnLRl4Wq4fR0v9fv3vu7\n", + "v9/3911kKZGhrB5erieIWwH9/h5KKs1vHg+p1SKuXV/j+Ik76LSpsOCy1EyhJBkjy5JCJdWuyMKP\n", + "nqdl7L7nUas3UCij0ch0x+wGKPS0XWYlEwM/+V6A7wdkRUm3pXUC9XqEEG99T3TbczrOLh3jOS5h\n", + "oLv4fDIhCLVLY6lKFBKhJAIBruasC08iKaCUlDJHCEd7FakSJbVjpnA0k8YRWoWZZRkIgSxLU+w1\n", + "DBN6ggJdiKMoJvAC0qwgzxOiKKYscnr7O2RpyuqhZeo1rcrU1EcPqaAwcZCe5+G4wjz03jkT89uq\n", + "xCyNSskoFvRSKKiTTVLAoV6r4cYBN2/c4DN/8ic89l0f4O5Td0GpuHnrFllaIFyXRrNBrdHQvGUE\n", + "aZYThCHdmdlK1trv97l85SpJMmR+fp6l5QWsrL7fH5BnBZ7nG8MbYXDVkvWNDWoNPb41203iOOa1\n", + "11+lVosZjxOUgCefehLP8/i7P/VTRH5AadggnpGRuwbftF1fmqZ4pWZbWIMd+zXgbdWYmfFMtxJz\n", + "JfUCz3phpCZfUL+eIApj8kIvmLRoSS9otfWqpMgywiDQVqOuw0uvvMbT33yamdk50jyjVBJPOJR5\n", + "iSsE/f6AY0ePsby8zJEjRzl16k6uXb9BuzvDj/6VH+XZF19kY2uLKIrp9Xr43YCd3T2ySULo+YRB\n", + "wOUrV5hMtG/G0aNHOX78mKH5NXXE2XjM+vo6X//61+l2O9x9150URcHKyjKTyZjJeEImdc6i5wYE\n", + "vo+UMBwO9EQhBKNkzMbmBoPBgHvPnNZ83yQhDAKGI50RmeUZrucQxwc2CEoUSAlxHBvK4YBkot0T\n", + "a7UafhBVGapFkVeUUlmWrN1c48iRVea6Mxq+Mx2n67jkeYFwHMbphO3tbYTQN22r2aAoJDUBVfq5\n", + "41HkOWWp4bHROOHw4VXQtwj9/Z6mijqu9rxx9H1T5AXC0+k9Yagf9Lu7u8zMdnEnOowjGSZG/aiL\n", + "gu9r9a7Gf11qcaS5+EAuS8Ig4MKFCzz8ru9kOBxSrzcMzKCo1eoGx47IjExem1zlDAZ9ze82O5g0\n", + "zUxnXhJFATg6kSuMIjxXIFyPuVYLlGA80Vz8IHLZ3d2uOOd6ufnom+6JnZ0tfX78kDxLjTWtvh8E\n", + "ms7nux7CtYZzIFyFMBERSpY4jiJwdV5lkecolJ5004wwCphMEqQsK9KFffBZXD0MO9RrMcrX5An7\n", + "gPI8H0fAZDJmd3sLz3VYPHyIRj1mYqYSOMj/PbDlvT1i8h3r6Dt+9T/zEUeR7gTNcihNDU/TZNhZ\n", + "744L5y5w/9kHaNSbhFHEeDDk2LFj5HnBcDRikqak6aRiJGSpFjRsbGxUvhea/jfLeByjkJw7d67y\n", + "xuh2u0RRTJbmFc0wSZJqg47Q3fHW1pYZjXXnoBkpL/G93/thzp49W+GR9oR4nsdoNKrG74ObX99A\n", + "1kLAQj6WMfN2xzS90qaweJ5fLUIjwyIQmDgmWVTS5izLjEjCNR2rR+TUKKX2TCnSnCe/9hSdTqda\n", + "wtSimGTYAynJy5zTd59mdnaOBx54gCiKGQ5HLMzNc+XadU6euoszd5/m+vXrZEnC6soyk8kEWUpW\n", + "V1dpNxqMkxGDXsqhQyuVsvXmzTVwHOpxzOLiovHunvDggw/SbrUQQsMdFy5cZHZ2hkajQSw8XNdh\n", + "a2uXV8+fN0VRT1YYpsV4nHDmzH14kU8/0VBSmqQ06g0muabROY6DErpDK4sSqXIcR9MZ7fkLfB3N\n", + "JaU0BcLSRl1arRrtVp2bN28Shjoerd/rVfQye46FgcnKMufYsWOMJwmjZESZKBR61+J5AWEYMzGv\n", + "IRyBB5TSZEf6Lo7j0mzVCfxIS9BVDkjKstAWrsLF9Xzj/CdxhMelCxfodDvU4jq1WgPPdRmORhpb\n", + "VSVFmeIIhzRLcISDMCZZrueCyllZXuDK1cucPHlCd/tegDIWA2UpyYsRpczN9efjumFViKZFdeYC\n", + "ZjzSC+Qsy+gneyj09BlHNYJQQzOu4xN4bhWwAgfakDceURRqHcHIRMONU+0+6ek6YF0OhdDnwvU8\n", + "8kIn9SChLHIyWYCUGopX1stfw5CjROdx2lzZOI4rG43piUMIRztPep72iHcdgtBHlZL9/RFZlrGw\n", + "MFdFxyl1oEC3DZuFjqah5P9iC7hmfhQ4dhnnR9r4JxkT1mJKJZEoJonkq088yUe/93s5tLTMcDAg\n", + "n6RMJhonbHdazAchUklu3ryuucNxg6NHFyuq2cbGBltbG5piWAs5dOgQx44dZX9/n1u3bnH+/HmE\n", + "0EupkydP4noCR+psvs3NTQ4fPoRwhNn0623+n/37/8Dq6iE+9bM/x87uFplZ4nRaLe3oZkQLQCUw\n", + "sic9iqLbaHz2/0sp6XQ6b7u4sKIdO3pZAYrtCizP2Rpe2TR5eyFYxZ5WhkVmMTchDCN+4Rd/kbmF\n", + "ecaTCa6rp4d+f59Os8n+zjYnjx2jFtVotTosLi5rYUhWgOtw/31n+cY3v8nd99zDxz/2Mf7vf/n/\n", + "UAsDsmxCv9/n1q2Cy5MJvuPy4P0PkOc5e70+Fy9fYWZmhnoU4wiXF194keFoyNmzZ+l2Z3nlpRd5\n", + "7bXXmJuf4b3vfa9hLaQMhj0ju8948MH7GY/HdFpt8ixnMByQG/x1MBgQRCE7e7vVgyuSBckkOfA/\n", + "VwIXF4mkHscURcloNDLdkaReq1EziTS2IGmztTGDvva4DsOA0ajP/GyXnZ29amlsYYXM2NcKx2Fn\n", + "f48w1BYPSaKX8LNzC2SZpnmmk4lRE1qjtIgiTcmnLEmRBVHggfBI84k5t05Fz5NKEMdNZJmzsrLM\n", + "yy+/zDe/+Sz9/pC77rqLI0eOaCqt6xqzsE5l8SCM+KUsc5LBkDP33M2f/ulnOXHsqPYZaQW4vo+U\n", + "AuGijZ1cu9QsGE/GVYMCVPstu4Bv1Rt6WSl14IP1C0rGCYNBT5vA5SWlLPGCoGps3q6QNWqhlqgL\n", + "jSF3ZrpkWcpoMCSOQ1zPxgJisOWCIHTNA7vQy1NHkJeSdDyhKHSAjCxLklGC4+l7ajLRexc7MVu2\n", + "C2ilrOM4eEoyNHunVquF6wg9MZqdRBD4DIdDswyNKiol3F7EbQMIBySPtzu+fV4oj/8RDjoqqchz\n", + "BC5eGJCVBaUjIPBwXJd/8ulfZX52jtOnTzPTahNHIb5z4HyWpikjE7zQ6WhDqMkkRZaS3AhBXNc1\n", + "KrfMnIyxkV/brzuMjIqq3+9XjBhbHLXgQ3/Yr7/+Or7v89BDD3LmzBnTPblMUs1RLvO8KuC287AG\n", + "N7aLCMOwojfaRdp01yal5N4H3/+mz+2V575cCX1st15BKGYBpJQWm9gUo2lxlA721c6PUimGyYgo\n", + "jnn2+Rd4+utP0+522NvbM+nYGZ7jsLO5wd2nTnHnHSd5+N0PM0xzbly7zrFjxygLXXTyvCAvNd+4\n", + "3mqwsbnJa6+/zqUb1zT7x3Xp7ffpNFscWjlE4AeUpTR8dk1hS4ZDfM9jcXGRvMh59dVXiKOI1dVD\n", + "zM3Osru7w/7+PlEc0mrPYu0OyqIgNF40nrlRPVd7SO/v7XFla53V1VU9/RQlYzNZ+aYoKAXyDfCV\n", + "MinseiFYGEMl7btuoT7Pc8gz3XnmWc7a2hqNepN2u43vB9V5CYIAZZWFjnbWk7LE8RztYNjr02rp\n", + "MGiFMLmvwghg9Dkr8kLTNs0kqZ0aJY7nGBqhdgjUKT1aWSlliSoLNjY3ePXVl7n3zH0cPXrciJoK\n", + "c+04hrpZGIjAsYQQyjKl3tBJPD/zM/87P/upn2M0HBOGMaUEPf0LfM/HcYuKaeK6XlUwLSXQxhJK\n", + "KZEThXCUoRfqh5SUFkpwzXnQfHEpXBxjl6uU4uFHP/Cme+Lxz38Gz/dR8mCB6vte5SMjZYkwKVuu\n", + "o3MtM3XQIJVFwWQyppQlvuGpC6E7cwBJSRhG2tDNQJNKYX5PTVH0DW3RjfwKpskz7X+jlCQOQ7rd\n", + "tglO0ZTFaWbltC2Gvf+r91eWPPjwf2Iiz3/Ow3VdPMfBEw4qkwRhqEUqYUwuoDcZ8bVnnmZrY4sf\n", + "+aEfplarkSVj9vb2GPUHzMzM0O12abdbBKFPqSSDQd9Qj2I6nU6FUe7t7dLva7724uI89XpMkSsm\n", + "+z3Wb21Qq0cV9afdbjMajdjc3DTCkRpBoPMOP/vZz/IjP/IjPProe/VirSgMXppXwaWR8diwFDXN\n", + "l5WVcMl2cLbo2geRHc1Ho9Hb+oHbFKNpWpYVLdj/7OuOkoTA+KEoKQn8gKzQyTul0rBJrV4ny3PO\n", + "nT9PXK/RHwzM5zbGc122NzZ44L77EAruv+8Bdnd2kV7AnXef5rVXXuGhBx5gfX2dWq0GyuPm1k06\n", + "nSbzMzMc/Usf5IULr/HsM9/k4sXLmobWaNAfjWjEChBEUc3ALKVmHPgeN9dvsbu7y8LCIkeOHGZ9\n", + "fZ2nvv519nZ3ec97HmF1dZWba2t0Ovph02w0CEKPItfqOseB3e1d9s3Dt1GL2d/dIU1TDq2sIIuM\n", + "erdNnmVQasy8KHUhDqMaNpZsMpngOA61WkSSjHEcj3SiVXX1RoM8LZiZ6SIl5J7D8vISQmgmQ5ZN\n", + "SFOjjEWQS72obzRr1BsNLaQa69SadrvDYDik3Z1BlpAVKZ6r/Xs83yHPs4qWd2ttTecrzi9SrzfI\n", + "igypNF/ccQwVF71zKcuc4WjApUsXefe7383KyooWBqWJYVlIXMdcjy6UgOtafxItBivzjDAKadQj\n", + "9ra36czO4XshwvEpS8VgMGQ0GpKlB4ZgjuNoeqNwqonTD7RHvuM4+IEPQgu+SmwzEiFLzeqZjHXI\n", + "h35fkRHaBPj+W5eqZlMbUvUHY1zPQUhFGGqlaJ7l2pNFKVCSUjhIAaUozINUR5c167WKlWKVkCgN\n", + "VZbK+M4Ijanr2mXphMJg6Pr3HBubYGs8VpbagqPZqFcTuYZRvQqSsfe+Ldp2IilN4/N20JE9vm0d\n", + "+Fe/+McIqaCUCKWxt3GW49djMiTDLOXX/sX/yXvOvIvl5WXiMMRzHeZnZqvuNk0nFc85CANcP6zE\n", + "BVmWaRpaHN/WTY/HY3QQbFB9rZR5RXfKsowoCqufm+c5Vy9fpiwLPvzhD7OwsMBwOKzk2QdCmvL2\n", + "LlhoSa+lg9n38EaMy1IG7ULEjp93n33zwub5p//8tgKuT672MK7UZ0WB62lIQJkuV0lFnmV4nmYp\n", + "ILRc2/FcnnjyKb7xzDM60Xs8xnEEeZoii4Juu8Xy4iL3n7kPWZQcPXKUvvGc6e3t4zlCR4OZ9+x4\n", + "ggsXL7C6uopUikSV2iB/aYlnnnkWFIyTCYdWVrQxWKE9srUHMuR5VvnA1+ox29vb7Gxvs7S4wNLS\n", + "EqPRUAuE4ohjx46ytLRcObr1ej18z8VzHZaWltjb26fTaTGcTLSFrBCEQcj8nDbd91ydoen7hrIm\n", + "BJmRxetzYiTZpRZw7e/vM5lM6O33GA4HFMYA6q677mJ2do79/R6HV4+glKDZbDFOElzXR7gOwnU1\n", + "DbLMyfKMuKYl9rrDz+n3h+zu7dPvD5FFSafTNr4gEcloRBD4JMkIm+MZxTWahmdeb1gLAcdIygsT\n", + "SCwYjQbs7Gzz0EMPUpjp0/5+02Zv0w9+Pb6bgmecHP/k332GpcVlTt112gimQDiaJ+37gdYXTGVX\n", + "TlM0LeVOR60Zl0GUEZQVCJR5CB10tRZb9oVfdd8g+cBHfvhN98Tjf/b7pGlKJhXNZkMrTpXEM9OI\n", + "/d30VFFQlgWeESpZuMgWc2n54wd1CsmBUM4R1lrDNf+Zz916q8uimpDzPCMMfRpT/PXpmjBt6FVx\n", + "v123ahxsPXAch9P3f9d/eR04pgvE+NCUShE36qSGV/zqs88xPzvPu77jIZTU0U+3bt1i7cZNwiAw\n", + "KeQNut3ZqvgWMq3I/0ppEvxgMGA00vaQMzOzzM7OU5Yl+3t9g0f5uJ5mo+ixEqxp/+c+9zkWFhb4\n", + "vu/9CIdXVxkMBlXBtjl+9kI9KMjubU9PezFb6MLKh+3XLVY6/SDV6s83H1ZqP/2gsBFm9iFhT7pS\n", + "CjcwnFI76uc5RVpqDFMoKB3+4vG/4MSJk+zu7hor2xGqKIjCgHarxSMPP8zS4hKTUcLzL7zAvQ8+\n", + "hOM4tNstrl6+zNzcXMXi0IyJw4yShJMnT7LR79Pvv85jj93L7k6PT3/60ywsLJKmOcvLK+RZrgUf\n", + "jgeOwgGaUUyjWWewr31Yao06e/0+61ublGXJiRMn6HZajMZjPvvvP8fK8hK1WlzBJAq4unaTsijZ\n", + "2tsxwinF7MyMzoscDDRsJhwKVTBJTHBuEBBOLZEcR7C2dpOXXnqZ4XBAZBzoTp8+zZ2nTjI/P0tu\n", + "PFliI2WXqmQ4GBKGgY5Qcx2zFMuNak8QBgHpWGsAdDTeHrfWNlhYWGR2ZoZBf2jS6TU+7Qc6xxLH\n", + "JUk1TLV3+XoFU8zPzhCGEQsLC7rL9jyisM5gsE8ca98eWwwC362aEoTA93SAcJ4dXJvC9yuqIAgm\n", + "k4xTJ+/kytWr3Ou5ZKqkXquxv9ej1miCKhHK15L/8sDPvig1pBX6AZGvE3ekLPHqPnmWalqf0MAR\n", + "QkM+2i3QMQ+XAhdQ0vJe3lpS7rkabpV5iuuUuJ4JJXdd49QIvtkRSOlQli5KaStc0AIehUC4Lq5z\n", + "EGFn72vHEyiJdh4sdbdtd1plKfE8HSYCepqTBhpq1utm+i5wnIPkMd2kSYpiUn3mFhK1E3m1y5AH\n", + "hIi3O75tBbyUBbLQeK1nsLNJlmn6zjDliS99me/54Ifo9/YojCXpyuKCMTXSktUrV65q/DiKqdVi\n", + "HN8sNByHPC8rBoYOI85IkjE3bqyhJJXfr8a4JyB0Yd3e3mJjYwMpSz7+8R/lnnvuAVmSZxnzc7Mm\n", + "307SajZJDKvDEQLPWFLmWVp98NOduGWhTHfgVlBi/256jHqrY3prbUcr+/S2HVSWZTiug+PprsN3\n", + "D9gvYRjiKl0Uk3TC5/7Df6DT6bK7s0tZ5CjpaM6y4a0fO3qUxaUlBv0BoR9w/ORJNjfXWVhYABSH\n", + "jx7h/PnzHD58mFJpUYjEY7y3z2vnL7B46DCD/pBP/dw/4PkXX6TTnSXNcp59/gUajRZxVEcqgesI\n", + "0iKvFrTj7V3yLCWIa3Tn5tje3mJ7dxdZFFy9eo2rVwt2d/fodDpkZcHpEye4fPky/UG/Wu62Wi1m\n", + "5+bpdtsMBwOuXb1GmqYcWV0ljGM8z8HlIDgkzTJGw6E2IRqNuH79Ojs7OywvL3Hk8LtMEHW98oIf\n", + "DYd6JPY8At+j225RKkUUzQIlUeybsGCT2q40Nl0U2iwqGQw4//o5Wu0Od999J6Nhwmg4QgjY2tqg\n", + "LPUyVZqRPssy8sIYMwURea7pb5s7u+zu7iPLFzlx/Dgnjh/HdQV7u9ucO/cax48dpdVuEYU+rkMV\n", + "YG09qx2zjKsYUVlGFOkCXa/XybKU+flFnnzyKTY2NlhePkQUBMzOdkDppHad26GxY3t96kJuMmzL\n", + "AlUUFEXG5s118iIn9DzCKEDL5g39VTgUpfYpB6gFmg0kpTSahTcfjtCTXD2KCM2C3jFQln4HUBYl\n", + "RalhE4S20z3o7EX1c7RLZVE9wC3GXRQF9XpoKJiGO++6uK4wNMmJKbT6Z9XrddPcWZGiwjo/uq5v\n", + "7tv8NijUptnbGmAbvW91fNsKuCxKXDPSlwqSyZhmu02a5nzl8S/h4rK6tETdc83iMaUodWcqhKhu\n", + "KBQUueaaamWeIssK0333kbI0kucGruvRqDfJ85I8T6vkjNzkU/Z6PebmZnj44Yc5fHi1YnEEroOS\n", + "esPseR6qLBkYTF0okFIngkgpkWjjdjsaaXeytBqtrNzddq1we0G2I+1bHVauDFRK0+mFh/anjhGu\n", + "AEfhCo/SeCvYaSHPc/r9AZMi49r160RxzKg/xPcDlCyZTMZ0Wk2U8YnY2dmhUW+glNCCDNfh4sWL\n", + "3Hv6Hh3aurRIYRRtjqdNpY4cPcq169f51V/5Z6xvbgIOy0uH2N3bo9XuMD87z/rGJqfuOIVrOi7h\n", + "OBRSanxe2+4xSSdsXbvGcNBnkqXMzc4R12pEAczMdukPBly+coX+cMQ41dt+rQwN6bSHvPDa6zRq\n", + "PgsLCywvLVPkBbuDHju9PRbm5omMh0c2SYnjiPn5efb29qqH4qlTp8yCyiFJEiaTMe1WC6QkHY9R\n", + "RYkf+Gxvb2tec6izL/f29+h0ukilF3a+Z+TdjrbfLcqSSxfOcfjwKt2ZWfb3+pRlThwFTFLN397d\n", + "3UV4Ltdv3EBKRac7w+bWDgqIa03a7Q47W+sIVVYuj6+9fo6r165Ri2PuvedufuAHfwhZ5ly7fpO7\n", + "7zxJbhgr1q9k2kfHWtQGQcAXvvAX1GpdwtDXDZEL6SRjPJqwsb6G42iKXr3WQEoFjovjOtU1af1i\n", + "tIeJLppBqKGfWjOikDmesGZsOZ7bJk0zlFTEcQNZlgwHA5qtCPPc4+2Q3jiyOZ4Sx3hoG3NRMxFY\n", + "GwHt0KlQqFIile6+i6kJ2H4GjuOA0hGLOqwiYjLRtafRaGhPpNJ6nGs4RUpJWUi63TaOq+EyKQ8g\n", + "En2vgpQZ3pRRlX1Ne9jzouPmnG/JQvm2FfBaXCMvJYVSSAVxo844Tdnd2eOVl1/mse9+DEfCzvYW\n", + "QRjSbDaN3FkZwxhN14rCmHq9QbcbkJZaGDQea4bH0aPHCAKPW7fWuXHjBukkI44bpsPVT71z586x\n", + "v7/Pmfvu4f3vfx8nTpwAVOVgGEY6H3JoQpbtU9MKcsCpiq4dgcqyeMvxCKhohMBti5/pTfTbc16j\n", + "ahQDpgQOB9a4vu/j+m4VeeUgKJVkf3+fer2pxz8l9ZShFFIpjWMiSXNtJl+La3zndz7ImXvOsL29\n", + "w8VLFzm8epRSlsRxyNmzZ3j15VdYWTmE7/tcvHiRE3ecZDIeM7ewyJe+8gS/+Vu/Ras5S6PZ0osh\n", + "pfjAY38JqwLd2drm6aefZraroY1ap2Xee6BtNR2HmivIshSpFLks6A/6NFtNkmSAVIpH3vMejp84\n", + "SRhF/NIv/zKO67G9u4vn++wP+oySBFTOxWvXadTruI5Lo1ZjptNlkhbMz8/TbDQogP1hws2b62YK\n", + "2+bYsWNsb28z0+3qJaLvkoxGnD93TusDanVqRj7u+wG7+3ta7NKsm65sXE09OrRAsyxq9YitLU07\n", + "PXxohSSZMDenMzSfeeYZQKsoz5w5Q3umy4+srKAcVwcxS4Xnh9xc28D1fFQxoRZ6DIdDbq3d4tKl\n", + "i2xubRMGPtevXeW55+a5//77WFpc4Oq1axw9vAIcsKLszmU4HJIkCRsbG1y6dImPfOT7cZ0GeZEa\n", + "PrPLytIyL7/8EotLp2nU6iYfNSaMIjAQXlGUZprUIRPatvjAu0cIEBICJwAhUdKaj5U0azUc4ZKO\n", + "M1whWJybZ1KMqvvh7bpRawdgGyKLtReFhoCE4+IIUMrClRJVAI7+XlVqurK9r+w9ZDvvuF5HypLZ\n", + "2ZkKjrWvaVkv+r52CX1fC7eyDKkKXN8FITU2X0ryvGQ8ThmXE8LwIFJSO0n6twXb2ObsW7kRftsK\n", + "+GQ0ogCE54HnkSQj0qzghReeZ3ZmhpXlRYo8p1Zr4DiCoTH+j+PY5FV6ZuOr6A97OEKQloJmq4lf\n", + "arvHnZ1dTf8D4lpMGIWAYG9viysXL9JsNjh16hgPPvCA/j7fI5uMtVOY5+IailOaTypmiOV/WjaC\n", + "VJr9oFVdumstS6fqlKcx+Wl+rL1Ypsn7053AWx2FKfjSLGeEo5VkruvhefpmHPQT3Q15LqqUCGOY\n", + "1Wq1yc2CyQ18zp87Tz2IGCYj3bM4gnQyZqbTolmvc3hlleFwqEMa2m2GozFSKbY2t5kkE5ZXltnZ\n", + "3WH18GHuuvdu1je3EI7Hv/w3v8O58xeI6x28uE13fonZmVnCKCBLU+JaDFJx9Mgx7rrzTjOCSwZp\n", + "j73dHdY3NkmzlFa7RS2uEcYB22vXGAz2EUjas3W+/7EPs7i4iG8ZP7LkPd/5EE88+RRz7SbD0ZDR\n", + "/p42vCpLxr0B/+RffZrrV6+SjEb8+Rf+nCdfeBElBLVGg6XlJWqNOh0vYOXQKuzucvnaNY4cPYrj\n", + "uly7tUZRpMRByOLKovbKzlLW+lvkaYErBK1Gk4X5eTzHYTxK6N3aZtTXXuROPabV7SCUIs9ydjZ3\n", + "eNd3vItkpOXyw+EeZSnptlusb27ywcfeR3dmhmScQp6T5WN8YVhbjuDE6hI4DkJIHCRZ1ubo4UM8\n", + "+t6HAcX6+jq9/T1u3Vrjq089xfqtWxw/fpQ77zjJ/fefZWlpkd3dbU1ndAVe4LF5dRPHdfi+j36f\n", + "gQKHWuxCQZ5BFGsVa6fd0YEbfkBc0wlSjqeFVZ7nIqVZgmIKtrDBxMY+1qiu7UMNBK7naRk5JW6o\n", + "cfpMZlVEIOrtEjGpdguFYX84BkKlFCB0xy0NtRKM2tHT0nqE7tcdBcLxdRgy4Lh6iV2WIEzA8P5+\n", + "D6V0DGGaptUD0DJOwlArsEfJCNd19ERZ6GI8Hqem0RKGA041pVuoZHoCmG7g3g5Otce3rYDPzsyS\n", + "Fjml45CXCkRBuzPDc88+x4c/9CFQJqF8NKTb7RqurKbS6TQT3UnEBs+M4xhSyauvvkIQ+LpjDzQm\n", + "NknHSKXhgSeeeIIwDPn4xz7G6uqh6mmXpWOUNEn047L6QJVSxsjGeJbIqdDlLH1Tzt8b6UF28Whx\n", + "8OkN8/Qychrzejs3wrI4EP/YnxUG+mejtE94FIYgMIIcD0cqkPoi1kyIgmatzksvvkS33Sb0fITv\n", + "0u/1aLVbDPp9Dr/rXcY3PMF1M+1v7ugg2IX5BQaDARcuXeDs2bOcv3SB1cNHyKXiZ37673PX3fcS\n", + "NdrcdedphFej1WrRH+wTexGR6+MIBy/0QEBeKEqz5Y+jCG9hgSPHjvHSy6/QHwzY2NqiWYtY37zF\n", + "X/3R/5rTd50iyyYs1ef0BJQkun+P9wAAIABJREFUBIGnHSG3t/EFyDwlS7QQJ/B9lOtx+eo1Nm+u\n", + "0Qxj5lsdXnvpZXAcGp0W/eGQ/nDEVm+fr507j+O4tLtd7n/wIc5dvMja+i1muh0W5udpzXYRnsu1\n", + "m9dxRjmNWp3IcVlYWqLX6zORKfuDPl/+8hPUmg16g76G4fZ7pOMxjUaTRx99H1EUMb8wz2Aw0OKy\n", + "qKuvmSJjbq7NzvY6WZqwsnKY/d1dZucW9VI+TUmHY4IoRHguSTLC+rzb68nzPGZnu3S7bY6fOE6t\n", + "9iEuXLjAFx//C77y1af4s8/rLNYf+7G/ius4FHnG008/TRRFvOeRR0DBaJToYAMOpkMpFd/93e8n\n", + "GSfmvtOWExbnthzuMPRus4W4neMstNLTsrCm9kSOf1CibWlXpV5q2iL9lofQalbfBJ/b+6s0y0NV\n", + "vbbBlYWGF5VSVZKiQIDSwd0C/ZpKoaccdcCr1wKuSdWIWefFdrtz237L1gPfO7j3LdXQ3vP2vRZF\n", + "YXIB3Cp9apoS/K1w8G8bjfCpL/wBSZYS1WokaUbcaPK7v/d77O/t8z2PfZDID81CJTAp22W1CLTj\n", + "kv37fl9HrHleWHmfKKXpX2u31hiNBiglOXr0KHefvpsTx4+TjccV9Uln/jmVsAYOCrXnaZP8sjhw\n", + "TQSjrjQmUXZxZlNxLN48/WeLZVloxb7GtBPjgSeCw+n73/emz+2lbzwOHFjv2uXWNKtFy7D1Re9o\n", + "TzVAUALSEUgB/eGI3/yN36BmEkmcUGPljpKcvvOUNp06dYfuIkrN0W+021q0oczF57rcuLlGWpSc\n", + "v3iZP/6Tf0e92aUzM8/S8iphVAPXULWkxHEEge9rvw0EspQ6SsrR00IuMzS9rGCSTQyXesT+7jat\n", + "Rp2P/5WPMRr2aNTrjHd7+MYFbzAY4Idalv9L//gfs7G5UQmZBsMh6UTjvQ/e/wBHDq2CUnzjmWd0\n", + "RqLjIny9PO/OzrK6OMurr7xOXhQ0mm2UgJWVFWZnZ80YXjLs7WsvnahFvVajkJLN3V0kilE2IclS\n", + "unNz4DlEtRqD4ZC4LNm4ucbi4iJhGLGzvc2DDz6kl3tKC4dsOtCNWzcZjxLa7Rnm5hbw3QDfC7Sp\n", + "luNo6aNQlEp/plakYmGR6evKFghbJPf29rh65TK93j43blzh2NEjzM50mZud444TJygM7c9zPRNH\n", + "pqrrKs8LhHDY29tjZmYGpXRD0Wq3qyAFq3uY1iXAgQWE/nkHTYuFCHTBfvPU6YoDVgjAw+//oTf9\n", + "m6e/8hlzXx0oNQ9gSM2ymZ5oNa48Mf/O/nsLrxgxkbEKEI6D46iq3kyzQuxkPQ2pWkjqNjvsKWjH\n", + "ft807GN/nqZbFtXezBIPhBDvGGr8jh24EOIw8BuAph3Av1BK/RMhxP8B/CSwZf7pTyulPme+5+8D\n", + "P4HWBvyPSqk/e6ufPZpMcAOfvJQooRdjzz33PB/+0IfxPJ3Con8Z7VPieT6TyYTd3X1GIw2n2Kg0\n", + "vbyrMTRbfCkLLl++zI0bNzhy5DB//cd+jFpdjz6NRoM0TWm3tTLKFlhbEO0FYP+cpinSdL6BkfZa\n", + "/xLH052w5ZcD1c+zJzRN0+pk2pNjBQ52uTl9gpVSVRf/FuejOuFWMGCl8faJrpTezkgUnhdUr5ul\n", + "GY7vUTqCJ5960vh9KKI4okCSFgWh77G/v8+HPvhBBEoveNAMm+3dPa5eu0ozDrnzzrtBOBw7cQef\n", + "+dPP8YXHv4zjN1g9fArHj5lbOMLNtTVm5pv0+j0WFxYZDQaEcZM0L5BFaRRpZmmTgxe2yfOU8aRP\n", + "u9nl8tbrLMx1ufjqKxxdvp8v//nj3H/ffSwcWiBeWGY4GvLiSy9RypLHv/hFXOM7kxkbAYSgM9Nl\n", + "Z2ufdqvFjRtrfPhDH8FV8MHv+RBxvcZnP/dZnnn2WdLxhGGvxxdefp73PvpdXLx4kdfOvU632yVJ\n", + "M86dv0AY+LiOw/z8LFeuP8fRB84gxnvMz85Q1D0aUczJmRPcvHKN5e4cWzdvIYY5tTRnN+0xuzhH\n", + "e6ZNkeXML8xxa+MmK8uHmIwn5sGrlbqLiwt85Ymv4jguy8vLRIEWjAiJnqCQJprMIfA8lHGjlEWJ\n", + "g6jOt8a2R5Veod8f0Om0ie+6i6LMuevUCZ568gk6zSZHjxzR+5xS0mm32d7dJa4f8Jf1tewg5cHe\n", + "xvM8EwqiO02llAnfOKASvtXxxq9ZLvZbHdOQwtt1otOduaXlVveSUU1OT8j63tb4+MFbsQ9Bk2fp\n", + "aGKCUiW+H97Gn7f3vxA6Um160rD4uRXv2TpgbTTs71BRFE3N0fm6siroWZZV/32r41tBKDnwd5RS\n", + "zwkhGsAzQoj/D13MP62U+vQbPsx7gI8D9wCHgM8LIe5Ub3GGarUGwnPpDYd05+Z48qmvcfbsWRSK\n", + "tVtrKKlo1RvVeJHnOcl4TFkU+H5Q4U+9fl8vNUcj0mREHEcEYcjdd57ixz7xcVqtlpbKliW1MEIV\n", + "Ob4jGA6HOI4WwdhFwjSNx8IkruviRjq1fBq+UEqRl0WVoDFtVGUFEdMnzXb4Qogq83GaA24vViml\n", + "LkBvcdj3Nt2x2++b9osQjjZpUoU0/HNtdKUcgR94XL16FVdoxWEYRWR5SpZnHF09xLC3jxA6w1BK\n", + "hTL4YqvV4uzZs4hSu61dv3mdJ576Ol/6ytdozyxxz5nTdOcWCII6e70xi4vHGGZ9ao0OgyQlipsM\n", + "kpzA83A8H4SL8hSF0ruDbChxXB/PjcjzgsX5BbY3b5COR1Dm7G3t87u//f+yt7PLsTuOMBqNiOOY\n", + "erPBoUOHWF5Z4Ttclz/5d58hScYoRy+wGs0mk0nKa5dfY21tjXd9x3cSeD5CwXsefoRLly4zmUyY\n", + "abRwjxzhheef576zZ8mygt29PVxXj8ajwQhZlvR6fU7ffTfD3T5ZlvP6Cy8ji5KluQVuXr9Ou9Hg\n", + "jhMncB2hI9OU4MjJ47ieDr/tJ0PyrKDMNX20UW/iOm7V0a1vbXLHHSe4ce0GtVqN1ZVVilLSbneZ\n", + "pBPjER1QlCXpeIJAJyMJoaetwrChHEdQCyNcNI7aWFpkd2+PWq1Gkgz1fiGMuOvOOxFSGQVjxLA3\n", + "oNNsk5g80+mRPo4j6vVaBR2kqY5ia7U7hpaoF/iWJ31QJFX1n5QHux6lVMUHn45TqI6pe8MW4Tce\n", + "B3DNgVBumopncyWn7xvfD6de4mAa1iJAOx1ouwJbfKc99ZvNZrUHs122fR/Tk8Ub8expDcc0lFqv\n", + "16vvsQ+Haej1nY53LOBKqXVg3fx5KIR4FV2Y3+YT54eA31ZK5cAVIcQF4N3AU2/6l44gzTLtQhYE\n", + "XLlyhTP33ac9HoSDchSJUUbap5jneRRlya31dS5dukRZlszNzbG6uso999zD6vIcYWi8iF0PpSS7\n", + "uzsEgY/jaMBLSlVl/tmCbOk6tjDbDtl2G0h9ku2Ha3HvMitvK6q2IE+PTXYJYQv3dNGdxuYqXP0d\n", + "yPt2VJse2+zJtj8nTVNKWSIcoQsD2u1NyhLh+VWknBdG2pkty3TobDLBDwLe+973Vuo6S+8rpaRU\n", + "2n88zXPiRoMbtzb46lPPsLB8lMNHT1FvzeD6TdJCEdU7bO/1CJuefs0so8RDKfDDBkWWUyIosxzP\n", + "c0C5eF6ALFPiuIYsBxT5BKEK/u7//D9QpindVgcXLfqJ2lFl4FXIkv39PuubG1y+epUkGZMXJaMk\n", + "odvt4rgBSuR0OjP8xm/8Jo++532UecYLL7zAAw88wI/91U/w6muv8fQ3nsZFMNNu8cKzz3LPPffy\n", + "Wpox3NvTC2ypF17rN27x/d/7UYrhhM8/9QXe/fDD/Jvf+S3e/ZN/k1FvwIuvvsTnn/gyJ+44wZHj\n", + "R0mzlOjiy6gsx3McZmZnKTJdFC5dvMwHPvABGvWY8XjCaJAAwpQ6Ra+/z8L8vOnoMqA0PjtauRqF\n", + "msY6Ho+rCbEsclqtFkVZWoiXLNOe641Ggyyb4LsOIgyYMSZWsiyJw4h0kuK7HulkghuYhd7Ugi1N\n", + "U2o1LYaq13Vajy3AnucY9gkcFGzMfWcLubityCHk21AED4ydpov9Wx22QOpCp6eEigGG9sVRhuoL\n", + "tqu3ego51f0r815tso/E88A34RW2+57WYli4yMJftqOe3mlN1xdbKyxN0Hbi0/DqdN15p8nDHv/R\n", + "S0whxDHgQXQxfhT420KITwLfAH5KKbUPrHB7sb7BQcG/7UiSBDfwCQIfTzjs7uygSkmZ5xQypdFo\n", + "kmc56STFZvcNBtrzeWZmhr/8Qz/A7OwsMzMzB1hfrkUKjqPpZ57v0mxov400K26DMRBuZbFqL34r\n", + "R69y6UxhlYV++lubUWvLOl10LddzWlJsT4ot/PakTOP4tlufHj3f7mK1i5Lpp7odtWznAOB4LoEf\n", + "oEqFzAtjD+qB45CO9MTh+T7JZILveQyTIc1mg/3dXc69/jqB57O0uEAUhZX/g5LaHEx5PrkU/MEf\n", + "fYaTd54hbnSJGl0KfMgVSng4UtCamSMvhxSFJIzqFKWk0WgbLru+8OJGg3wyQSFRqkAp3ZmOkx5X\n", + "Lp3jv/nxv0bkCXpZyu72FoPekLKQuDWfWq1OFNfodrvMzs6xuLzCI+99lJdfepW4UWdzc4ter0dc\n", + "q+ulXC1mf2ePT/2Df8DxoyeII5+5uTl++7d/m0996lOURcHnPv9ZZFky2+5w4+oV3vfIwzz77LP0\n", + "en3N9HFdDq+ssLF2iy9+7Sn29vaQLz7L9/3lH+T3/ugP+fFPfpJbN68z7g342z/+k9x35gwoxebO\n", + "JlIpWo0mnU6XZKhDb1949lm+9tQ3OHHsBPPzC2xt7rE72OHW5hqqlNRi7TlvvTg810M46AR2xyXL\n", + "JjhK+3orqUCV2mM8T3E9jyzN8DzNXhkNh9qmWenotX5vn7vuvIsiz4nr2lytFtc0pOM6SKPOLKHq\n", + "Dq05V+hrNWmj0QDzgBZCm0WhNCuLKfzcFtOqo0fhCN01K/M/fX8cLOmllFXz9k7LvIMdVGDuuQOh\n", + "nDfVEHmeQ57rZaKwcLJwDSPG3juKNNXmdFaVaRWxRaFoNDoVGqCVncWUwhrStLjNgXT6Pp7u4Kfh\n", + "FXtYCMUWc2t+Zwkbb3f8RxVwA5/8HvA/mU7814CfNV/+OeAXgb/5Nt/+ltWo1WoxyTOKPOOf/cqv\n", + "ko7HvPD8czQaOqk5iiIWFhZZWVk28lVdGBuNpr5wjBQ5y3RBUEoiixQc8IW+0BHadc9xXVx0BysN\n", + "XiwcXQhtGn1R6IAFGwxsi2SWZdTjWtWB2MI9XTCnL1S9TDUBAeYBYDsJmw9ov9c+AOyT+Lbu5C2O\n", + "adXlG8fCaQimkCWTNNWYqKNv4AL9ILHdQmm41qV5+ES1OrKUfPKTn2R7c4syz0jHE/JSsr27w9z8\n", + "ArV6A9eL+dmf+4d4QYNme46w0UG4IY4b4Xia8yyVInBdCimo1xqaSaAzJLAuidKEK2NUajJPiGOf\n", + "ZDhke3udn/iJH8d3JJ4rWFxawBMe4yQl8AKk6+huMQxwXY8SRZoWIFI63VnysmRuboFr126ws7uP\n", + "lJJWo8kwSbh2/QYf/f4f5Nb1a/zCL/wjbt68wc///M/zXd/1XexubXHi+HGuXr3G/Nws1y5f5H2P\n", + "PMzlK5e5eOEScRCihMRFct8DZ/nSl7/M1evXaDR0dN7+zg73nz7D9fOX+cVP/UPO3ncfn/j4j9Jc\n", + "mCMvS2QJG+ubOMIhCkIefvi93Hv6LPV6natXr7L84ApZOeZf/9a/5sjqKs1mk52dbWZnZ1CqrOCc\n", + "stTOeXEQ6jzFoqyMkuz1l0307iU3/75ei3E9h8LVCt1Go04UBiSjIb7rE3i+DgH2fIIwoJxaKk6z\n", + "K9JM2wBs72zhuMLoGmJGoyFK+UyHA1tzqIqBInQhtfTf2/FjwRv3dNPLw7draqZhk4N/Y6TwxUHH\n", + "e3CfanGR49j7QcOZjotJEvLMJCGqYm3j4qTUlh6TiaYV287cwhxZdsA6szsq+/7s7ymEqCiI04tN\n", + "oGKtTf/OrVbrLX/v6jN6x6/qH+4Dvw/8plLqjwCUUptTX/914DPm/94EDk99+6r5uzcd//hX/i/9\n", + "AQQBDz10lr/xNz5pGBVela0HoAyjxHW9qjPGpGOEvl+NaLoQHkAJpVSMh0NGo4Q4jqoP03VdSgQ2\n", + "C9CehHq9jnWis8wOS1NMhqM30X/KskS4TrVEtEZY7XbbjKoZg8GgwtWtP7cdiyxulmVZFYxrVaG2\n", + "03/jUa/XK6c8+8S2T3x7EYVhiO8E5Ko0RmEgXJfAdemNhuyb5bDFXO1+IK7V8FxR4Xq+oxPrvcDh\n", + "yJEjZHnBq6++xvOvXmY0Ljh2x2laMwtIEeCGdXq9Ac0wZjDYZ25uhltrN7nj1FF2d/aIwogyLwk8\n", + "46EsS1zhocoUzxV4voMfeGxu3GR3+xYf+5EfYLYzS7+3TZaVuKFevkrhgOfrghVq//jxOMUxdp5C\n", + "uHS7szz+xS+Za9PT7JfAw/dDmq0WFy9f4p//2q9y37330uy0edehFV5++WW9hItjFIq8mHDs2GGu\n", + "XLnMyy9+k/sfeIBWs8alS1fY3tnh0qVzHDl0nNOLh3jl1Ve5/NLLfOz7/iv++A//gO/+7u/m7gfu\n", + "49z5c3zx2a/zxEvf5H/7qf+Fe+8+rQvsKMH1fXzXIxklRJHOTDx8+LBmcTRmWbu5xsrSMufOnePo\n", + "4SMkSULDuF0KoV0cFYJSltTqUbUIK6UevZPBkHq9jos7BUNo9XPoB+SFvr4DP2DiuvTMZOt5upAz\n", + "TlDIapq095QfeNSiBqPRiPn5efb391lcXOLy5UscO3asSnsqy6IqhBa6sF2q7Y5tAdNNiUBKUT0k\n", + "bDMjDH49vZh8i/p0m6r54LW0pF4IpyqmtpA6wr1t8nY9XUCtuVgchwcmdOKAzWOnbB0YMr6No20b\n", + "KNs5Txfi6UJu64olPdgmzr7GuXPnWFvf4vVzl257z293vCONUOhHw78CdpRSf2fq75eVUrfMn/8O\n", + "8C6l1F8zS8zfQuPeh4DPA3eoN7yIEEJ9+Qu/r4uZ0PhQEIaVFFnvHjSGK4vSFJoJnuualO0D8rvr\n", + "6gsmyzL8wLqF6cQUu1S0F4stoHYs6/f71RPWPm0tp9YWc4AyL27DwCzMkuZZ5Sxmcfo0TYmiqCrC\n", + "dhRMkqRSYE5j19N4mH1fSZLw0CMfetP5eOkbj7/pwpheeNivTdIUPG3VSymRSqEcl0JJzl++xJ9+\n", + "7nPUoxiZa+HBeDJhaWGBTrPBT/7E32AySlBlQV6UKKETunVYbMgv//PfYn17l/vu/w5y6eFHDbJC\n", + "4UcxaTqhFukgh26nw3DQBwQOOlA2NCpLz3WQMiVNE8LQAyTnX/4m29ub5NmEh+4/gyq1m1uZF0bN\n", + "51Sq0dRwkQUCx9OZiyBwXI9XXn+NXk8vGDc2Nwkjn15vn9XVVfr7PQ6vrnDhwgV8z6Xb7rCytMg9\n", + "95xGScWXv/oFGs0Gvb1d5udn+NpTT3Ly5ElmZma4445TuJ7HtRs3WVu7Rbc+T6etE9GVgCPHj+F6\n", + "Hs+/+BI7+7tcuXIVHF1k3Szn/e97H5/4xCdoNVv4fqB1BcZ7W9vBGngv9vnDP/pDdne2qMUx9Tjm\n", + "wQceqAquDgMTlKVegI3HyW07G0u1tbS+MAwNbCHIsxLHs1Q6bdym909XGY1G3LhxE8/z+eD3fA+o\n", + "qUWgOaztLujvG48TBoMhMyZ+sG6StCzUZ7vIN2K5b8S17fLQ1IbqPlDqILVKSsl7PvBmN8InH//D\n", + "2xhk0z8fISgKWTVM9vORhSQv8koxDfDGHZSU+vdRiIqabAu4rT22ttjmDg6i9OxnYN/bNDxiodxp\n", + "GLWCfcx0D/qBEgQB3/Gej6D+E90IHwX+OvCCEOJZ83c/DXxCCPEAGh65DPwt88G9IoT4t8ArQAH8\n", + "928s3vYoioLJeMysMevvuB3GlhdbnVRFHEX0eiNqtRp5kTJKBrd5bKfpuOJbD5LxQXdsPgxrbCWl\n", + "pFB2zBI0a9qpDW7naNoFgu1o4zjGb3jV8s+OOfV6nbrTqLqfoihoNnVmpn1wwIG3SRiGt7kJTnN2\n", + "LY49zQF9q8Ni9NN0pMFggO/79Pt9Hcbb6RDXa2SldkXDGP0jjMy++kxy0mQMCDAKs+FwyK//+q9z\n", + "aGmZWhTiuh7t7gxxo0a706WQgqe+/gw/9MN/BeX6CNcnKySduQWuXLnM4uIC6SShVou4uXaNdq1F\n", + "vV4nScb4YUSSjAh9D+FphVscB2zcuskz33yayM3Y2thEFgWP7+6wub5WTWJRFCEc7deNIzi8MFdx\n", + "4LOipNfvGyWfIIhjhoMRfmgnkxyUfhgPR0NeP3eeoshJRhn9fp8XX3qB3/2D36NZqxO1PD7wgfcj\n", + "aZLlGY88+h6uXblCo7XKN59/hlN33smRE4eptWJGvYJrGzeYmZtleXmZQaKThJ57/nnSSUpsTLEa\n", + "9Qb1huDprz3JM09/jb/3v/49zp69n729Ps1m05xLSZqNDBSRcOLECV5+6UVWD60QeDr2ryxLBgO9\n", + "A6g1GhpOCj2iKDCT3ATP80iSIaAzJ5XSqUKOA/39Pu1WF6kKev0eMzNder19tra2COOIJ7/2FL4X\n", + "8gM/8ANIpfCc2x0zc9OsWBgxSbRKtyxLtre3OXr0KMPhkDiOK8Os6cOWAbt8PpCMH3S39to+gC/z\n", + "CmJ8p0ZTSllNovbBoRfwmgtu7zH7OtrAyzXkhmljK6oIxG63q4uqc+Brbt+/hT9tivzOzg6zs7MU\n", + "hWRvbw/HcTh0SIsEh8MhvV5PK3KnsPzpBuyNUKqFcqYXnG93fCsWylfQhq9vPD73Dt/z88DPv+Or\n", + "oo1mGo0Ge3t7LC8vV0k4drtb/ZKlHu2KXBdZm+YiS8lEpQR+gOf6lIXEd13CKKy6Zx2bZOxe0bxQ\n", + "0E/1wUAnh3uuXmQIBI57wLG273EygUGmL7owDEBBmurEa6n0T3Q9D4FVxh08DPQT1kUZc3h7Mxxc\n", + "NJpNEJplbpEf2L6+1TGZTPRC0nUrd7O4ViMzE0yr3QGTsei4AoGDH/ogHB0ZlU707ykchPBwg8gk\n", + "wEy0zD3w+e/+279Ff7+HK9AULNdlmIyROPzOv/1djt9xitFkQrPdwvNrjJKc0SChWW+RpxmNuEaa\n", + "JBxaWKEo7YNDf07NRg1XKFSZsb+3zcb6Da5cvUSRj7l2a137SruC7Z1dZucWtI1rXNMRY0oiHUEy\n", + "HnPhwjn9kC9LHNfXUm7PpygLiiwlrgUIx2U8mTAa9YijmMuXLmp/dM9jPB5Ti0Ncz2NxaZFH3vuI\n", + "6VJzhBQoKWi229y4fp16q4Pnx6wcOsyVazdo94c4jstwmHLXnXfx9ad16Mi7H3mEX/6lX+ZDH/kI\n", + "l65cxnEE3W6Her1BKCSz3Q5CCP7pr/xTHn3f+/jwhz6kXRjTlDAI8F2HIpsghMvZ+x7gT/7oMySj\n", + "CfVancFoRJnnNBrNisPseQ6+55LlKa7jGhhC0mg09XJ+klKv1RlPxowMHzyZjNBJRk329/ep1WJc\n", + "x+WFF1/EEYLveewDOA6MJwlCGdWiUgSenj6dUtGM6yRj/WAajkYUZUle5Fy+cpnFxUWScUKtVq+Y\n", + "NMpOywYJ8D0ff5pdwsHSUk1J8B3HJUJDYFpt+dZQgpICFExKy5lWVUesSr0bys3963oeSoIIfEqp\n", + "vVtc10VISEZjFNBptWg2W5r15nvVbmwayrAPID2FjInj2ODiLQ4dWiHLMnq9fUBDmtrf3SPPtSNi\n", + "alTdusezv/+By6ENg55mtL3d8e1zIzQfSKvVYjAYVMXbjoK2Iy3yA1qdbyxbLTcVgNqBGUxWpKTj\n", + "gy7c8iwdY1bjOiaqykSGtVqtAxzOdRkNB9US074eSuL7rlkiORXEEoYhw+HQKNd00ofneaR2Iz+N\n", + "HfoejuNVEI0dv8LAx5rJu46DMt1Inr81gd8L/Or3PpA4mzQjqarXDoMQpTSeXsoCKcwC0fOoxbF2\n", + "WlMAHmlmgo6LEuW79AdDyjJHCcFoPCGMYiQCJRzWNjZodpaJ6g2U8EiGGVGtyXicMNOZYdjfQ0hF\n", + "5AYEIqA3HtJo1Gk06gSuIB0PCH2Xv/jS46BytrbX2e/tMxj0qDVi/cDNcrI85db6munSYzZ3Nml1\n", + "Wmz3dkjGE2pFTiklcS0mGaf69zfL6tm5OZqNlrlGpO44e7t0Wi2GvZ6WQuc5wyylUAXxpAGuw9Ly\n", + "Mq0wIA5rvP7qOZa/8xB5BsdPniLNclw3ZHFRe8I7jqTZbvPquXOEcYwSgsuXL3P4yGG2NzbwhKBW\n", + "rxOGOvHeRQdGBEFAs9Xi8ccf57lnn+Wxxx7jox/9qHY8RNDr9QjiiI2NLaIoptlsM5mkZHmu7RCU\n", + "TrP3XK0W3N3dZTDsE8cxS0vLKKVIkjFRFBOGddY31mk2m0zSnDAsqNXC26bTNM0Ig4D/n7k3D7Lk\n", + "us47f/fmnm+vtauqG9UFNBaCAAEuEMBVFEVJJLWZ9EgjKyxZ4/GMwxEKj0OjmbAdY88S9jjkcNgh\n", + "Ozx/zESMRdlhSbQ9Q1kOitplihYpkiKABtBAN9B7Vy+1vjX3zDt/3Lz5XkENaP5xQBnR0Y3Cq/fy\n", + "ZeY995zvfN93JPDjP/ZjDURgSYG0LCbDIVVWEHQcopGedpUXBa1OmzTJcF2fTrdPv5+TZhmHtQnY\n", + "bBZR1kmKHvJro2RtrZzlJ7DuSunpPErpwQ56uINEVBUik+RCe6RU3B8Dt9D2DKmKsaQFggYONevK\n", + "8k8OUikqM0lLx5Fr166xtLTCzgPbui+GoKwUs/EUyxJN72y+nudMs0VCw+3bu7iuW2fQVu38Oaph\n", + "oDlFWQhjRFfV1f6cMKEFUh5KGU7428fRd3Qq/SLAb7JTs9uZIBn49glOpaHtGHjEZNt6oEPeQBSL\n", + "wR4WPYp1dtztdpvhtQaLNmWSwd2MNNZ4dpsybBEeMd/DYHemObEo4NEioezE9zXnXRR5E/ANx9xU\n", + "IG8+bFv7kRTFHKIxjVXVkFCaAAAgAElEQVRtaFVn+VWJquaj2xCCQimkZeO5LkkUa0ZJPZ0ny7X9\n", + "rq4EXCopuHXrFqur2vY1KxRnzu5wdHTM6dUH64BfYNkO0+mwpqUd0m752JbmMZdVSi8U2DKliCfc\n", + "O9jjYP8eVy9fRFUFw+Gh9qSgYGm5h++52FLQCVs88fijfOB978VzHfK8YDgaEXbb9Pp9XN/HTnP8\n", + "MCAIAuIkoawgbIWkWca/+IXP15n3DNt18RybsigYHh3zX/7Mz/Dxj36MJElod9vMoql20lOKX//N\n", + "3+A//vavM6iWOLWxQZpl7Jx7SFNQk1SPPev3UEpSVoqb93Y5ODgg8H1+8Ad/kC996Ut893d/N7/9\n", + "W7/VQA0a4tOVDYJG+XvmzBkO9vf58pe/zK/+6q/i+z5//nOf42Mf/RhpUdBptzm1vsrdu7cJQl/T\n", + "TqVhLQhms5gsySiKin5/pYYtCixpY1se02mM61UEQQulBMvLq5oOlyXaiCuaIdAw5vHxMUjJdDrD\n", + "cXQCYqpE1/exA0lWVQQ9ndl3vS5ZnpImMR7au8OxLYosoywKXr90iZWVFc0+QlAVJRWiWT+e7ehq\n", + "WM4nAZWl7rWYONAIXgBbAKKq/dT/5KGqnLyq8ELt7a8n0WtDLSHmtD3jR2LbNgh1Qkz3zDPPatV0\n", + "nOiquB7aoFXbcbMZLGbERtNhEiqlFGtrayeYXoseNYsxwuDoi3i3lLLpmxmYxkC2b3e8ozMxFxsW\n", + "i14kJnjatk2apPXOLKiULi8ar2FVUJWAELieg1N/nUX+qHkY4KSwJk6Spnm4WB4tZvuLP1/0NVjE\n", + "zAyebTYMk2Gbz59j2lnTXGo67VVZ06dU0xU31+V+h5kwr/9YTTfb7NhJEmNZdj1IQNO5VP29C6Xw\n", + "/IBup6MnkQ+WGA4n9cMkyIqCVqvF5z//eT78oQ+xvrZKFMcsLS+jhIVtWQx6Xaoyx5IVWTqjVDb9\n", + "Tp+wbTMTEktktMNQc7Ul7N+9zbe++S0cWxBNJwyHxxR5SpLEOJ4NZYXlOkBOkWTM4pi/+GN/jccf\n", + "eZTR8RGua3P2gU2msxnD8YgyizgYHbG5tE4SJyilSOpRcffu3qM36DMejxFS4noeWZ7hubrJHQYB\n", + "rVaLmzdv4roOo9ExXhiQZClBq8UXv/hFHFkyS2JObW0ym0VY0qIoKy5fvYaUFnGUsrS0RKfTYXnF\n", + "xvO1h/i1Gzd4+umn2d3dpawD1dLyEnatsLRFRZrGxHFSz+B0OLW5jio10CCEJIpnlKqgKCqOjoeN\n", + "dbHJmHXS4jCdznBdD0VOVUlsy8d1QoqyIM10E73b7WrVZt3Qj2YxQeAS18O/QTKNJhwfHRHFMbMo\n", + "Is0ywlYLWRYN93g6nSKkZG1dw1mO4+BYkCQ6g53NZmRZiuc6dV8o4N69/Wa6k14TFkWZ17BnCY5T\n", + "27cWqGqexOmFZdVBtw7WtVFVVWpq7H0PUWJbgslk1FwnDSfNVZ/aKCpsAuetu7u6VxQEhGGLu3fv\n", + "al+bGnMvirmAsN0Om3iQZVkz/NywxkxgN2vR6EkM7XiR0WYoh4u9tkW9iTl/4wW+SEF8q+Ods5Ot\n", + "OdfmpE1z0Jy8eY2UEt/R7A3zxbXS0mrMrESt/jKy+BOUofq9Fo3SdfCsiNKU8Xi8sNvqh3+R92oe\n", + "RHOO5r2MCZbv+w2FME21gALmTRvzIHQ6PaIoOtGNl5ZFVRZNQ3Zxcs79DgMv6YdSnuCWG0qiUtrD\n", + "2XPnRjlCCBxpMZ3N6PWXkBJmsylCaBqnJdpkqW6CJXHGmQceIE3ihsZVVVrR+sjDD3MwzbFVTjf0\n", + "UDigIu7cvMmZrXWm0xF3bu1y5Y3LxLOItl/x/icf5Ad/8AeI44S//bf/FlWR0e14pHlK0Ao1YwaH\n", + "laU+/9VP/Q06rYA0ntJuB8ymE65evcL29jatdqhN+JXi2htX2dw8TZIkdHs9XN+j3W7zyqsXaIUh\n", + "B0dHtFot+v0+8WyGYzvs3bnHgzs7dSarF0+aJEhLsnfvHs8+8wwvXXiBvKo4Go1oBSFHh0eEYYtz\n", + "5x5BIOl1us1zW6ANzJ544gl2d3cJfZ9vf/vbbGxsMBwOmU6nDV+45Wm5dK/XO1HFObaD57kkScq/\n", + "+bf/hldeeYW/+bf+Drbj8P3f/2n+zt/9n3j00UdPJBm27RDNYhzHY3m5g+v5JEnCbDbBdR16vR7T\n", + "2aRpDuZZhu3YHI+GzOIpr7z2qq4884xer8t0qt0+kYLdO7dphSF+EJDEMZZtM00ipknMNNI+2EES\n", + "EXgeSZbWrBOtHQ1bLQ4PDtg6vcnw+Jjd27sM+gMGgwFFoTehdrdNluvBDZVSVOh5uJZtaVFNTTOc\n", + "j1HTQ1pKpRD3bcVBmk41Th/o4Q9VpSjKgrIo8f2grqbnjU2lFE888Z56YHmL2WzGztkdhkdHBJ5+\n", + "D2M9YUgSs9msWfudTqdBAkyQXazEFxuS5p7N7519ImE1vHJdQevfMTHFUJj/tOOdG+hQ86JNZ9h8\n", + "SQ0rzK1X9RDiqglyZtczXxjmEnLDyTbDihdtH01Wa3Y+t35tv98H5tl5XA9uMMFbd/ajE+pK85lm\n", + "N12kAMmFDHquApv7JpjfMc2KxfMyPPC3E/IsQkL6vd3mehguu1KVVrst0KukgF6ng0Dw5JNPcvHi\n", + "GxRVRWAF5Kl+7WQWQZmjFIStNkmSEEURx8MxrVab73jm/Xz+l36F0dE+k0lCGHQYTSf4vkM87LM0\n", + "6DIdj/nuj72fF55/gb/4o5+l3W5T5AXD6TF/+Sd/nMtXrlKpCr/dYhZFKODSG6+j0pRf/MVfJE1m\n", + "PPXkE5RFgRSCl156iXc9/riexBOE9Pp9fNtlb3+fRx55lL39fR7YfoDeoMOlS5c4PDzQ+GU0Iyty\n", + "ZFVot8vQIwx9jTPbDrbj4NkWt27f5jd/+7f0rMxWm6OjIwDcUx7rpzaoCsWP/MiPcvmNy5RFyfHx\n", + "kNFoxMHwkJ2dHdbW1njxxRe5d/cujz/+OG+88YaeRN7paKvQ2azuSSieeuopiqLg5s2bHB0dIS1J\n", + "WgfYc+cepr804Oj4iCAMEULysz/7s/zar/1aXW0qxuMJruPT6XQ5OjqmVBGBH+I4Nq7n1vDICMuS\n", + "HB3tMx5PyLOMzc1Nut02y6tLbG9vNwFoPBrx0vkXtKz/yhWKomBvb49+v49jWQStkFmWcu/4ENtx\n", + "6Ha75KokiiPafsDh/gG2bRGnOsB7nscsjsCSlEXO3uEBSZbWTX7wIo+8yll0DpTCqiGPWshTVw3a\n", + "4nVKnlfo5fBWknJtYZsUZkSZjW0LqP2SQNQDObR7pef5RFnSeB+hVG31224ERnriUEpZFBRl3sQr\n", + "mHsamQD9ZvMuI6RaFOyYGLHoK2NgqkVItaqqRrjzZojmrY53LICbzM40BEzmbb6cgSIW/QYMRNF0\n", + "resgZgK0FLoRUhYZWBaibl46tsSS4AaaT55lmZ5gvpAtm+C4yBXPsoxpPfsQaD7L+HWbjcO27YY+\n", + "uLi5mBsmhYAKvchqPxIppJ4jWcM4BrJZxMXefJRFgaqq2gPdbjrsGufWlDnT2S+KrMbzNJVKY38W\n", + "wi546sknefmVVymqumqBpqP+4M4Ol69e48GdHW7dusWZM2dYXlnD8zyiaMbP/9zfA+mQZxXTWYzj\n", + "Otg2XHr9VSxLcXR4hFDwP/z1v0qRp5SF0iPpiownHnsXvuvywY98lDhNsByX/+V/+19BQdBqc+/O\n", + "bcIgYDJLePjhc5xaX+UzP/ADDEdTLr3+OteuXeP6jdtce+MSlm0zGAy4c28PBayvn+LoeEi702kM\n", + "jGazGWUS4bouS0tLXL58ueHjX7p0ia9//evkZYFjyt76uRsNx9y6eYvtM2fxPI+vfe3rfPr7PgUI\n", + "Njc3efXVV/mVf/dLHB0d8a//1b9iZWWFH/6hH6Lb7dLr9Th//jz9bo9WENJtdxCVvm/nHnqExx57\n", + "DNCb+6VLl7h9+zY3btxAofjAB56h0+5QFHqQ8drKKu2wxWQ0ZrC8hG8FHB0NkdKi1W7j+QGO62po\n", + "qsooopgonnLr1k1GIy2yefjhh7Bth42tLWzXa9aSbdtw+jTvefLdXLhwgaIoaLfbnDlzBktaRHHE\n", + "/sEB337pRa5eucZ3ffcn+N3f/V2iWcQH3vc+jipFr93BKiXCscC2eOXia+R5zvXr17l5c5eqqnjs\n", + "scd45pln6PV6lHlKSYXr2jXH2SNOU22XW1TYtoOqlP55nNCyjYWFT57dH0IZT8YURUZneUXj61LW\n", + "laPE9XT/wLF1LEmznLyoELYO7KISUOnBzQYW1dbHZv6s9k3xPKeJERrfzppYpaFeQ7fMm7igBVd+\n", + "EwcWVdiGn78YwE2/zWDlrVargUHf7njnhhrXwc7g3UATLBclweZLNQZSJzik851c74pzsY55jeFO\n", + "m6Ds+35tAznPkk+wTqjpemruj7JoHGXmD5pAned585kGYzO4l3Fl0zetarJr872FAD/wTtzYt6MO\n", + "haEe6GyoTbZtY9k17icWHNMkCDEXB5VFgULiuB6VEpw7d46yLPD9kEpVOFJSoQVAcZJw+cpVULC+\n", + "vk6lYDw6JooTup0246OU0TSiFXS5ffsuQegTxRPObJ3ixs2r9NoeVaGoioQ8Nz7qlmZvCJvNjU0m\n", + "oxHCsvA8n5WlJQ6PjomjiMHyKmVZcGv3Djdu3kRKSa/bxbZsXM8ny/WGeObMGVxP+3fs7JylKPVG\n", + "GIQthqMhvX6PPC/I8pxuR9uiHty7xz/7Z/+0bpSnBEHAyko9GCJJWBoMWOksI4VkujRDVRWbm5tI\n", + "IXj94kX27t6rvXMS0jhBuorReMQHn3uOra3TPP30UyRJwhOPvxv1F36c/b09bt64ieM4TCcjijxn\n", + "eXmlhrpyQLG+for1U6d49rnnNKSTpcyiCN/zoWZd7OzszLFXJN1uBylthJCkWUqaZ+R5ysHhPa5d\n", + "v8J0PMKtjaje854nOLW+TpFXJGnK3sERrVao2SrTGd26UnjgzDZplpAkCXdu39G0N8eh0+3S6/bo\n", + "9/Rm9Nijj3H5jTdY6g+YjseErRZlWeAELmcffJDB8jIo+KEf/iy+77O3t8eVK1dYWl4hiiI8IcGx\n", + "yMuCrCgaQVKexdj2XPhSFDlXr15heniDslSkWVFn4T/xJ9ZE0GojUDhOAAhc10NK/WxpLFppnxjA\n", + "rTcwpZT2PLc4CXeoOo4s+Kn4vncCIQBjr2udsMlYdCNcJF2YZqaprs1h3FCBhmdeFMWJXhjwp1rK\n", + "vqMB3GTUJsCa8sHgS0YlabLvxQzZBDzHcQjDsFkYBuc2jYRGfg9N0NVlifnDiQtuyp8oihq57GJg\n", + "XbSZNeoqg2GZKmKRzdIosFTeNE1N09PzXG1OtCCD1+q6+L7XTMNJWo242CtI05Q8S5rrqA3/cz1O\n", + "zdK0JNf1GE0mhK0ux0dHvPfpp7lw8RJlXtJqaxx/Gs3Y299ne3ub0w9ss7LU1w9a3c1P04TpcEIQ\n", + "tLn06gW2t89iezanT6/y8svn8T09sSdLc4qsoFQCUfvPjCZjHn3scZIkYXg8pNvvkcYxj5w7xze+\n", + "8U181+X06S1++qd/mqOjA8qy5Mzp04xGI5RSTMYzBoMlwjDk6huvsryy0gzVQFh881vf4ktf+hLt\n", + "th5957gOLRHScTR743/+O3+3KYM7nW7N5Z4yHo8bOfvB8QFKaf+JP/iDr9Lt9rAsqxlafPPmTYZH\n", + "R3zgAx9gaaXP5/7859jb29P3OMtJZzGppWG4TqvNux9/vF74mkY4m83Y29tvfOyRetNPa1xcSkmR\n", + "l2QUNT/aYXt7m+eff57eoE9VgRAwmYxwHD3k4er167x28QKj4SGrq0u0WiGinuDeabeJohhL2oR+\n", + "iBSOFuQ4Dp21NYQQ3L17l7t37/LgzjYPP3QOgN3bt5lEWnzy8ovnObW5gSpKZFlxZmOT2WRKnuXs\n", + "17TBvMz54v/7q7zrXe9iZWWFy5evEEURh4eHnDun33MwGBCEIa7vEYYhvu/rBCjTvQApBFk6Z1Op\n", + "ouT88S0kMIpHCHn/UHX9xi5nz+5gWQ6e59UCJr1WpbBBVORVTlVpFpcOkmlT+ZuRadS8d6UUZT2o\n", + "pSgKVJI1AdWork0wXoREdBwpTwhyTKJmGtGLKs5ebz5hzNhj5HnO6upqk3SaOPl2xzsWwM0XWdxh\n", + "DE/aKPC04GZUXxRjyk7DkzZZd1nqrvai5NVsEKZ5aWAXE9iNQsscZhc152ZKHtM4NUHeYF6m5Fls\n", + "OC6qK81GY7BvSzqNNN8E/TTTtKXFLMDg//c75hz1k1NNpJQEoY0Ulm7kqFIzR6RuDBkVnxYhpQgp\n", + "2Njc4OULrzbmXnme44ct9vf36Xa73Lx5kyJPNXbp2o1IKY4TWt1lHth5kFanw/7ePe7cvY1CsL6x\n", + "xWg0xbV90kKRKg0dZElSQxsVb1x+nSefeJIKiOMp3/mxj1AUKTtndsiLjDSeooocW8KF8y/oJqXj\n", + "4whIZ1Omx8csLQ3Y3d1lMBhobnu7zcsvv6w3YVuLftyaNaBUxWOPPdroDaqqYn//oPHCcV2X0Ug/\n", + "Y9tbZ5jNIqS0+PT3fqpZPB/8jmeB2nSobg6KquT44BBHWviuR5okDAYDsjTFtvRgW9Be3QiB5Tr0\n", + "eoPmHguhudaaq+xosZMQSGWmoEdMp1OWlpbZ2dnhypUrSCnpdnoMhyOSLMOyXF44/xJVVdTvpUjT\n", + "DNfSSUaRK2xbMotTiiJC1glFluaNaMx1HM5ub3N8NOTOnbtMJxP80Ec4DhcuXOD7vvd7eenF81x8\n", + "6RXCICApSpb62v/76vVrxHHMw+fO8f6n3stTTz/N8HjI2pIe3bf5nVtaFdsES0GcxsxmEfE40n0O\n", + "ObdatYTEtiwEgqN7d/Esj5zavVDeH1ZcWdvAb3Xod3s4jl7bZVWCsmrhjKobk3N6ojGi0tVwSVkW\n", + "evqP0ApwIy4C0LbUOgE01fSi8dwiEpCmyYm5AG8e7mLUwydgLGiqfMNcmU6nTbx5q/GK5njHAvji\n", + "ZHaY86WVUg0zRE++9poLYXBf82WFEI21q8lcDT5seJ6GT2lcB01AdhyvyWAXb4YJumYXNJxOsyMu\n", + "NhVMpvzmhqrZJAz2NS8NdcA3eLmUog7i+vPDMGw2hvsd5obPJf1uAy3pTWbeyNEMlwpVKRzbxnMt\n", + "8qIkL7Uqcnt7G9u29MCGBU+HrKg4PDzkK1/5Cn/lv/7LHOzvceXyTR56cId2q8Us6YK0qZTij59/\n", + "kW63w3g85MEHdxhNIu7eO+TBnYfZPzjGbkvaYYt0mnF6+zRXr19h8/QphKW0n4mQJFHCxz/6Yaqs\n", + "JGwFfO0r/5Hv/Ph3MpmMWRr0KIuK2fiYlaVV8qLAkXpI7kMPPcj16ze4fvMGr1y4oFkMaGtVCyjq\n", + "TbssM87ubDMcHqGU8axQjZeIgbosKYmnMba0GI3GrKyuoMqKLM8oiqwe3zajpKLValNmGa0wbPjN\n", + "rus2Qz88x22eG9uyUQjiKK2fEa02DNutOpBb2I5NXuZ6UElV90scXw9YmI148skn2d45y8HBAVEU\n", + "cfbBHQZLyxwcjvjaN79NK/CospKyBIFFu9snmk6ZzWJaoYPvtXDbDpUqGQ6H9RqxaidISzNPXI/z\n", + "58+ztDRg4/QmaVWwtbFBGsdsndrgtQuv0ttqsdTu4UiL4+kx3/rWH+N7HmfWNwjDkN/58m/zkY98\n", + "RNPvegMO7uzheT5xnOMHPqPhCD8McLBpBQFJElNVJd1uC6HQ3iToWZnL3T4Hd66Tp0nNdLl/Jnru\n", + "kXdRlWaClp70ZFkGelVNAC/LokmgbHvuu6KTPAuh5hoNFoJ9lhdNk9Fk4fPgX51IvBabkcZozmTf\n", + "izxyy7IYDocnEjXze+YzTAKqnVff+ngHlZggLd1oKAs9gCDPMz0r0dY3odvVNznLcgTzAQi2radG\n", + "O46HbbsIIYmTBNsWGkapKpRpJoo6K6sUZVVhVQolpKaQmWkdUnsZC7loZjPPlPRGoB0RtX+CnsJt\n", + "WfIEu0TWXF2DgQe+T1HqhyqrN5QMRZrUHHIpqGrcXptvFSRJfKKrvXjEsbbyXNyIjEGPebAMDxah\n", + "O/wG/6uKEtt2sGypB3bbNmtrq1y9dh3L8yjKEoRkMFhib/+Qdz/2GL/8y1/gQ89+Bw8/dI4knjFT\n", + "CisMydOCw8OjuiGnWF9fIQx97u0dsLF5mqJUrKysUVpanjwejdh+YJsXbt7k9OnT3Lxxg63TW3pD\n", + "s3TP4/qNXc48cIbtB85y9eo1BoMBYRDW3tJw4+YNWq02vV6P2XTGbJawurpGmhdceuMK+/uHepq4\n", + "0HapjiVwLAeVFDz+2OOMJxMCP0AKiVdjo/pZskjihLzSJXSWZ3Q6beI4IopjlpcHWgkJ9Ps9ytpP\n", + "x3JckjhBWpbGVoHJZEKn3akZU3rjdlxt8xCEWsBSVdqjI4qiBh6sqA2NKqjyAlvaVKpiPB4xWOpz\n", + "fDzE9TxWV9Z0z8J10batulFvqkfbthseuuO4LA2WEFhY0qq59w4rK8tYls1oNCQvchzL5o3XL7O5\n", + "tcXTT78Xz/cZTUZ0Om1Gx0M8z+eZ7/gOwiDgjTfeYGNzE9dzGQwGrCwvc2p9nW6nS5blPHzuHBdf\n", + "e43V1RVUVdEOWyRJghCS2XTCYNAjTmp2h9BmdYHnIaRAGud5BWVVMJ2OycqKJC+Qlo207s/GmE1n\n", + "WNKh3fJJEh2gTaVsyAcwHzJu27YWGJmkjdqnPNcNf9uxMeZaQugpRJohU9WMuTlsMld3GorvfAiD\n", + "wdoNO84EZOp7bZK1xeTxrdh1b3e8YwFcKYlQtd1llWn8yXJxfYe80Ioq29KZSFmWGicsM3zfIysK\n", + "bMuhShL9FURFlik8T2dnjmV8hDWZ33ZcpG1jS6GlsqKWm1cK3/dQ1NCCJbCYX9SihmJsy2qoT3le\n", + "AHOoRADKkki0/7EWHJX1mBHN887KGuN2bZ351L+rhNCNxbosk1IsGNPf79C4/aKXsj6nfCF4Sy0p\n", + "rh9Opy6nK9BqUBRIbebz6U99kn/yT35el4BCIiyHKM6Qls8rF17n/e99ipWVNXzXxhbg2Ba7e3fx\n", + "fZ9Ox0NaJbd373BqfZ08K0iimH6nT1UUONKmyktu3bzJ5vo6rmUReD6hrwUgRT7vsEshaXX7+GGH\n", + "pRWr5sYqZkpzYts9HyfQnN3LN26wsbYKCopC8fwLL+GHPUbTXVqttr7fUuP1WZrwuR/+DL4f6ClD\n", + "NWynext2rSjNcRyrqbz80Guez57bacyPijynXMA8BRIpbaSQZKkO8I7jUSkQsi6/pUVZ6rF0hjIq\n", + "bTO9fe47bwmBsGzNWvDmsFjYDnV274V1sJC4jn5uhYJW4GNJAdTZo2VhO7oJWGQZeZEQuB6OJZCB\n", + "QyUEN2/d0HzuIKDX7aMUPPLoY/XzZzMea6GQhSDwfa2yHY8Jum0++env4+rVq6RZRpokPHD6NPv7\n", + "+xxPR7z3ve9FSkl/dcB0OuX67g3chcClIQMHx3YJwoCWbGmGSDBvLAoJWZLS6Xa5cv06le1RSpeC\n", + "Cnl/Mz5818OSNkkyt7Itirm//pv1IFmW4TpaSWwCsGVZ5EVer4P52irLkuls1oyPM702A4fo50RD\n", + "mlosNHchzfO8Cd4m6zb8fxOszTkusu/MDF3gbRlp5njHArhXU4mmk6h5oLXTjML3XWxblyN5pnfS\n", + "IPRqFWNOUWoxT1EWoHKktOvsO8Nx7Dor16ORyrKgyDKKrJ5OYju4rkeZFZSqIsmzpuHgOzZZPXFd\n", + "KS20KVHkpcKSAsvS5Z2qNNc6CEPN8FAlpdKlcV5UKGEhpM7+XU9DRWXdgYqzulEjLapqziYxXsqG\n", + "Onm/481SXCHmlrRm09GbisZXizwnLXLsUtvzDwYDZlFEJRRpkXNqdY1Hzp1j72jEaDTBcWoZvxIk\n", + "ec6li5egzPnMp76HPM2YzfIGr1taWmL31i4ry4MaA1QsLfWxHYl0bSxLUCSammZZFlevXmVtbY08\n", + "zzl79qyWmNdQUhRFeuh0FuP5DvsH+zxw5gHu3buH53sNDNTtdFlbW+PSa5dYWVvj2s2bHA6HXHjt\n", + "Iv3+gDDUjodxnCKEAlXx3HPPcXh4eAIKM58LnODlL8Jmi4rYRe491BQzJbGsuahrkY1g7lXzt9D2\n", + "Bm9mKhgqWdMwq0vsRXc+s9AXfaON3YTj+vVz0274/2UJ0rNotVtaJt8bkJFxNBrR7nY5ffp0895Z\n", + "lmNb85F/WaaHflu2ICs0N3oymfDaa6/xwQ9/mN/+zd8kjmN2dnaIooh3v/vdfOhDH+Jb3/oWN2/e\n", + "JAgCVldXkVJy5vRp8jyn3W43lDrdi5k1VWNRFNy+fRuYszLSehDJdDbDbYVUlaoz6bcKZBoirdTJ\n", + "RmEDh5j7xVxHYV5nAnGe57Rq75o0TRtLaE3Jnd9LQz4wz46eLqUaQkFVVYxGo4bssPhMmGdPkxe8\n", + "5n6b8zONT5gz4/40Iyt4RzNw1SgvF5uEWZaeKEGClh6JluU5CAhaIarOfHXTQdUPfEVQPyRxNAVB\n", + "Hax1AyWKYoqiwoxB8rwWCEmaFkhLIi2HWZzWxjo64EpA+wlb2tBJCWRVT68WWuGlEAjpIJReQNQZ\n", + "cFlVFDX0o5sqmrrk2B4KpaezVxoy8TyfoqhwHLMI33rXXVR9mRJrUXFpAk9ZldiOU1cF+iEZj8d6\n", + "0ryooYPZjM/+8J/jn/9f/3c9hCJHYGlXOCGZJjGHwyG/95U/YPvMac6de5CSgtl0yt3bd8izrAmG\n", + "e3t7rK+foiwLbM/TJlpVxdraGmEYMplMKIqimW5ixFFhqLPM2WRGnqUIFKdOrXJ4tM+pjTXu3LmD\n", + "7/sMBkuMRiOSNGZtY5Ov/dHXuXdwwHA80cZRvkecxGjuO5R5zvd/5lPcvn27+UyDUZpNcxGznM1m\n", + "zaIx52mOxSzOQFcalkgajw5jCBYEgbYxVWgLiLJEiXmvxbyPUfIuCsF0hpYv3EuJ47jN7+oJN4og\n", + "0MHFb7Wb12tlcjlNTB0AACAASURBVEan06IsSlpByGuvvsZzzz4HlsWp9VPkC453hiJnyXlAchyb\n", + "ssyRlt1seq+//joPPfQQB3t7fOITn2B3d5ft7W3297Vkfnd3l83NTU05rSqGw2Gjas6znMlkwmQy\n", + "4dFHH236P3P+9HwgyebmJnEcNxv717/xRyhVkecZtqMl9vc7bNtGOBZpujgIYt7LMkQG04C0bVvb\n", + "LQjxJ9gexlTPvH5xTZn+3KzOyM01M8+W8WNa7EmZ62wqY/OsmSzb/L9F/rdhsP3/HWr89izx/4yH\n", + "bbuUpWIWJWR5iZBSu6i5Ab4X4roBAos81zQx7WXgkKYZSZJSlCVV3ZCzpMR17KZccxwHS+pJ8kmc\n", + "MBqO9Jg2zyPwA5YGS41as9XWkmvf92mFQZ0dVc0CtywLp7bTVDUHu8j17MYkSUnTjCzLa/jDo9Vq\n", + "E4YhYRgQhCFe4OP5+o9SiizXczjzQo80s+25hwoIzV/O7m8nm2VZ07E35RbM6YqLWbnreeRlobG+\n", + "2khJURL4PmmSoMoKVVSEns+TTz7J/t4+oP2Qi7Ik7LQR0ua11y+zfzzEC9ukRYXveWxsbCCEYG1t\n", + "jaT2lJlMJmRZClTMZhOKImc4HDY0vOXlZW0+FceMx+OmC2/mnJZV0TA4UBW3bt0gSeImMIwnY1zP\n", + "pdUKmaYZB6Mxt27faeyItWukJI6meK5FK/B55gPva5rXxijNHIYRsFjRtFotgiBoaH6G4mUyZSFE\n", + "Y62Q5RmWbdFqhQSBTxD4hK1AM2nShCxPqaoSy9ZeM8aczbCsTIZmPq/dbjdZYBD4hGFQL2LjjV82\n", + "jI3pdFJbAxtFs1b6qlqxmNbahMlsRrvTpVJQLGTyVVU1tLXj4aE+T8tqAvbR0RHvfve7efnll3nq\n", + "qad45JFH8Gt/c0OL/eM//mMef/zxJhj+4R/+4QnSgGNr6GBzc5NnnnmGCxcucP78ea5du9Y8szoO\n", + "2M05dbvaP/727dv4QYBlzTNo8+/7rYksmw8VNkGziQN1lm02i6qq6Pf7dDqdxm/GBHtDfKiqiiiK\n", + "GI+15bTZ8MMwPEEV9n2/MQQ7Pj5uvot5D+ODZCiT5vzerLBcrMrSND0xk/fPLITy73/9N5BS0Ov2\n", + "6PW6TfllOzaqbkRaUmKVkrzIyHO9C/teGyEUeZE1zUXQZYyqrSRtDFOjBCHwAx+BOLFghTRUq7Qx\n", + "w3cch77X0dafC+VUVRohgFN3qevGYFmBKjVNSenxb/FsSl4UWLYO/GVZNBN9PM8BpfBczeJAgRM4\n", + "eop8vdN3u96JQLN4LJrWm3LbZAYm8wC9yZRVCWj8v2mo1NlXp6XLWulIcqX41Pd+Hy8+/yJVVVKU\n", + "OY5jNxx4v9Xi9cvXiOKUJx5/F88+8ySXXn6FtbU1tHDC5c6dO5w+vYUeX6Yhlv39fVZWVpqHcTKZ\n", + "NLYE3W6X3d3dZhNVStFutzjYP6i9JmyeeOKJxhq11W4znc4YjcZMplO++s3zZHnGZBo1CtKiKkjH\n", + "EbYUHOzv8d/99E+TphF5Xja2rr7vN6pdUwov6hEMvrm4+A2MYc6zoQDW2dRi2WsCxWI/Qkqpx9qJ\n", + "udf8HD+dT3s3C99x7Br+mw84MDTYJEkaqAdgPB7z8Y9/nP/0n75aY6ylHvgQtlBoBk5eaKWp1hwE\n", + "Jyo3g+tOpuNaQOdyamOdKJrx/PPP89xzz7G6utqwwkwj8OLFi3zsYx9jOp2yvr6uB1e021RV1Qx5\n", + "oNKsqv39fY6Pj3nPe97DwcEBCE0xPDjQ2a7nuhQ1tOF5HoOlJQ6OjomSBM/XIxPfDkrQvQyHoshO\n", + "iOFMlmzu9SJVt4Ggam8hkwkbDrlhhJlAvHjvFxuP5j4HtVGaec1ihWX+ezFgL2b5piowm1+jsF7g\n", + "mb/d8Y4F8NcuXaYo6tFDqqjFEBnSstja2uIDH3g/W5tb2NLFcXxarZDxeMx4kiCkQkqBIx1s29LE\n", + "+0oibIVlu9pMvlRYro0tZJMV2HVWUOQ5Ao0V54WR4etgnsRFc6NsW/s0zxdfRpFrtoKmn2k2TFVV\n", + "mnONHs6QZDozqDC7aMFsEjcNDQN55IX2eTAPlmmEyLcQLZgM0GSIJovU5zYPHkWZIy2pB1KkEVLo\n", + "QN/pdCiLQpf3lYIKfMchEYKf/e9/hr//v/8DQj8kLwvdLEPhBQFpnPDa65fp9Ppcu3aJj374I7Q7\n", + "fS1Lt2yyXNucmgkqVVVx+/Zt+v1lZrN4AeYxWUZOv79EWer7mOcloe8xHk84u7NDFMe4jk9RzoiT\n", + "TPtwDAYcHI34vd//Awi6XL12g96gi+c6TKba30QISOKYv/BjP8ry8oC4ts01C6KqqobWaXBZMyHG\n", + "lNvGE8csRpMBmXJ78Xen0ynT6fREVg0nMyrzelXpxei5NkpppoN5beVYqKrE9+YzU6WYe2Y4JrjX\n", + "G3aTSSP5nk9+D7//+79fBzFNnZtMpoRhC8fxODocsvPgtm4Av/5604PodDqNSM1kvpdqK9g4hulo\n", + "wuapDYbHxwR+QDzTU6f27t6j1+vhWPU5WTZ37tzh6aef5vLlyzz00EP6OtXzZpeWlohjbQi1vLKM\n", + "Au7s3qbdbhOGLcq8xLEVbs8jzXL+6I++yYWLr5FkORUFonbWfKu+0GJ/wGTbSqkmCTKZ/qI1q6qK\n", + "BkozQdhsogbSNdl1nCSEYdiYmB0dHdHv95tM3FR2eZ5zfHxcV9/hiY3BfIYJ6ELoST3mnAeDQRMb\n", + "DPXYqDL/NBz8HQvgD557GDNZfn9/XwdNR3sW3NrdZW9/nyzLWF/WirHNzU067U7DrZWWRAqwXRff\n", + "1/L2vExQKNqtdj2MARzbxvc8nFrxWSmF5TgUedxg31VZEc1S8jxDmukmRUmZ183VunqzhIWw5+rN\n", + "NNVNUyooVIklrSbj9DxPD0QVEjtsNzeyLAqqssS2bALfxvGCRtnleZoe9lbqK4O/LtrlLvLMzc8c\n", + "6Tb0RB1E9AY2ynONxUtLb0IIirJAeD6eLfmeT36CL3zh39JbGjQPe1VpnK/V7vDyhVc5vbHCN54/\n", + "zwfdgE6nzXA8w/VCwMLzXMbjCVmW81jNbOj3+1y/fl3PpByPSZKEfr9PVVVcvHiR97znPQAcDYe0\n", + "Oh2SpCCKMxQO02mMF3QYjmdcvHiJb3372wDcu7VLu9OFSg8IcG2HJJ7hSMHDD+3w6COPUJWl5mkr\n", + "tbAxzp3jtChprng1GZSxADXZt9mQFrMhkykZ+MMsZKMgXtQNmIzX/NuU42bBmvczY/XM50ZR1Nxn\n", + "bcbkNEpdc2RZiu06tNstxuMJluWTZTrYZVlOu9/n8tUrjCdjTp1a59FHH20qAJOhDofHgODo6IiV\n", + "lWWiaEq/32N1daUWDnUbeMNscltbW83z5jgOzz33HL/zO7/Dzs4Oly5dYmdnR9P46s0mDEOOjo4Y\n", + "Dof0Bn1anTZlUZIlaQMhZlmGJW12zj3Ey6+9SqvdJo6GJ6w17nf4vt9YNC/CiCZgL9q5msNw/402\n", + "Y7ER2VToC5CMMdgDmsx6cbSaSfY2NjaaoLwIgyx+rnkOWq3WCXvpLMsaqM4Y+Jnv8XbHOxbAn3n/\n", + "+2svD6kpPPWOeHx8zM2bN9nbu0s0m7C7ewPX9RgOj0Do4a+Oo8suQE9Otyw9BNmV5FmG69W7Y64z\n", + "ErfmfiIgDEKWl5YoshllWdDr93j0kUdZX19HOj6BH2gKXt0gzfOcPMnrstqu+eKaN17kOWmmZdKW\n", + "KZ2lA0pSVhVCSkoFZaohDcvS09P1iDMFZUWaz5pAUZYVSom3tJM1D4PJBIuiaCx1TelVlppTrwy0\n", + "I40oQSJYNMzXfGmhIE8S0izjg88+Q5JE/PqXfws/bCEtm1JVBK2QOEqwbYd7h0MKbH7zd7/CY48+\n", + "TL/XZXN9TfOds5TlpXUODvbodQfEabKgfJ0rzgxHd2VlpSkxv/CFf8dP/dRPcfnqdc7u7JDlBctr\n", + "G3zxi19kMou0z8l4Rp4XBK02ZZGj6ilEUlSoomSwtsxP/sRPkMQRvquhKCVkY4+wWI6a0to0ikzw\n", + "NRCKWdymGjPnba51FEXNxrnIdmiUtwtBwGT/juM0TV8tUguae7poombKcsPtN5myUemZcr8sS6bT\n", + "KTs7Z7l69bp2UhRGyZmSZQXHx0M+85nPcHR0eOI63Lp1C9u26XY7TYNbCFhdXeXKlSssLy/T6WhO\n", + "u/Gc/+Y3v8nOzk5TtQgh8HyP8XjM9vY2Uko+9KEP8fLLL9PrdBvcP45j+v1+MztWSonrOxRZznQ6\n", + "o9vtUlQl/UGPr33zG+RFQa/TZjo5bOCit1oTeZ5qRlg9YcdUUObamgC4yM8u8npY+YLM3WTIi9au\n", + "pgFq1qeBeRZhS6D53IYWK+c2s2ZzXjS6M8+H2WTM55jKIc/zxnr4z6yUPvQsfF/PlQwc7QncDhxO\n", + "rfZ58vFHCENdMklLcnh4xAsvvMTdvQOGxxPSPNeOTZaFNH9bFllVIN2QtChBVehJ3wWlUrh15jIc\n", + "RxyPZqR5hJSC8sZtvvat84gaP1eVwndd2q02YSvEqWctGp8F39dwThAGBPXN1L4LAsfR3iZl7fGN\n", + "YSgIWZdh2ig/CAI818X3HGwhmh3XcR0sSxLHs/teM5PpLe7ki0Y78zJTNZm85pvXDAr0pO+iLCmL\n", + "DFWWCAXScXEtSZVnfP+nP829e3s8f/4lLNvBcQOGQ+29kWc5wpLcvL3H2soSX/mDr7G1tUnnox/G\n", + "tl063QF79+7h2D5Zqq/BjRs32NjYaLIM40dSliVLS0uNH/V0FushyVmJsBz27+zz8oUL3N3XCsrX\n", + "Ll3RsnovQFRG7RhR5jlCQq/b4a/+lf+GIs/rmYvaxU4tZMKLwiyYK1vNYnoz/mjgqkXc2vxOEHgN\n", + "RGKCgG1LhDC0PDOsAYLApyznG64JGIv8fRO89YxEiWU52Pbc4dJ4dnie02ThnnTJi4qHHnyIa9du\n", + "aLhIaf/sotDnO5lFfOMb3+Ts9hn2J2OqSittt7e3m8adgeGklNy+fZszZ05TlvMJMp7ncXBwwEc/\n", + "+lEuXrzIbDbjoYce0jh6on3dZ7MZQRBw8eJFVlZWODo4bH5/MBgwHA7pdDrsHx8QeAGB5+M5Lr1e\n", + "n1u3dun2+9y6vcsLL76I32px7fpNlrouYRhqb5lO561jSRg2/iaLvQnbthu+/WIz0DQVTUA1393c\n", + "b/Paqqb+moRj0SfJvMZk7MbTafGzzDOzCLcsVnKLTV+zpk3FEUVRc/5vd7xzPHALbKXLTtuxqPIc\n", + "oSoENmWRMUl0hoynaW2ntlbxQo8kvUIySvWE+ULj3BWQZilFJXBdvXjLomgWVJoXpGntEGjbegis\n", + "J/UQ3KrEDgLc+uaXRYGQFpO0YpxM6htdNIvVlFxCKqpcDzrWN04RhgFSimYzyDNtSO95rjaxr7Sn\n", + "uYZ4bGRV0u+0WVoasLa2yubWpv65vH/H3WTbix1tmCu2DC9VVRW2VWfblkTUHfwsTxFYVGXZDGNG\n", + "KVSZE6cZluNwVOZ89rM/TNhu81u/83t0ehaqEsRxQq/fJ1daOHJwPMaxBLdv3+U//Idfp9tusdTv\n", + "4jsOH/3IhwGd8ezt7bG5udlwa43fTZZltNtthsMhRVHwwPaDpFnB9Zu3+PaLL6GE5M7duwxHI8oS\n", + "BksrJJmmuKmqIMkSqrJAKEWe5fy1v/HX8T2PKJriuz55rr0o8lo5ZxYf0GRQZgEBDbvCZNuLsIdZ\n", + "fIuCjMWgZ+7XIpd3kdJphueaRinQcI5Nw3ReLp9kHyyW+OYzTeAvKq1R2Nzc1H7mYYtZrDPvTqvN\n", + "vb09VpaXeeH8S3iuQ7/fxbZtHnjggZpG5zCb6cDX7/c5PDyshWSq4WUbX+pWq8XFixfpdDrcvXu3\n", + "YUEZvFcpbdB0fHzcGMyZCe+GvZIkCYP+gDRJmIwntFstiqLkzJkzJGnOV7/2NXq9HklRYjla7dxA\n", + "EdX91ckmay7L+f0098lcv8WjqioKNRdLNT97U2BdhNpMUI+iqAnYJhExfZJFV9JF+MW8x2Jj27iU\n", + "mntvBD+LzfFuVw/b+DObgZdZTJUJPbVaWbVDhFY25UWhHdNaLcb5jKqsGPS7bG5ssrV1msk04bWL\n", + "r3N3b4+s0FCB41pks4w801PsldAX13M9PFvj4ZasM9CqolACx2/hS4mZMSkqCcIBJNKWCLSHsJQ2\n", + "SAUSXNev5b4ltqN0ExTNTJkmOa6t5c1C6PPK84JZlDXlcJorJjMdiB1RcRtNW6xUqRuMAtbX14CP\n", + "/IlrdjQc43s+ti2oyhxVy+od22mwXtuxkYAldRZWllVjGlSVFQi98UkpkbYWmWgamdSzNPMKG8ln\n", + "/9wPkaYZX/3Dr9PtLaGQjCdTLCeg1+0ym01QSrK3f8DevYq1lWXGownxbKphkO1tds6dZjyNubd/\n", + "RFVpI7GD/X1WV1cpioJZdMj+wTHD0ZTJLOKf/x//J7bj0O50+fbzzzNYWkJKm/6gz6SerJ6kKaJM\n", + "tOVAVbLU7/D3/97PcXR4QBQntFpt4kjj7EmSUGblnA1SZ4SLAdLzvDk1s2GYCCxLS981RGfjOnrR\n", + "lUWFbdkIadeZ8SK0JZvSffEzmkaU0toE8zuGM6yDiT63Ss2tkg0+LKWeWamUwqmZUJaUZJFujG+d\n", + "3uLs2W1u3NzFdmw9GT7wqcqyCcb7h4c89OAO05luulZlyWQ6par7FEkck6UpD2zrhufW1iZZqp/b\n", + "q1evsrm5yfb2NnEcMRj0EUKwurrK/v4e/aUl3SD2PCbjMd1ul36v11Qc0rLwfY9Wu0WaZQR+wDSb\n", + "MJ1OCcKQvf09ZlHMrVu3iJIUNwgY9Po4MmU2ndLpdgmC8L5xxGDgjq21F0YGD8ZjX1dB5lrmxXze\n", + "JNBs2I1+wkAqC/j3IrvE3FttETAXgJnfg/lGbu6dqeBMZWDYRHktDBJSNGwkE8CNtfafWQxcusb0\n", + "xSGry9dZFBMEIaUQVJbFLM2wa1c937KgLFhqeSy3Ax47+53MZjPiNGE6jSnLkqhUDI+PGY4m7B8c\n", + "cHhwRFpEOK6vxzQ5Lrkpd11BpTKKvPYzsES9sEDYQp+TZeOGPqosa4Mbo5JSCLt2JrQF0prv+FWR\n", + "Iyot10cJhHS1paUSKAQVWiikhEBJi9iwRygppc7Udkf3b9j8y1/5MtTiECk0991zHXr9Pp7vaSsA\n", + "SyKp8GRJt9ul29XWqRunNlAo3BofNNztvf19Ov0W7TCgXYueJpMJk4N9PvWJ7+KRc4/wC//yl1BS\n", + "i66scsokj/W1cUOssEOpYH8Uc/doiueHHOcRV/ZeoX/pOp7n8dIbew3UVJUllnijgVSyLCOKIibR\n", + "RDdoiwh3MmPtzGksS+B7PqPREe0wJI6OyNKEwLGp8phnnnmGT37ykxweHmuIIi/ICz3+qjgeUhYF\n", + "rdA/EUxNsDULzODcVVXVDBFVVyjaq8MWNkJJyqwCJZFKojJFZSlKpZlMhuutF65q/q0w1ZhNVepR\n", + "X9IyakHt/SOEIs+zWsBREQYhRS3kqhQodKO92+s3lZbB4x3HoigzyjLlv/iRz/EPfu4f4ooA2wmI\n", + "s4xuu8Pd/QMee/Rh3rh8lfe/9/34XojnuNzd36Xb6RAOlgG4O5qyvLxONMuxbZ/pWCtz9/b32Nrc\n", + "JE0TUC62Zenxe5ZkOhkRBgFlXmBLTQkc9Ae6aXl8xPLyMo7jcG9vD0c52gs3LvFaPrnjkhYZcRaz\n", + "urXG7/7yF4jiKUtLqwyPRwS2S1nkBJ5Pyw849+DOfddEmVfY0tHy+LJE2n6T8WrKrzEwq1BSYLs2\n", + "sqhQUltKGEFPmmV6GIRS2jahKlF5hqhOPjuLWbJpUC/+bV5rmpJmfsAi1KmUAlViSeNfBHE0JUlT\n", + "PC9oAr+51293vGMBXM+QzBqQv93unOiy610uwvMcHMdlNotwXJdWq0WW5fNhvkIbtVcVrLoupzfW\n", + "UAp8L8BxPMbTKS++eJ6rV64xmkxAgR+EKCqKskJUtbVtpVWaruNCmRPY2sK2SDMsW2evQkocaZOU\n", + "uX5oHQfHcmozotpYCiOvNhM+JLawUfWiLspSbw6Og7WYvWHhOLKR1d/3mlUVlgLLdhFUxGlGmuWM\n", + "Zhpush0b23GgKsgTnbFJS5LECb7nEkUxrufWXPAeUkqOjg8RsvZpkZKN9VUeeeQRNjY3aXe6PPHu\n", + "x/ib/+PP8I9//p9SVSmlkNiORV6kHBwnDUPC9x2UskmyRDd2peTm7pHGBtV86rbJRsqi0KZGRUEU\n", + "x7TabXzfZ325r2eM5gkoSS4yHGlxZ/c2/X4H27IZHu7zkz/5kzz77LNEUcRoeEQY+gSexp/LPEVS\n", + "ISzBeDxsIJNFPq5pDBZF1iiCldAKTtuyqVRJluY19imbCq4otHLXcVzK0tbNdAVVWVMzgVIY62NZ\n", + "M5Nqy2RhfKJz5MJsTkNLTFM90EHKuYLPlO6L/YN5Gd9CqZI0y+n1unzw2ed4/oXzjMdjpLQYlWN8\n", + "32P31h1c2+Jf/9Iv8VN/6S9x9dp1VleWcF3NEtEQh0UY+Fi2w3g0Znl5hVdffZWtrS3abc3njiNt\n", + "mdtqd0mzHLvui0glcF2fLCvZ3t7h8PCQJNHDL+7evcfGxgZ37tzBXXVZWllmNBrhBQEqlURJzC/8\n", + "i89zcHDMyuoyBwd7dDo9ijLDlrqiWVpaYmfn/gF87mciamX23GVSCNGYe5VlCZkgK3JaNUVWWnOL\n", + "V2uhwSvrQG77LtS9C/PMLGoBGjhVzC1lLctqlKiGvTLvb9CobwPfPZGdO46DZdtUFc06eTN75n7H\n", + "OxbANSfbWfDyQEu5hWxoRaaBlOe173bT8NN2oOYCuLVQw7UthNDeI1WpqKqMfsvlo8+9n+/6yHNU\n", + "peLg8ICDoyPSrKgbPYqq0grE8Xjc/CkqDe9Y0tLUQgFCWKiqwBUK4WsRQEUBaFaKG3oaY66HtioB\n", + "WIoKDblIaSFtG8vg6VWlp25jgrjSJbvr3P+auR5lXmiGi1IgLf0ZQqGwyZQgy7Q3i+PqUr5UiqAX\n", + "EkcRlt9C2g6lUhyOJzqYCQeUIEo0H/fVi1e4uXubB7YfIE4ijkdjhG3T7/rc3dsnwWaWRvi+xvuz\n", + "PKGs5ja2rmM11q6+32nk5kIIoniGqoO5QiEdi3YY0Bv0UUpfi+FwiO1Y2Jb2cpklkVYcBh6T4ZgP\n", + "vO99/MCn/1uWl5ZJ4ykS2NpYYzKZIGqnwE7o14we1QhLzMIBmqBoRBSGrke96WZGfAEkWQwZOLZL\n", + "nmT1+DmPND05rNaytR8M9b2uygoqnUVrd0g9fX5OK9NBOAiChulRVVX9vEl9zdCL2bFt2q2WzvBq\n", + "jLcsS1SpvaxbYcg0Svjgcx/k1VcvIYRNmqTgCWzbZTiZsdTvo4TD//PFf8/HP/ZRLFsPhFCqYhJF\n", + "NWynmM3GeJ7D9Ws3WV/bwPcC7t07wHU8Do9HLK+usbKyRhxHNW+5RCkb23KxpEORV2RpwenNMwyH\n", + "QzbWt8jijEF3mdHRmMTT3vBZntPqDHjl4hvMopxur89wNKZCIURFp9uhSDXUcPr0adL0/pNpTDUi\n", + "JCg1H45uWRZZzZYxEAmA73lkNSVRqAW+fp43mD3UM3IXqInmZ4t4tgnoQLMJz2azhuNtzK/KN72P\n", + "4zgNF928L2jKs+sFTT/EQDZvG0ff9v/+ZzwWaW8aH/UJgrDxVjbkecOVNDuULkl8RqNx3ZX3USj2\n", + "9/dZ7rTrslTUWKOW4IZBgOtpXxCh2qwMWhSlzo4M7mX8DsyF8/2wYQ5MkhmT2ZQrV67y2sWLTKIZ\n", + "WJJW2EYJQVVBWc/irISF43pNs6usMwIHuUBZqnGyIicvMpCm8aJvx1v5H1RCOx8WeakN+anVY1Ig\n", + "1NxPQQibvFIIqb/bdJZgOz4tzydJEz1yzbVBgUCSFxWSimkcAZJZnPP8iy/RH/R48qn30Ov3Offw\n", + "w9zavc1v/P5XOX/+PHY0Y3VpmbRurDVd+lp1aNsWulwQNR9e1PYJdb9BirqBkzCZTPB9j263i20J\n", + "oqneXFRVIqqKJI6YTSb843/0jxgMBqTRMar29BYojg4PNRXNGAQpkOhyOS1OTlN6M05pgnuv19M2\n", + "u0KLOqgDaJ5nWJZNmtXe1R3tP1LkVbNJaD8S1TSzmlK7rn5tR1NPzSanMzLtsXN8fNwwJfR5zlWg\n", + "5hyNXYHjOBRZRpSmWlhkadqs7nUoVpaX6fd6XLl2A9f1Scmx7YJer8doMqXX7nBv/4g3rt7gyccf\n", + "w7ElZVmxtXUa39eDLVphyGQ8pV+Le7KiYDaN2Hr0NG9cucL/196Zxkp2XPf9V3XXXt4yb/bhUIsp\n", + "yrJkSaQo0atiy7Ei2fESBPCOwEgQJN8cIIBjy0AQ5Ivj2EicIHEMBIkMRXGU1ZZpx9BqRZAdSNbC\n", + "RbvEhBTFZYazvqW771K3Kh9OnXvvGw6Hjm1xRE8fkJh+/fp131tdderUOf/z/4cQ2Nzaoo2UqF3X\n", + "0VRtXwQGRFnLQ5mVPPHYE5w6dUpQXOWU8xfPM93YBJPx8P95hPe970NMpiWbmxv4DmazCUluuHDh\n", + "KU4eO8mJEyd58Ytf8qyR6IAEks20beV0riiiYoQ40XU+Rn1c29I/dphpmrJYLHqFL/E3Rd9DcC2a\n", + "REEK4y5L/cwx5LcoCtqm6n3OmKvn0mURzd7e3ub48ePP2pWtZm7k4Y2Esx8GCiAHfieE8DZjzA7w\n", + "X4AXA48CPxpCuBr/5m3A30JE/X4mhPC+67xv+N3//m8B21exlTNgf3+fyWTS37TubF3XRW5t4c5u\n", + "2yhCkNg+wst8R5qlVFWN8CUPquzxcwGJiNJs0g+8ojGcE06WNImipyZuNPLHdEiLbes6Hvvq4zz2\n", + "1cc5WK5YLpZUdUPTtjRtFx/LsSxNM0JQBrvQ5+RCQIqPnUw+4Rm2KO/Ff3z7bzzj+/jJv/N3yVOJ\n", + "zoMPKKrZB4EK+iARmsfQOXEIeSqSZkEjB/mDnr1NhA0yQQI1NcY7uq6B0B1qT267jjwvcIlQ4u7v\n", + "7bO7e1WigAYsOgAAIABJREFUxEwU0bMsI7UDi5/Jh3b0rpNGJ/ygN6gpAhC+ctA8Y+xm7BwWOHH0\n", + "KN/31rfgnaPMC7AdwYuGYZZlmETSG2mkZD26c0SkxFILiYkLpsFgYueuF7k5RR7pHDESRQt6SZzs\n", + "cPRd9QiCulphKOXrjGgbIp1wnCoxDSKMmLVbIsRUctpxTqGBtoev1XVDGr9b3Vg07aTBjhbU1Imk\n", + "kU8+TTNskkUJu4xf+ZV/xv5yRVW1bG1vM5kI50eWptLV6Vrufu2redkdL6GplhzdOUKRp7iuZT6b\n", + "ce7cebY3RO3oShSAyIqUz37uc3zzq78Z5xxPPPEEx48fBwxlXnLp8mU2NzaidqfhyPY2YNjf3+9h\n", + "eMYYTJ7w2GNP8NT5p/ngBz/E0eMnmEwn7O9fZVJmHDkyY7HYZz6bcPrEWe65554YicI33/09z1gT\n", + "n7//I7LR+fZQpO29nGv1dDWmoVDEmW74SqyWX5OrHiOmNPga4/R1g9UUivYB6HuPkTC6OWigY83Q\n", + "NCY+SfL1bTt0VOvnv/YNbyaE6/Pp3jACDyFUxpg3hRCWxpgU+ENjzHcCPwS8P4Twy8aYnwN+Hvh5\n", + "Y8wrgR8DXgncBnzAGPPyIIQlh2wymfWDoTepkld6vM3zHILl0sWnyIucNEtJkpaNjTl1vcLahCRL\n", + "hf0NMCHBJIasKCjsBFVeSVOp2vdbVRChVJvEhpbYtGMTQY80bROPQBOqSo/aGQFDdeBIspwzJ49x\n", + "9sxpmrYlYPv8m4u58raR1tpz587x9IULXHj6gshL5bl0bwIJgIEuNFgjatzGypH5emYNVNWSrCcA\n", + "Erw3gI2LM0QVeh8MIUaXWZZhs1wad6xEpxoh+BBYNTVBanQy6RLhg07yGRhhZCwVdoe0zW9uHWFr\n", + "a1uQDq6jbYRkbOWWEB2lWw0wvJ4cLDYQXVsQSmMXqywAUeWezeeYEGialvvu+z3auiJLErokMibG\n", + "MUmSJJJgCc3BZFriOheheylFUXL61EmKvODIzhHu+IY7KMuSK1dlvm1szGOEOKd1Nb6TQrHrhKPd\n", + "AKGDLMtpqprOdQRqjBFRDx952m0qqTSJ+GJwYGCzlJyoa1vSJCePEfZqWdFUNSEPZKkUCFVJSDcX\n", + "dRLaTaqRuixwR16IknvTNWAsKYaf+qmf5B3veCdN46TQv6rY2dmhiRzV21tbfOwTn+Spc0/xEz/+\n", + "I9TVitA58jThq199nCNHjhCMxySBNLNMZ0KM5lwtm7rSPk8Ecuh9S1lmVPWCo8e2uXDhIouloChm\n", + "8wkXLlzAB4F1FumULz38MA88+BDbR49RlCVXr15hNpswmWYcHCyYzUo2Nze5/eztUjg2aeT2eaZp\n", + "cbxxdR8Fa9qCEKTWFOeYnM4CVWybl1NSIimdWoQmxnhvdbDz2UzSGs5B/D685qjjHA7e42MzkDbr\n", + "aN1Fm4w0AjfGYBh4dDQH7lxHGmXhNP/9Z0ahhBBUlC2PPucK4sC/Kz7/DuB/IU78h4F3hRBa4FFj\n", + "zMPAvcBHr31fQyKQtnjk1qLftV1srvU9JCxNM/b29iSKijulJ1A3kb85WOxKothyMpEF4aQzTuhn\n", + "ZYGB6EYaa2WBWiL+OsJ2IqxnVVcR1kW/IAMZXdtIC3rMlfZQvAB5JpDCwqbMTh3jxWdO9Bws3nsu\n", + "XrzII488wrlz51mp8K+Z98UR/fd6tr0xoVpJoS20ArX0iICA805URRIRGvCtpG6K1OK7FqPV7A7q\n", + "yHme59KkNIlj7luJKBWZk9hMNrgkyEKy0LESB+cjpW8KttS0hDQvaTW+9nXvbEJMLyRm4I/oye07\n", + "Kc5mRR6Pk1l/OvBdR4tIqfkANhjaYPuIx1qDB9p+3AKrvQpl2GsuXSJJU86dv0DTtHg9xRnDkSNH\n", + "OH1KmBUPDvaZ5hM2NzeZTuUEOJtN2NzaYDqdMJtMaVuPtblALlHcMeRpRucc1bIe9A07JaMyrFZS\n", + "2ykLUUz3vsO1gi+eTmcYY4dOUNOvu36xa2pmHEWC4Pg752PhLsV1jqZuOLazzTd+453c/9BDwnpp\n", + "otqV90wmU3b398iznIcf+Qr//u3v4K1veTM7R7a5eOkis42tWGtpWK5WBOOpY+fiqVOnSBLLbDJj\n", + "f3+X1WpBmmZ458myhLYV0rJjx45y/vx5tvMdsixle+eI4Pmbht/77d/iS1/6MkePHcdYy8HBLuDZ\n", + "2tqgays25xsUZcqxnR1e+tI7+trFs+GhFwvBSudl3iOKNCL2IYjylh3mizrVcR9AX0uLUF8lchuf\n", + "HPoNIdIg6CahJ7S2bWli4KnR87hwqR24fUevE00DNXXurRv6PMYNZM9mz+nAjTA5fQq4A/j1EMJn\n", + "jTEnQwjn40vOAyfj4zMcdtaPI5H4M0x3JSCqm5heDUMB7lrIjNeBSSxnz55FeIKlkLNYLXsMdBIH\n", + "NslS9hcHdE4EBXDK52wEwhcCdSv41DQ6NmONSGpFUQhNq9g0xXSCUjeS4JUJYiI5k+/oOlkcUtjz\n", + "cYdPSNKEpl5B15JQ4F3H9nzKva+7SyZK4yARx57lGdPJlCtXpLHlX/7qM8fsjhed5sqVK6wWS1Yr\n", + "qXC3jTjJNM8oi5IueLxvSRPZmLS4kyQG57sYaQvTY2oEF24IgtrIE1Hyzg3WJtR1S/BQ5CK5Jrjg\n", + "BJuJYw8+9Dlt+Y4SYWWMTjs1yZAuiffQR5DdkEoJIZApjwwy5sTOgCzNJTURhE8dDElexkgrOjIr\n", + "fQRd5yXfbsEHS9dBVgjD3P6qocwKylKcN0G6cnd3H5YieS7SfCqEnKWppGmMZ2Njk8mkYHNzg+3t\n", + "LW47c4bbXnSGyXRCFnO/nYcsLyU9Y6SDL2DASColTVI6F6idbmqePDfU9eHmIde2mFG+V7DMvpfP\n", + "06akqqqwUU/T13JqoXO0bU2SWP7q97+F1WrJJz51PztHjwvkbyZScZPJhOVKmB53Fyv+22/9Dq98\n", + "xcs5dfIE3/iyl9E0FcZarly5wvHjxyR48YHJZEqaZLRNC8EwnUhh1UShZ3BkWUFVNSyWNUd2UroA\n", + "Jsn55Kce4rHHHmN3/4Djx49Tt8KUOJ9PKcsC1wiufzrZ5MW3385rX/MaXAdFMenFgq9nRSmbWhpP\n", + "NYc6Hhl4ZoiPnXMUkb9GA40kSWK9o2UymTCZTA515g61pUHGUKkR1DfNZjPmI5STIlDGNAjKdmiM\n", + "wZrQQwV1vRRFQesGWTU9hd3I/iQRuAfuMsZsAe81xrzpmt8HY8yNSqXX/d2/+vW3A3L8ves1r+Su\n", + "176qbxNeLpf9ZN2vhIb0ypUrbG5v9Q62bQVnubGx2Tc/tG3HfC6pmfl8hncdV6+oiKvIX+ED1liS\n", + "JCdJkyg6G6PG4MmyIjqS2KThO0KnajiiqakiuDphgvdUdUW9XGBTkbRKbEGSZVJZzoq+Qy1LMqp2\n", + "SQhQTApccFjr8Y3j6uqAjfkGTXN9Csnv/a7vILEJRZbjXEfrHMWk5JFHv8L/feRRLl+9wv7BPtVy\n", + "RfAOEJ3LvChYLiq6VvJz5UQccttW5GlCYqSZyRiLsa3wNHYdk8xgk4wQPGkSmE1K6moBIm8h6ao0\n", + "hVggdq2n7TqhyjVQ5tLaLwXJoTXbRAfqfSdKRQGC68jzRLq5YjcrKMQzgBfOGe89lRP0SJENGoME\n", + "sEkuTTjWoLGNjSe7IpWcdd10/YkgsZGjOy05OFiQlTlJXkCAqnMkkRXywtUDkoMF5y7t4tyjJOln\n", + "8K7CEDhz223cfdfdnDp5MnbAJuSZIJekEGrIkgRnXWR/sLFYHXrYoY6Jj2MhcUI81cRTSGqHHKtr\n", + "5CQjqAsvJ0aCcN6XBc7VpAR+5Ef+Oj50fOqBhyjLCft7LbP5nLoOlOWMg+WSNEnY3Njgw3/4vzlz\n", + "8jTGptx25jQGWFYti0WDMRJFlkXBaiU55Ukx42B3GVM7E7w3BJ8SvKWYlBw/foonnnqaxWLJe97/\n", + "XggiY7izc4yLl55mtjljmmekWcDQkOUZmzNpALrzZS/HNZ5Vo927z06rqgFB5wc9Sk1B6YY45oDJ\n", + "I30tMUrXKDmNr9cctiKUxtG0vr9wsGd9oOmcY3d3Nyp5DU1c3vs+hanSdEPNxVPEwnTfBZym2AQ+\n", + "/okH+PgnH/wToVBuWMR8xouN+YfACvjbwHeHEM4ZY04DHwohvMIY8/NxQv5SfP17gH8UQvjYNe8T\n", + "3vPu30RI6geKzs7LEVhpHYWhrIjV3Uza3uPN5rlEIdP5nP2DXUIIlIVUnPMYtRikmDQu+DnXxWhf\n", + "dm5No8hxyFMUeX8Ul0ngadrYdhuE40LSNYGmrWUzsCP+5jTFhbirB6WpzMhjq2xi0z4CrNsV2NBD\n", + "1nwQhsPEJtz7xh98xvh/5lMfJHQB34WolZgP+dckgcTQ+YBrG4xvyDNB6FR1y2OPP84TT56naVuq\n", + "umFxsCQY2Nna4czRY7SdFFq8BTB4A3v7e1ENqWF3f1c21koiRDmYGaHuNbYv5vm4qHwn95VnA1QU\n", + "JMohNkf4mAZT9AqGnstDH/cwLf20AB32UGSUWElb+c5z7TqvXYdlYIJTFsbgvdAbxFxmmqS4TDca\n", + "4eYxxuDqRjYpE3Ct6xEGqfHIcUbSTqJI34loSBEFGeJxez4tIQjVwtbWNvP5lNlsxomTJxAVnIFj\n", + "XKPEcRefbnzjln7nnGi7lgUhyIbqu4F4KxhDVTc4D7/7e7/Pgw89JMcxLJvbOyRpJrA/58jSTOia\n", + "r+6SGOFbOXnyKHd8wzfwile8QgiuHn6Y206dYrFYgBbY1AFF9NbTFyRd9eS5czzy6Fd49LGvihpU\n", + "lvYCzsE1YDpmGyWtq5hOcpqm4tTxU5w9c5Z77n49+JTQeTob+kgY4M5Xfesz1sQXH/qI3MNExlhP\n", + "gDpn9LGe+qy1kKcEH7A6H2HIaUfnnUdx8kbppu1h/nc9CY1JqopIAztO02itSdPD/SZhhhSZzk3x\n", + "gfTBq2LZv+WNP/inK2IaY44BLoRw1RgzAd4M/GPgPuCngX8a/313/JP7gP9kjPnnSOrkTuCPr/fe\n", + "EonEHGbMV9qkJEmG6vBkUpKl00gANHB+CIWnwnwOZGB8IE0MIlPWEjrJCyZJQhbTFHkuijyZTWhD\n", + "Qhs/R3ZsHzGtpt88+hb7JBUOjojmaJqGrnXkhfCFd52DzpPmGSYdlHy6LjCxA3/GtCgjxGnAHxvT\n", + "xZw/lOWUjdlcFsl1zDU1TdVSZBllllDmObVzNK4lGE+WlYIvxZOYgGtWJEnKtMi448Uv4uV33klR\n", + "TAgY2k5EbG0Af7CS00chAs/eeIKFqqmxqSErMmH/w5ClEx599FG+/OWHOXfuPFVds1hVBBKMEa4Z\n", + "Y8SxrxYrouJXPHKmZElCEkWEJbqJsmLSdkgwkFkL9nDHmxanEpuQR9X2mNEi0rXLQvGKuImRdlFi\n", + "rYy/Dfq6gDUJSWpIioSmrvHBsKrVcYJrOrAS2fWsdcCqEjKq3Iv4QpalEY0ios/4QNvBwUGFj6im\n", + "1bxgf2+X5WopdAnAxoZoVgphUmBzc4PJZCINVPM5J0+c4Mxtt7Fz5Ag7Ozvs7e2RJCmr1RLvRTfV\n", + "B+k36FyH9w4fN+HlckmSplzd2yPNcn7qJ34U7z2fevBBDJYrVy4ym2+R5xPyvMT7wJXLu5KTNZAk\n", + "GZ/73Bf5ymNP8Ad/8GGCDxw7usO33XsvJ06cYGM2Z7VY4B0sfMXjTzzBF7/4RR75ylfIilJSmrmU\n", + "zKazCU3bcf7CZVGrN4HJdMpiscv2zoyua3jR7WdJk4SX33knbdtS7S85cfwET+9e7BWVNO9/rSl0\n", + "r1L5NDMwbnadwG21qKgTpY0plgRFpUVfpLnziFIqy5J5vnFoDuprNUXSNE2fTlmtVr3z1tqY8sho\n", + "2kUdP6E7pL0pcNY2wp9Nz+L5bPfd++jngBG+GilS2vj/O0MIvxJhhP8VeBHPhBH+AgIjdMDfCyG8\n", + "9zrvG37/t3+jHzyIEawd+HjHFz7mTdZdUJENuruNcZ2aT9IdUB2yFjc0atMUyPXyTDoBdFcc58v6\n", + "QtVoRx7nc68F/+sXb2KOHejTMJ0bBInHkKR7vuMtz7imBz76gT4CU129QHdIVFWKLHmEq7m+lpDn\n", + "OU30plr1NsawWC7Iy3xIU+g4xuOhWugiYU85sK7pv3rvTSe0rJcvX6aqKpaNpHlc23JwcIDrOnav\n", + "XuVgsej5nauqEmFoW8Zx0/SCx9i0XwSa3/Yh0NWxOcOKmIe+RvUp9bo67/G4/nvr/FB0SpKk1zCU\n", + "G4TQDa+99vvVcde/z5Okl+AySRJx3kJqJvBD+npJaiTCk4ULrnNMJ1PquiKECFUNOq/Bd8LbLvPU\n", + "YAMcO3qUM6dOc2xnh9lsJnn11Eoj1NYWR49sybXHk0vb1mR5BgZa1+JNykf+6GN8+A//iEW1Islz\n", + "kqwgL6VjOcukBkAI4IX7XlMQNsoTXg9PHYInzeJJNxjapqOczMjyjKapwHQ0TcXm5oy2rdiaC6Sz\n", + "LEt85zlz+jR3vuxl3H72rAQ6TTs6gQwCFiEEXvW6Q9lbAD79iQ/GOSvzsCwlSFLMvfehryP0RGKT\n", + "vH88dH4j0QND+soY0/OV6Pc/rvnoOtcNvg2DdqpG3vpeY14Ta21f89HPUXphY0x//5q6ef23f/+f\n", + "LgIPIXwaeN11nr8MfO+z/M0vAr94o/fVix6rnFgrudqhNVYmy+XLl9nY2Oid+LUDr1+uOmrducbk\n", + "+sulAGmkCj/pd1GFLSrWVojwh4JHHyXbgXZUaSN1Q9DP0N14uVz2jUjq7PUaVG1Dd+v95VKEjuMR\n", + "dFy0vZ4pXlUn48bGRt8Fqbk6KW5ZibTDoPeoY6XXphvUbDYjmIBvHT5+JyEEFgcHfc4uz3PyLO8n\n", + "YTfaXNURr1YrbJqwsbnJ8ePHY0ST9/nIxUJa+zciVlhhccp69+gTT1FXFefPP83jTzzO7t4urm0i\n", + "U5ucgIxNKJIEXwjfubUBEAIjQ0qWiFyXa53UGPKM1osQtqAGhJzKAM41FGlClhjyvGBvb1cKjla4\n", + "3L1GUnG8k1Rk8HSeYWzfTSybg8dF3Upj0n5TTpKE4LTRI/KgBMOqqsnzkq5zUkL2gTTNSRJDyPKo\n", + "BIXg5ruOvf0lTz75IGWeRWrfJvKqREWoxDKbTjl2dEcoCU4d5+Spk+zs7JBPcgwJb33r9/Hyb3oV\n", + "//rXfo2mavDecPXKHrP5BvO50BQkxoozjgyWWZy/+/v7HDlyBPwgJaaanZ2v6TqtDQXapiJ4x2q1\n", + "pCgzygidzfMZu1cv9nTKx48d53V3383OkSPCpljKnN3e2qKuapLsucmc+jRavN6xIEddN31znDJN\n", + "6tpWBkBtRtK+kh6CGH2UBka6zlXnUmmB7SgQbJ3rifi6VGpBWaTGSIyhiIRceZHTua4X94aB4nbc\n", + "FKTXeiP7/8qB/3mZMSa8977/cMhZJ0lcPCPoFAxVeH2dLqCxkv2Y1a2HrY1er1H3+AjjYp5J30ML\n", + "HRrV688hhNgOfZhm9FpKUv0bVa221rJYLPovWBuWdCOS475ElXoNGuV3Xce3fvcPPGPcHvjoB4Bh\n", + "EzPGgPH9Y3XUwQecG04qep15jJ51UchmNqSwFKrmnIhkjNt5lSlNTwia+9QIQ78Pjxzrq6pikk8k\n", + "pRHvryjyWLSU3EdTN/142xGda55ntK2TfL6TnPtyueTqlas452lDx5XLV6RLzYg2adO2BCMbyWq1\n", + "kg16b4+9g4rpZMJqVcUClusjqSIvek4day2rCL3UzU2/17HCuJ5ecKG/t1gcGf4uPrbGCMS0c1J3\n", + "UfR6YNS4NWgiFoVwi7hOajBSX5H6QmolOrZW8P0+jrWJqUQ6ke6zsWCMhaZtMIllZ+cIs8kM4wNn\n", + "zt7O8RMn+P33vofzT18gzXO5fGvJEmmmy/JYzI1zTdOQ+l0rJ4ykKiDgoqCyAT+kIdq2Is8Tlqt9\n", + "vHdMJiVHt2Zsbm7y8jvv5JWvehUmyH22TUOeZRzsH/QINZsOsL+u63j169/8jDXx6U+8/xA8UAOK\n", + "IkI2lRd9DM0NSDdk50X0HIRwzMTx1s07jwVKddxd1/XSa7re9Nq0cWh8yrdm4ECxo/Xku446Bmvj\n", + "rlBtaNQNRP3Z3d/ylj9dBP61tOVySdd1vQhBFVMCGplpC6keRw4ODnoV6cVi0SufjLGaqiVnre13\n", + "4TFESyNdoG9fHjt3zZWtVqu+xXk2m2HtwJfRV63T9NBmoV/omLBJu7Xquu6J8/M87++5i4gWnVy6\n", + "GT0bDlxzbGOdvLwYRHT7jc+Ynnt6f184zbe2tqgamdzqkITIaEVZFn0UoZuhOnSdTFpY1o1VMKuD\n", + "gGsVtQO9cxgM8/mcbtVQFnl/ymmdE9Yn3bQtZImlamuM6cgt1HXFal+k7bI8h64Db8ht4MSxbWbT\n", + "WWzesriu6zlEtFt3/2AfFz9vUpY89eRFiqJguVriWkfd1IQAFy9eZH9/j6fPP83+/p445o0dDFKA\n", + "JQTSJBFkSjKXnDtSBG/bFptIbYDYbSn9BLZ3wILHj/C6xJJmwwnSWkteFv0mMS5K2jwnp5ACfKyv\n", + "+M7RdILCCa2Mn6g9BbwL1M6BD5KP74SStms70rwEA+cu7eLby8zLkiefvhRJkwzb2ztcvXp1SEHa\n", + "QLVc4YGkLA81tUgRdoo1BmftQL1rDNbGlFeQFNKqWpIYaF1N03jSRBq7sgTuuftu7rrrLgmaYlC0\n", + "WCyYllLkVMRYYizZRFODgaq6PsGbpKsGeDAwSkMEqqruGQE1yCgLWX+uc3FTFCRZQL5zvMe1LcEP\n", + "HDVjLngNDseyacaY/vo1764nbXXMWZbJyckOKk0qsafjrKkXubevY1V6ZVYb72bdqFilDklJ1Ofz\n", + "OWmasre318saaQ5Knc7Vq1ex1jKfzw85NF0kY5zohQsXeseWjHZHFRrQKNo5J3Jp0MOG+q4uhtyo\n", + "Dv5qtWI2m6EcGypArPe0Wq16jheFiPU/h4FP4Xr2bW96JjJlbWt7Idm/+fU/3/fT9TVOJGhgZ21C\n", + "nof+1Dnk701P1Tqfz2OrvIAc1DTwU1+iQZnCB1UQWaNway1FlmOCnAhb1+Gatm+H995TLVe9OHIW\n", + "WUG1nqYpWT3p3qg+N7ab5sA117RcLiNRVcTORlNHOZvN+qOItZb5bDa0FANNjG4Ta4XQKMKbuq4j\n", + "TZJ+F9X29KZt2NvbF7hXzId77/svVHdA5xzL5VIihUzyjrPZLKIABpXzPM9oGsGIz2YzNjc2Ygoi\n", + "jeiXwGw6o6oEEVLkOcTqt4uq20mWkubSzRdMjAzWtra1PaepOEKSqNMeI5cGB6s1N4mYh4LkuBtT\n", + "T+q6KYBobsoJS/R4pZGnIUkUciiIJ+c6vPM4Z0ZpFGkerOuKPBdIcpJI/ca1NdWq62lAmqaRGkQq\n", + "sOcOHzeCr1NBh7HKtNBxpn0BoiiKPgKuIrPY+KiuRxdFUmTpoBC+t7cnzjgeU5xzHN3ZOYRUOXb0\n", + "GCBHlOVy2Ufqe3t7PZHWODcakKaTxeKg16oD+t1bj1Dnzp1jPtsQXHAY8LxK7B5C6PHSmoPDSEt0\n", + "kgjHBwxV8LWtbW03Nj3dggpqdCMAQ9Kf0lX/Uxy0II806pX3OFw81E0gy5JDiJA0TSiKnLquyfMM\n", + "yPruTO0YlRM5vQNXkrI0FXZU6RdJSJJhAxHaj5ayHGoPLhZEb2Q3T5En7oxVVXH58mXSSKqvTlnp\n", + "GrsIhdOEvxYUdLfUL8hay6VLl3p+ZS1AFkXRR9J6VBkXLZXe8ciRI33eXPPXA/xsgAfNZrNDOeiB\n", + "kyOmcpynyIt+MmmOfVyYFYy5i9zHg8wX0LOfrW1ta3tuS9PsULOTrjXJUx9Ooeq6FbqBQcwYBlTb\n", + "GOU29heaPlH0SgihF15RdFpqD3Ot9A2K0UmPU7gmDHh1rS/pRiD3JcV9Rak86/3/+Q/pn8x0YHei\n", + "nl5d14JMaJrRUUfag4ui4MKFC4QgCtd69OnTLzH1sbOzQ1VV1HXNqVOnWC6XrFarPlWiOWzNO3Vd\n", + "1xc+VZG66zopxnltz29JRsUR/Tv9vfIbtG3LdDpleTAQ2uiXM0afKD5dmP1EFUR3eC10Durya1vb\n", + "2m5kuobVhyjwQPDaAg/Uda+BkwlQr0TTsm7aCBNMaKqmr5V519F2DWme9ClTLeqOi/kwIhfLIqgi\n", + "ClZXq6p/v851dG5oBFIfpoGoNC5O+tqZBoTPZTc1Ak+ShIODgz5lEBjQHYou8RG6s7293d+UKmVn\n", + "Ixiboi40BbK/vy/dj9EZA30hUYuNQJRoaw4NnDLl9YPLQISjiJfxJhNihX65XFJOJhDoo+i+Cyya\n", + "RgtpmrKqKlxdM5/PefDTn+Oeu1/T1wbu/9gH+pxeXdeURYHhcAONyHvR5/hAK/EGwoBhJY6rqtOP\n", + "j5oQyKylbupIKyCF27woqKpKFoP3Mjmdo0yyvhMty/OoNDT8nUYYNkmEewYlt6Ifj6pa9ZulKs+Y\n", + "oMRXArYzFj7+yYd43V2v7GsCPUontrR774V/IiJvNJpyneslslaLZX+s1fdQJIEuat1sXecJwZMX\n", + "BdYY2lZk6rz3VCupYZRRLLhrZH6Uk5JqVfXdeABtN6T8rBUKXSlUpz3kMc9zadu3pk+5YaSW0jcy\n", + "IRGaIURCpIoHH/o8b7jntYJDTiyNa7DGMinLiHtOpCPYGpL4/axib8Asn8hrTJSISxLKooiKUcKp\n", + "0gXBvDvX9WNWFiVZRMqM4XGaZ/Y+RB7+ijQTCb9ghB9dT7pVVdHUNUnk1Ff2vTGpHUBRloQgY1mt\n", + "Bl4SPXn3zjKuTecsi8WKj3/yfr7lDXfTNE3fyaxc/CAILu178DGvrGtY/IeM3/hELJQEvo+4q6rq\n", + "r0X9w7hRT1Ou+jrttxhDD4c1OpimS8at9eOi6Y3s5qnSx0i3rmuWy6XID42ctTGGg4MDyhEiQyE9\n", + "xpg+qlZnpovRWnsIvqfFCuAQ9FAVf9R5K5JFO6108PRvdTGqCrY+p85QP7upa1nofXV8OEppLk5h\n", + "SXkxwLTlAAAI6UlEQVSek3iZBH/88ft5wz139c0Fy+VSmmxCYDabsYyY8rEIQZqKGHLfeRidcmIT\n", + "0jQ/jA0PwvsxLtyE6DydFzIoTUcpvKksS3Z3d+WU4qUtOViRt1ssFmwmCU1sttnc3DzUQOW9p4gC\n", + "szYRyJhzTuhriwmhC9hg0Rq7D77nyfZRXegTn7yfe1//6kNH4Wq1IMsn1DGnqVGRnsS8gcSOAoJC\n", + "FmkXcdWegAuyuJq6oekck7IU6tQItV1Vckw21nKwWLJcLvsT3aXLV9jY2KDIpBnD1Q6V97PxCF3m\n", + "pZBoIYuzrWrh4zGW1CSUce5KcBC7i51oa6ZZhvcOFyW31ImmNmValnzm81/me9/0xp72OFiBhaZJ\n", + "wmQyjdd8QJrE1u44T+k8TZxDRSHcM8oyuVwu2N8/IC1KkjShnE5xXUueCNugJbC/txs3FYgsI/of\n", + "xsqmbEygc8pZ469xkIVAM83gOLUdXdeaJ1DVVR84+G6A6I07ofU5heoZY3jo01/gL7/pjb3DBKJu\n", + "6bD2VquVnPDT5NBmAESo75Ba0YANe7gHYuxPdB3qdTz55JOcOHGi9zNFUbC3t9cHC+pjdPPSDUDf\n", + "d9wcqA7/udKpN82BG2NYLBYURcHW1lY/CYv5nCbmmdJE+Ep6HGaa9oxfV65cYXNzs4+GNQVT1bUo\n", + "TEcstLWWVSWF0aKc9lSRAREHDiFIVOU9W1tH4kIzffRrTSdyaZ0IGaxWdXSCoc+RqTOdTqfYTPhY\n", + "Glf3jjvPcxZLKYoWE8G4ewKta3uayTaS7adpyqVLF8jznIODochio/KQ0sdqfr+Jx0YDTEcaos51\n", + "vUYkcKjFWCOGEOQaiiJHlWoC0ETcqqBsBItrMGRFSdt27B4sKMoJBzHyLCczFsuqH3PFjwea/p4A\n", + "bHQ2s3RGMFKB1wWZkOG8p6qldTkI3yFJKimnPDaHFEgXpTpu3SDVEYwXhJ4IjDH41pHHOkpmE+rl\n", + "Sr6zosRg2JzNn9HcZYwhm5ZszAq6dkWZW4psBnh8sCSZdGcqdn/c/OObgZQ/mUSRDSOR/6qVrtTU\n", + "ZgNKIo+RX2pxbSApZW5qe3awEKylcY5lREClNsUEQ5oWET3VkWWW6XRO13XMY7EuhIAzjrSMp9u4\n", + "/vYaoRIoN2aUG7M+xwswm86pqorFYsFysc98Pqd1VR9FpmnKweJAggwva3cMrQ0hCmrH/oDOeyZR\n", + "61W/F00VysY3+IUy6rmGbMTSSBRMifJ1485sDd60Bqbv07aL/u8FX27x3lG3owBGg5zQUUzyQ1Fy\n", + "MB6RZUx6HyRBWC38+77DE+giH9Hp06eBIRugVA263jRgHGcFxigY9QPjefRcgIabmkI51LUUj5zq\n", + "jPULriMuu2cnTIR0RtnDNPpVBz4ueGq060fdgPq8Oii9BqCPVsbdimmaktqBUF6du/6N5ql0Msi9\n", + "JaRpFI7whyMAN9qQ9EvURaPHP5X0Uny6pG4KQpCUj/Kg6L3rlz3uRtXgQusD2hh1+fJldnZ2sFa6\n", + "Gzc3t3BuSCNo5KBHSL12vY4QzKHvTsmTNE2hJyr97HEE1XW+b6lPUtOnRMbt/poz1HvslYP8wEsy\n", + "m036fKY6bL32wzAy34/HtS3ZWmsZY2214UKPy8YYTJQt0/vpP8umhzZDvfbx0Vr/pnZNhJAlfcHL\n", + "WkvX+j5iVLyw1nB0zqtp2nBc8NZ5p+tJf9a5NV5X13Yj61zVQEWP8fp6bfba3NzsP1dPtuNioX6m\n", + "jvUYLaZObNzNqn0OepKU9STcMXoP+l663sZpQ4XujhVvuq7rkVz6fWvqUeegUlmM0Wvj9amp0TGP\n", + "t5y23SHuI4jc4wyduSCw5y624+t4HfrdNVH7OO05dtjjNaPvcyO7aa30z/uHrm1ta1vbC9TCs7TS\n", + "3xQHvra1rW1ta/uz2437NNe2trWtbW1ft7Z24Gtb29rW9gK1592BG2Peaoz5gjHmy8aYn3u+P/9m\n", + "mTHm7caY88aYT4+e2zHGvN8Y8yVjzPuMMduj370tjtEXjDF/5eZc9dfWjDG3G2M+ZIz5rDHmM8aY\n", + "n4nP37LjYowpjTEfM8Y8YIz5nDHmn8Tnb9kxUTPGJMaY+40xvxt/vuXH5FAzytf6fyABHgZeAmTA\n", + "A8A3PZ/XcLP+B94I3A18evTcLwP/ID7+OeCX4uNXxrHJ4lg9DNibfQ9fgzE5BdwVH8+BLwLftB4X\n", + "pvHfFPgo8J23+pjEe/37wG8C98Wfb/kxeb4j8HuBh0MIj4YQWuA/Az/8PF/DTbEQwkeAK9c8/UOI\n", + "ZB3x378WH/8w8K4QQhtCeBSZgPc+H9f5fFoI4VwI4YH4+AD4PKKlequPixJgiLCkzJtbekyMMWeB\n", + "7wf+HUrneYuPCTz/KZTbgK+Ofn48Pner2skQwvn4+DxwMj4+g4yN2l/4cTLGvAQ5oXyMW3xcjDHW\n", + "GPMAcu8fCiF8llt8TIBfBX4WGCsc3Opj8rw78DVm8VksyNnvRuPzF3bsjDFz4H8gItj749/diuMS\n", + "QvAhhLuAs8BfMsa86Zrf31JjYoz5AeDpEML9DNH3IbvVxkTt+XbgTwC3j36+ncM75a1m540xpwCM\n", + "MaeBp+Pz147T2fjcXzgzxmSI835nCOHd8elbflwAQgi7wP8E7uHWHpNvB37IGPMI8C7ge4wx7+TW\n", + "HhPg+XfgnwDuNMa8xBiTAz8G3Pc8X8PXk90H/HR8/NPAu0fP/7gxJjfGvBS4E/jjm3B9X1Mz0kv8\n", + "74HPhRD+xehXt+y4GGOOKZrCGDMB3gzczy08JiGEXwgh3B5CeCnw48AfhBD+BrfwmPR2EyrJ34eg\n", + "DR4G3nazq7jP432/C3gSaJA6wN8EdoAPAF8C3gdsj17/C3GMvgC85WZf/9doTL4TyWk+gDip+4G3\n", + "3srjArwa+FQck4eAn43P37Jjcs34fBcDCuWWH5N1K/3a1ra2tb1Abd2Juba1rW1tL1BbO/C1rW1t\n", + "a3uB2tqBr21ta1vbC9TWDnxta1vb2l6gtnbga1vb2tb2ArW1A1/b2ta2theorR342ta2trW9QG3t\n", + "wNe2trWt7QVq/w/Uvjt8hhUJzgAAAABJRU5ErkJggg==\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Find, print, and display the top detections: person and bicycle.\n", + "i = predictions_df['person'].argmax()\n", + "j = predictions_df['bicycle'].argmax()\n", + "\n", + "# Show top predictions for top detection.\n", + "f = pd.Series(df['prediction'].iloc[i], index=labels_df['name'])\n", + "print('Top detection:')\n", + "print(f.order(ascending=False)[:5])\n", + "print('')\n", + "\n", + "# Show top predictions for second-best detection.\n", + "f = pd.Series(df['prediction'].iloc[j], index=labels_df['name'])\n", + "print('Second-best detection:')\n", + "print(f.order(ascending=False)[:5])\n", + "\n", + "# Show top detection in red, second-best top detection in blue.\n", + "im = plt.imread('images/fish-bike.jpg')\n", + "plt.imshow(im)\n", + "currentAxis = plt.gca()\n", + "\n", + "det = df.iloc[i]\n", + "coords = (det['xmin'], det['ymin']), det['xmax'] - det['xmin'], det['ymax'] - det['ymin']\n", + "currentAxis.add_patch(plt.Rectangle(*coords, fill=False, edgecolor='r', linewidth=5))\n", + "\n", + "det = df.iloc[j]\n", + "coords = (det['xmin'], det['ymin']), det['xmax'] - det['xmin'], det['ymax'] - det['ymin']\n", + "currentAxis.add_patch(plt.Rectangle(*coords, fill=False, edgecolor='b', linewidth=5))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That's cool. Let's take all 'bicycle' detections and NMS them to get rid of overlapping windows." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def nms_detections(dets, overlap=0.3):\n", + " \"\"\"\n", + " Non-maximum suppression: Greedily select high-scoring detections and\n", + " skip detections that are significantly covered by a previously\n", + " selected detection.\n", + "\n", + " This version is translated from Matlab code by Tomasz Malisiewicz,\n", + " who sped up Pedro Felzenszwalb's code.\n", + "\n", + " Parameters\n", + " ----------\n", + " dets: ndarray\n", + " each row is ['xmin', 'ymin', 'xmax', 'ymax', 'score']\n", + " overlap: float\n", + " minimum overlap ratio (0.3 default)\n", + "\n", + " Output\n", + " ------\n", + " dets: ndarray\n", + " remaining after suppression.\n", + " \"\"\"\n", + " x1 = dets[:, 0]\n", + " y1 = dets[:, 1]\n", + " x2 = dets[:, 2]\n", + " y2 = dets[:, 3]\n", + " ind = np.argsort(dets[:, 4])\n", + "\n", + " w = x2 - x1\n", + " h = y2 - y1\n", + " area = (w * h).astype(float)\n", + "\n", + " pick = []\n", + " while len(ind) > 0:\n", + " i = ind[-1]\n", + " pick.append(i)\n", + " ind = ind[:-1]\n", + "\n", + " xx1 = np.maximum(x1[i], x1[ind])\n", + " yy1 = np.maximum(y1[i], y1[ind])\n", + " xx2 = np.minimum(x2[i], x2[ind])\n", + " yy2 = np.minimum(y2[i], y2[ind])\n", + "\n", + " w = np.maximum(0., xx2 - xx1)\n", + " h = np.maximum(0., yy2 - yy1)\n", + "\n", + " wh = w * h\n", + " o = wh / (area[i] + area[ind] - wh)\n", + "\n", + " ind = ind[np.nonzero(o <= overlap)[0]]\n", + "\n", + " return dets[pick, :]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "scores = predictions_df['bicycle']\n", + "windows = df[['xmin', 'ymin', 'xmax', 'ymax']].values\n", + "dets = np.hstack((windows, scores[:, np.newaxis]))\n", + "nms_dets = nms_detections(dets)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Show top 3 NMS'd detections for 'bicycle' in the image and note the gap between the top scoring box (red) and the remaining boxes." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "scores: [ 0.86610985 -0.70051557 -1.34796357]\n" + ] + }, + { + "data": { + "image/png": [ + "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\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(im)\n", + "currentAxis = plt.gca()\n", + "colors = ['r', 'b', 'y']\n", + "for c, det in zip(colors, nms_dets[:3]):\n", + " currentAxis.add_patch(\n", + " plt.Rectangle((det[0], det[1]), det[2]-det[0], det[3]-det[1],\n", + " fill=False, edgecolor=c, linewidth=5)\n", + " )\n", + "print 'scores:', nms_dets[:3, 4]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This was an easy instance for bicycle as it was in the class's training set. However, the person result is a true detection since this was not in the set for that class.\n", + "\n", + "You should try out detection on an image of your own next!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "(Remove the temp directory to clean up, and we're done.)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "!rm -rf _temp" + ] + } + ], + "metadata": { + "description": "Run a pretrained model as a detector in Python.", + "example_name": "R-CNN detection", + "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": 6 + }, + "nbformat": 4, + "nbformat_minor": 0 +} + + +
    +
    + + diff --git a/gathered/examples/feature_extraction.html b/gathered/examples/feature_extraction.html new file mode 100644 index 00000000000..fe73c5cab3c --- /dev/null +++ b/gathered/examples/feature_extraction.html @@ -0,0 +1,139 @@ + + + + + + + + + Caffe | Feature extraction with Caffe C++ code. + + + + + + + + + + + + + +
    +
    +

    Caffe

    +

    + Deep learning framework by the BVLC +

    +

    + Created by +
    + Yangqing Jia +
    + Lead Developer +
    + Evan Shelhamer +

    +
    +
    + +

    Extracting Features

    + +

    In this tutorial, we will extract features using a pre-trained model with the included C++ utility. +Note that we recommend using the Python interface for this task, as for example in the filter visualization example.

    + +

    Follow instructions for installing Caffe and run scripts/download_model_binary.py models/bvlc_reference_caffenet from caffe root directory. +If you need detailed information about the tools below, please consult their source code, in which additional documentation is usually provided.

    + +

    Select data to run on

    + +

    We’ll make a temporary folder to store things into.

    + +
    mkdir examples/_temp
    +
    +
    + +

    Generate a list of the files to process. +We’re going to use the images that ship with caffe.

    + +
    find `pwd`/examples/images -type f -exec echo {} \; > examples/_temp/temp.txt
    +
    +
    + +

    The ImageDataLayer we’ll use expects labels after each filenames, so let’s add a 0 to the end of each line

    + +
    sed "s/$/ 0/" examples/_temp/temp.txt > examples/_temp/file_list.txt
    +
    +
    + +

    Define the Feature Extraction Network Architecture

    + +

    In practice, subtracting the mean image from a dataset significantly improves classification accuracies. +Download the mean image of the ILSVRC dataset.

    + +
    ./data/ilsvrc12/get_ilsvrc_aux.sh
    +
    +
    + +

    We will use data/ilsvrc212/imagenet_mean.binaryproto in the network definition prototxt.

    + +

    Let’s copy and modify the network definition. +We’ll be using the ImageDataLayer, which will load and resize images for us.

    + +
    cp examples/feature_extraction/imagenet_val.prototxt examples/_temp
    +
    +
    + +

    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 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.

    + +

    The last parameter above is the number of data mini-batches.

    + +

    The features are stored to LevelDB examples/_temp/features, ready for access by some other code.

    + +

    If you meet with the error “Check failed: status.ok() Failed to open leveldb examples/_temp/features”, it is because the directory examples/_temp/features has been created the last time you run the command. Remove it and run again.

    + +
    rm -rf examples/_temp/features/
    +
    +
    + +

    If you’d like to use the Python wrapper for extracting features, check out the filter visualization notebook.

    + +

    Clean Up

    + +

    Let’s remove the temporary directory now.

    + +
    rm -r examples/_temp
    +
    +
    + + +
    +
    + + diff --git a/gathered/examples/finetune_flickr_style.html b/gathered/examples/finetune_flickr_style.html new file mode 100644 index 00000000000..ada1fe19025 --- /dev/null +++ b/gathered/examples/finetune_flickr_style.html @@ -0,0 +1,229 @@ + + + + + + + + + Caffe | Fine-tuning for style recognition + + + + + + + + + + + + + +
    +
    +

    Caffe

    +

    + Deep learning framework by the BVLC +

    +

    + Created by +
    + Yangqing Jia +
    + Lead Developer +
    + Evan Shelhamer +

    +
    +
    + +

    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, to predict image style instead of object category.

    + +

    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 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 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. +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 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 lr_mult to 0.

    + +

    Procedure

    + +

    All steps are to be done from the caffe root directory.

    + +

    The dataset is distributed as a list of URLs with corresponding labels. +Using a script, we will download a small subset of the data and split it into train and val sets.

    + +
    caffe % ./examples/finetune_flickr_style/assemble_data.py -h
    +usage: assemble_data.py [-h] [-s SEED] [-i IMAGES] [-w WORKERS]
    +
    +Download a subset of Flickr Style to a directory
    +
    +optional arguments:
    +  -h, --help            show this help message and exit
    +  -s SEED, --seed SEED  random seed
    +  -i IMAGES, --images IMAGES
    +                        number of images to use (-1 for all)
    +  -w WORKERS, --workers WORKERS
    +                        num workers used to download images. -x uses (all - x)
    +                        cores.
    +
    +caffe % python examples/finetune_flickr_style/assemble_data.py --workers=-1 --images=2000 --seed 831486
    +Downloading 2000 images with 7 workers...
    +Writing train/val for 1939 successfully downloaded images.
    +
    +
    + +

    This script downloads images and writes train/val file lists into data/flickr_style. +The prototxts in this example assume this, and also assume the presence of the ImageNet mean file (run get_ilsvrc_aux.sh from data/ilsvrc12 to obtain this if you haven’t yet).

    + +

    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! 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
    +
    +[...]
    +
    +I0828 22:10:04.025378  9718 solver.cpp:46] Solver scaffolding done.
    +I0828 22:10:04.025388  9718 caffe.cpp:95] Use GPU with device ID 0
    +I0828 22:10:04.192004  9718 caffe.cpp:107] Finetuning from models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel
    +
    +[...]
    +
    +I0828 22:17:48.338963 11510 solver.cpp:165] Solving FlickrStyleCaffeNet
    +I0828 22:17:48.339010 11510 solver.cpp:251] Iteration 0, Testing net (#0)
    +I0828 22:18:14.313817 11510 solver.cpp:302]     Test net output #0: accuracy = 0.0308
    +I0828 22:18:14.476822 11510 solver.cpp:195] Iteration 0, loss = 3.78589
    +I0828 22:18:14.476878 11510 solver.cpp:397] Iteration 0, lr = 0.001
    +I0828 22:18:19.700408 11510 solver.cpp:195] Iteration 20, loss = 3.25728
    +I0828 22:18:19.700461 11510 solver.cpp:397] Iteration 20, lr = 0.001
    +I0828 22:18:24.924685 11510 solver.cpp:195] Iteration 40, loss = 2.18531
    +I0828 22:18:24.924741 11510 solver.cpp:397] Iteration 40, lr = 0.001
    +I0828 22:18:30.114858 11510 solver.cpp:195] Iteration 60, loss = 2.4915
    +I0828 22:18:30.114910 11510 solver.cpp:397] Iteration 60, lr = 0.001
    +I0828 22:18:35.328071 11510 solver.cpp:195] Iteration 80, loss = 2.04539
    +I0828 22:18:35.328127 11510 solver.cpp:397] Iteration 80, lr = 0.001
    +I0828 22:18:40.588317 11510 solver.cpp:195] Iteration 100, loss = 2.1924
    +I0828 22:18:40.588373 11510 solver.cpp:397] Iteration 100, lr = 0.001
    +I0828 22:18:46.171576 11510 solver.cpp:195] Iteration 120, loss = 2.25107
    +I0828 22:18:46.171669 11510 solver.cpp:397] Iteration 120, lr = 0.001
    +I0828 22:18:51.757809 11510 solver.cpp:195] Iteration 140, loss = 1.355
    +I0828 22:18:51.757863 11510 solver.cpp:397] Iteration 140, lr = 0.001
    +I0828 22:18:57.345080 11510 solver.cpp:195] Iteration 160, loss = 1.40815
    +I0828 22:18:57.345135 11510 solver.cpp:397] Iteration 160, lr = 0.001
    +I0828 22:19:02.928794 11510 solver.cpp:195] Iteration 180, loss = 1.6558
    +I0828 22:19:02.928850 11510 solver.cpp:397] Iteration 180, lr = 0.001
    +I0828 22:19:08.514497 11510 solver.cpp:195] Iteration 200, loss = 0.88126
    +I0828 22:19:08.514552 11510 solver.cpp:397] Iteration 200, lr = 0.001
    +
    +[...]
    +
    +I0828 22:22:40.789010 11510 solver.cpp:195] Iteration 960, loss = 0.112586
    +I0828 22:22:40.789175 11510 solver.cpp:397] Iteration 960, lr = 0.001
    +I0828 22:22:46.376626 11510 solver.cpp:195] Iteration 980, loss = 0.0959077
    +I0828 22:22:46.376682 11510 solver.cpp:397] Iteration 980, lr = 0.001
    +I0828 22:22:51.687258 11510 solver.cpp:251] Iteration 1000, Testing net (#0)
    +I0828 22:23:17.438894 11510 solver.cpp:302]     Test net output #0: accuracy = 0.2356
    +
    +
    + +

    Note how rapidly the loss went down. Although the 23.5% accuracy is only modest, it was achieved in only 1000, and evidence that the model is starting to learn quickly and well. +Once the model is fully fine-tuned on the whole training set over 100,000 iterations the final validation accuracy is 39.16%. +This takes ~7 hours in Caffe on a K40 GPU.

    + +

    For comparison, here is how the loss goes down when we do not start with a pre-trained model:

    + +
    I0828 22:24:18.624004 12919 solver.cpp:165] Solving FlickrStyleCaffeNet
    +I0828 22:24:18.624099 12919 solver.cpp:251] Iteration 0, Testing net (#0)
    +I0828 22:24:44.520992 12919 solver.cpp:302]     Test net output #0: accuracy = 0.0366
    +I0828 22:24:44.676905 12919 solver.cpp:195] Iteration 0, loss = 3.47942
    +I0828 22:24:44.677120 12919 solver.cpp:397] Iteration 0, lr = 0.001
    +I0828 22:24:50.152454 12919 solver.cpp:195] Iteration 20, loss = 2.99694
    +I0828 22:24:50.152509 12919 solver.cpp:397] Iteration 20, lr = 0.001
    +I0828 22:24:55.736256 12919 solver.cpp:195] Iteration 40, loss = 3.0498
    +I0828 22:24:55.736311 12919 solver.cpp:397] Iteration 40, lr = 0.001
    +I0828 22:25:01.316514 12919 solver.cpp:195] Iteration 60, loss = 2.99549
    +I0828 22:25:01.316567 12919 solver.cpp:397] Iteration 60, lr = 0.001
    +I0828 22:25:06.899554 12919 solver.cpp:195] Iteration 80, loss = 3.00573
    +I0828 22:25:06.899610 12919 solver.cpp:397] Iteration 80, lr = 0.001
    +I0828 22:25:12.484624 12919 solver.cpp:195] Iteration 100, loss = 2.99094
    +I0828 22:25:12.484678 12919 solver.cpp:397] Iteration 100, lr = 0.001
    +I0828 22:25:18.069056 12919 solver.cpp:195] Iteration 120, loss = 3.01616
    +I0828 22:25:18.069149 12919 solver.cpp:397] Iteration 120, lr = 0.001
    +I0828 22:25:23.650928 12919 solver.cpp:195] Iteration 140, loss = 2.98786
    +I0828 22:25:23.650984 12919 solver.cpp:397] Iteration 140, lr = 0.001
    +I0828 22:25:29.235535 12919 solver.cpp:195] Iteration 160, loss = 3.00724
    +I0828 22:25:29.235589 12919 solver.cpp:397] Iteration 160, lr = 0.001
    +I0828 22:25:34.816898 12919 solver.cpp:195] Iteration 180, loss = 3.00099
    +I0828 22:25:34.816953 12919 solver.cpp:397] Iteration 180, lr = 0.001
    +I0828 22:25:40.396656 12919 solver.cpp:195] Iteration 200, loss = 2.99848
    +I0828 22:25:40.396711 12919 solver.cpp:397] Iteration 200, lr = 0.001
    +
    +[...]
    +
    +I0828 22:29:12.539094 12919 solver.cpp:195] Iteration 960, loss = 2.99203
    +I0828 22:29:12.539258 12919 solver.cpp:397] Iteration 960, lr = 0.001
    +I0828 22:29:18.123092 12919 solver.cpp:195] Iteration 980, loss = 2.99345
    +I0828 22:29:18.123147 12919 solver.cpp:397] Iteration 980, lr = 0.001
    +I0828 22:29:23.432059 12919 solver.cpp:251] Iteration 1000, Testing net (#0)
    +I0828 22:29:49.409044 12919 solver.cpp:302]     Test net output #0: accuracy = 0.0572
    +
    +
    + +

    This model is only beginning to learn.

    + +

    Fine-tuning can be feasible when training from scratch would not be for lack of time or data. +Even in CPU mode each pass through the training set takes ~100 s. GPU fine-tuning is of course faster still and can learn a useful model in minutes or hours instead of days or weeks. +Furthermore, note that the model has only trained on < 2,000 instances. Transfer learning a new task like style recognition from the ImageNet pretraining can require much less data than training from scratch.

    + +

    Now try fine-tuning to your own tasks and data!

    + +

    Trained model

    + +

    We provide a model trained on all 80K images, with final accuracy of 39%. +Simply do ./scripts/download_model_binary.py models/finetune_flickr_style to obtain it.

    + +

    License

    + +

    The Flickr Style dataset as distributed here contains only URLs to images. +Some of the images may have copyright. +Training a category-recognition model for research/non-commercial use may constitute fair use of this data, but the result should not be used for commercial purposes.

    + + +
    +
    + + diff --git a/gathered/examples/imagenet.html b/gathered/examples/imagenet.html new file mode 100644 index 00000000000..8e9e4575695 --- /dev/null +++ b/gathered/examples/imagenet.html @@ -0,0 +1,168 @@ + + + + + + + + + Caffe | ImageNet tutorial + + + + + + + + + + + + + +
    +
    +

    Caffe

    +

    + Deep learning framework by the BVLC +

    +

    + Created by +
    + Yangqing Jia +
    + Lead Developer +
    + Evan Shelhamer +

    +
    +
    + +

    Brewing ImageNet

    + +

    This guide is meant to get you ready to train your own model on your own data. +If you just want an ImageNet-trained network, then note that since training takes a lot of energy and we hate global warming, we provide the CaffeNet model trained as described below in the model zoo.

    + +

    Data Preparation

    + +

    The guide specifies all paths and assumes all commands are executed from the root caffe directory.

    + +

    By “ImageNet” we here mean the ILSVRC12 challenge, but you can easily train on the whole of ImageNet as well, just with more disk space, and a little longer training time.

    + +

    We assume that you already have downloaded the ImageNet training data and validation data, and they are stored on your disk like:

    + +
    /path/to/imagenet/train/n01440764/n01440764_10026.JPEG
    +/path/to/imagenet/val/ILSVRC2012_val_00000001.JPEG
    +
    +
    + +

    You will first need to prepare some auxiliary data for training. This data can be downloaded by:

    + +
    ./data/ilsvrc12/get_ilsvrc_aux.sh
    +
    +
    + +

    The training and validation input are described in train.txt and val.txt as text listing all the files and their labels. Note that we use a different indexing for labels than the ILSVRC devkit: we sort the synset names in their ASCII order, and then label them from 0 to 999. See synset_words.txt for the synset/name mapping.

    + +

    You may want to resize the images to 256x256 in advance. By default, we do not explicitly do this because in a cluster environment, one may benefit from resizing images in a parallel fashion, using mapreduce. For example, Yangqing used his lightweight mincepie package. If you prefer things to be simpler, you can also use shell commands, something like:

    + +
    for name in /path/to/imagenet/val/*.JPEG; do
    +    convert -resize 256x256\! $name $name
    +done
    +
    +
    + +

    Take a look at examples/imagenet/create_imagenet.sh. Set the paths to the train and val dirs as needed, and set “RESIZE=true” to resize all images to 256x256 if you haven’t resized the images in advance. +Now simply create the leveldbs with examples/imagenet/create_imagenet.sh. Note that examples/imagenet/ilsvrc12_train_leveldb and examples/imagenet/ilsvrc12_val_leveldb should not exist before this execution. It will be created by the script. GLOG_logtostderr=1 simply dumps more information for you to inspect, and you can safely ignore it.

    + +

    Compute Image Mean

    + +

    The model requires us to subtract the image mean from each image, so we have to compute the mean. tools/compute_image_mean.cpp implements that - it is also a good example to familiarize yourself on how to manipulate the multiple components, such as protocol buffers, leveldbs, and logging, if you are not familiar with them. Anyway, the mean computation can be carried out as:

    + +
    ./examples/imagenet/make_imagenet_mean.sh
    +
    +
    + +

    which will make data/ilsvrc12/imagenet_mean.binaryproto.

    + +

    Model Definition

    + +

    We are going to describe a reference implementation for the approach first proposed by Krizhevsky, Sutskever, and Hinton in their NIPS 2012 paper.

    + +

    The network definition (models/bvlc_reference_caffenet/train_val.prototxt) follows the one in Krizhevsky et al. +Note that if you deviated from file paths suggested in this guide, you’ll need to adjust the relevant paths in the .prototxt files.

    + +

    If you look carefully at models/bvlc_reference_caffenet/train_val.prototxt, you will notice several include sections specifying either phase: TRAIN or phase: TEST. These sections allow us to define two closely related networks in one file: the network used for training and the network used for testing. These two networks are almost identical, sharing all layers except for those marked with include { phase: TRAIN } or include { phase: TEST }. In this case, only the input layers and one output layer are different.

    + +

    Input layer differences: The training network’s data input layer draws its data from examples/imagenet/ilsvrc12_train_leveldb and randomly mirrors the input image. The testing network’s data layer takes data from examples/imagenet/ilsvrc12_val_leveldb and does not perform random mirroring.

    + +

    Output layer differences: Both networks output the softmax_loss layer, which in training is used to compute the loss function and to initialize the backpropagation, while in validation this loss is simply reported. The testing network also has a second output layer, accuracy, which is used to report the accuracy on the test set. In the process of training, the test network will occasionally be instantiated and tested on the test set, producing lines like Test score #0: xxx and Test score #1: xxx. In this case score 0 is the accuracy (which will start around 1/1000 = 0.001 for an untrained network) and score 1 is the loss (which will start around 7 for an untrained network).

    + +

    We will also lay out a protocol buffer for running the solver. Let’s make a few plans:

    + +
      +
    • We will run in batches of 256, and run a total of 450,000 iterations (about 90 epochs).
    • +
    • For every 1,000 iterations, we test the learned net on the validation data.
    • +
    • We set the initial learning rate to 0.01, and decrease it every 100,000 iterations (about 20 epochs).
    • +
    • Information will be displayed every 20 iterations.
    • +
    • The network will be trained with momentum 0.9 and a weight decay of 0.0005.
    • +
    • For every 10,000 iterations, we will take a snapshot of the current status.
    • +
    + +

    Sound good? This is implemented in models/bvlc_reference_caffenet/solver.prototxt.

    + +

    Training ImageNet

    + +

    Ready? Let’s train.

    + +
    ./build/tools/caffe train --solver=models/bvlc_reference_caffenet/solver.prototxt
    +
    +
    + +

    Sit back and enjoy!

    + +

    On a K40 machine, every 20 iterations take about 26.5 seconds to run (while a on a K20 this takes 36 seconds), so effectively about 5.2 ms per image for the full forward-backward pass. About 2 ms of this is on forward, and the rest is backward. If you are interested in dissecting the computation time, you can run

    + +
    ./build/tools/caffe time --model=models/bvlc_reference_caffenet/train_val.prototxt
    +
    +
    + +

    Resume Training?

    + +

    We all experience times when the power goes out, or we feel like rewarding ourself a little by playing Battlefield (does anyone still remember Quake?). Since we are snapshotting intermediate results during training, we will be able to resume from snapshots. This can be done as easy as:

    + +
    ./build/tools/caffe train --solver=models/bvlc_reference_caffenet/solver.prototxt --snapshot=models/bvlc_reference_caffenet/caffenet_train_iter_10000.solverstate
    +
    +
    + +

    where in the script caffenet_train_iter_10000.solverstate is the solver state snapshot that stores all necessary information to recover the exact solver state (including the parameters, momentum history, etc).

    + +

    Parting Words

    + +

    Hope you liked this recipe! +Many researchers have gone further since the ILSVRC 2012 challenge, changing the network architecture and/or fine-tuning the various parameters in the network to address new data and tasks. +Caffe lets you explore different network choices more easily by simply writing different prototxt files - isn’t that exciting?

    + +

    And since now you have a trained network, check out how to use it with the Python interface for classifying ImageNet.

    + + +
    +
    + + diff --git a/gathered/examples/mnist.html b/gathered/examples/mnist.html new file mode 100644 index 00000000000..4bbf2e2909e --- /dev/null +++ b/gathered/examples/mnist.html @@ -0,0 +1,377 @@ + + + + + + + + + Caffe | LeNet MNIST Tutorial + + + + + + + + + + + + + +
    +
    +

    Caffe

    +

    + Deep learning framework by the BVLC +

    +

    + Created by +
    + Yangqing Jia +
    + Lead Developer +
    + Evan Shelhamer +

    +
    +
    + +

    Training LeNet on MNIST with Caffe

    + +

    We will assume that you have Caffe successfully compiled. If not, please refer to the Installation page. In this tutorial, we will assume that your Caffe installation is located at CAFFE_ROOT.

    + +

    Prepare Datasets

    + +

    You will first need to download and convert the data format from the MNIST website. To do this, simply run the following commands:

    + +
    cd $CAFFE_ROOT
    +./data/mnist/get_mnist.sh
    +./examples/mnist/create_mnist.sh
    +
    +
    + +

    If it complains that wget or gunzip are not installed, you need to install them respectively. After running the script there should be two datasets, mnist_train_lmdb, and mnist_test_lmdb.

    + +

    LeNet: the MNIST Classification Model

    + +

    Before we actually run the training program, let’s explain what will happen. We will use the LeNet network, which is known to work well on digit classification tasks. We will use a slightly different version from the original LeNet implementation, replacing the sigmoid activations with Rectified Linear Unit (ReLU) activations for the neurons.

    + +

    The design of LeNet contains the essence of CNNs that are still used in larger models such as the ones in ImageNet. In general, it consists of a convolutional layer followed by a pooling layer, another convolution layer followed by a pooling layer, and then two fully connected layers similar to the conventional multilayer perceptrons. We have defined the layers in $CAFFE_ROOT/examples/mnist/lenet_train_test.prototxt.

    + +

    Define the MNIST Network

    + +

    This section explains the lenet_train_test.prototxt model definition that specifies the LeNet model for MNIST handwritten digit classification. We assume that you are familiar with Google Protobuf, and assume that you have read the protobuf definitions used by Caffe, which can be found at $CAFFE_ROOT/src/caffe/proto/caffe.proto.

    + +

    Specifically, we will write a caffe::NetParameter (or in python, caffe.proto.caffe_pb2.NetParameter) protobuf. We will start by giving the network a name:

    + +
    name: "LeNet"
    +
    +
    + +

    Writing the Data Layer

    + +

    Currently, we will read the MNIST data from the lmdb we created earlier in the demo. This is defined by a data layer:

    + +
    layer {
    +  name: "mnist"
    +  type: "Data"
    +  transform_param {
    +    scale: 0.00390625
    +  }
    +  data_param {
    +    source: "mnist_train_lmdb"
    +    backend: LMDB
    +    batch_size: 64
    +  }
    +  top: "data"
    +  top: "label"
    +}
    +
    +
    + +

    Specifically, this layer has name mnist, type data, and it reads the data from the given lmdb source. We will use a batch size of 64, and scale the incoming pixels so that they are in the range [0,1). Why 0.00390625? It is 1 divided by 256. And finally, this layer produces two blobs, one is the data blob, and one is the label blob.

    + +

    Writing the Convolution Layer

    + +

    Let’s define the first convolution layer:

    + +
    layer {
    +  name: "conv1"
    +  type: "Convolution"
    +  param { lr_mult: 1 }
    +  param { lr_mult: 2 }
    +  convolution_param {
    +    num_output: 20
    +    kernel_size: 5
    +    stride: 1
    +    weight_filler {
    +      type: "xavier"
    +    }
    +    bias_filler {
    +      type: "constant"
    +    }
    +  }
    +  bottom: "data"
    +  top: "conv1"
    +}
    +
    +
    + +

    This layer takes the data blob (it is provided by the data layer), and produces the conv1 layer. It produces outputs of 20 channels, with the convolutional kernel size 5 and carried out with stride 1.

    + +

    The fillers allow us to randomly initialize the value of the weights and bias. For the weight filler, we will use the xavier algorithm that automatically determines the scale of initialization based on the number of input and output neurons. For the bias filler, we will simply initialize it as constant, with the default filling value 0.

    + +

    lr_mults are the learning rate adjustments for the layer’s learnable parameters. In this case, we will set the weight learning rate to be the same as the learning rate given by the solver during runtime, and the bias learning rate to be twice as large as that - this usually leads to better convergence rates.

    + +

    Writing the Pooling Layer

    + +

    Phew. Pooling layers are actually much easier to define:

    + +
    layer {
    +  name: "pool1"
    +  type: "Pooling"
    +  pooling_param {
    +    kernel_size: 2
    +    stride: 2
    +    pool: MAX
    +  }
    +  bottom: "conv1"
    +  top: "pool1"
    +}
    +
    +
    + +

    This says we will perform max pooling with a pool kernel size 2 and a stride of 2 (so no overlapping between neighboring pooling regions).

    + +

    Similarly, you can write up the second convolution and pooling layers. Check $CAFFE_ROOT/examples/mnist/lenet_train_test.prototxt for details.

    + +

    Writing the Fully Connected Layer

    + +

    Writing a fully connected layer is also simple:

    + +
    layer {
    +  name: "ip1"
    +  type: "InnerProduct"
    +  param { lr_mult: 1 }
    +  param { lr_mult: 2 }
    +  inner_product_param {
    +    num_output: 500
    +    weight_filler {
    +      type: "xavier"
    +    }
    +    bias_filler {
    +      type: "constant"
    +    }
    +  }
    +  bottom: "pool2"
    +  top: "ip1"
    +}
    +
    +
    + +

    This defines a fully connected layer (known in Caffe as an InnerProduct layer) with 500 outputs. All other lines look familiar, right?

    + +

    Writing the ReLU Layer

    + +

    A ReLU Layer is also simple:

    + +
    layer {
    +  name: "relu1"
    +  type: "ReLU"
    +  bottom: "ip1"
    +  top: "ip1"
    +}
    +
    +
    + +

    Since ReLU is an element-wise operation, we can do in-place operations to save some memory. This is achieved by simply giving the same name to the bottom and top blobs. Of course, do NOT use duplicated blob names for other layer types!

    + +

    After the ReLU layer, we will write another innerproduct layer:

    + +
    layer {
    +  name: "ip2"
    +  type: "InnerProduct"
    +  param { lr_mult: 1 }
    +  param { lr_mult: 2 }
    +  inner_product_param {
    +    num_output: 10
    +    weight_filler {
    +      type: "xavier"
    +    }
    +    bias_filler {
    +      type: "constant"
    +    }
    +  }
    +  bottom: "ip1"
    +  top: "ip2"
    +}
    +
    +
    + +

    Writing the Loss Layer

    + +

    Finally, we will write the loss!

    + +
    layer {
    +  name: "loss"
    +  type: "SoftmaxWithLoss"
    +  bottom: "ip2"
    +  bottom: "label"
    +}
    +
    +
    + +

    The softmax_loss layer implements both the softmax and the multinomial logistic loss (that saves time and improves numerical stability). It takes two blobs, the first one being the prediction and the second one being the label provided by the data layer (remember it?). It does not produce any outputs - all it does is to compute the loss function value, report it when backpropagation starts, and initiates the gradient with respect to ip2. This is where all magic starts.

    + +

    Additional Notes: Writing Layer Rules

    + +

    Layer definitions can include rules for whether and when they are included in the network definition, like the one below:

    + +
    layer {
    +  // ...layer definition...
    +  include: { phase: TRAIN }
    +}
    +
    +
    + +

    This is a rule, which controls layer inclusion in the network, based on current network’s state. +You can refer to $CAFFE_ROOT/src/caffe/proto/caffe.proto for more information about layer rules and model schema.

    + +

    In the above example, this layer will be included only in TRAIN phase. +If we change TRAIN with TEST, then this layer will be used only in test phase. +By default, that is without layer rules, a layer is always included in the network. +Thus, lenet_train_test.prototxt has two DATA layers defined (with different batch_size), one for the training phase and one for the testing phase. +Also, there is an Accuracy layer which is included only in TEST phase for reporting the model accuracy every 100 iteration, as defined in lenet_solver.prototxt.

    + +

    Define the MNIST Solver

    + +

    Check out the comments explaining each line in the prototxt $CAFFE_ROOT/examples/mnist/lenet_solver.prototxt:

    + +
    # The train/test net protocol buffer definition
    +net: "examples/mnist/lenet_train_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: "inv"
    +gamma: 0.0001
    +power: 0.75
    +# Display every 100 iterations
    +display: 100
    +# The maximum number of iterations
    +max_iter: 10000
    +# snapshot intermediate results
    +snapshot: 5000
    +snapshot_prefix: "examples/mnist/lenet"
    +# solver mode: CPU or GPU
    +solver_mode: GPU
    +
    +
    + +

    Training and Testing the Model

    + +

    Training the model is simple after you have written the network definition protobuf and solver protobuf files. Simply run train_lenet.sh, or the following command directly:

    + +
    cd $CAFFE_ROOT
    +./examples/mnist/train_lenet.sh
    +
    +
    + +

    train_lenet.sh is a simple script, but here is a quick explanation: the main tool for training is caffe with action train and the solver protobuf text file as its argument.

    + +

    When you run the code, you will see a lot of messages flying by like this:

    + +
    I1203 net.cpp:66] Creating Layer conv1
    +I1203 net.cpp:76] conv1 <- data
    +I1203 net.cpp:101] conv1 -> conv1
    +I1203 net.cpp:116] Top shape: 20 24 24
    +I1203 net.cpp:127] conv1 needs backward computation.
    +
    +
    + +

    These messages tell you the details about each layer, its connections and its output shape, which may be helpful in debugging. After the initialization, the training will start:

    + +
    I1203 net.cpp:142] Network initialization done.
    +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 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
    +...
    +I1203 solver.cpp:84] Testing net
    +I1203 solver.cpp:111] Test score #0: 0.9785
    +I1203 solver.cpp:111] Test score #1: 0.0606671
    +
    +
    + +

    For each training iteration, lr is the learning rate of that iteration, and loss is the training function. For the output of the testing phase, score 0 is the accuracy, and score 1 is the testing loss function.

    + +

    And after a few minutes, you are done!

    + +
    I1203 solver.cpp:84] Testing net
    +I1203 solver.cpp:111] Test score #0: 0.9897
    +I1203 solver.cpp:111] Test score #1: 0.0324599
    +I1203 solver.cpp:126] Snapshotting to lenet_iter_10000
    +I1203 solver.cpp:133] Snapshotting solver state to lenet_iter_10000.solverstate
    +I1203 solver.cpp:78] Optimization Done.
    +
    +
    + +

    The final model, stored as a binary protobuf file, is stored at

    + +
    lenet_iter_10000
    +
    +
    + +

    which you can deploy as a trained model in your application, if you are training on a real-world application dataset.

    + +

    Um… How about GPU training?

    + +

    You just did! All the training was carried out on the GPU. In fact, if you would like to do training on CPU, you can simply change one line in lenet_solver.prototxt:

    + +
    # solver mode: CPU or GPU
    +solver_mode: CPU
    +
    +
    + +

    and you will be using CPU for training. Isn’t that easy?

    + +

    MNIST is a small dataset, so training with GPU does not really introduce too much benefit due to communication overheads. On larger datasets with more complex models, such as ImageNet, the computation speed difference will be more significant.

    + +

    How to reduce the learning rate at fixed steps?

    +

    Look at lenet_multistep_solver.prototxt

    + + +
    +
    + + diff --git a/gathered/examples/net_surgery.ipynb b/gathered/examples/net_surgery.ipynb new file mode 100644 index 00000000000..3c1ddaf6511 --- /dev/null +++ b/gathered/examples/net_surgery.ipynb @@ -0,0 +1,6963 @@ + + + + + + + + + Caffe | Editing model parameters + + + + + + + + + + + + + +
    +
    +

    Caffe

    +

    + Deep learning framework by the BVLC +

    +

    + Created by +
    + Yangqing Jia +
    + Lead Developer +
    + Evan Shelhamer +

    +
    +
    + + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Net Surgery\n", + "\n", + "Caffe networks can be transformed to your particular needs by editing the model parameters. The data, diffs, and parameters of a net are all exposed in pycaffe.\n", + "\n", + "Roll up your sleeves for net surgery with pycaffe!" + ] + }, + { + "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", + "# 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", + "# configure plotting\n", + "plt.rcParams['figure.figsize'] = (10, 10)\n", + "plt.rcParams['image.interpolation'] = 'nearest'\n", + "plt.rcParams['image.cmap'] = 'gray'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Designer Filters\n", + "\n", + "To show how to load, manipulate, and save parameters we'll design our own filters into a simple network that's only a single convolution layer. This net has two blobs, `data` for the input and `conv` for the convolution output and one parameter `conv` for the convolution filter weights and biases." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "blobs ['data', 'conv']\n", + "params ['conv']\n" + ] + }, + { + "data": { + "image/png": [ + "iVBORw0KGgoAAAANSUhEUgAAAlIAAAHNCAYAAADVB5V4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n", + "AAALEgAACxIB0t1+/AAAIABJREFUeJzsvWuMZdl13/c/tx733np393T3PPkYDUccPsQZiaRkCYpE\n", + "CYklOwYhfwjCIAEiJDLswAkQf3AQIEoC64OcIEDiIHESBAiCCAkkJ4GtJHCM+KHQjmGZtmxKJBVC\n", + "wxkOZyac4Uz3dHe97q1bt+7Jh+r/rt/517499ER008xZQKGq7j1nn73XXns9/mvtfZq2bdVTTz31\n", + "1FNPPfXU0z86DR52B3rqqaeeeuqpp57+SaXekeqpp5566qmnnnp6j9Q7Uj311FNPPfXUU0/vkXpH\n", + "qqeeeuqpp5566uk9Uu9I9dRTTz311FNPPb1H6h2pnnrqqaeeeuqpp/dIvSPVU089/b5T0zT/RdM0\n", + "/87v97Xv0s4HmqZZNE1T1WtN03y5aZp/6v/rc3rqqaeeSE1/jlRPPfX0vUBN03xA0suSVtu2XTzc\n", + "3vTUU0//f6Eekeqpp55+X2kZItRTTz319L1IvcLrqaee3pWapnmuaZr/s2maO/dTZH8E3/2399Nz\n", + "f7lpmkNJn7n/2S/hmj/dNM03m6Z5vWmaf/V+Cu5p3P9L9//+yfvX/Kmmab51/55/Ge384aZp/mHT\n", + "NPeapnm1aZp/7x9hDK80TfNT9//+95um+R+bpvmVpmn2m6b5naZpPtQ0zb99/7nfaJrmn8a9P980\n", + "ze/ev/alpmn+WLT9oPENm6b5j+63+eZ9Xo3+Ueegp556+u6k3pHqqaeeHkhN06xJ+l8l/RVJ1yX9\n", + "65L++6ZpnsVln5P0S23bbkn6vyS193/UNM3PSPo3Jf20pA9J+sl4RLn2Pt2UtCPpcUn/iqT/vGma\n", + "3fvfHUr6F9u23ZX0hyX9iaZpPvttDiXrGP5ZSf+dpCuS/qGkv3r/88cl/ZKk/wrXfkvSH27bdkfS\n", + "z0v6j5umeeHbHN+flfSMpE/c//2EpH/32+xzTz319F1OvSPVU089vRv9iKTNtm3/bNu287Ztf0PS\n", + "/6Zz58n0l9q2/TuS1LbtSdz/z0n6b9q2/b/btp1IqqFIDf4+lfRn2rY9a9v2f9e58/T999v+fNu2\n", + "X7n/95ck/aqkn3iP4/qbbdv+1bZtzyT9T5KuSfqz9///NUkfaJpm5/6z/nLbtl+///fflPR/SPrx\n", + "dxtf0zSNpF+Q9Kfatr3btu2hpF+W9M+/xz731FNP32W0+rA70FNPPX3X0+OSXovPvnH/c+kc6Xn9\n", + "Afc/JukL+P9B10rS7SgWP5a0JUlN0/ywzhGej0palzSU9Bfepb1l9Bb+nki61V7svpnc/70lab9p\n", + "mp/VuYP0IZ0HoBuSfuf+NQ8a3/X71/7WuU8l6dxp7IPYnnr6HqF+MffUU0/vRt+U9FQDT0DS+yX9\n", + "P9/m/W9Iegr/P1W55tvdPvw/SPpLkp5s23ZP0n+p77Aea5pmKOl/lvQfSrrRtu0VSX9ZFyjag8Z3\n", + "S+dO2Ufatr1y/2fvfoqwp556+h6g3pHqqaee3o1+U+eo0J9ummataZqf1Hl90a/e/76p3NPg878g\n", + "6eebpvlw0zQbkn7xAde+G21JutO27axpmk9L+hf07Tth75XW7//ckrS4j079M/h+6fjuI2v/taT/\n", + "pGma65LUNM0TTdPw/p566umfYOodqZ566umB1LbtqaQ/IulnJb0t6T+T9C+1bft7vkSXnZnyWdu2\n", + "f0XSfyrpNyT9nqS/c/+akyX3P8gx+tck/ZmmafZ17rD8WuW53w4t6/Ol/9u2PZD0b+jcYXpH57Vh\n", + "v14uevfx/VuSvibpN5umuafzonYW6vfUU0//BFN/IGdPPfX0j5WapnlO0pckrX8vHpz5vT6+nnrq\n", + "qUs9ItVTTz19x6lpmp+7f57SFUn/gaT/5XvJyfheH19PPfW0nHpHqqeeevrHQX9M52cxfU3nxxv8\n", + "iYfbnd93+l4fX0899bSE+tReTz311FNPPfXU03ukh3KO1BNPPNE2TaPFYiHvqB4MBhoMBlosFuV/\n", + "O3n+3TSN2rYVnb/FYqGVlZXqc05PT7VYLDQcDstnvLdpms5z3Jemacqz+FzT2dlZ55n+brFYlHH4\n", + "Jx1VjpfP8/0cvz9L8rPdL/PS95DIV//tdufzebl/MBjo7OxMknRycqL5fK7FYqGzs7NOv9xX3ucx\n", + "um3zb2VlpVzvfq+urmplZUVra2vl89XV1dI3f+/71tbWNBgMtLKyUr73vb7O/fAzJWk+n+vs7Eyn\n", + "p6c6OTnR6empjo+PJUmz2Uyz2UxnZ2c6OzvTdDot43Pbq6urha85d23b6uzsrDM2X+f+sR32lfeb\n", + "b6enp6W/Jycnl9bBYrFQ27YdnrkdEvtLWXAfSOvr6+U6yvLKykpZU+6Tn3N2dtaRi9PT0yIz5oHX\n", + "p+cq57Bt2zLffObZ2dklHZAyzb7kGC2P8/m8fMd1nOs++8223EZtTS1bl9RVlo1cp+4jn+371tbW\n", + "tLKyUtaI52gwGGg8Hms4HGo0GpU2LZ8ep/uc7fr5ptXV1fIzGo3KnGU/Z7OZjo6OdHJyXi9/fHys\n", + "k5MTHR8fa39/X7PZrHOv1+dgMNBsNtPp6WlHH3D+qE/5v+eLvLWs+Huubz8v9bWfSX3n+9q2LfJt\n", + "vtV4Zdvk/1dXV8sapL7ydysrK1pfX+/MI+ns7KzMK9e9pKKL5vO5ZrNZGZ919Gw203w+78ilx8Hx\n", + "5/z7/tXV1aodSVk+OzvT2tqatra2tL6+rvX1dY1G528yGo/HGo1GHVvHZ7m/bdtqZWVFk8mkyM3R\n", + "0VFn/LQltD2eY/LIY1wsFh09NhqNihxT1wwGA62trZX7PW+cX//YP+AYTk5OOuvTbQ4GA62vr+tv\n", + "/+2/Xd1d/FAP5OTkp3GpkYW7ptxSWbr9FOhUvlRwXNxcvOwrhY6LM9uuKWE6HxQMGxLyo+YUuR90\n", + "xmqGM9twX7y4OEb/b8UkXRhezwevYz+TJzlGj82fe6HZQNvBPT09VdM0Rei9+Gu8oMHwuOikeBFQ\n", + "yfNzf0cn0f3zdTZSVLocHwOAmhOZPHe/05Fi36yI3A5/WxH6s1zo6USQas6Vx2eniW36ev+4Xx6D\n", + "nU+PwfflWkonM+Uz1yWNDOfE8lbTC/zMz2a77puNPOc428hgin9TFvkcyg+NOR0o3pPt+38avGXO\n", + "oQ0Ency1tbXyXDvGkooTs76+Xox/ytNoNCpGkkZrNpsVZ97P9H1ux/JKPnrsdrBozNx2zQiTGBT6\n", + "mXTO2VeOJYljTVmkITWPvG7szDMoonw/SD/bAbY+SpmhLPh5/JyBrXShE8kH/+9167mogQm5HpYF\n", + "IPx7fX298MUOYwZZvp5OiHnlZ9jx87gsjx57ggnU2an/amtQurAD7hPXBfuba926NGWQPPZaok7k\n", + "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\n", + "2NUCh0RoMmD1/+4j59BE5I9tZPCYRLTOlGtpsVh0shj+3g4nA2/OE/tDx9C6r3aauH8c0PCQ3lyH\n", + "tJF2qDLYdXBOu2eZoZ3MdWE7yzSybQk3G5GPtTdYkPrjD3rqqaeeeuqpp57eIz201F7CqvSsCd2Z\n", + "GCHYm5S61faZ1mPqypHgsr64DT+LxXgZRRAurD3PkQCjRLaRkYuvZWozoWEjUtx95H44leI0nr+z\n", + "p15DJ/w8w+xE/Lg7LfvOMTGSky5OsDaqwkjJJzS7qDhrpIjesG0fYkqkg2NwxJoIEcl9ycithjqY\n", + "h0RNWL/A1FvC6cy953icsmKtBIua3Uby4vT0VFevXi01KbPZrPqeMm9ZJ2LjPhPql87lb2dnR2+8\n", + "8Yb29vY0Go107949Sec1Ui7Y9An95Nd4PNbNmzf11ltvaWdnp5yy/gM/8AP6sR/7MX3+85/XeDzu\n", + "FPUmypepW6ZmiEwxhZG7fKXL6VDWybi/5u90Oi0v2t7b29Pu7m4H4eb6NkpDxMdk1LUmb0ZULW+W\n", + "7zz0j+05Emb9D9tj1E2+pZxTJ/r7rKeULlAAIgxc5y7Mns1m2tvb69Tj+aDd4+Pjcp3bPTg4KDK6\n", + "v7+v9fX1zsu1XWDutczdfp73GoJOBJ96kbKSfOManc/PDzM9OjqSpLLJwvqA2QevedbPEL1x/410\n", + "mizT7Lfvs462vuUYuLa4a9FjYEkB7yM66bXBZ/vafB6/8/wbneH8N01T3syRqS+uE/aV9Vsso7H9\n", + "mc/n5a0BlEmm39Lm8busS+Q9HANLZJj29HfWI7QdHvsyf6TmWyQ9tGLzXBiZWuNvKjoyzERG5nOY\n", + "6qNSNLxdWxg0hMvqO7i4KVy+Lx0iO2W11JH7wUllLQPz2ePxuJO+Y/7d4yJ5gVqxG25PA0VF8CAj\n", + "zDGyv5LKrq2VlZVSP1WD6W1obPRy9555JV0cjZBC7fGzHfad8uScPw1rKqZ0lphL59j5N6Fo85Dp\n", + "nZp8u26KTgqdQ9eJcDv+wcGBHn30UV27dq3jTHj+bAzdrr8zP1dWVjppVs+Nzxh75JFHdPfu3fI8\n", + "pxn39vY0GAyKETo7O9OLL76oGzduaHNzUy+99JK+//u/X9J5uuynfuqn9Fu/9VulH56X7FMqb64z\n", + "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\n", + "GP3kJ+dgWSrIay1T1myHae1MvdLp9ny4loY8cPDkMTBtMJvNykn0kkr9mNtyP3k2mbe/MwWeqS2m\n", + "wi3nW1tbJf24urqqra0tPf/885KkH/zBH9T6+rr29/dLoOW5dyrQKRwaVAYJJpYf1D73b+vIzc3N\n", + "kh65fv26pHMZtm7i7i7LFNdJzhsLgvk9U4TWK2kvfG06Jf5tOedYUr9mfQ31BuWCuiJrNX29HQ46\n", + "GQw8Ux8nr/J0dbfB8fhvp9n4mZ/DoJ3OkqQim4PBQEdHRx1nQlJZE7zPMkTeeR0zRWqnjvPCE8S5\n", + "HmtUq/NiDRo/J/8pw94tzlRr8i+DNa/1lE3SQ0OkpMuM4UKgAGW0mYZ12QBr9VNs320lYsXiRgs3\n", + "PXMvIhtTCrgXiwududi9WOxMcXw03ByPc73Og9cKQL04lu1CqDlDHov7yMXEZyS//DcRuf39/fKd\n", + "x8KdGKamacpWaBohOjFZm5BzmMTIJZ9nZyqjFCqCZYuGTnWNd7PZrER+fB5rRei4Ek00OkgZtDGY\n", + "TqflBa+SdO3aNY3H44IicZ7sxI7H44IG8fUNX/7yl/XpT39aP/qjP6ovfOELnV1z0+m07LjiqyLW\n", + "1ta0t7enjY0N7e3taTgclgMbrbRu3rxZNjP4u+l0quvXr+vu3bu6ffu2nnrqqeLwra2taWtrS5/+\n", + "9Kf1xS9+Uffu3SvPu3btmkajkW7fvl0KvRPFowOURa+pI/Je8pjyRmQv5d9zMB6POzUtNEBZQ2LZ\n", + "nc/npX7M49/a2tJ4PO44UkSBiJwx8nX/WQNnx9UbE2ycXnjhBX3qU58q/Day0DRNeRWOx+pNA96B\n", + "6bE70KOxJZ2dnRV01I4TdYwPap1MJjo8PCx9HY1GOjo6KhtTuHvZ+rOWOSCvuZPS47dRtA6nk+Qx\n", + "eI3TcfNYjPARkTF5rhhYEY16kD0iscYs2yBSaR3vdliDSTTHcph94jwOBoOy25Q2iJS6h2M2r9fX\n", + "1zsv6SaaSN3pAMvPotzQGfT8kXfc6ETUyXNG5yrXdr4OymNIZ4rO6bIA2faoZpf8Wa0+s4xj6Tff\n", + "QaoNJCk9bE52DZ1IzzvbMtGY0nEjskO0ytcQzqfDlTvWfD/bYB8o8Bnp+p6Eov3MLJz3c3xCLXcv\n", + "WNhtfGyk8l6Po8YbOpnkVRp0Gzqfa+Q+5qIx0uIIu/bcdJgcXaVzSbITkjCuF3A+h/cRQeIz2Qb/\n", + "ZwSbznBen/d5oVrpUA7Mb74/TVLZReXv8rBG78qzcaMyXVtb09/9u39Xzz33nD71qU/pi1/8Ypmv\n", + "lZUV3b59W+PxWMPhsKT2RqORRqORZrOZfud3fkfXrl0rZwUdHBx0ItWmaYqxPDk50d27d7W9va13\n", + "3nlHq6urJdV0cnKizc1NffjDH9bVq1cLAiWdozY+qdmK00YkAwCmSskjGpZENVksSwfFha1EtDj/\n", + "TpNTnqhrnI5JBW4ZPzg4KCjfbDbTzs5OcWyI4jolOhqNSh/ZTyKrGxsbHSSvbVvt7OzoIx/5iD72\n", + "sY910Anzw8+kQW/btqQDiSS4/3zpsvlomamhPJYbO2+LxUL37t0rsmEn38XtNb3q5zC9af1Dg5pz\n", + "7rESfaFT5nElb6SLwnMGcgxyOfd0lOmYkYwQUu8zsGqaizPD3E8H3rZx/s5rwO2lLuGp5H4Wgwzb\n", + "DAYB/s1gNXV5on8ep4M195lrzbLMsRJcsENKR8z95f98Hn9nxsKfk9+cA17Hde8+ZGDtcfvHjj2P\n", + "EkpdkPRQHKkak7jYPclUhnRslqFLKfyMcNJYppOTCFfNGSJZ4BhdSZePDiBs7udYIVGAPEZuF+XY\n", + "6FARWXBkZiVDqJJ9snGkoWFemLzzXHiBU2nWFpL7yC3VNe/dnr2h/xpilouNjgkVninnkHUS3ObO\n", + "OaYD5Pmlckv54hySx4TpM7XkvjG6sUz9v+y9aW+kx3X2f3U3t17Z3MlZNKNtZMmRBVmILTtAYiBI\n", + "XuQDJB8zrwMDToAEcmAgtmF5kceWRtss3Ju9sJtLd/9f8PkVr/tM9fhBgD/4vGABBMnue6k6VXXq\n", + "Otc5dQrLDWsPIEWMhMea1Ot1bW1taXV1Vfv7+wXFwHsZgz5WUTK1Wk2/+93vdHZ2pnfffVeSUqLM\n", + "1dXVl8YizBDMWblcTiCr1+up3W6neBhYEUnJlTQ/P6/t7W11Op3EeBGPs7CwoH/4h39Qp9NJbR+N\n", + "Rur1emo2m1kWk4WORcMNBQAPMvG+oX9w0+X6lD7z+UYf46qLOY9inKLHelE/r6N0BSQ6nU4BCPE+\n", + "AMjy8nJi43zsA9ZYFPmuWq2qVqvp/fff1w9+8ANNp9euSxaC6XSq4XCYwDHfwW5SvO2MO2ff+D9+\n", + "7vPW9R19yEHYMKpnZ2eFDNTStTGK/nFDJWdw8h3sK+2OAJT7AYbO8JBihDEQXe48K8c6RWDEOGMe\n", + "RXbMZYxud0Oc+jOu6CeMFGQZZYB+djlR3PXs7JfXBUPAgQfXe/yQvxdDjvr4uInrsRtDMW7W6009\n", + "YdBcLzuL6sCH+YlxSR38N22JBhc6mXr5muAy8v89UfSscqOuvag0XTFKxbgFSYUJnANSPMPBGdfl\n", + "6E2vx6xn8L8LnBIBhSNtH8S83wMmo5JCCcXB5lR0nJyOrKMFyXuweBcXF1+iXKH4I5PjFGickF5Y\n", + "OBzMEFCa2y46a8HjXn+/09juZo2Fz5FZbmI4iKUAXN1K4X1en8iMIo+4zRfZO6vo48i307pyoS88\n", + "v4orzuXlZa2urqb7/LeDKK8730lX42Zzc1NPnz5N8njnnXf01VdfaTKZFI6EkZTOZeO+Xq+XtrEv\n", + "LCxob28vndN2cnKSWJeLi4sUH0OyzuPj49QGAPmPfvQjPXv2TJ988omkq7xGc3NzheBn6l6tVpMy\n", + "d/aQ9jmgjf3vGZxJ6kc5OztLDBBHongBgPtGDy/UJbKdng/M5xtjkbbGvgRM8JmDDbKL48KD5bl7\n", + "967eeustPXjwIMkN5pD0BuVyOeWDclckCxcyc2MA3RoNDNfBzElnQ3q9XtpoAOD0MQWIgEnxfowG\n", + "pRf62RdtZEwfO+Ph/7Ogx74g4N6ZOJ7JQhvfFxlIXzPcwGf+AyRoswPPCAiYby4X3GWeEoAxzHPo\n", + "Azemab/Ln+d5/6M3YzC6G3s5r4EHj0e9yLU+X3I6MgekfKy5TNGF/r64TkZQ5yW2gXnNOx1El0ql\n", + "ZIS4N8VJlVnlNv3Bbbktt+W23Jbbcltuy/+y3Cgj5QVK190Tbr3lEKtU3CKdYxMokcVy68AZBO6L\n", + "/uNc8HGMAXImJiJjrBwsFd9pAOLGao8umsjQuMycAYmWG9aA+9mxPthBA9qOFoYzVU7x5vzVbrU6\n", + "MxNpXSyw/5uSe0/s38gI5O5Hlu4yiNf4Lhsv0QLxMRRZTHfHYPXEuByvp9cFFxrf+3ur1Wpyy47H\n", + "43QauvTyIaMxNgHZnJ+fq9FoaH9/Pz13a2tLz549S3LxhIV3795N57GVStfn8O3s7Gg8Huv58+dq\n", + "NpsqlUqJkapWqzo5OUnM0ubmZnLt9Xo9bW9vp3H093//93r+/Lkk6csvv9Tq6mo6u8/7olKppFQC\n", + "jN/IVk8mk8RAeP8wT0lWiXUvqRBgDBvkO7fG43HBwo9sLX3oO8WcxXEWkn7h/1xMEC5x5En8GKwA\n", + "MtnZ2dH3vvc9SVeM1MbGRtrsERlgdGJMKsrRNq4/fRyii2i3x5j5XCqVihtfPEi5Xq8XmJRarZaO\n", + "E8Jl4y4678/ofnW2LvaDMyuuc91FiFxpJ24+5orrBeass518B2PM974OePwP7iZPmOrF2wGrRhud\n", + "OYPdh6113Z1zqcH08T0/rAk+7qhvZGLpGx8Tcb65ro/rqbvKXc/TV8xR6hnjqHLxxu7x8bAZ+hBW\n", + "ytvn3h2fE+jmuLZTR4qvWcjA51Ku3DiQiguNC44SP/MF1EFWdN/4OzxAmBIX5lgnv4YSXUG54oPI\n", + "FRGUN/V3xY7fnmf7QuHuzBiTxQTmJ4LB6I7ybdbIEqrT+yK6M2McgU8kjxVwGUZXm/eVKyvq4e/P\n", + "9U2MD/J2eFvj85Bf9NXzd3Tf+ef+XQS4noMHJcKmBffNS8UjNrg/F8jsLimvOwHZUnFzADFAUP2u\n", + "3NklxcK1srIiSWlH2srKivr9vlqtVsG9MR6Ptbu7q/F4rNXV1eRanJub09bWlr799tvCdn7qOTc3\n", + "p16vl1IfkGVdUgpsr1arWl9f15tvvilJ+sUvfqGHDx/qyy+/TItwjPNzsIfy5WDcCJ5wb5HegfiZ\n", + "ubnrHEgeNO1uLx83nqLAXYj+PhYGisdfeN+SQ8jBsy8mlUpF/X5fk8kkHRZNYbdbs9nUBx98kI7d\n", + "wX2DHHxMMxZzAcnj8TgdJxJjupAxYy5uhnFjNbo26/V6ci+Wy1e7xtjNe3BwkPKD8R1GgMe4sGU/\n", + "hnT4WIj6hL/jtQATXLu0JR6L5Pe5DJEb8xG9xSLuMqVdDsbdMGGuu37mmWSId93FuJCUYhHdwOK9\n", + "gIlofDlgiK47ZOOGneeEc/eyGwVc60ZLNK75PoISrvcNNv69g3BfU5CZAygv/r/r8wj6vf5eZ5+n\n", + "/O1B575+uIGRKzd2REwEL+5fzgXu+gSL7JE/NyJQrpkFfCL4kGbnM/K6xvZwH4Mp904GDR3jPnoU\n", + "TByccau8A4ToF/a2OEBwAMC9npDTmQyuiTvLPGaLQZiLZYsTxRfaaMHFgenxBy7jyCZF68Pb5e1n\n", + "cswaK7PGUQ6MesmNJZ7nIMrPIvPnUDePY5pOp2nnGjFtkhKjguyl4hlu0Tp1ObAIAHq4ttFo6PT0\n", + "VA8fPtR4PFa/3y/s7un3+8maHw6HiXWCFZmfn9fz58+1sbFRCGKGdTg5OVG73U7vr9fr6na7SbFX\n", + "KhW9/vrrkqS/+7u/U6VS0ZdffqlWq5UWFuRE3jFig6gLKSLK5XKy3GM/1mo1bWxspBQNyJRga2Jl\n", + "SqVSAmAe3O2ypj459sPHADrAYyqiFc/BwNL1OZ6DwaAwXviu2+3qnXfe0d/8zd/o3XffLYyZ+A5n\n", + "nRhHcWFj7AFmfHEhsSNxJxE0utHGO/0gWTf+FhYWUh6x4+PjpPt8Wz6FdtOmWQZu/Mxj5+L85V2c\n", + "M+l6yA0AB7jR+HRD0BdzB1XIzUGox+xEo5Rn8B0gwjc0eJlMigeR8xtA44HuDoKk4maXyITybJfp\n", + "3Nx1agoHP15vX99c3m44O0BBVm5I+3v5389qpNBvThRQDwAW4zc3ZsAD/pn3aW58zTLm2XE6q9x4\n", + "Qs6ceyUCohwL4YtdziLxvx0g5RZBlEROUHHB9et5Zlx4vV1u4cRdGxQGBZOK66TrbMN+iGJu4nN/\n", + "DqCWSqWXrFY/Zy1aZi7zuIgzIWYpPL6jTUxEFnNn9OI7ojWE3Px3LA5KvC+c2s6BSd8pFJksCs/k\n", + "M6w8V6QR7KOA+S4mWgRk5erqk5iFfTKZqNVqpfxbw+EwXVev19OCSf9HOno6nSYQg6uNpIyHh4dp\n", + "Ud/d3X1JpixuruQrlYoePXqkn//859rb29P29nYaA6PRKD3Xd5hJ0vr6ui4vLxNoe+eddyRdWdy/\n", + "/OUvtbm5mWTk4HMwGKher6dF/uDgQJKS27HZbOrw8FD9fl+j0aiQZ6nb7erOnTtaWlrS7u5uem6t\n", + "VlOj0UjB8O7O6PV6BVDqIJ6+BWhEpoffkX1gXNBPjUYjyQYwIykxRfx/eXmphw8f6h//8R/1ne98\n", + "R81ms5B5fDAY6PLyMuUzi6DKx6iDLPqGccf72MXldfe+976JOwwBLuRCajabevHiRRrDKysr6T2e\n", + "eNUX0eiqpt7Mm5wB7nWNYGVhYSHNEWek4n0Un4/MfTfg0M38eAoLngcD7CcTVCqVQrJixgrXoQsd\n", + "cHHd5eXLyZgByugR9Jm3x92akfn2dcTDQZyVcX3F2HBQ48+h/hg9zlTGtd6BIbJy8BVZNzcEvH9y\n", + "bkBvk5MhnjLGQ1acKPD54kDV5RZDQ7zcKCPloCIHnFxATPwo1FeBKJ4bBc3n/LiVEe99FXrl82hx\n", + "0inxHhRqXLRzlLJTwyhtrPHImDEAvLNd+fCOaJlGoOGyoQ0RwLgrINdObwvWi8uTxccBSqyffx5B\n", + "l7ebvs/1H7KIoNyLy8bBsFvpPqEcpPg7KN6mONldfs5cSMUcOLjqyAoNK4QbYDKZpOzl1NsXSp5D\n", + "7iYYLZcfTMf5+bna7bY2NzcLB5ASi0U6At9F9utf/1rNZlMff/yx/u3f/i0pxfX19SSDxcVFdTod\n", + "bW1tSVJy8+Eqcbnt7Oyo3++r2WwmV1y0okkCeXJyosFgIElaWVnRYDDQ9vZ2WoTPz8+TG/L8/Fyj\n", + "0Uinp6e6c+dOYRdTq9XSxsZGmleDwaAAhKiDsz/Ilv7zRcP7dhbgZ0HF1ei7utziXV5eTvVcXV3V\n", + "v/zLv+jDDz9MC5AnJ/X4Ltg1xhA6gQXQD8rlWCcHiPyOQCrqYFy/MfbGGQyP95SuAD8u236/r+Fw\n", + "mL5zN5P3Pe+LYMbnDEZQjEcslUopWanfEwvpE6KOJHcb4FG6BiYOopApfed6z2NaeQbAKc5VBy3O\n", + "PvmC70apg3hYJ5e3M/7EYfn8zoW5eH1cN/m1TlqUSqXCWGQcuyuU9zmz5V4Lxr3rLx8XDvId1NFm\n", + "d20i47iL2cGSr/kAVAxW6uceIF8PMVhmlRuLkcoxPd5RPnmiVeXFJ/2rlJgPEn675enfRRDiEzEC\n", + "M+9gt/KYBD4wQPQM5rjQ+mT0giIslUoFZer5g+JAdMDiSsHb6NS/g5VoBfrgd8siV89o6Uag4axc\n", + "lBtK0+XmblIHcF6c5ckpTW+HPzOCea7le4CmTyiPr/B7HdjHxcd/A5oi8HMrtVQqpZQDq6urhbgp\n", + "4mWk6w0DLGrRIkdJLC8vq16vF5L8Sdfb6z1+6ujoSKurq1paWlK329XR0VECbtVqVdvb2/r5z3+u\n", + "73//+3rnnXf06aefSrpSRLjmkLG7KZ4/f6719fUU7IwcG42G3njjDR0dHaW6IO/hcKg7d+6oUrlK\n", + "Hor7ULpanEejkba2trS0tKTj42PNzc0lQNftdjUajXRycqK1tTXdu3cvxeyQH6rZbCZXoh/Jg6w9\n", + "BQLyctYslzrALVrfch7Hrh+FA/hksUaGP/nJT/TRRx+lxdQTrp6dnaUxQlySxzH6ppZqtZr6Yjgc\n", + "prEdXUK0m/EYxxQ6hb6NBgDhAnNzcxoMBml8k1eMcx2dhUOfOgMa57dnAOc+mC83TNzQQYa+4Ho7\n", + "AKbOnvhvdLT3E0HkDqi8Da7XeBbzk/a5nnWd5TqM+2BromuL692QdN0OG0ecjzPV1NHXyhhIHvWh\n", + "/x1BepRbpVIpJK8sl8vJm+Jy4b0+h9z4ZL30+CnXkV63uB7nSATGEYYM49XHYfQUOIj+S+U2/cFt\n", + "uS235bbclttyW27L/7LcWIyUU4QULBO37vk8d38skZbmGe7Ci35P7vPfkbmJriU+i/WI9ZaKO344\n", + "YwtrA2Tt8UcxUN0pdtiKGMjHdTnXpLcHi1e6tkz9x60PD6qNLI/3ndcBVO80u9cBSz7uwnDLF3eF\n", + "WxO+ldrlS8wK78n1UbR8uQ8Llrp7H2AZUdec5YNbIBa3GiNzF92XOVerM5q8BwaAA43dJePxJe5q\n", + "WVhYUKPRSBS5W4kkhsS91e/3C1mou91ucsdtbGwkGRMDNT8/r88++0zvv/9+YSegJJ2cnGhpaSkl\n", + "+pSuY96m06lOTk5SrJZ0xUh98MEH+vLLL7W3t5d2WUlXc+bNN9/UdDp96Vy49fV1DQYD9ft9ra+v\n", + "68GDByqVSsmd+OLFi7Rt/Pz8XPfu3UuyYdciMT0cU+N9wbmHPv7ZIYcrh9QM0jVDAuvqTAZ9BOPm\n", + "Jwz4Nm7k/d3vfleS9PHHH6cYIuYOLGNkij0mDVYAZpN7pesEpeiZuDvJYxhhc/iO96HHfHzzu16v\n", + "J9chcwHrH6aoVCoVErnCftEfHrTONZS4yyo3ByNrHOeZs81+P890pi6GX9B217fuqor6hHFBH56e\n", + "nhb0tG8cQeYUr0fc1ODB2Yw7Z85h24jNoh3oNR+r8Z2483Fx0n760IPcaT/rAN9TX1hU34zg7Yiu\n", + "Z5eNB/C7bqMdET/4/XF+0L9SkSGO7FMMu+FZHg+ZKzd61p6XSM9KL+9K43tfFB3Q5J7B/fzEhU56\n", + "eUeDu/yoK/e50uF3nIw5UAM1jyKJgMip2/g+BjfvdpcJ7iYW/5xbKbo1+SzStj6YiLtwCtn7gN9x\n", + "oPr7HTS5C8Tlx/uoP0DKARLvdjeWv496xnFBO6K7gD5jcriLlXoRMO4FGSHn6EpEMXCNj7EccMr1\n", + "U7lcTjEl0jX9Px6PX4qxQJ7T6TQtjr6dnLPEeBY7xarVqkajkV68eJEWBZ5JTNb8/Lz6/b7G43GK\n", + "O+p2u+p2uylA/eLiIgWNf/LJJ5pMJmm3Xr/fT66nWq2WXA3n5+cp8zb1X1pa0vb2dprb1LdUKmlj\n", + "YyMFkQNeJOn+/ft69uxZajPKn/azK/H09DTFTtG39Xpdr7/+ejoTr1arpfE2GAw0HA7T0SoeG/H8\n", + "+fPC4uKbO+IGg3q9np7pQCIu0Mi2Xq/r0aNH+vGPf6y7d++m9hOcT7wa7/PjOkir4gv7ZDJJ7fL3\n", + "+bhkAXMXlYcC+DP5HEMMUO+yqFarKf6JnWy0g1xo0S0TF6cY3uC6OQKfaFC6geHueR/fDhSje348\n", + "HqfjQHDxutzQNa5XqDNz1PWj1991lwc/O+hxfTGZTArxOw4wmevVarUQfkA/siuVthGHJF27ganj\n", + "xcVFwXCJa6XrWtqIcRL7zOMHXUdFgzKSBOPxWLVarQBWfEzmwmDQ24BPH4fI0o938uKbmbyO1Cm2\n", + "3denWeXGGCkmYQQccSB6ieDJ75GuFxX3z3pQ3iwAx/OibzjH1jh7kmO0fOI6s3B5eanRaFQ4ssGt\n", + "1tjGHGKOSsGBI8jdFV+Mf/IB7YsuStrl6Qye3+fvjBaft3cWqOJ7X4Sk66DTGACbezeFfong2tvA\n", + "fXFLsjM3sX+jn9yfQz/E9rm8aa9PRrfk+DzGFszPz2tpaUmtVkubm5vpPq5xS5H6oJgnk0kh+Z/H\n", + "7GAhelzS3bt3NRqNdHx8rPPz87RrjzHx4sULtVotLS8vp/tarZb6/b5OT081Ho/1hz/8QR9++KGk\n", + "q2Nndnd3NTc3p7W1tQT8GF+M9Wq1WrAIy+VyauvZ2Znm5uYKixiLPYwN+adWVlZ0cHCQ7iVuBfBW\n", + "rVbTjr+VlZUCS3R+fp7ivV68eJEC05Hz6uqq+v2+ut1uYvYYC91uV9VqVXt7e6pWqylZ6eLiYprb\n", + "EZwTy+a79ohzm5ub04MHD7Szs6Mf/OAHevToUQqo51w8jl/xnWIsypPJJC3MjLVqtVrIxzULSMXv\n", + "nGHGGPBnELPiDFHOIAIY+DuRR6lUSjuRee4sHUyhjtHIjgHY/h1g0AGTlzjnkWluF5df4+tBbLs/\n", + "O8rX2S4/z9CDs31xh7lyvcm4gGmGIcbopQBmAb7O6GMUjEajpBMcFCFT+j8GYUd96H3IZ1EvRk9K\n", + "lKXPGV9TfY3wcQoAjOBTejlJNv3KdzC8MUYK4Orrohv/eJFmlRtjpKTZOR+YtDF4PLIOs57rHZUD\n", + "TxQGOJ0dF0x/Z5x0fOef5awsB10XFxeJ9naWZJYC8Xq6fLx9HsD+lwAfVib1woLIMVbNoBA5AAAg\n", + "AElEQVT8H9vktDsT2GXijFGuDX69W6xMiOj287r4s/iMCcrf3mYHz66IYwB5rAvyjPKj0AbfKeUB\n", + "7MjWAZvLE6XqYLnVahUAA0yFM0ywTNEyAizB9khXSmA4HGo8HqvdbhdcLQSRz83NpUOIed/i4mLa\n", + "7dbv9zWdThOQIMAZmQ6Hw7TFfXNzU0dHR9rZ2dHR0VHKui1dAYK1tbUEdnI0/fz8vFqtliaT62SY\n", + "WJXSdWZpXHflclk7OztaWVnR6elpAl8csHz//n19++23qW6VSkVfffVV4Z1ra2taWlrSN998kxa3\n", + "ra2txKhUq1UtLCwk0LO8vKxf/vKXkqR79+5JUsrQ3mq11Gw209i5vLxM7tLLy0vt7+8nQLG+vp6S\n", + "lU6nU/3kJz/R66+/rmazWdgphsvW5wxjhnmPLqG+PJOxG4PC3XXF/7NYZZ//LKIwcoxFZ3oAL+TG\n", + "ikYbCzPsVHwH/eosDgA3GtgReHAv13JNTq/6LjhnzaOR6Bt7pGICTC/OwvgpEhQHZ36KAQYF48X7\n", + "wTdA+C496QpkLS8vF9IveFvH43Fy9cZksLQRttrXIeonvRw+47o+rhes1bMYIOofx5p7UtCbMYCf\n", + "9zkYRn5sbvA6OVhjjEQwyI5b3K6UXKZ36unzMldubNdeXPidpZKKYMQXRQdb0stb1x2URNbLQUjs\n", + "1AjauJ7nxEnqVkmcWKDi2AYUERYqFrKja97hbJUj9bgIUeLgjjKKCsD/zsU7uEuJ334v1gz38hxn\n", + "BN1aYNLE/vH2OdPjQIqYEj7PTdY48X0x8rHDd0xaxohbH0xaLHIHp66U/D2AC2el/J3l8tVOGg6K\n", + "dgW+urqq5eXlQpZjwATgCCDuCTqh5d3a9fpcXl7q+PhYnU5HS0tLCYQ0Go0U34OVS+l2u9re3tb7\n", + "77+vb775Rufn52nXnscEEbtFXqf79++rUqlob29P9+7d02g0SjvsOJqmXq/r9PQ0ue4YAyh7EoXS\n", + "dsYeliPAhvsAeLguyJvDvYypxcXFgrsUpocUCp7QczKZaHd3V0tLS7p//74uLy8T67S9va2NjQ0N\n", + "h0O9+eabOj4+Tu9bW1tLB+SWSqWUdkG6isk6Pj5OuwRXVlb02muvJRlsb29rc3OzwC7RhsFgkHSF\n", + "L7YsyL64O7uB2+fi4qJw9AhWuRth0fD0xcf1jt+HHH18X1xcaDgcpiNicE3htmEeA7ioD7o4GqSS\n", + "klvT6+7y8RL1irMqnlID4BKNwxzbDpBzYywaSFLxwGOvvzMgl5eXic3lOweiEdDCYJPdPMrHTyRw\n", + "IxnjEqAUZZvbeUeh/nH9Qk86MRHXC5ez61M3VuNa5nL1tcP1aAwHYQ1x74X3oRvXDu54Pu/LxYf5\n", + "nIhEx/9zrj13OVFyHRcBkX9HcRdaDoz5gI/0awRITuNG4BCZnhyTkwMKEYxNJlfHfYDSuQ/wFBdE\n", + "961HEOXMSZSf5yOJbZGKE9cDq/06romWqU9qR/HuPnpVX0Uw7FZyToH7/dTX+8V9+7n3RoDj488X\n", + "Xq6dZZnEz/xzmAGnlv0aFJQrGGc61tfXC3JlUaxWq6luvMOpZw/69PPhptOrRHQeIAojs7y8rFar\n", + "pZWVldRnyOvk5EQnJyfa2dlJ7IMv7hz1Ua/X1e/3U3+Nx2P94Ac/0L/+67+q2WzqwYMHCfSsrq5q\n", + "b29Px8fHybJ1sD2dXsd4EeTtckeBN5vNxLqwmI1Go8RkEawsXbk3Wq1WcoksLy+ne2GfUY5vv/12\n", + "Ss5J8tJyuaytrS0dHBykDN3Ly8vprLvFxUX1er3kaiQf1tramkajkY6OjhLQ29ra0tbWltrtdqrr\n", + "o0ePJEkPHjzQysqKut2uGo1GgVX09Ca+oPN+xtTi4mJyTfAd90XWARkAzOOCEQ2VaOGjc3KuL8IX\n", + "YEvctUsdMb58caQ/Yhwlz3QdGHUG88H1jjNu/hljiXrnGHnGGqyF3w/wyQVG+4YAN74uLy9Tugfm\n", + "Y9Rx1CGCGt6HG8p1lQNpAICve9zLc/075rvHFzLe3F0GIOE719tuXPv4ikHZORIjpx9zfebXOHBy\n", + "uUWm0kEqfZHzGNFu17cOsNyVR91yBEaq58xvbsttuS235bbclttyW27LK8uNxUhF/3V0jznDEl10\n", + "UtFajbTjrOc6LRn9sfGeWeyY18198Xweg92iq2E6naadE46icduw84jv/IBRp0K9bjwr1ps2I6/I\n", + "BHhf+H0xwNktDiwWrEqnPB25R9nwt/c9snE62etMiS49ZxGhi5G7x3A5W+fWR2SkIruUk633Z2TG\n", + "vJ+x1tzS9oKrpd1uJ9cXiSyx4huNRiFOqFarJRePW8rIE8uScUUbCU4mlob6Xl5eptQBxBhw38rK\n", + "SmLKWq2WPvvss0LsDZZ3v9/XyspKkvdPf/pT/dM//ZP++Z//WZ988ona7XY6YFdSCmzHNcb7iO9g\n", + "DnBen3R1XAsJHM/Pz7WyslJweeO+4jnuNmg2m5qbm9P+/r5qtdpLAc9YpbgUiTdpNBrJyr93715h\n", + "R9/Z2ZmWl5e1tbWlo6MjbW5upjMDcSG+9tprOj09LewgbLfbeu+993R2dpZioWCk7t27p+FwmHZI\n", + "uruHDSndbldzc3Oq1+uFecVZcoxjZ5uIRXJmgvsY/9HCdgYkMuO569wVw5iDKfPn08eUONf4bmFh\n", + "IW1G4H9cY7C1pE2AjYJB8PQPzmTFbfcwsLCfOV1D+3zuexJR3zSCvEulYqZvCmwS7cgFviPLqGvc\n", + "JZZLH0Aak0ajUWBMiN10t7jrLMIxmPvOxqPfyIbuSTd9fXWGyF18zjrSBt9gE9dw5izPi54I17fO\n", + "SLkrPvahrzPU3dtAXVzvwdwiIw/hYI3IzQXKjR0Rk/vbK5obUP5/BFIMpAgK3BXnricfNO4ik4rb\n", + "anOgyoGAd7RPiAi2eC5t5JwsPmeL68LCQmG7KvVmsWTw0TYHQj7RUCbuWnLKmffy/Nh+H3A53zCK\n", + "zb9HmTmt7TS2pylwBezuAeTj9H6ki2MbKQ4yaVsOIHk/RJDubq44IePCk3M7UmIwu4OrWq2mVquV\n", + "gpHZhcOus3K5nOJryMe0sLCgfr+ftrxLV6Cn1+sVYlc86z11pA4eSLq0tJRSIJRKpbTl/vDwUIPB\n", + "QIuLi3rvvfc0NzenP/7xj0k2CwsLuri40Onpqcrlsh4+fCjpKg7mD3/4g/7mb/5GP/nJT/T48eMU\n", + "iP3aa6+l3Yaj0SgFuEtX8yDGUQDkOGPy9PRUlUol7aLjuk6nk44CKZVKKdUB3/d6vXS8Tr1eL+RQ\n", + "YwGpVqs6Pz9PQeqNRiMBrJ2dnUIG8efPn6tWq6lWq+n58+d69OhR2jWI+5D3EA8nXc2DRqOh0Wik\n", + "u3fvamVlJbn9mCPlcjmlnWA+cYTF4uJiih9jnNVqtcLxQb4zi52o6BPGvI9Zro9g4lUGqeuZ3Lwh\n", + "TxY5z3zxRp/4pgzGov/tcW5kRwcQcai3z6+cEeSAEBkzvqiLH/HjOsRjV12nOnhE7/rOQ3SX52vj\n", + "uxhG4bqd75Fl1BezAOjFxYX6/X7Sv37kD/d7oHkuhMFBDmNiNBoVdJdv9oi7OP1ZzGFPpUCdfYOJ\n", + "63gHUBFoIWMfM5FA8L99DXH554Ab19br9eRGjwefu8wwSnNrCeX/mYScCNXZHf5GqB4r5H59BxPO\n", + "OknFAemLCgLnebNYp1f9HYFWfMcsZotO8h0pgCmpuGDTJiwMX+gdxMV3uYLMLfgRXcdB7GxNjMuK\n", + "fmvfWeZH2Tiqd7AZg0QdtHmbeaYra1f63j4UucsGQIgF7s/hubTD5ZHbeOAy8wB2Z8d4N0yUB8fy\n", + "PWfKOetUq9XS0RONRqMQBI51CAiTrpNfkqSSg3Ynk+sUCFjs0jVbQyEoGiC0u7ubxuLi4qL29/dT\n", + "rNJHH32UgsVZtDmmhmM/JKVUAp9//rnW1tZ0//79FFv05MmTdN7dYDDQ6uqqjo6OJF2N05WVlcSa\n", + "Ef8hXTE5n3/+uQaDQQKdFA5Hnk6n6azAk5OT1P5Op6Pj4+PEhngSTPoNgIRlLynlOgJYwWwxLhqN\n", + "hg4PD7W9va2dnZ00Z2GGlpaWNBgMtLm5mdiTubk5nZycpP53UEdaA7ajOxvtfUVsmlvq5Lwi31Uu\n", + "nQqpHpyN9E0Uvgghe58zbs3zG7DjDKBvkmDXo4N6AG88mBggyzPcMONZ8/Pzhdg3qWhEOosmFRNZ\n", + "+rzkHc6y+K48wEBkQKQiG+vrUSzOZiFv6ueAC7nwHgenPMe9G9EoBJwBPn3XJmsLG1Pi7jT0FzFb\n", + "sY9dH8aYo9zmHTeCWB9z8UxRz+aCyGNx/ZoDUoxVnxcY6nzmYx/miX6MORl9/Yj1jMaylxtz7TlT\n", + "JBWDvyPI4joXWGQiCLp11CxdT87IELGwuuUewZlbynFi+KCIgYyzAJjXyf+HNqYNkTaN9CzFd6BE\n", + "MOagxJknfwaLM5MtHnoqXU92X4jdredACgBBPiR2nEhK1mR0fXqJioa6OECNQLVcvj5XSlKBXmdh\n", + "Rt5x4lJmWToAtwjMseLiThsfa5EBcPaOzN8s1ix0c3NXKQvW1taSUjw4OEgMTaPR0PLycnp2v99X\n", + "o9FI9YhAEvkhV2dkyNLdbrd19+7dAogmPcKf//xnTafT5KL77LPPUsLNarWqdrudFsZms6nJZKK9\n", + "vT1VKhX1+33dv39fkvTs2TMdHR0l4HJ6epr6C9bJ3XQRDBOAvbi4mNoOqzQcDvX06VNVKpXkAkQ2\n", + "JDCdTqfq9XqFjOrj8VitVksnJyeJ8eKdnjuq2WymNt67dy/lxHrvvfd0enqaZMpuzGaz+RJwnZub\n", + "U6vVSuBxc3OzkJhyNBoll1g0gAighxFAhufn50kG1NkX/hgADMhiDrprzMcKAAmd4Kw548i38FN4\n", + "N8bAZDJJQNqZ8Og2kZSyhQPeXId5UL2zEvSZy8t1pq8hzjr5WpErDgR8HtNXtMcXYWfYo25Bpr5G\n", + "uPHL+yJL78Wv5x3cBzMVE6tSf/SXyzSCUd6L69HXSGf+fL32NSzu1va1MQeE+M4/yxEkcYOQ6+ac\n", + "68770L1TzrgRtM96621Adk4WuNxfVW4s/QHF0agzSpHpcUSbE1xE81JxJ0BkZ3IAx5/ntGPOzeiD\n", + "JT4jx6b4NZHNYEIwyH3iUWcW2lynspDG7cFeF6eQkQ2f+zX+nQMtL+QD8ngDr+dkMnnpoFBJiTbG\n", + "VRn7IMrE2+9/u3wdODu1jPLMKThXsLHvXFnH+3zbMHKPIMzl76wQ7WNR80URGQOeut1uAk8wRMvL\n", + "y2mM40765ptvUl4y3gtbBYhl+ziLvKTEiJ2fnycGCcZnc3MzuajW1tb0+eefp636b731lp49e6at\n", + "ra20Q5B8SJPJRBsbG3r8+HGK9Xr27Jmkq4Xy4OBArVZL8/PzOjg4SIrLY17q9bp6vV5ix87Pz3V6\n", + "epp237EDSroCUiS4PTw8TOObsUiM0tHRUdr5GN81HA7V6XTU6/UKOygBbMgQUAXwYoel97/3Wb1e\n", + "T4CUvsAVurGxUdiqDkNydnaW+tF1FSASl68fZYPBkmNH3Z0ymUzSfaQiQDd6pnbmOzl2HJj7tnYM\n", + "iWjwsQgvLy+n7Pb+nRtlnljUM7TD0lIf+hvWhkIfue53FsWNUi/oCGf/XScCGHKuNZ6NDnI2y0GR\n", + "60w3DqM+LJfL2Tgtl7e7Fr14HCtydkDM0TC4mf3gc57nTA2/Ac/uPeG+VzEygHlnwakfMqHe0bWZ\n", + "Y3xcp8d+BETlXJbUBZzgOjmGdPg7Z3leeF4uts3Ljbn24t+RzYm+TkpcfHM0Y6QcX1UPBzpxAQWd\n", + "guy9XpEx8+flkLkruxy4inFSvuUcpQ1Qoi7u7nNWSnoZlLhcpGvXn3/ukwwQgO/dQZaff+TUqLMu\n", + "TDwGJwoSK9KtgVmgxutOXSN4AUx5P9AGB1q+yLpcZk0s5DwroNzfkyuAXq+bM1goOOk6psVlR+4i\n", + "4p5wRbEpQZLu3r2rg4ODQiyMA0lYDNxOjKm9vT3t7u4m96Iv7E+fPlW5XFaj0VCr1dIHH3yQsp5/\n", + "/PHHKfblzp07hfQHJOF87bXXdHh4qHv37iUgQXwQGdidybm8vNTJyYmq1aqWlpYSuHHZkgRUuorh\n", + "Qn5cQxZzADzy73Q6Gg6HWl9fV6lUSvVZWVlJQMzjtnjXYDBITFG3203f+fEh0+lVHqu9vT1JV3Nx\n", + "ZWUlMWCueAkmb7fb6XzDmBsJ4O/noqEPms2mxuOxTk5OCpnbfUz6/AEcxAB7iusvNjDwOXLGxReN\n", + "K+obj3rhXvQfAJV7ACjMgQj6kIEv+gSv49Z0dtjdePGZ7tpDNhQHY9Et5HPevRg8IxrlOUOQee9t\n", + "8Lr7WkJxNscZGgBN/C664hiXXj9csLzb+xFdCIDN9bkDKorXjTWH+kc3mt9HuyOQ9M8iGHbihLbG\n", + "a/06lyUGNG1xeSF/Z55oUw60eVti/b3cpj+4LbflttyW23Jbbstt+V+WGz9rzz9zZB9jU/w+t/Yc\n", + "4ef8svHZXtyi8Ngbtx6im83r7e5Ify/X5dgTvoufY8mxiyfGOlF8G67/dutAKh6D4vEN8b1uKbql\n", + "hKWCLHiW76BwFoXvoEj53PvJ73Nrz/s6bvF1tixagN6WuLPQ5RDZJi/eTq53H7l/h5xol1tDtAmX\n", + "AnL17+MOKq+DBwq7TGEkCLx1BqFer6e4qtFolCh+6YqZGg6HGgwGKb6IY2Cm02nabt/v93VycpLi\n", + "mVZXV9XtdvXs2bO0sxD249tvv9VHH32k//qv/0pB8wSbj0YjnZycaH5+XicnJ9rc3EwxYGQzx2UU\n", + "4zDm5uZSwPd4PE7PdHfQ0tJS2qVE+/r9fspaXi6XE5MkXbFuJIdkZ6AHeBM4zvNhndi0UCqVdHJy\n", + "osFg8NKhrsyBXq+XXGacL+jZ351V3traKiQp5b1cs7S0lA4C9nHA4cfD4VDVajX1BSVa5BRYKbK4\n", + "x7ntbimKu9LcVcf/uMR87rpudAaj1+uljPgwStQnZm93necsLjqLjSvO9uMuGo1GqS0xLMDnr8sV\n", + "l6WzM7Sf+9zF58+mzh7n5euSewK4lrZEj4W77Vxf8Zn/758xT3x9I1Yq9gn9iEzZnYb7PDJyfiyO\n", + "93OMp/O64bnw58VwGG+Hx4u5nH0NdhnPWr/xqsDoI1PWaHS/uw4jE+XF5ZbDHq8qN3pEjPun3f3E\n", + "dz6IvXN8q2903zld6ILzv7kuuuR8wfVnuBDjzo5IK8b3xLpFwBjrzAGqEZz49fE+qNgczUm7oH5z\n", + "rqp4X44ijyCGAc6ZTXyHK5CJkMsODNjIKSnqk6OUZ/nDXVFEZRgntFQ8UDjGUHkgql/n97vS9B1d\n", + "sS0eixFpaV90AEiMG3fvlMtlbW9vpzQIfiwEu+iov6cVQKkuLS2pVqvp7OwsxSxVq1Wtra0VQDLf\n", + "vXjxQtvb22o0GumsPgDR/v6+VlZW9KMf/Ui//vWv1W63k6xqtVoKIh+Px9rd3dU777wjSfr000/V\n", + "aDRUrVbV7/c1GAzSM5eXlxMgKZfLyR1B+0qlkjqdjqrVqkajkdbX1yVdufZIf1CtVpPb0OXmO8U8\n", + "SL/T6Wh9fV2tVkt7e3tqNpupHaenp1pYWFCn09H+/n4hoH4ymajdbmthYUGHh4fqdDppASmXy8nV\n", + "iXLnSJpGo5GymhPk78HPABvGFAvZ8vJyWtzYoRmPLJGKqUgYT7jdoz5yoI9LzMeuv8MzYpdKpeQi\n", + "nk6vM9H7/CIHF24fAHG/3087yOL5dcxfAJXPFeYkOy/dYMTtie7y+NAcwPG5y7z1sADeG12CLlPX\n", + "DVEnMt5ybiDqGF2CXnJhA9GYm2WIo2/pNzc6yYPmIRjoYNyH/jmbJnzd8Ho5+ImAzceUgyXuibGx\n", + "LovorvT+i/o3gpoYv+RGu6/VOdn52sp4zgE3xwe5ciNAKsfSxMBct0z43zvKOyAyQ5HpYtBHNA17\n", + "Qp1y90cg5ZM9x6rxO8eexMU0AjcUwtnZWWp73GLs9QMYuV/YZexWU87CQTYeb8Dn0ece5T2ZTNIW\n", + "emerqK+DXZe5x1J4wK3X260tnp+bRMjMA1EdBPl1OYYTWXrf+I4mZ5m8n/jbF7PY92z5jkwZz/Zn\n", + "ETjLZ8T8UOr1ekoZ4IzHcDhMC2/c2dnv99NuMIKrHfCenZ2lNjabzZRYcjweJxas0Wi8xHL96U9/\n", + "0ocffqjvfe97+t3vfqeNjY3ULoDX0tKSdnd30/EpDx480LfffquFhYWU6yla4+fn5+r1eoWFliSc\n", + "l5eX2tvbSwHXFOK4Tk9PdXp6WkiTQODyZDJJweIebF6tVtXpdFQqlVSv11NcFuOh0+mo2+1qZWUl\n", + "PRNZnJycpHgrz7NTqVQKgfLEsrVarRQXValUdHR0VOh7mCh0FIlap9NpYsSiweBxUNHQ8kLgsxuh\n", + "FMaLL+LEyw0GA43H45eO1XHwHVmG8XicAu4PDw8TI3V6eqrRaFR4htfVAZ0zNj7HAIWA00qlopOT\n", + "k7QLK7e4unziAcBe58hI8W5nYCILhfz8ep7v4DTKPzJMDrCkIoj0Y2Fi2zwONbJYvnMZ2Xl6E2cX\n", + "o25HbnE98fWK7xzY8T4/fskL66XLIm6eijsw4666CM6oO2kZ+M7X++hRoJ3udfD6OQDzdnnf5MqN\n", + "ACka4gJ3cCS9zPRIxQU957abBWxmuQn93U4ruvspChUUz6CIuxAc5efa4J+76y0OKLaokiDOF163\n", + "rgAsUbFRVxZoH3z+fe47B4IRhfv1Dpx4Hp9HgIEyy2X7pv3xN+/LKUGvD5alKxXkG9NkUBfaFunq\n", + "aJFGCj0nZ68b9XHLN/YJ1rTn1OFzTjSHsQFknZ6eJpBBfT0BJYsf/7NhYTQaJYaL+2q1WmKTjo6O\n", + "Up4o6XrXXq1WS2yW57uZn5/Xr3/9a/34xz/WgwcP9PjxY0lXLsFms5mykddqNX322WeSpHfeeUdb\n", + "W1s6PDxUtVpNzIaktOtwPB4nBgr5kvxzOBwmMAjAnE6narVaajQa6vV6iSVhwTg7O9P6+rpGo5HW\n", + "1tb0xRdfJNns7Ozo4uIiMU6VyvXhy2SY7/f7Gg6HSRa0fzgcpms9NxUuQRZ7LHuuI/AfEBcBGODS\n", + "3Y24JH2MUdCdjDVP5AmoRj85WHB9xqYRd6XBXkS9B9gdj8cpU7zrb+YtTDWuXtrIgdy+GErXrj3c\n", + "uJHl8va6cU2KCgwGX+SiPvWxn2PUXb5xIafkwjuiPkF+/n5n5HOAl7nv45428C4M5ly4R2StuAdd\n", + "yLmu7vHwPHde3JXO3677Li8vC260yJC57vc2UrdYT38/oC6u2c42er7C+NychyquM85GRRAY1/FZ\n", + "BMmscmN5pFAALpRIm8YFK+emcQCUE5yzBjlQwPc++HOupPjuyIJxPZMzUoRex1gPJpIzVQwyXAHR\n", + "kpKKh9ZG1IzFEAdZHAw5CzEqsuhT5zeT1d1qruzZSs3fsT7uFstNagqLQW4iu8wcaPO90+LeB67Q\n", + "3c0GMJzlKuDzCOhcbihkbxMWJM9nt5h0tWDW6/U0Xk5PTxPTs76+rkqlkoDU8fFx6mMWZIBE3GWD\n", + "WygqNrKX3717V++++67G43ECPU+ePNH29nayvuk36Sq+olS6cvH84he/0A9/+MPEQJDZu1Qq6fj4\n", + "WGtrawlwbGxsaHl5WZ999pnef/99DYfDxOgQq7S2tqbDw8PUTr7DeibBIDIlj1C73U79vrS0lJ7r\n", + "QLRUutqx50zP4eGhFhcXk8uQHWZkDO90OikDOUAT9ypjsdfrJYYEcFyv19Mi7WARQEr2cgAhu6fO\n", + "z89Vq9USy0jdfVy5geIWd07xs+jEWKiYxwlGjDYwj2CiuN/dRmxzx1UnXemdVquVdjQeHBzoxYsX\n", + "kq4TwgKkHBTAqLreirrdx7XrBY5TYnz4fHNdF9l1xjR18bnhRxbFtcWZGP8OudBHrof8vXEdcjaf\n", + "+nqKCPRWDBuIDBwAweOUGCscVwQ7ik5gjERGLK6l3kZY0EiCsH5hOMb1za9zOVCY53EtdYOduvvz\n", + "XMe6PvZxE+uRc+vFZ7uB4t+9qtx4ZnMq68Aqgo8cEpzFTPh9lEjR+vty11McrUa/uwM9f68v8v5e\n", + "B1252CGvq1sG1NkT03G9M1X8OGp3atgBDP9T3+hqcjlRd7daqR/KyJUcn/E83El+xEClUinEDxEz\n", + "Ehk03o2ijdZ1rj0RzDhT5f3p8oiWkPe1T1a3DmO/0W4K73TQ6xnFYZ+k6+SSyJkz1CSlWKbj4+OU\n", + "/RoXU7/fT3ViAfZJ74uW1wVAcXh4qFKppAcPHujjjz+WJH311Vfq9/vp+IRarZb6kKzdFxcXGgwG\n", + "+tOf/qTvf//7kqT/+I//ULfb1erqqiqV4nEun3/+uT788MOk2Gu1WmIr6B+Py8HNhpvT28N1uO2m\n", + "02mKTSLbuqSUDbvVaqWxR7sZY+vr6+r1egl8SUouv/n5eT169CixMPR/r9dLR6D4+Ot2u4nFgFX0\n", + "BKS4ttzNwndnZ2dqtVoFd5RUPIMyxxD5vHUm3DckxKNDYMcWFhYSuPNgesZ/Tic68EC3oTOYU8zR\n", + "r776KqXNaDabBeDi9fF4QPSGMwPOWPFZLO7CkpSAqYMU1wvIl/e68edpW2AZeYfr3siuIXvYwMhy\n", + "07bIcmF0U9/oofH+dmPZjWcMWHfd0z+AJdhv0ktQZ89BFw3I2BfULweGousuelsiGxX7LxdLyu+I\n", + "A1iPXafTPuaCG9gRMM0Ct9Er5d/lvFqF9s/85rbclttyW27Lbbktt+W2vLLcCCOV84NH2s9RfbTK\n", + "pJfPBZrFRkl/OUaK/ymvYsmcLXHmxe9zRO/Pd1QeGTF3F/q9ntk310be79aCdL2Tx5/p97q7EuvE\n", + "LbMY60OJKD3Wh3uwUN2K4L0wUl5XLM/4TH93jH2Iso8smltApdJ1+oH4XLfA6V8fa96fbpG5tUMf\n", + "YtESB5Qbd24V81xYClg8/77RaGgwGKQz9Zyx6Pf7Bfrft9Xzbqx+2nN5eXU0DNv/+NEAACAASURB\n", + "VLv5Pvvss+RK/Ou//mu9ePFCv/nNb9Rutws7AwlY55iUP/3pT8m19f777+unP/2p5ufntbq6qr29\n", + "vcQQvHjxQqPRSN/5znf0+PFjvfnmm4VUEH4gM+d/IQuez/xxFwW76y4vL1MyTwLDp9OpOp2O7ty5\n", + "o5OTk8KzeD5xUCcnJ8lFSX0Zw6PRqBCsPhqN0u5EUkxISnFtHNexsbFRiO1jbFxeXhZciXNzc1pZ\n", + "WUnsoo83DxFgfrubh0SMuNr8iCfGYHQPuWuOQHafF7QNViuyuDGmkLHIYc/I/euvvy4wb5eXlynj\n", + "vVv73h9eN5cD7fTPYLDRXe6+jjrDC0wGzJjHllFc57vegrF5lYsuriuRifFnoveIRYrhFegw+j4y\n", + "3vQFOoHvnYVEH/FsXzdhgmg/qXXQpT5unPmMupV6OKMY174Y8+WydsaKQqD5rF3m0W0X5eaeIR8D\n", + "UR97G+J64mM/d6+XG01/EMGLL/qu+HONz4GK3MLl18RrEVr0d0dXTw6IuMuM4oPBO5L7ZlGE7Jbw\n", + "2IroovJMuV5PlEKObuV6B6HRHeauPRSauy9zz+Td7pLzukXFIhUP8kVZOiBgkYnxaUxKJpaDRV8A\n", + "fOAjU+ofA1wd1MZ20g+4LqPCwN3CIufyceULre71c1eMj3XiMYiT8bgN6sd5ZJ7ZnN2dBNxyFArP\n", + "RG7UEeVDgHe73U4uPOKAPvnkE/34xz/WeDzW48ePC1n2J5OJWq1WYXz+7Gc/kyT97d/+rT7++GP9\n", + "53/+ZwKKjKfV1VV9+eWXeuONN5KL2uPjut1uOryWQ3wlpYznuNsGg0FyeQK+CDp+/vy5SqVSAoTj\n", + "8Vj1el3T6TTFJVFYmDmrkENfpeucR2trayk3Dy466kVAvR/Ci/tpfn5e1WpVw+Ew1ZU6jMdj9Xo9\n", + "HR8fp2eurq7q4OCgoB8cEDHucDF64D/uLOaTZ8PHJco9vquJcToajTQYDFLby+VyOv7JA+l5JmOb\n", + "nX2ckShduUSp997envb29hLIRK68Z25urpA2wtvJLlPGm8vF9RfzEiBExn2+o63+29vvbkZ39cWY\n", + "oXgWKz+5+BqKz21AbXSBUpdXHYTsYQQ8N7bHQWHuulyOLdf77qKkvnwenxU3UeXWtigPX/MiqKfN\n", + "ubXU18hIPLixG6/1+nBtdB1j1Hhf+3XMj7hevKrcCJCKbBPFhR3LXwJZOSbqVWDAhR0X4Rwb4u/j\n", + "J7d7y+vkHcDCnrvfF+b4DAdmOXYJ5ULOHJ/AXEPshreT9/tgoj7O0ETZuH+5VCql+JOc7GKOllm7\n", + "HT12ivt8gDs4iLtpnNny4sCFNrkSnjUuXLEDcCi02Vk2f360RL3Qdx7z4XEVPGNhYUGvvfZaWoS6\n", + "3a6WlpbUaDR0cnKS+ky63ogAMGDXG++LQNG/YxFtt9taXFxM+ZlOTk707//+7/rud7+rN998U0+f\n", + "Pi0k1uz1eqltZ2dnaXH85JNP9JOf/ETvvfeeHj9+rLfffjvFQVUqFR0eHmp7e1vtdrvQf8T/efwT\n", + "iv3s7EyDwSCBneFwmN5XKl3ll1pdXS0YACwcS0tL6Rw+gCjfVatVHR8fp5xcvnAAwFZXV7M7iZBj\n", + "PJSbpKCTydUROLAX0vXuu/Pzc52cnGhhYaEQp8aGkbiQ53YzurHCoj4YDBLYQg4AeYCGz0tnjTkG\n", + "B7l4igKPTYLRY74BtABEMOCMcQ+oJz6M+DL6h/vo8/F4nOLy+M5jhdyoof6VSiUlLfVzJt34cbnB\n", + "TCMjZ8f8sxyz5HVx/YGs/FoK8qbdUcc7iIk6aRZ7ghxgbCIRwLNyejGuaaVSqXB+I3PBUw/4vdwT\n", + "mUnaHdcSH2+lUqkQExfzlEXZ+H0RSHG950rz+/w53r/kP0PWcY3i+d6W3HiI5cYYqcgeOYiKSJXv\n", + "vTFxh0ZO4H5fpPykIkqPwMgXzdyk4v/oTpo1ESJlGJkcf0cESx7E7c90Cw2ZudWAAnXZxOKDLLJr\n", + "3o4I0FxOEehwTw7J85mDPs9cHCcoLgyXQ2RYfAL44M/JiHpGSjdn6VLf2CYOZEbGUtGV6u2Myozn\n", + "O5CiXXNzVwcZLy8vJ3dSr9fTcDhM6Qg8WauzOsjJZSEp5aSKliesG4kw/Qy3fr+v3/zmN3r48GEh\n", + "e3mlUklsCu0FxNRqNf33f/+3fvjDH+r4+FiHh4cJnJE4czQaqV6va39/P7Xv4uIiBYS7K0u6OhMP\n", + "ppSFF7AwnU5TmgG38gFjyARZT6fTAmDl3cfHx2q32wXGl0Dx8/PzQjbxvb099fv9BOaRnXQF6AeD\n", + "gS4vL5PLlPd5biUysR8fH6f6EhhPADjtx40Ia+JuL85J8/HjDDvti/O1Wq0WNg9wuC0yLZVKaVcl\n", + "6Upon+sBZLOysiLpWn+Xy2Xt7+/rD3/4Qxo3tI/rfBfwwsJC4aBiX8Cr1WoBJLixCVij3cvLy6lf\n", + "B4NB2gzgoIPCAuqbiCjMcXeTIZtZBhj/+4acyMg7s+X9BLtHHzpzGg11b4Pry6gzI8ng/eZrIHKh\n", + "bgSfA6Zc3r4zm3t97UA+zvTzXW7N8Hrm5OUGfJS3h7FED5DLgH7MuSf5cfZzFlDKAdJYbhxI5cAS\n", + "f3tnOCDwweyf+//8nXtvfNer6ujv5D63TCMAis/09kj55F6vqrtfF60MR+xOO8f7uNcn8asKiN2f\n", + "H4GGKw1KHNi5+jJR3RqIC0DOEgIkxFQFOTDF/65I+d9lG60l3s3kcmXlcgFE+ER010fsa28/MmH3\n", + "FIX6AZhY7LDkWVA90Sk5lIg9OT4+LgAN2k1eJAABixPt8ASZsGylUknffvttSnopSQcHBwUL2McT\n", + "7Ngf//hH7ezs6IsvvkgxSZIKC/Pl5WViQVjM6ANneZrNpvr9viaTSXL9eU4n3FbT6ZXrDIArXadV\n", + "6Pf7aRcdfQWw63Q6mpub0+rqagGc8myMHZi1w8PDNKbYbk992IXqiw8A6uLiIoFBmEXGiOeBg7Vi\n", + "YQNkYnS4BQ+w4jPfpQYAcZemg3Zip2JsGCwPdcoBCk5emE6nWl5eTiDIgfrjx491cHDwkoXP+Ped\n", + "gs6kkXrAY6Y8/YbPRXdn0U/xIGf6zRdzxgJpMVy3M58B5jD9tG8Wy4PB6u2Nxrwv7BTkgpspMln+\n", + "d3wvYyKn1328R1adfvb1wvUVLmQ+c93H/25oevt4ro8FXI8w57MMa36cdXNZ5tbVSJrEEtdQ3OAQ\n", + "DuVyuTAOkRVj1Q2uWR4Myo259tx95MU7MS5IdFSOvXFGK4KzHGp1cBDBEt9Ht5a/j9/eDlcW/uP3\n", + "+n2UHADJsVk5dsMRtS/s0rVF6otELlbC2+PFB7bL2SeuMz456nmWjN1SoN5Yq94uf2ccDzEFg/e1\n", + "B3DGieHxVrHdLPTOOEUmh2dFxeegKrKHbgAQW+Z1ZSHAFePsCYkuWeR8PHi+GS+0ATZrbW3tpQWL\n", + "3Ee0mffV6/WUUqDT6SSw8OjRI/3+979PR7y4S4ws5AcHB1pdXdX29rZ++9vfSrpKyPnWW2/pm2++\n", + "SS43cgytr68XkpMuLCzo6Ogo/Q0bA2hyNxT9WKlU1O/3tbOzUwCgk8lEe3t7KpfLKQeU98/p6alW\n", + "VlbU6/VSbNXFxUU6VoO0G34sC0BnMpmoVqsVguFZYKrVqlqtVqprt9tVo9FIwDfGazHWvH8kpWN1\n", + "nFGLqTdgKXEn0vbpdFoINneWi884VodYrnK5rKOjIw2Hw5SGg7pwzXA4TGklGo1Ggammbl988UWB\n", + "OY3jH+AQxzCLpqcxoF78jgHV7sql0KbFxcUCm039y+VyYuP8+VEfuJ7Luboo7gWgfa7P0RU5Q5a+\n", + "8jABCuPU3W2xvr5eevF1ahbYQL+78Ukf0Rf0P2CRseRMofclbfF3+LyL6zHPiW3n8wg+vU2RJYtt\n", + "p66+5g0Gg5QPD4OD90W2zcNjcu8p1HfmN7flttyW23JbbsttuS235ZXlxs7aiy45qbjl05Eo1CwI\n", + "0+nKiJBz1rn7cyND5MxERNZ+vTM3zkJFdyT1iCyNF0f9/r+70WL7Irviz3Y6lffCXBDP4Qh7Vp9E\n", + "dsotIH8n/QFl61uTx+NxsuTdx4/FBXPjfeIxYlht7pKIQZ65MRNlwv/4+qPF5+xh7BtKjKOItG9k\n", + "P93diwvMZe50+Xh8fcgorrVy+eoYHZI7eh80Go3CziTq6vFafvTIdDpN5+mdnp5qdXU1WZewVH4+\n", + "n7sEkRf98/z581Tvv/qrv9Jvf/vbxLJQTxiX6XSqJ0+e6P3330+uld3dXdVqNT148CC51VzGjAt2\n", + "E/Jetuefn5+r0+mksYUsSYwJ++IyJXM8FrufUUiMTr1eV61WU6/XK7hw/Pw2d7kgU+arxyzh8iNb\n", + "Oi5FSYnt2t3dTQcQM86azWZKIIkrC/YHGUyn03TUj+90JZi8VqsVDl5mZyR95pnDYfjm5ubUaDRe\n", + "0jVY+hzl47GCyI34KM803+/300aCzz//vHDWoOvZ6M733WG5mB2uja50nussD8/2eCTYHK7Bvcwu\n", + "11lsDnojegNiLA/1ZE1wN60XxpE/09/HNTzX3cRRb8d0D9ENi070NcjlzHfI2tcRZwvRYd5+7wNv\n", + "B+uWxyH5dzyLMA3azXPdC8C7WfMdL3gfuPzi+3xNoO0cW3R+fp7YXmSLq9xZOu8Xdznnyo3HSPnC\n", + "5YMxN9h84vgOM3+eDzCnKqNwfeLOKgxOFnJKfPcs12HOt0vxyeH1jT5i6pkDOu5C83bxXQRl8b1O\n", + "10a/eK5OFAeCXi9++0Sb9Z23sVK5znROfXzBQBky6aPvmzrlQBZtdFBHvXLyczrZY6GQl4MlL1zH\n", + "ZIwuDL8vN24mk6szBQ8ODrS9va21tTVJV2Ot1+up0Wgkl59nRC+VSqrVappMJoXA4VLpamcZrqle\n", + "r5dinXCF3blzJwVJUwAvvgGA2JMnT57o+PhYDx480N7enjqdTsrbtLS0pOl0qrW1NX311Vc6PDzU\n", + "22+/LUn6/e9/r/39/RR8PhqNkrsQMEgQt8fPICMCyl0J12q1pAhZyPgtXcczLS8v6+LiojAPzs/P\n", + "1e12E9B1fQKoJf5pPB4nQNjpdJJ7lTgij4cCfA4Gg7RxgL5/+vSpJpOrc/iI+aKfqPfCwoLq9Xrh\n", + "iJzFxcW06CNj6Tr4m+t8LuB+Qx+6C5b7PcM+4BOg7ptU4qJHigXGLMAWF9XPfvYz/eIXvyjMfQfl\n", + "xKjEkAx307iuBQSib3gm+sLnl8vA527UGeQGI5YoGliMQZcr/Z0zkh0k+G+Kt99dl1IxX5LrYAcS\n", + "HrrgxXVWdI85gHRjNxqOHmLgcyjKk/7MuUEjkeCyQQ/6dZ4LDpDHdRE8x3f5cyjebjeAaF+Mj+O5\n", + "fvIHxgt9HGNdGaezyo3FSDnAkfTS5PJdbc5QRLTI4HOrZ5aCiXXIoVj/n/f5/17HaAnwfbw23h9B\n", + "pC+yEUhxr6NyZ8vi5z4QmdBY/R6zwOSPu7n83T4ZKLQ5go/c79inKAQGpstnfn5e9Xo9WYIocBZP\n", + "HyteFwdC8XsmDXLwAEhn7mLxseH9y+TKxR9g5ZfL17lwYEpcJihNB7T47OkPtxKr1aomk6st9eQu\n", + "8tgy4og8jsfL6uqqer1eSnYpXSmyUqmUzoaL89APl4bNka62+B8cHKjT6ejh/9nRxzEg7XZbo9FI\n", + "Kysr+uijj/SrX/0qtYHz8J49e6aFhYV0jIyktHWfmJxoffti1+l0EgAh2Ju+JUkodWUbPfmLYGZ4\n", + "JgqzXC6nnY2SEgBhwRsMBinHFs+o1WppPLH7ENZoOp2q2WymYzh4X7/f1+uvv54OknZjDPah2WwW\n", + "Fmr6pNVqvcRQXlxcJHYIoOnjGz2ZM8zYRQeocJBFDBvv8DkOw8kBxC5TjIb/+Z//0Wg0KuSDijFR\n", + "cS57ey8vLxOQnk6vg+jdoGQsejwl7ZKUGCe/L74PMO9B+sjW3+9AivfHXcC0ywEo8o5y8A0RPCN6\n", + "YCgOUKKxHAO6I5Ci/own5oV/F4sDCNoZGfrIzOWKr7sRADrL5aQJ+jKuHb62u072z+Oa64SLvw95\n", + "U38/gzC3WzIG2Odklto185v/H8sslia6Lf5v7nEw4f/783Lo2d/B9/7OCILid3TmLKZo1jt8Usd3\n", + "8LzYabPAoE+sOJGcYp1OrwPzInjMBWo7xctzc4MxFpdLtIAdFMf6475hMfBJSpbvyETmZBHZTVeC\n", + "UlFhRyvPxwoTOwaMswPF5e7bwwH8OWofWXhQPbvTYHVYAE9PT3V4eChJKdXAwsKCTk5OCophaWkp\n", + "HUrKOIQFKZVKaZFst9sFWhowNhqN0s4uZMN5egCTqIiazaZGo5GePHmihw8f6sGDB5KUDk4eDAZa\n", + "WVnR22+/rW+++UaS9NZbb6W+63a7Oj09TYxbo9HQs2fPtLi4qFqtVkgQiTtrY2ND3W63YD2zm+/O\n", + "nTtqNpvprEHaAWODK40M5rSBnEjIzXNeAebn5uaSK4Ax0mw21W63dXp6qmq1mvrZF3wHh9x37969\n", + "5L4k672kJGvqOBqNCocrw4wRkM9iT9A4bfCAfT5nUwGg2cegu0ApjDV3+zDWAa4LCwvJJeb90Ww2\n", + "dXh4qMePH6cx4uwK4zsyHa6/+d4Xa8aNt5P61Gq1wmLnQIh5mtsUIqmQnsJ3s+JKY065Tndg5oCX\n", + "+vE+13+uRzC2XP+7PGIoRFyrouHphjLGAe2gzrTH74061HeuUWi760fX0dLLa6n/xA06sR8ovuZ5\n", + "yAxj0Osxi5HzZ6MDeJ6z2xEgwyzzGc/if5dnlH8sN8pIRQTti3kEKJ5QMqJzR/VxMeV+f7dUzBvh\n", + "CJdrIsKN9fe/fWDm6sX7/PscUONZkcl5VT1dls66xIGNBeM+aWepooKL7Y1AA/lGpcgPLJJbH7CM\n", + "DMw4cZ3idUXkTEUcN3Ey8z/vyQFwv86vl/QSUPLfcTcKypFrsHLoo5gIkd9RwRPDtLy8nNg42kuu\n", + "oqWlpcRmeH14Xr1eTwkfKQCtxcXFwjZ3j+/y3VaSkiXPmIFpkVQAH8PhUM+fP0+AaHt7W71eT51O\n", + "R5PJRFtbW3r06JEkpV1xx8fHWl9fTwf1Ikd2WE2n05RLSbpypeFOK5fL6RgS6frIEel6dxdJO6Vi\n", + "hnrkRjuWl5c1NzdXcDGwQMMI7uzs6PDwsJCvaTKZJFchYxR537t3TxcXFzo4OEhuWMBwq9VKQI++\n", + "o54wYIyZxcXFl2SDm1K6XgzcZc11PtaY39F16ZY+xwj5PHT3ui/OGA3Ulfgqxs7S0pJevHihwWCQ\n", + "2Dj6h3Ea89rxXPoqzlfXa/QRdT07O0vPR67OWJCtHpYwB+oODw/VbrfTfaREmMWA+5x3wwRWmLa6\n", + "3nM9lFvzaGduIWc9jADJgUJu115kI70f/bn0ZXRReh187Md1x3VnjMHiWg+HcD3Dc2gPrlpfj3yM\n", + "eHtyxriDb9fhs3atOyj2eqObfU3PvTeWGwVS0svAwhfZiJzpeO+UyP64cLhnFqJ06yKHeON1uef5\n", + "PQ4aaENEuLHjve0OinJsGiXe6+62Wf5ip/ula4WCTzwCy1z7JBUUBrLwNmHFovy8Pq5QXKnEtpbL\n", + "1/k9PKgWl5wHHEcLNgJQ6Gh3Fc9iF70OswAY10RXabw39hvuPMaO5yDCxbK+vp6sfZdNuVxO8Svu\n", + "lkRJ+3EkvtUX8BHbPD8/r+Xl5bQVfG7u+pR7z8nD4k+fE6sjKQUj4xJ78eKFHv4fd9/nn3+uWq2m\n", + "ra0tSUrs1tramobDYXo27WPx6Xa7arfbhQBnWB+UI+0hfgSgSYA0rkaAFnpkNBolgFIqldK5hZXK\n", + "VdZ1Tz2Aa+ji4iJtoZeuWBfG9NLSUkq5gNx3d3eTpdvpdNJ4gz1ifHKeHfcRXwWrR/txazK2PTga\n", + "wJ0zPAEC5ATyBdENEs73gxEtlUopEJeUGFzP+ML1x5jwTPPkjiII3ecHLEXUP4yBuB7wd2RXuI/4\n", + "QOLGXJ8AfsnHxoYE5Mj1zBt/B6DIA6f9Pmf6vS+8vq7znIVDJ3i6BF/0ud7/dtbvVSW6cX1ceCxf\n", + "BHSxHyJIieuJ3xuD2ykuG/6OOtbf5zJ2Wfi6lGP4Zxm4Odl4/WcZ2G7Ax/v/Uh/cpj+4LbflttyW\n", + "23Jbbstt+V+WG4uRihRg7nv/3691BBwtAK7nN6g3RynPctlFZO4WHc/IMQ/+/FdRuJGFi6xW/H9W\n", + "PR3pe5yB3xfp8ZjUTSpSntJ1nEguWN/jAairU+peR7doYnxEdG1GOtzrQrwKrI7Lm+udiaFNLsP4\n", + "TGfgIqsWrSQKrAL3ujylomXq7Yp18DgX6SpOqFwuJwqeQGLpiiHpdrtpezwuFuk6Lqler2swGKhU\n", + "KqX4GjKnkxLB5w9xVT42fEyen5+nw2vZvYcs2NVG3BZsxvHxsb744gu99dZbunv3rnZ3dwtuz8Fg\n", + "oI2NjXRWn8sb90ulUinErszNzenOnTuJ/SFRpnTFkBwcHKRjSk5PT3V8fJzOW1tZWUmuoFLp2o1F\n", + "XxADc3x8rGfPniWmq1qtpizya2trevbsWRrDsBvNZlOl0tUByeyE3N3dVaVSUa1W08HBgZrNZpqL\n", + "sAqkYBgOhymRJzLe399PrkN2xhGAz7Eyk8kkMXkwh6QkINaKvvedZLEMh8Pk9pyfny88s16vp2By\n", + "YsXoQ092yjzgiJjpdKovv/xStVpNm5ubOjw8LMjb52rOZebzJbIgzhI4kxePyYl6kp2TMX4M5oln\n", + "xOOg2ADAM/jt9Y6bVKKXJecujQHV3p7IgsNGodNzCUFzepDfjDnWLpexrwHTaXFnZgyr8DahL5yd\n", + "4ztfE3O6nXti7JS33XUy7BQyiOuxe314D/3L5zw3rmGwgjG9Q9zkEduRwyqUG0t/kBO4lE8JHxdo\n", + "/yx2dBRu7HAvs1x+sZ6z6h1BgdcdheG+aQc2sU1xEsY2zHI3eT1iQWl4YHW81mUQwcirZDDr3T7Z\n", + "AAVeUAg5ypjnRXed74gjZkq6jhXwieiBkF43fPDIxXeLvKrNsW+4z92ptIvJCfij/rwTdwlxRij3\n", + "o6OjlFH78PCwENAJGADE+JEZAEtkRDslFVIhAHwBZ6SUYIz6zqVKpZIWUwLPARk8x2NS6Ceu/f3v\n", + "f6979+5pZ2cnZSiv1WoppmZlZaUQW3V+fq5+v1/Y0YSbbXFxUcvLyzo5OVGtVtP8/HzKFs691J8+\n", + "AdiUSiX1+/10BpvH81xeXqbnHh8fpx2R9DeB7wA4z09EsHmv11O73U47+o6OjrS9va2Dg4O0K47+\n", + "dfe5dH3AMeOi3++nLOIARklpiz7uW8Y8fS9dxZEdHx8nN5F0DVYYk65PAP+lUinlEqMsLS1pcXEx\n", + "7QScTK6znrN7FODNzjyeu7+/n0DmwsKCms1mQd4s7tQvtzDGOQyI8LUBGY5Go/RMP42AMcz4xMWb\n", + "c+e7PJApoQmz1iDXGf48gGckAZgjtNHbE3VUDNlAl8Y1g7lLmzyujXul61MafDMJc9/1ZE429LOD\n", + "WIwP1x08YxaYQu/52aouHzd4S6XrHGLueozuthgDhZy5L24q8uczT2IcmceMSUU3I3L0I71iufFd\n", + "e7kYmhzQ8EGSA1ZxMEjF42Z4bw7A5CZNrEeOaZrFhOU+i+xQrDuK3n3Ksc4RgLjcpCJ74pOWCeug\n", + "wLct89utowho/F0OyqJf2weoD+r43BjMx+TOAVvui4faslA5WM69i3fk2pHbXejxBV6wVD0Y0Rkw\n", + "t54cTPM9DAJt9P7qdrvJqq7X64WdRDADsBi8k/iQ4XCYApy9eAoDrHDkxgISGTg/Uw2FBcvD4ghj\n", + "5TE7zWZTrVZLe3t7+vbbb/Xw4cOUNwo5Hx0d6c6dO5pOpwlkNRqNFFNDu/xYknhsCjFJT548SXEy\n", + "x8fHiWEBEMG29Pv9FMDuCnY8Hqvf7yd2DmA3nU61sbGRFO7y8nLqC1IUDAaDtEvtyZMnkqQ33nij\n", + "wJDBMHl/cTizB6n7FmxA6+rqqiSlg3cZF6VSKQGbwWCg4XCY4s88ZQjy9nnlgMkXu+l0moAymzro\n", + "U98VR86u6fR6QwBsmHR1DiPzghgq2k/us5gnSCoaNdTLWXVf1H2BZnx6OoE4/svl8kvj1AOvc7tr\n", + "HfR43zkwoES97LtnfQ2Kuj+uVQ4wYn5B5BO9JP5/9B44cZALnAasxu9harwdvivS5RMBLjokgqUY\n", + "fO/P4p2+frmcATye+oj7y+VyykkWAZEHlOc2RLFueeyYfxeJEq6fRVhINwSkfED5YPTspt5RPtii\n", + "K4LveUZOaLmJwSBx1E+JFsmsxTX3zFyd+Y6BkVv43Q3i9zkzw4DJWRBu8fn7Hb37wIkZdiN17O/1\n", + "z93ag32h0Gc+MWPwJIrFJw3PdUsnBhACpFx2pE2Iz6H+uKV8h5P3xSwFFUEz32PNeQCoL5al0nUG\n", + "7cjuucUWz/9ikrKzzHeYtdttnZ+fq9frpbP43K0wnU7T585yEczurtWYXLFcLqcdgoA0gqt5lp9h\n", + "xnNwk7HFXrrOA4b1xvcUdtTt7+8nNoiyurpaOBDZmRUyfff7fTUajUKeKNyWa2tr2tvb02g0Su8E\n", + "gJEtfW1tLcl0Op2q0+no6OhIlUpF7XY7MVmA00qlklg5ZONZ0BcXF/X48WO9/vrrqR3or6dPnxaY\n", + "w/H46gBlEoE6eDk9PU1gD8DR6XTSdw52XMmPx+Pkfp2fn9fZ2VkK/G82m7q4uEjnM/pi5fmV4nZ2\n", + "Ukq02+0EopA3Z+fV63UtLi6q3W6r3+/r008/lSQ9ffpUz549S2kqpGvwS9JXNy4cUPlGDN/pyvcU\n", + "Z914Rr/fV6vVSrnCuMfnsB+ejewAhQ5Ambe+9Z7ncP6gj1Ha4GsV8nLGh7ERQygim+5sHC5v9JED\n", + "pZgMljEdjTvXUw4OnFVyhg1DEcDuxp7rwmggUz+u9b+p19LSUpbJiyEYvtHC1wNfg319cIDsz6Rv\n", + "c4QMsvNkrD7O4noRwXGu3NiuvRh/49RaZIn4zF0KFAZhrpGRaswxHfx4TwFGhwAAIABJREFUR8V3\n", + "5wCa05l+X66O/h1/++/YbkmFTowskN/Pfb4TJL4j0pY8n8U0x9ZE+cUyC517O3KTfTKZFNiOXF08\n", + "RoH/fZK7dcRCkdsGTHGFJb28y8Pfx3UoPt8lyL2ePdwXfe5nl5gr92jJuhUFyCHvj7sbut1uco0N\n", + "BoPEiElKO9V8YWLxcmq8VCoVGAkSV6JM/H5yLF1cXOjk5ERnZ2cp7oodZvV6PcU6UZfDw0MtLS2l\n", + "pJIcaispHajL4gu44btWq5UWpnq9ntxYzWYzKXRX8NIVqCGX03Q6LWyHR8bsIptMJtrY2Egs2MXF\n", + "hV68eKHz83Otrq4mpklSyhE1Nzenfr9fAFKeFPWbb77Rd77znSRn4qI6nU7qI9/tNxqN0vOk6wXX\n", + "E46i5AFEDnrYoYdsAHMcanx4eJjaT16ti4sLDYfDgpFUqVzn1mGhhHGEjQCcEQ/H+K7X68kQkKS9\n", + "vT39+c9/liQ9e/ZMz58/T/mmfDHF1c0C7s/w+cxY9QU5lriwMzY855VUdEMBUmmjszCeANS/5x2u\n", + "C6NR6+CE/6MBFY1b7wv+9/UuhoJ4mhreDwvpMo4pGZwl8ne6Low6nOc7U+3tYc7yXGfbnY13efI/\n", + "Ojwayf5cYta4z+vlhjfPAtC5256x68asy5R+zK0Vvta7fo6pgnLlxoCUlA/qll52wVF8MMRANWee\n", + "fAI6rejvcnYiMkQ+SF4lcO5zVOvM0V8qESjG9nhdIrijDdEycBk6tT8LVTt1THGmyQGdt93bn6Pp\n", + "Y3ELgwU8WiOU8/Pzgq88x+xJxVPX/cfllusLlDkTKvYhn3m8hLfP7/dxxP/R2vbvqXe04ACYABz/\n", + "DkajWq0mECopATVXwrS/Xq8ni5Y2AQhZSFhk6vV6Yoj6/b5WVlbUbrc1nU7V7XZTX5DLqtlsanl5\n", + "uZBpfHFxUXt7e0lxHh4eJtfe3bt39cUXX2h+fl6tVist3LSPWKbT09NCP3nQdMwWPp1OdXx8rHff\n", + "fVenp6daWFhIrI90tbAzH8mvhdwGg4F6vZ6azabK5bJqtVqKS5pMJin/0NnZWSGZ6fn5uZrNprrd\n", + "rjY3N1Uul9M5hH5kCcCQPhwMBhoMBqlPPE8YdSiVrpOpspisrKxoeXk5sYPOZLGwDodD7e7u6uTk\n", + "JIE0smkfHx8ng4B+Ylx2u90CK8m4gMXsdruFc/+Wl5eTW5MA7idPnujZs2eSpK+//lrHx8eSrty1\n", + "jD36Siq6jaNedcPKmQc3Lp0d9zAAnxO0D9kDUnOMCnJ3vepMdvR8wFTA2ObcgrQ3gkBAkbuI0ANu\n", + "OPmz/HnRoKUNyCgaks6qeH24Ltc+13PIis+cTYt1hX0GmDtrjj5wDwhAy2N3+T0LrPjnrl+5h3oC\n", + "2kql0kuhILTNvSr+3auAlMd45cpt+oPbcltuy225LbflttyW/2W5EUYK1iYyKJE5ir7yyAL4fc7k\n", + "5Fx/0cXiSJT6OOvi90dGJJacHzbXPv6HcvZ7nIVw+pPngaKjdUWJMTsxritHc0pK1rFb0FCZzvL4\n", + "u5z6zvnpvR/cEuJ6WKbY97zLGTK/nrbkfO3RWsj1U2SW3MqLTJ67Jn3sRKvT6X7+90Nn3dqNY84t\n", + "day5paWlAo1PQOVwOEzuMncJnp+fF8a0M4icNUe9vK1xhxdpDIbDoY6OjlQqlXTv3j11u920Uw73\n", + "I4k5t7e3U3vW1ta0ubmpr7/+Ol375Zdfpu8fPnyow8PDFP/jcsC9R0B4ZJ5pC+ySdMXytNttDQYD\n", + "VSoVra6uajqdpucPBgPt7OxoMrlOsuhM3ng8TiwLLkTpipFrNpvpuJrpdJrYHDK3r6+vq1wu69NP\n", + "P02xVbANGxsbmpub097eXiHJKQlQOdAYeRMsfXl5qV6vp4uLi/RMguVxKzSbzUKKA5glSVpfX08u\n", + "2J2dHX3zzTeJKXBXFkyRu0KZTzCc/X5f4/HV0UI+ZkjkCuM1GAzS+2EL6TPfKBB1k3TNMDBXIjtA\n", + "iUyLjw1SGLjrkPZ4SISvCc4I5dxMzhbFGBrXMzEkwtch1xMuv+jug5FCfq5r0E/+vwdRo6PcpZlj\n", + "wSLLhHvcw1N812L0rvhuYK6P6yXXS9fZ4WFHeQb3+uYAnulhFc7gezs8VQGyQ4d6HxI3GHWe1zPG\n", + "+VJPLzGeOHqtYrmx9Ac5msxpyjhond6MrjenLv077nFQE104PMMFGRfXXB2je8vb5fWMPu+cO4//\n", + "o9uMetLx8TtoTad5o5JAcUSXoVOYuUHigy0CFXff/SWQ6c8DZMQ4ghg46FQ3sSHIMbpgXe5RplER\n", + "OQiKSpD7omsSSt4LSsTdePyNYnAglGtjrg5LS0taW1vTysrKS4dpslvOFwXmideVwnfEL7iSvLy8\n", + "TC6l6ErExYbrp9Fo6M6dO5KUdonNz8+rWq2mLejS1fb3+/fva2NjI7m76OejoyMtLi5qbW0tHdfi\n", + "7QYocpiyu0vn5+dVq9VSfJMbWx988IGm06sjbLrdbiE24969eylA/f79+wXXBGOBYPKtra2Ca8Az\n", + "rzt4q1QqKYfUkydP1Gq1Ul0XFhb09ttv6/DwUE+fPi24KdgNt7CwoO3t7cIiNBgMUgyZL0CSkqsM\n", + "l9vR0VGSHf2Fu3Fubi4BW462ITj+8vIy3YfbHBBFSg3+lpQ2Q3jwPkDq7OwsudIIaOcedE2cL/SX\n", + "Awf/nODpCE5Y6Nyoc/cSICqmHMG1xFxkdx/1lK530cbFGdkChqJbiOvdFUm9GcuzAI0bkjzPQyti\n", + "GINfm3Mj0r4oN+qUixt1d53Xjb+JL5L00noBsESWOYAbQa2fCQjIimttbhMWesANUJeFg+SYQgH5\n", + "x91+Pi6p46xd68jK25aL2aPcCJBy364XX+jcYvfvGfzRj87fcXHyToiD1FmeHLqOFkKuxM53688X\n", + "8pwfexbwiEyctyUu8pIK8UR+ve8yife6bDjV3QdVZG8cAPJ9ZFlif0Vrj+fE2AmXBbFUDGrAA/3n\n", + "8kXeKP7Yxw6iHXSgPHJWcO45XqLypC4XFxfpwF2sLn8Gipd3+nfEBhHg6+OGOBW34KPVyPMiWCLR\n", + "ZQShi4uLmkwmqlarqlarKf6G+9bX1zWdTnVycqLDw0NtbGxIumI6zs/P1el0UvyQA8P9/f20oAMo\n", + "pKsYqadPn2p1dTXFMnEO3fn5uRYWFtJxNXHss5MNBoTFfnt7OyUcZUz6MTDr6+sajUbqdDqFJKK8\n", + "c319PTFRvjhw7A1xMHt7ey8tYi9evEggjLl3584d7e/v6+uvv9b8/LwajUa6j12OvuuTPvdUErBH\n", + "fDeZTFLKBMCLgwWPkVxeXk5B6hyTQ7vL5XICaHHRp89d5uyymk6nSd5bW1sp0H5ubk7Pnz/Xt99+\n", + "W0gc64Ze9Br4HIxgy3VTLkbGwbPvBHTd5EYqC6TrCWekKBF8OFPO9TFInT6KAIT3UHIMObJ1ubtO\n", + "9vscbM1i62gP7YyB5+icaIi6IRgJBQed/kyuYwz4e6Vr8Ersp7fD11NYRNrq60g0aDFMfSely8lJ\n", + "FwwD2useAl+fXQfnxoIDuly/zio3mpDTBeeMQnR95QZTZJ18MMRreFdOqN7hOSbqL4GF+D11pSMi\n", + "ePF2+vu87bENgEe/JrbdFaR0rUxA75EFkl4+P+ovtYvfrkT8ur8kN1dw3hcsckwMduHwnQ/+XB29\n", + "PpGKz4F2d+vNYrH4PE4o6u27jngmu/+cuvadNFyLIoqgrFqtprPMottlFv2NFSldMwnS9YLkIMnr\n", + "NZ1O07l3npiRxXN1dTVlB8d9c3R0pNXVVT18+FDn5+cpaaV0BQYbjYbq9bqOjo4KFvuTJ0+0sbGh\n", + "/f39lG+KOvf7/SSzo6MjVavV5KKinwhO9vY1Gg0dHx+n3Uunp6eFvEeekZ30AsiEnFGNRkOLi4s6\n", + "OTnR5uZmeifzgZ2JjKl2u62jo6NkXVer1fTM/f19dTod7ezspN1HAJpS6Srj/GQySekTkDeygAHi\n", + "sN04xp3RpX9xP7G1HBat1WolNyRnEXqoAAA6MiTMGZiDfr+f+tDPLWRe+Fj3TRi8L+fSY5FzfcOC\n", + "jqEUd58xD6LrKRq/OSOTOZkzsHie3xeZKN9oMZ0WdxtG0J9ruzPcABpf8+LGKC/oPndVcp/rxOgO\n", + "Q0dQF1KyIA8HQQ5OMbwBRQ6IeP/i4mJqkwMR5rsf4Iz80PvIyF2Jrr+jjo8g2ccw7fVdlnyGfnOg\n", + "5f1OX/hvD0GJfeN9MKvcaPoDKZ+cK9KZjlgpzjRxbw64IGyu8XdxTWRXfEJQfDJEEBffGRWT9HK8\n", + "TGRWqAcd5laGA6bcJOUnunpoAxMkKk2UjLt2vF3ezthfOTbJnxFp2UgZu/sO8MQzPWmey4G2e2oE\n", + "nxA5+tstsRxwncU00g9eF1eE9JUzOa7sooJ21ysLIDuwAFXr6+t64403tL6+nurqOxMja8Nht6QT\n", + "8LiUSG/7mMKdwnURLJbLV0enNBoNbW1tpQSRz54908HBgdrttpaWljQcDhPImk6nGgwGarVaWllZ\n", + "SRmupavdZ3t7ezo8PNTe3l7haBVPM7C4uFjY8eOU/+XlpQaDQTqS5PT0VPfu3dP8/LyePHmi7e1t\n", + "jUajBCbm5q6OV2k0GmmnndeHfEcsHN7HAB2+Y6EiLQI5s0qlUooJq1arunfvns7OzhKIoQ/b7bYu\n", + "Ly9TXJK7t9F3MG++MJRK11nbkTHfjUYj1Wq1lJ9rd3c3AdDT01O9ePEipeAYj8eFQ6JhTJlTOWaF\n", + "dzmT5Qu4J22kPrTB3VWMMfQkfZljA3yR5XPACzu//D76iXnncpvl9YgsSGTAoqsoMkNeT2f/3ZCL\n", + "xm7Uy67TXDY59xzxaPzv33G9h3fwnR/6LhWPtHFQ5M/FMPA56O+gnbwvxlnSB143xpqzRN4XDvD8\n", + "N/L1dcRBDr9ZA/jOCQPGm6/B3t4IYn0cxnq+yq0n3XCMlAtHyi/S/O8LofQy2+RsQRzgkYWKdWBg\n", + "xIWYEpE59faO9Pf5AMm5seKE4V5AD+4G6eWtns5kAECov8fm0C6PDfEFwwdTjrqMiiNaVTw3IvUo\n", + "C6flkQvWq7s3PLeUTwwHq5EN4kw0+sLb4vWgbx2gM54iaMTH7+3zc7pcBg7+vF1cc3l5mRYiLDIH\n", + "MCxu6+vrWltb0927d9VqtQpxOTArvM+34RKYPD8/n7b3u9XmBoQrTrJrw2R4WgHaDuDb3d1NeZSI\n", + "wWExJiGqdJ1p++DgQLVaTffv308Le6PRULvd1u9+9zv95je/0d7ent566y1J10wHBg8uG+pNIkT6\n", + "he9gVQ4ODnT//n21Wi396le/SvInMJtUDp7G4ezsLKVmGI1Gunv3biFLfrl8fUwNzI10HYD8/7H3\n", + "Jr2RJdcZ9psDp5yYHIs1s6pbPbpbguV2t2XBhlcybMswDHjjP+Bfoj9hLQwv7YU2hleGBcmyBQuW\n", + "ujWrq4fqanYNJItDzskpM78FvyfyvYeX+gADH8oLBkCQzJv33ogTJ87wnhMnOELm+fPnunbtWppf\n", + "5rXX62XQquFwmHgV+nkZg9FolMoODIfDjHyglpTnW9EvQsHUGdve3pZ0nlvFPLJemF8M1tFolAw6\n", + "52EQqfn5eXU6ndRPakjxHa+6Lk2rsEej0NcNfEe9sLzGPNAfZFrMu8LA8qOY8iIH7nj493y9u0Mb\n", + "nW3+J18MY8EdZl9zUe5LU0PSc6/4ftRR3m/KYWD4eA4X33MHmXdjCLGuvOioy2r0jL/bHVZHcV0f\n", + "RPQvT3/QkLNuYLpsHo1GF4w8aZpbSl2yKBd8fhwsoXnZC3cQ3Dj3vjugEJ9Hvl2e3k79vvTKVbtq\n", + "V+2qXbWrdtWu2lX7re2FhfZiTBQvn8/ycm8us3zdMnUPK3oljjzkvdc9s+jhRE8DT8bvc+jb/6YP\n", + "HhbKS8b0xOIIDXtIzhv9AK3KO/QRjzYvHOf/e5/IwYgoHda6JyV6rk+E7/E2yGVxyNmRFeYh5k9F\n", + "7895hmt58+vzEceK5wV8DO0ZNyEmxu4oHp68lx2ABowbL8w9R57n26qZy3a7nRCMiHKenp6mzQBx\n", + "p8l4PNbz58/VaDTUbDbTLi/6zI9D7tI034Px+hhHo1FCB4H5QQnIX2LnXa/XS8jN4eGh2u12Qis+\n", + "/vhjbW5upv4sLy/rzTff1PHxsf77v/87FeV89dVXM4VGHVVrtVqpTADhS0827na7Go1Gaadhv99P\n", + "+U+lUimF+hqNRgZd4UzAcrmcDib2eSwWzw8JJgne5Qhz0Gq1tLy8nEEj2IHHcS7saINGVKSuVCpp\n", + "LsjfAl1yFODo6CjDl9IUkQINJFwI7aVzhJPiqCcnJ6lgKWOgsCqoMHRhbguFggaDgVZXV9OOTXjJ\n", + "Q321Wi2Vm2A9sCvw+Pj4QhK7y9cYwsvLbyI5n2seTnMZGWW1py04isM4kGFRXvBc+gPyTp8IZ0EL\n", + "R5cd4Xcki2f5mqbx/Lx0Ft6Zh9ZEZAu5m7eVn3yhvBMPGKOnD7jcjkg98iymvXjOKYiPo/eMg3fF\n", + "yuesOUeP+Bv9R64f7/PfzluuS/NymgqFQioZAdrL+JiPiEySo5m3EYL2Qiub+0RFZZgXxvN7vTk8\n", + "6kS9LByYd837gjL1PBoPsUVF6VClh/5iHz3c5de9pD2Lwhl/ZmYm1X+Ji9H74QvaG4ImCo4ovKLh\n", + "yt8xXMq9LK7LaBgNKRcAvqsGgXd8fJxykrwPeVuVoRswLcnePhfQLxrP0ZCHhtI09MGzyuVpzR/p\n", + "XLmxUH1buYeX83InPNRBKIZ8H86oQxF7Um0Mx7oQw3De3d3V8vKy5ubmUs6Sh0ViCLZQKKRjYhCc\n", + "GOCEBfr9fjKgyGfqdrva2dnRcDhUt9tVu91OFdEHg0FGIEtKdaSq1apu3Liht956S++++6663a4+\n", + "+OCDNBe/+7u/m+hNjRtoTV6UG48+9kajoXa7rW63q+vXrydDo9VqaTI5r8x+7do1NRqNFE4iVLSx\n", + "saF2u62zs7M0RsJwGCrk4EjTXXDkt1Wr1Qy/nZycaH19XZ1OJ9WEct6gDpjLDK8eDq9ieKEA4VUP\n", + "73h18Gi0HBwcpPAeBwjDQ7VaLSlMjDCMTww5Qm++K3MwGKTSD5PJRPv7+9ra2krhaY6iwSnyDSMo\n", + "KF93zivufPm698R/1pobC8hiD81JyhgnGL+eM+gyNG+9IpuibMOBzHNm+U7si38HI86dF5+bPBmH\n", + "/I+Gp5Q9DsodTO8jz3TZ5/LOaU5/XIchAwgzuoHiuoA+Rb3ndKNFh93H5M+hb8PhMHNMF9+LBhXP\n", + "i8ZfNMCgqYfMXaZ6eJMxuKGa116IIcXCcYZmwl3x5RlNlz0rzwDLQwz8f97B4nHvjwnweiVSdicB\n", + "fY3GGoT3Fo3GaCzEBFC+S2yYvvg1mD3G+Z0u0JUfZz6PCUevEPrljSV6UZ4/xf9R6UNfvuu5EG6w\n", + "8l0/c8nRPV/4Lizz6O3NFwbNhQ3KjIKYfM4p99K0TIHv4PFFSt9Go+mBsp4AC+JCfhHe/a1bt1St\n", + "VtP/PkZ/ni98+gfNdnd3tbi4mIRrr9dLAjFv+zD5McPhMON50zyHBcTm5OREvV5Pg8EgGfa8n2NQ\n", + "QCZmZ2fT+XW9Xk+7u7va3d3VO++8o69//etJAf/sZz/T+vq6ms1myvXy8/QajYb29/eT0QLK02g0\n", + "1Gg0MsebzMzMpOdKSjWbTk9Ptb6+nnK2QBzhH/f6QbLckIwHLC8uLqZEbwzpo6Mjrays6PPPP9f+\n", + "/r7G43EyzvDIQb9w0uClSqWiTqejk5OTlCMHT/nxJ2dnZ5mjXsi7QslCm263q0qloqWlJQ0GA43H\n", + "43RftVpVv99Psuv27dvp/na7rVu3bqUcqclkkkE52RVZKBS0sLCQ8uLo69nZWeZ4p+goueyK69Ud\n", + "zagXaKenp4nelL2gxXIK8H1EtZAD7uS5HGAMHnHgmTH6gHInh4bPHZHy8UQUzJ04v4f74jvdaHeU\n", + "nmuelI7ecBnPNf73HDeeyz2+s4659PpcHiXxvvF3RIgYX5TD5fK0Ph5zLCmdFdnr9XR0dJThq3K5\n", + "nDn4PebpOu1wJPk8LyGfZ/qZgP48jyxd1l54QU5XRLHD0RCKVn7ec3wSY2jPmxtWIAwIG0dA3GCg\n", + "uVJyJc67Y7jJ3+fM5EzMJMbdML5DAi/UPSAWKko2IjKXIXL+WTRE8CJ4v9M30t7H4EnoGIbc77tB\n", + "CoVCStiVsmfGcTCvJ3g7miVlC62x6NmdRPOQLf/TfGHxf9wCTL88JEphRTd0HBWAlnNzc6pWq7k7\n", + "gkCjVlZW0m44BBhKcTgcZubYlYDzcqfTyQjU58+fJ/QM2hBm8uZnUFH6gO9Qe0qahlxdmZCYPplM\n", + "tLW1lc5a29vbyyjVQmFaXHJtbU3r6+v6/PPP1ev19M477+i9995LY/joo4/0+uuva319PbPz7tat\n", + "W4nH2GVHTSsgen6q1WqmmjjoCYVHZ2dnk0G4vLyc6metra2lZ9AODg6S4u/1eokX6/V6GhPolBsN\n", + "jx8/VqfTSYg28gQeps6To06gJZPJ5EJtKuiIMejXUD6TySQV9GRdLC8vq1qtprAeuxelqYIaj8eJ\n", + "V6DL4uKiSqVSQis9SZnDqOFJisYiJ1izzj+OADhq4vLGx+jKj4bB4uuB3474ufJz58vXOPd54nKU\n", + "fW7E+qafKOejPCHsGGU7Y4qVy2PDOOE6eiAqf8bgqQk+bu+r6yEHCfh7OBxmdG4EMByRw/Fyg42G\n", + "ER3RLZ4BAkoo3YujuhM/Go0yjgmHbiMTfC4uAyy8FAwFhGNqBjrTZT3Og28K8qjG/0lEKioh6eKO\n", + "vTwDIFrs8XtReUYUKvbBITtnKPcY+a4r6Rg6dI8xD53y/x069cbkgWK4IYXgjQuL+1wRRzpGQ86f\n", + "63TLW1AufBwh4zs+bj5DaeWF9tglBs0Zhx9jUSwWNRgMEvrjyB8C67LcABeQ9Mtj9pE2eB+E86Sp\n", + "Uef5OI6UORSN8PP5K5VKqbhiXHiEJ/CSab1eLx0Ey04zlLCjt3hhLqyOj48TD5ydnSWlyMGxfM/7\n", + "ipD2XWhueJ+cnKSjZUBnaDMzM/rkk0/08ccfq91up/ltNptaWVlJBwR3u13t7u5KUipU+fLLL6tQ\n", + "KOi73/2uvva1r0mS3n77bf34xz/O5M8xBs/LefLkiVZWVpJBACJWqVTS4byLi4uZStuHh4epLldE\n", + "OqgGHnM2MIjn5uZSuNLzi1Bi9Xpdh4eHicbj8VhHR0eqVquJDhiE5AdijOzt7WVyvQhZYcDAN5VK\n", + "JYUoaV7eASQjOhGEZlutljY2NjQ3N5eKo8JHlUolGVv0BZStVColQ5F1we5Q1ujW1lYy4JgrR2Th\n", + "L+aC9XuZIQEPe9X734YoeJjPQ3fcVywW09qgf1L2yBKfU2kq0+C5mP6BDIGP3Mnk+b9Nf+UZPN4c\n", + "wY7ymXEyFpe/7sBznSgL44sABQ6f6ygv4hlRGZ7jMuiyCI8jWh7xkZQxbAgjM1cuF3mO53rmyWHu\n", + "h0as30JhehwN8oSadfQXR5LnnJ6eamFhQcViMcOHkRZ57YUhUlJ2e6kjNlI+9HvZ/x7LdCMEBssz\n", + "plxxwFS80xPOohGH8OVaREriePIQNg+5eYNB/HMWz2WIHEzkXkikny90f5eUzZ9y2lzGOL/Nq4qG\n", + "iqTkwWNYuEfkW7lRNggSlLd7K3nGCc+OxpmP0ekkTQtXYvR55XA8E2jgiA/3AS37O1C4hAJdUDnt\n", + "4MlWq5XGuLKyorW1NXW73XRkB7TEyKMf5JHRH/rEewhDgSwQKot1bwhpoeTceAZRYS5JKB6Px3r0\n", + "6JEePXqk1dVVvfPOO+mZGF+DwSAJS0J70vmxJT/60Y90+/Zt3bp1S//5n/8pSfr617+uW7duqdVq\n", + "aTQ6TxynL9TNarVaSfG7x8r5dZw/eHh4mMJpHJ3C2LwcATWYSqVpFXFQJzxnjFQ3vqrVqqrVqkql\n", + "kvb29iQpjRGkgxy6crmcQolSNjG20WgkgY6QL5fLKemeNeDH1BDm8/XN9v88VF6S7t69q1KppKdP\n", + "n6Zx0n8PbRLGrdfrajabqWJ8THyHN7rdrj766CNtb28n3vDk7rhJhfe5Yo/IOTSYn5/PGKfQlnn0\n", + "8wvpG0fe+FzxTi806++Dbi7PovyMCdXRAXaHBqM2bsN3Zw59EeV4RG/ynu/6CXkdoy8xlOp08Ocy\n", + "P25EQn+nNXSg8VnUGc7bbigxNz7XbpxLU+c30gT0i/C56yScAfrAdfrGuNA1rMNqtarhcJjOksT5\n", + "4X0e1o3AQp7u9XZV/uCqXbWrdtWu2lW7alftf9leaGgvxsOxTGNYioZlmBcuk3QBXuX6ZSiKow6e\n", + "yItHGa11aZpwnLc7w3dm0A+3onkm34khNA/rQReS/AjNxHi3NPXOYsIl93uOgickYrF7aMPv9/F7\n", + "WMjzFfx7oB6Mzz0sL3LJM+KuGI7RIL4tKW0/d8g5eoqEqEBhoI3nUPl8eg4KeVuOnPnWX0/mhWY+\n", + "B5E/Yq6df+4e29zcXPKUlpaWtLS0lLbF+8G+HrpkDhw98d03Hgahyvh4PE4Jm3yX890Ijzl0DX3J\n", + "83Ke+eEPf6jHjx9rc3NT9+/f13g8TqharVbTvXv3NB6Ptb29rQ8//DAViGw0Grp586YODw/161//\n", + "Wp1OR6+//rqk8519GxsbOjw8VLfbVbPZ1N27dyWdo1i9Xi+Ny+F2UEOOueEoHBALwqP9fj/xFfNP\n", + "Aje5dRzNAo3L5bIGg4G63a7m5uZ08+ZNSeeIzWg0SiECCpTS13K5nBK8fU15Mj+8xPomz4jQ7tHR\n", + "USZ3rlKppBBj3GzgoSA/mqNSqWh1dVXHx8c6PDzMhGZBNiaTSSoNQa4UoT7CIn5eoKMGBwcHevbs\n", + "WQZ54JxDD+nAUxQP5Xnxe47Qe0jQkVb+j6gL93jyM5EJ1qnv+IKXyOmKyc+g1NDfdYK3y1D5PJkY\n", + "9VhMGne9wXOZ7zw94zoNGefj9wOkY46rz2NMRaGhZxw5Qg64TPMTeIfZAAAgAElEQVQUiUKhkNn4\n", + "wXPJDeNdcTccz/Z0DX5Dk5mZmUyJEs+Roq8+DsYdU2FYn41GQwcHB5mdxsgEohuMA3qTunFZeyGG\n", + "FMrpMqOD/z38xvUYMosQZzQAYj6T3wdjeE6P95GJcKPHq0DHfvLMvFCfK3ZPTqTPl+UnMR5PRI2L\n", + "zePgzuRudPhhm/78crmcyTuBVozDv8dvTxr3PhMKYes4Y3aa+o8rG3YkUaPJc0HcQPSQKELZ87Hc\n", + "cKFPvguHZ7oBzmL1a7QoZKELMLXTF8FLnonPh4doKYWAUV6pVNJxHhhTHlpzge+hamBtpy3t6OhI\n", + "tVpNMzMz6cw4F3RUDC+Xy5mzuNhtt7KykujKmXGtVksvv/xyygH65JNPUj//+q//Wt/85jc1mUz0\n", + "7W9/Wz/72c/S+7a2trSxsaHr169rdnZWn376aXrf6uqqms2marVaypnAEF1YWEjG7vHxsRYXF1MY\n", + "ajAYqNPppHDY8+fPUyiAeTs5OVG1WtXCwoKePHmSqpC7oGXnWwwZd7tdNRoN3blzJ/EpBomH3uAp\n", + "cutI0vZdqXNzc+mYGkK3zl9UT2fsbiwQNiL07ZtAMIow0n2LOs5Ds9nMhDAItUwmE62urqaDpKEp\n", + "/YG/WWvwt6Rk9B4dHaXnDgaD5MwQBvPQPXK2UqmoXq9nTifAWYoymudgXGHgMYe+/d/5P4bnvOQB\n", + "OoS16u9zY47m8pK1F0M9Hg5i3vLe50Yj11y+eGM80RBivA4OxGcQBsbZyDNIXZZAN095iLlVPge8\n", + "z/O5XPZQwZ5rrudxeumnb0iIvzGS3NihLxFEcAfa6/ThFDLuYrGYSs8cHR2lXansRqY/MfE/LyTr\n", + "7YWVP5CmsWU+c2MoWuBuIPl33cJ2tOeyez0eDaFhnFj+wBcgzyQJ0S3heK6Rx8TdMCKZj8mPcWhf\n", + "tO4JOnLkAt8RIJ7jaBFjcis7Wu4umJyJIxoXc6rcKHNDB6HIFnNPOK1UKpn6Hb6gyI8gNyXW0eIZ\n", + "9IexkBzoBp40PYeLz/0QW77vgtvH54LGBS3KiyRs956ZGwS078LkXkfEXCnym+e6kVmpVDJCGCEq\n", + "TTdFYJi5cVgul7W9vZ05FobGdmKEjOcPNRoNXb9+PR0KPBwO9cUXX0ialkTo9/s6OjpSp9NJ1+7d\n", + "u6evfe1r+uyzz/Rf//VfevDgQSYBFPRnc3NTZ2dn6Yy6L774QpubmwkB4+gVaXq4cKfTUbVa1eHh\n", + "YernwsKCer1eMmYWFha0vLycFDv8B/38oGTnW+bX+ypJL730ktbX17W7u5sM3mLxPHEVXn769Gmi\n", + "69raWkIbG41GJgF8PB6r1WppZmZGzWYzs2YpU0GJh9FoenSS57dAQ+dv1kChUMjk0LCearWaBoOB\n", + "FhYWUu7c4eFhQhpJuPdSIyA4c3NzCZVi7unHRx99pF//+tfJGJfOdwqWy2W1Wq0L5T0iCu3rwvO/\n", + "kN+OxtMvvutyEdnA+o1OKHI9yjzkjxtqPB/+QH66QeDvdkXrxmNMRI9Ik6N4bpAgV6MT50rckRzf\n", + "wYlOcfni80g0g/FHnRbpTT5qdL64lmdw4pgwFjfc3RjyvkAXdKkbVjEq5QBFdCjcWIJezCEODs8g\n", + "lxEnAzS20+loMBio3W4nECCijpcZvdILMqQQbl4dGqXmFnQ0iPw3zY2qy8J3Pil5VqUbINLUyMqD\n", + "Q52JokdAX9x7YUF5COUyWNhDV+4J8ByMg7goHLXxcTBmxuf9QcAgkECSpIuwebT46SOM70JiPB6n\n", + "itNUUJay9bAYX0wM59BdR8mkqeERz4byMGM81JR+etjTFx8L2o0f5oDfEYJGgLK7LhpZ0FVSQpbc\n", + "S2auKpVKpj6V0xtjMHrJrJXRaJRJoHXUz2FsSaleEPzoyCOKhERdlB51jIDSt7a2MrA6zxiPx2q3\n", + "2/r4448lSf/wD/+g999/X9vb2zo8PLwAxX/yySfa3t7WX/3VX+nOnTsp7Lezs5MMZ3amgqy4MUsi\n", + "/r179yRNE0cRsLVaLe06o62traWk8MXFxTSPviOS/32HIyjZw4cPNRwOExK1vb2dDKnBYJCSsuE/\n", + "aludnJxobW3tgsFPmNWVQqVS0XA4zChGxo+xzvNdLrC5wQ0FD+d7EV+MJp7dbreTMePoAcU74Tl3\n", + "YpCjn3/+uZ48eaLZ2Vldv35dd+7ckTQ9KJn3sUNXUtrMwRp1p4KxoUzdWMI4gM99rKyZPAeTPvj9\n", + "0fHOQ3s8zCZdlKWuk1wnuEEQ54JrbuRFHYSh5P30Z0QjC3q5LnFjxdd1XuiL70cnAoTb6Ro3C3na\n", + "RtRjbvC50wK6Sd9iaR2fozz9nocGuc73uYevmV93LpGrDqLQz8XFRZ2dnWlvby85kI6AeXQpr70Q\n", + "QworGQUhZb3DSNQ8WNIVTbRw/buOcknTxQETQtTotdBQwu5d5oWrGENcsL7wfBE5IzIekB9nHGcY\n", + "qj5HONQ9qZjP44apI1NUTHakxoWU09f74yGFuPBR9qAEvssKo8qVZJxff5eHEjGGIqrGIuH7cUGB\n", + "HlLMLQpI6O4GJgsQNAuEjO9HWrkwdto42sd15/E4RvjBjQefY//tUHepVEo09R0yGKSE7bygHcq7\n", + "0WioUqmo2WxmtrljdJ+dnen58+cJIVpfX9f9+/f19OlTPXjwQF988UVCqbrdrr773e9mlCdCqtfr\n", + "aX19XX/yJ3+ibrer5eVl3b9/X9J5uHB7ezsTDnNjYX5+XoPBQKenp1pdXU3ywncyIRN6vV4y9Kgb\n", + "hWEKX0rnQhM0HBkEbywuLmp1dVUffvihtra2tLe3l4wxPHz3bL2AYK/X0/b2tubn53Xt2jXdvn1b\n", + "klKxVZDGWq2WUSz0BYONNcOBxI4MOArhvO/PPDs7SzV0vCSH8zwGOAcsQzPCUp6GQD/ho8XFRb31\n", + "1lsqFosp7Ht4eJhqXVFSwQ0RR4fc+I9r3sfqDnUeCkLzQ5kZY8xDik65p1e4PPdr0RH250MTb76m\n", + "aY42RV2U56y7Lotz7LqFZxP6d0cRmmBQudz3vkJj+kzJC0nJUXCZS6Qhponk6U9kH+MnxcKjHXnp\n", + "ON6vmEfnY/P38CNNkTGMwIjSQ2MPl/uzrl27poWFBbVarVRKBRpFw9rbCwvtIQTpHLA4CEqeZR5D\n", + "TnzGdy6D3pyJnInzlC/XWHwwsDOvCwKfKDxNlJ0vYO7xYmSeK+EG1mUT5go3b4x+rxsXLogiIsU9\n", + "k8kko6QQYpFGLtjwIFGAIFInJycJteFeknqHw2E6Sd5hW0e3HCEhbIWX7bzB3EAT7qFRP+gyHuCd\n", + "k8k0eRyli6HpwtJp6CFO5wueQf/8fkcb3SCiinS/38945v5OTwz1CuhOtyjs+RkOh6rX68kgWF9f\n", + "19LSkubm5rS8vKzV1dX0TN5Nrlqr1UrXqIL9+PFjHR8fq1arZbbv00/6Tu2ir33ta/rnf/5nXb9+\n", + "Xd/61rf0wx/+MOUr7e3taXt7W2tra6rVahnDnjPkMIYoh0A/q9Vq5oy9vb29JPxWVlbU7/e1vr6e\n", + "BCcGg8P/rAPmaW1tTVtbW/rkk0+0tbWlk5OTBP8fHx9rf38/vcP5u9lspurr7XY7U3/r7t27mpmZ\n", + "Ub1e19zcXKb6er/fTwavo42SEj0KhUIyqHi3r+3Z2fMzAb1ulTRF/t2Bm0wmqlQqiWcoc8A1UM9S\n", + "6bxWlssitq5vbGyo1+vp0aNHevjwoSSliu2lUikpYS8O62vC1wUKDKXNPHMfSiwiNr5+ovHiKLEr\n", + "Y5rL8+g054X3aK47ohGV1w8pq1Ni//yZ7tzRMHrduPNnIJ9cDvh7MaJ8vNzrBpwbGsgRZDL85jly\n", + "3i9ohV5wB8XfxbWYfM+8eppFpE0e3fjfIz00dBkbHBxVjYac1wpkLeGY8pvNJXnzm/py6ZWrdtWu\n", + "2lW7alftql21q/Zb2wtBpGIYRTr3EoHwpWyYzi3ePGuY7/O9COu6BexQpSMMjryAfLi34Ie6ekJk\n", + "DHvRp+gh+PvjAYz+DPrnniDjImnav4MlHT2bGELKg7h5LiiEJ56DAGHNx/FyL3A/38HjYOs176PE\n", + "AIm0bFmHbtwbkzNp9IW8J/rioTkPJ0lKOQI8O26rZl79fXg5EeHxuQHBil6mh1N9bqWpxzM3N5fQ\n", + "SMJpq6uraVwk3Tp/gyzxOeE0kCLfbekhI77f6/VUr9fTdn3QJGjFOXHQrNPpJN4i1wKeAtUajUYp\n", + "X8jnIo+XqdYuSd/4xjf0y1/+Ml0DceQ+RxUJNbAb1HOZOJvPER08UNqtW7cyyKgjJLybfuB9DgYD\n", + "PXjwQHt7e+n577//vqTzbf/j8TiFNwqFQipI+ejRI62srKQDmmdnZxOtoNft27fTGLwEByUH5ubm\n", + "Moc2exXpwWCQCZl4jhDoIfME2g/qRC6gNEVx4fFGo5HhH/hyfn7+QkHRfr+v58+f69GjRyn06QUN\n", + "QZ3Zru6IqyO5jojQN5DgvDwZR2Sct8bjcUJdPKzGu5ALLhNiuDFuTuJ95MS4fnG94iiP6zPChY7y\n", + "ECL1SEecQ5c7NO5hw4HrLniDNY8c87Expx7qBIl1FNuTzPPSHqTz0DU5qjEq5KkXrGNPGifKwPOj\n", + "XM3Tz9I0r5aiyR7S4zehYPrNOgDh96OaYi6xj4WixZ5o7ykdHvbMay+ssjlE9wUuKR1NEaE6Wh7T\n", + "+zOjoRCNMY/d+gKI7+NZTFaEuJnkmAjnCXdepZi+8jyH9z0/wPN+fFw8mzwG+uGhIs87wvCAKaBp\n", + "jEU77X0MMHDMEXADggXt4QgXFJyTJCmFH+iPjwNY340dF1okqca5QKD5dQ8lukHk4QVXpIzf+YT3\n", + "RLjZ89ycd7jP5zEaYhHCdv7D6OHvvIZwZ2cfY4SWsb4ZCobkXg6klc75qdVqpcOSS6VS2gZ869Yt\n", + "zc/Pa29vL13rdDpprJzfxgGyvrXYeX00GiVF/OMf/1i/+tWv9NWvflXvvPOO7t27p0ePHiUekabJ\n", + "np7PUSyeJ0k/f/48JTcj3I6OjlLdKencAKrVaommCwsLqcYU+W5u2LlQ9TDUb37zGx0cHKhUKunj\n", + "jz/WBx98kIysV155ReVyOdHl5OREL7/8sqRz+H9vb0+dTkfb29va/H9rbdHXR48e6fT0VNevX8+c\n", + "N4bh7IYBfMORMfCTH6jteV3UrfJEe2QT8+LhDPKgeJevXwwPwu+04XCojz76SA8ePNDu7m46UxDD\n", + "ldINVHf3texhcH77eoOPvNwD19yAiakL7iT6Mz30XigUMgc/j8djdTqdjKK/zMjEmXCa+t9OH2Rm\n", + "dKaQ2R7ii4aIO/yuh/xeNz793Dv64sayPwPZFx1Txh7HwD1OX0kpzNdoNC4Yux5mhA7uQPIdZBH9\n", + "9ntiaNNDdhhwOOzoi4WFhcRzHr7zvlHeRDrP/8TIQl94TnHcUAVtvL7fZe2FIVIQz2PVoEJ+sCbX\n", + "sHLzkCiEUF7CmjOpeyckf/oCdwHuk4G3KCnFXrGCowfucVs/qd29n3K5rHq9njEanNHjDgHGHhOP\n", + "/dnRO0JY461FoQADe66FX3N6oZSd3ixCf6YbC3hnMN/x8bG63e4F71SaJukTQ8+L2/vYnE5x518U\n", + "ir67xQWy13rxFvnMkzw5kDVu3aZdlr/mz/YaJ7Tj4+N0JhzfcXTT+cHfwaGjlA4ALZHODQm8Y/7G\n", + "WFpaWkrjQgixqwtEolqt6vj4WM1mMxk9JHNjsMzPz2dydpg/R6do3/nOd5Ln7GjkYDBISeHUfPKD\n", + "h9kZRzI18wLyMTMzo4ODg4zBDW1wJFqtViqTAQ0lpdyc5eXllFD/ySefqFQq6YMPPtDW1pZ+53d+\n", + "JxmprVZLtVpNrVYrGU0Yi3fv3tWtW7dUKpX05MkT/epXv0oG7+///u+nk+wPDg5Uq9USqsjcgrrF\n", + "/BKvSZbnXIGq4ZkzF752XUZ5DguKxJF4EE8SdWnPnj3T+++/r52dHXU6HVUqlQwC6geQ+1rmnf7b\n", + "/3Y0HIPAnUFvLjOglTs70aElP4j3MOeTyUTdblf9fv+Cs+vJ3t4cwYnr1xEndILLLzf2XI77zjZ+\n", + "oqHoxlV0zBijb/GnId/i55PJJIPEuoFGf6GpG0yg0/BpnpxDx4HqMA84C1HP+j3+Hh8jMr5cnu4c\n", + "9/NQ0XMur73vp6enSUaNx+OUG+rGMu8tlUqpbInLeZ+zy9oL3bXnDMdEoWQxpqRpnR3PuvcWEwlp\n", + "DpdicSI0CAPBOJcRih0o3IfgcYXoC9+VtBsEpdL57iqu+YGaLEL3XC5D3mIisu/gi54C48vbzgvt\n", + "YWIXWg5rw2ARwcLjdIMXeh0dHWXqKkE3qh+XSiW12+0kfKXpAbwxJIrR5mEBNyiZW0cQI72id+ke\n", + "eKR3Xo0veMoVU0yadQWIUnAlRf9coNBAE/CwIq25ZzQ6rzHkByyDUMVdRihqR2I9pLy8vJwEVL1e\n", + "z2y5J4zW7/d1+/Zt/eQnP5EkffbZZ3r77be1sbGhg4MD1ev1lGwOneEdRyRefvll/eu//qt+8Ytf\n", + "aG1tTWdnZ9rf309zgeCl7pivmcFgkNBFDFnoMjc3l6rAU16Ae09PT5NxiTfruxuhO8YZu89KpZLe\n", + "f/99/fznP9d7772nhYUF3bhxQ9J50vzMzIz+5V/+RR9//LGePn2q3/zmN5Kkhw8f6t1339X6+rru\n", + "3LmjV155Rf/zP/8jSfr5z3+uP/qjP0qCOu5Q9Lnz9e3hFb7POoXnMX4iz7MuCZU6MsAP6zvyqMtl\n", + "5vfBgwd6/vx5CqXWajUVCoXMRpN+v5/ORCwWi6l2FQY4KCbvYoyOFGOUSNOyCcw5JUcYI84qitWN\n", + "A75TLpfVaDQya351dVX1el39fj9zigLoBXTx8J3Txku50G8+Zx7c2XKjwneKeXg3hq0YXzQQ4QGc\n", + "JJ7tzpbLGZqjfN5iArsjatHoOTk5UbfbTQgNvMVvZJTfE/vhOgq9R+kPd5Sgqzu8DoK4rPPGHDnC\n", + "76Hr09NTNZvNJAuc3ugexu0OVwydxvbCdu05AiVllQLXvRAewsZDPvzO+0y6WGsCL1qahr48NMH3\n", + "Hd1BIbjXRtjL86akbKVXR0P4DMFXqVQy9ztyEE/kjjuySqVp7YsINTqS4SEm6BENO98h5iG7PEHi\n", + "hgVGm4cJ6Cuxe+8n9+EdcA0GR7HAyDHEF3Mr3HBzr8EXqUPTLI5ocLv36MYp70XZRGMLgcii5T6n\n", + "l3+fvyOs75464QcMhHgf4/bDWd2QZY0QhuNoFOZydnY2ha8kJQPliy++0K1btxKywhw2m00Nh0O9\n", + "9NJL6b6nT5/q/v37ajQaunHjRiasu7OzkxwM5pJnbmxsaHNzU5ubm2q32/rss89SHSlCZeQgDIfD\n", + "dEQK9OI3/XLazczMaGVlRd1uV8fHxwkFZrfe2dmZlpeXMwUrWRPkUOzu7qb+7O7u6ic/+Ylefvll\n", + "lctlHRwc6G//9m8lSffv39dnn32mTz/9VI8fP86EZD///HNJ0le+8hVtbm6qUCjoq1/9qiTpgw8+\n", + "0MOHD/X2229rfn5eS0tLF5xEZJ3PPeMDBfDDtTGMcfScLwj9ECZF/knnSJ2HbvydHimAr0Hqut2u\n", + "ZmdnVa1WE6rIu7gX2Ug4zeuWeb4WcyBNHUBkgpdeoY84HnHdsw5xin1nYAz9uQFKIVHCieyuJJRK\n", + "OYFYVsEjGB5tYP3RJ1fCjizjgPnuaF/bLqOcBp5H5n2JqJLrL4/CuA5ANzny7yFYL9/ihvh4PE5A\n", + "APPr749OkOtQ5j2GHuN8Rn3J54wlpn3grLtByfy4AQzPtVqtBJwUi8WEqtKQlS7XvX/RCPX2Qgwp\n", + "GI7fkpJlSjjKjQK207pXGhebM08MFzqC4JPpC8Ohcb4vXTw13EMYQH4OHzsjucVM3+i75zu4V8Di\n", + "d0YE8kaZ+PcjeuNWNJ4aRmgst+BGhi9MDJIYuqM/0Jjxe4iO552enqper18IQRwfHydUB0OQd7li\n", + "9sXtc+lz76HSaDT6onQjUFJKXHTj1BUUhlwU3tAGOju9oXOEgZ3fvN8+Ni+sGIXGZDJJStKNVGiK\n", + "AUJoDCRqOBxqMBgkVMYRuWKxqKOjo1Tn65e//KWePXsm6bzEAfkxc3NzajQa+ou/+AtJ0re//W1t\n", + "bW3pS1/6khqNhmq1mjY3NxNNd3Z2dHZ2pnq9rnq9nkoc3L9/X/fu3VOn09HTp0/V6/US3L60tKRr\n", + "164lujv6OxqNVKvVEm+4MmEeQDmWl5cznigKazgcanFx8QKSDTpULBa1tbWV5uxHP/qRlpaWdP/+\n", + "fe3u7urTTz/Vt771rTSODz/8UL/4xS/07NkzFYvTQpeDwUA///nP1Wg0VCyeh+ReeuklSdK9e/f0\n", + "61//Wq+88ko6XsdzOlhPzH9EQz3M7kfkgA6VSqULqRDlcjnV7skLpzgdWIcoUt7p9zWbTRUKBT19\n", + "+lTb29uJ/xk/RgnozmQySX+jzHy9xPXhoRiUImhVXiK6RxSQAdDUNwNEFNuPTWFzB/dVq1X1+/2k\n", + "b7woI/IcerthjhFBGDY6Zr6BypU0PI+jAxrMMx0Zd32CIYAcI5KBzAAphF5Rz3K/yz/nRQ8pusxE\n", + "X7KO4pEthP7iGvZ5j/wd5SjONXLO+d83Q9Fvfpw28EOkG7UM2+126qPraNflUa/6JpC8dlX+4Kpd\n", + "tat21a7aVbtqV+1/2V4IIuWQs1d/9nCbw9g0UI3o9Tv8L13MJ+KZviPIUSrPF5KyOwccAaHF/BgP\n", + "J+FF4Gl4c+TGUSU8Ct+Z5mPhWt72T/di3RJ3Sz8vEZ93eOl/9xa57igJNPWwnoc3vG+S0sGZ0NIt\n", + "+5jkyfwyx44A4vlERAqP0hNy3fNx+sR58FCuezRxnvLi+/CLe3ru/TmdHBVzT5/vcM0RRK/Czvc8\n", + "1OD8xvyCzDAOjioBWYq5JtJ5AvH6+romk0kKb2xtbaXdcXjvX/7ylyWdH0z8T//0Tzo5OdFrr72m\n", + "V199NSFZjUZD165dS5WvFxYWtL6+Luk8Efv4+FhPnjzRs2fP0lEi0jlac+/evcwuGkcyCEWBfsQd\n", + "i51OJ61tEuThPRLX+/2+6vV6Ji8JBGN7e1snJycp1+lXv/qV/viP/1gzM+fHpxwcHOj73/9+4gvy\n", + "M8gTefz4saTz5P5ms6nHjx/r9u3bmp2dTXlXN27cUKvV0uHhoTY3N3V4eJiQHPg77mBlPfDseGYi\n", + "oT5HK10mgu6BbHhI38PxyIDI3/AqIaz5+Xk9evQo5eiVy2UtLy8nmvouPg//QG8PpUfe95BgRMsc\n", + "aSKEJGWPlfFoBvcREuJvD4c7CgiaBL3n5+cTUutFVRkLGxg8dQGEKk8OcT3mPfpcez6lh/24j+9E\n", + "BAnUDRkIj4COsf49GsH3Pf0ElJOwPvrA0z3Qoeg3T1iP8+zz63nEHvWIcxzTQTwqQ19i2BCkymU8\n", + "vO5IHrLUUcR+v69isZhJaXA6Oy8yv//nyh9gMBUK091w3nFCETHmy9EjfkafQ5F5hhSMErfHe95N\n", + "vIahRp9cCXk4iZBZzB/yyfSdK/Gdnn9EvN+ZTsqe+8e27XgfeRRugNDvaHjm5R9Eg5V4MCFMh4H5\n", + "HAZ1hR93wnlyM+fLkQOWR1P+R6B5X3x+aZ7LFYVVNDDdaIcmUbj7vd588btAQHAyBr93NBplFq40\n", + "FaCRb8jJKBTOD9eNMXrmAJ7zZGlyF2IomvpP8I7vpIH/hsOhDg8Pde/evZQLMxwO1W63tby8nLa0\n", + "M4b33ntPZ2dn+vd//3d99NFHeuWVVzIlFZaWlpLBs7Kykvr57Nkz7e/v6/Hjx3ry5In6/b7eeuut\n", + "9MylpaUUhpKm8L6HMqPxSSkNkvNRHnwPZUHYC2HoczUajbS7u6ter6f/+I//SOMYDAZaXFxMPMp9\n", + "MVS2v7+vd999V5L093//9+p2u/rLv/zLlEtG3lO/31ej0dDDhw/10ksvZUoLHBwcpBCtK3v4pVQq\n", + "pVIHHtZtNBrpvEFCQjEHxY/icp5GWZFAy/ji8U3+vrm5OdXr9ZTPhiJyxYTRxkYhngv9Wa9x3dDH\n", + "qIRZYzzHQ0bu0Hi4SlKmz9CQZ2I4eWI79CZv1WVv3LnlxqafBoCBhbzyNAnvL84BdOEaITMvbRNz\n", + "lLgG/VyfeIoFaSOlUinVLHPni+YOKc8tFqfnevq6Y7zu8PC+4+PjdPg2a5Fxs1EEg8flmstn3uU6\n", + "3zf+uHMJ38VcP7/mNPV15Ruwjo+P01xwYHiU/d7XqCe9vRBDiol2hMgXE9Yh3hCM6YrbGc7jtj4Z\n", + "fO5x2ohIEWuPgojFhzESvQGu8bc0tb6Pjo4y3oSkTN/jgpemQjNa1M4o7G5wA4Ux+f3+uQs70Atv\n", + "LhgQGp6T4P3nN4gagjYib57jwPtWVlYyuzUdiYzootMIpU8phWjUFAqFzELNi2NftghiYdTYZ3jO\n", + "G/wAvZwH3PvyhF/64M/wnTrulcUcQBfMeKmeiAmCM5lMMsUsOR4nb9wuXCaTiXZ2dlIS98HBgQ4P\n", + "D9MhwZVKRTdv3kz9/tM//VPdunVL3/ve9/Sb3/wm9XN+fl6VSiUVnPzss8+SkHry5In29/d1cnKi\n", + "27dv691339VXvvKV1B/QlFarpeXl5QsKHTnAUTfSeY7QYDBIGzcoxeA7Qbvdrmq1WkrWdidqNBrp\n", + "4OBAJycn+sUvfpGOOnn99ddVqVTU7/cTyuJzgUGKwUUe1BtvvKHJZKIvf/nLevz4se7cuZM8fZQi\n", + "R8fcuHEjGYutVivxDgVOuc8RtF6vp2azmRK4WXfkwjgCTm0dFKLzP7vckE2+BqIB4M6ldL7Tk/wh\n", + "Cp0yHxsbG4mnQUYZB0izI0H+Hl/HGCTwKfweZaYbQO4w8kwpm4zs73MdQk4P/IbxC784wuyRCuaF\n", + "5lvyvbmBQ1QBWUCRSt8BTd+9vlF0yAqFaeFadCYOlXRuFKD7Ym4PRp/nULmMIwE75g9hJPouUd6H\n", + "7Op0OsmA5l6KDzO/oEvMJfLS88Gk6Q5NRxldB7sjGuntxtSHDXsAACAASURBVJk7EY4oxQ1bbhi7\n", + "0cr4fpuRJb1ARMo9CulixVk3INjaPBwOMwwmZRWYL0qu8TlM7tAh/18W2suz3uME+sJ0ryomoktT\n", + "gcq7HT1yS9qZGOHD7+i18ONGGPR0dMsNQ677ova+02Agfyd9wphwpnODiPGw2EjC9Z0qjkB6crfX\n", + "BXEvJm6P9fsvS6CELg7xEk6IgpdrLijj9mApm+gaF58bsD7H7oF7P/2dIK7+LgTfeDwtSMccelFX\n", + "N4Jpk8kkCaRCYbpV3UNGo9EoY4DcuXNHn376qdrttk5OTrS/v5/CG3fu3ElFJf/8z/9cT58+1dbW\n", + "lqRzo6XX66nf76dyDI1GQ5L05ptvSjpP1n7ttddSbSfpHMlYXV1Nhsv+/n5mmzNnyEFXFF0eAhnX\n", + "BmfNYVR6An+/39fBwYE6nY4ePXp0wRFjzbgh57skUQhUPaf90R/9kf7xH/9RxWIx0W0ymSQkR1LG\n", + "ADk5OdHe3l7iQUdquR8E6+xsWguMHYeOarrCdgXrCsnXILX0PHTmzkC73dbTp08Tz/iGB0cnpOkh\n", + "0SBkvqYIwzm6HCvi8/fMzEzmnE2cEeSzjxHHMk9ex52wXhEe2cU73bByB8/TN5hz5Gh0SB0dc6PH\n", + "E8BpjnK54xVlKWOIpWSYI+iKYQzdovHhOpF5B0XyNcOuV+q3uQHukSP6HY0Nkud9HN6Hy5LF+cwN\n", + "d482EMb2ufVdgG6sOhLlfeNadBRopJqA8rtDze//c4gUSiYS0hefMz+xZI/7xu2sLFAnqiv7aGU7\n", + "LMr3WNzsLMObyVPmjqA5oR25cc/fDUWHLaUs7Ivw9jFwD4vAFzdbi6OX5EYZ/fawIH3CSHMm9v7g\n", + "1frzPVxALgn3OXM3m810NAjC1xeI9xXYlXH6YnMB5kYIf/v4ozFHv3wREd93oRg9PubQaYYScuM0\n", + "hkn4wYhyzxEh7krTeQPkxPMBWAduYDqfQlfmw9cQ9IlGB8LTFQgGymQyScgH92P0/PKXv9TGxoaW\n", + "l5dTHtTdu3fT+Hu9no6Pj1PoAeFHXaHxeJzqPnldJL5br9e1uLiYMfjw4ieTiWq1WmbHkPPJaDTS\n", + "wsJCBlGoVCrpfz865vj4WP1+X8fHx+noFeaCMTSbTa2traVipDwTfigWz0OYBwcHkqTvf//7WllZ\n", + "0RdffKHV1dULKAo7KJFhoDWSUj2jer2uyWSS6i+BwJXL5zui9vf3M2jG+vp6urawsJBZe6QBsKsL\n", + "HoanWUuOdji/cw0Dm12RXvdrOBymOlPD4TCFSqJDRugZ5cy7oA18jbPgzi4/8LAr2slkklkbvr5x\n", + "HAhN815Hn0ajkSqVSlpPjs5hqHitp4hO0zzHh3v9OciEqLxdt0QDzA03xu10Jf2hXC6nuXc0n5Aw\n", + "/EZzhNyPQGGMR0dHmbUfHVIvT8Fv5oS5cLDBU0EwpqIsykMZoYcb3YzPneMo23m284kbdYwLmvJu\n", + "6O3z4EZtDCFe4IFLr/z/2BB6UlbxMwFucUtTaxGh64odr8qPJXBF5YiOv5fPHcXy0J6jHHzf+8tk\n", + "upXqaAMLzwUHiIUngvIsxl0qZWuUuBeHAeoGT7lcTudaRYQvGlPOcBhJQOmEOaXp6dmSMh4a4/Dw\n", + "q38H+o9Go5R87BWcCTe4MSZlK7tTediRHN7nc0Y/+U1/XNjkhXt5Jt+PixR6uWHngsLDCf5c984Z\n", + "kyspV3L8RslzJIlvn3ZepD+VSiUjFOfn5zN5BG7U48kiiNyoo7I4Qmxubi6hHw8ePNDrr7+e0KTl\n", + "5eWkLLe2tvT48WO1222tr69ncrNqtZpu376dnAnQCeaB5F3oSCixWCympN5qtaqDg4PE/zdv3kzX\n", + "YvXm/f19zc7OamlpKVVuh57MB+9nbhgHhhly5fr166k/ID7UrFpZWUkJ5V5uAJSJd/zZn/2Z5ufn\n", + "tbm5qddffz3jOC0tLenDDz9Mxmez2UzXZ2dntbGxkYx0H4PnQYE4gWRhmPua97p7jhxEBCbyyGUe\n", + "9/z8fOKDVquls7OzlPPS7/d1dnaW5pRilh6miUoxbrDhnRhtLtelafkDlKajV55aQCK0ywMMtOhc\n", + "R4TaDQP4pFAopDyvuA5dznj5FkdUXC64jKO5XGJu8kqycJ2+er0vngky6AYDxpmffZiH5HtaCDRl\n", + "Tuv1esYodjmSF0WCj+AP3zwRUXJaBBOcT+EXN7ScNvBxdISjHcFapbmj4O/jOfQJPe28mJc2kmh6\n", + "6ZWrdtWu2lW7alftql21q/Zb2wtBpNyLd4vXEQXgNGkK/wJnel4SrVAoJOjYw2uO4HhYiP95t4eH\n", + "gMTzPDXPrfFkRN7n/XcvgebhnejteB6No1LQBuSId/h2V+D2mMgHbfCmHHnxcKKPw61vwlTe/6Oj\n", + "o3S/h1l91wvHMNDHuG3Z4XYPzzE+35Lt0GqEjfGU3LuAhngdjN+PifD55FnQzcNh7s2BinmxPM/P\n", + "gC/wjguF6Y4ovChyCDz05Vv62YXm+VCMHTrAU3iOc3NzKcE3zj88QEjNx8q1+fn5FPqan5/X7u6u\n", + "bt++rZmZGbVarTTGlZUVraysaG9vL+UreliXM+SYM55ZLpfTLruYe3F0dJSQlGfPnqnRaKTk9u3t\n", + "bZ2dnalaraaChYSaqLxO+KJarWowGGR2RFE2oFarpZQASemok2LxPIcPpEg6r9B+eHio69eva25u\n", + "Trdv304oFaEsX3fuJd++fVs3b95MHi9zcXR0pPn5ed27d0/j8TjtCKQtLS2pVDo/ONqPEDk7O1Ov\n", + "11OpVFKz2cygOu5Be94SDbTcEU34AATHQ/SMwcPo5NCwThiTo1p+BA3PJeXAk8ZBl0B5PORNdfKI\n", + "EoCaOgpCA1FnPbLBh77Ck65H+Ix3kqzveWYRRfbjRRxB4TpzwTuRYS57I2ri9HYky/OgPAISc7I8\n", + "1IesdmSJ++hLDH3RJ89f4hp5WRy7xPh9HplLGvoZ/vTSNi4foJXrFubIdSp8RfFpaO85rdAgpi64\n", + "TvFxQxMPBTpPOQ+A9EJz+vt/rvwBE+KJfvGaNwSBJw56UqkzkCsan5woNFxBwhi+APlcysKRMSE9\n", + "LnCYwnOBeCafMR6vTcJCiBPMQuK6LypPjmRBusESBZkrVsbvRpw/18OeHj6g5o3npHneGefFoZyc\n", + "pv7jdIZOMfbNd+ATD8MyL4RQPabOPPBdFlpefgbN4+EeSvV++iJEEUUB52FLF4wuXD3kJE2VEbzr\n", + "ix+F5MLGt00TXoDWMVmdkADhb+hGWPD4+FitViuFYFGEz54908bGRjoYWVI6sLhWq6W54kiaSqWS\n", + "hO/KykoKu0nniehPnjxJQoqwGOPDIJqfn9err76awoyE7xYXFy+EIfjbDyeem5vLGFLwJvzhByWf\n", + "np4mo+wrX/lKSqr+zne+o1arpW63q6Ojo1TlnL4+evRI/X4/5QthgL3xxhtaXFxUpVLR+vq6Zmdn\n", + "df36dUnSp59+qo2NDX3pS19KBz5D04WFBbXbbR0fH6vRaGg4HCaaHh8fpwOm2Q3nBj+hynK5nMm5\n", + "cgXP77hLNtZr43PGxTwho1jTGHvNZlPz8/NprjCaJ5PznaeEqpgL6B3DzOTM4AS4HB4MBikP8DKd\n", + "wNx6GgX9Zjen0wKZyfrwJGaX3WwO4JnkmmG0ut7x/zE08px3fjM+FDbhMN+xiLyOubw01zGkS8DP\n", + "hOiga5xnjE8fL59jYLLBwx1ND6tiODNGjFNo6/XO3HiL4TF3FF1+uy6DFk5HPotpGy6r81JPPEXE\n", + "+cLpEw1T13mXtRdiSEnTE+89iRtC+g+NwWNoOMFhJI+3SvlZ9s6M/M+EONPExEGP0zrRPTcGYsMY\n", + "Mblbyu7mYwwoO09487G7co7GAnHpuPARSDCg7xiENhhIeUmSzvw8j8Y4o7c4mUzSoaW1Wi1T9yUa\n", + "sR5Hj0aWG9gYj84fbsyiMKNQiDHtyE9unHlzRYWAjgY1dIlJvDFvzlFB5x9H2XjeeDxOxgAFJn0e\n", + "HaUgb8XzFuhTXPyMIa4l6Ibhi9Lb399XtVpNO+bq9Xo6zoX6QeTr1Go1vfzyy5KmhlSj0UhePsKU\n", + "HX3wC8YNdGMHGqUE9vb20jPZIo6hj5HBuieZmBwdRzLxrD2Phnv5DgbA3/zN3yT6/tu//ZsWFha0\n", + "ubmpxcXF1C9ytXZ2dtTr9TIHGq+srGh5eVnNZjPVW6I213g81nvvvadicVpry8cPL0VnqFarpXUC\n", + "audGRql0fhB6vV5PO7ecTx1Big1j2vOHHEXnbD2nmaMcOIKuvCmNgIx2WUM+EgaTI9WOivsczs/P\n", + "azAYqNvtXuBvrh8dHaU8HHcEPRcGY0OanlHIs8ijYox+LmC5XL5gnFA6wOWwO3OsZX8mfWc9xh2L\n", + "jN2RWuYlOoHch1zMyyFinlgzLnujg+rXyJMdjUbJmHZn3J1830HNnDJmR0ahhecMR+fSc9NcxjrI\n", + "4u92PRk3AXj+a3T0Y3PdBZ3yDDmci8s2G0gvsLI5gtYFH2f1sBAcxpamXmhUkggbBCS/+dyNkDyh\n", + "4te5H2MNRvY+RIal0T9HnbwvhHMQntEgQsFFVCImC8YEcASJhxqkbH0VBI2PH0ECPf0au/W8j4zR\n", + "oXH6Lk1DU6AjHq7MQ2YcYfECilL2/Cfo6kYTDQGVVyk9Gg/xkGdHoeKigV5Od+YCIeZhRgSJI2De\n", + "3Dsaj8eZooTQi23e7hTwLt9Z5IiUG+Vs9+c9vAtl44Kf7eMYaTxzcXExVfvd39/XaDTS7du3JSmd\n", + "UQUidXx8nIws+kPYLKLGJycn6nQ66dkYGZQCoCDe06dP030U3IQvBoNBJnzK2AqFaXKwIxCgB0dH\n", + "R3r+/HlS3uPxOFOC4Pnz5+lcwL/7u7/T7du39YMf/EDb29uZxPg33nhDd+7c0dOnT9O7QN0ajYbW\n", + "19c1MzOjnZ0dff7554nfvv71ryd6Ly4uJgeA+WQTAQfm0nzchK9cRp2eniZ0rFQqJVSKEIsrSd9I\n", + "4oaGKxOuz87Oql6vZzaUgJYSembuuI7cOjs7S3PjssNLMlA+hDF6+gUIDc/k7263m4yxPP7m/dK5\n", + "Ae6IQ55D7hsOeLeHHklRcNnG+3mnPzOG4P0a1z0iQd/c2fZdgr5bMG5k8bnCqCgUCqlPrBl38vKi\n", + "Kqx9rrm+YLefyxPmEn5yGkNXdx7j+9xR9ve5QelyE4c9Jrl7n93h9eYy2sfHHEQHw/WTy3He4YZ6\n", + "Xnth5Q9KpdKFwpIwqsOWUjaj38M/fq80NVbcqne40eE+t4S5FhET3h3hQ+6PiwbDyo0ynunvjXCi\n", + "ozaSLjBFtJz9+xiKjhjFZ7iF7kyOwo4GmAsymhu1eILOzNDNi606OkPf/VkojV6vl4xrN/x4tiMo\n", + "l4VLyf1wIeWGtKOYCB6Emgt9F4bRiHbh78oKWjpyxTuhJYKW/sZ3ouDwsBBcXqSP+fOwiHukEf73\n", + "uffG3LA2+v1+ConBS+RAUWtJOq8jRWHNRqOhcrmc8ocI9ezt7SVPlrDXwsJCKpzJYcrQqt/va2lp\n", + "Sc+fP0/0dJ7Z39/X0tKSOp1OhsaEik5OTjJGkh8vUygU1O/3U0gKeUPeFU5NpVLJKJdvfvObun//\n", + "vt5//33t7e1pd3dXknTv3j3duHEjoRR+bMT8/Hw66HZ3d1czMzP6gz/4A0nS9evXtbi4mKrAu9OC\n", + "gURdH4x45oK8OvJ3XCZSvsEROx87Ctx5v1QqJcMdJRTlkZfX8C3yGBnQyx0QLyQbUysmk0lCVmN4\n", + "y5HXGNZ3RHs0Oq935sqUsaI7nDfQJdHBos+uZGO6Bu/Mmwuuz8xky74gbxivz5O/y3kYeeeos6M5\n", + "tLyQkst3csloGCCEDiMigyGNXvS+QlOv8C5NjQl3uhwBdSfd+RvUk888jxdaxCiO08Zln/OT69po\n", + "LDtgEiMKrI0YhXEQhPF6VMSN3Lz2wgpygiy414oCc+UhTZWpW/ZMIorVESC3JF3ASNm8p2h5RqOI\n", + "97qC8smMC889BEfP/Nko4RhmcwvaDRunB8LGvUAWe0TjECJuSFwWxosWPd6nx7lpbt1DD0dbPKbv\n", + "Rkg0grxCu9dEifkA9N29pwj5+uLLQxzpP9ecvyKky9iYHxcKPl9ReGKcYUzG8RMWkJQUJ7zf6/VS\n", + "iIZnOJ/hYYNIwPt40+5lu2d/fHycqg2DdjFPGDQgOghw7kFZNpvNJECePHmijY0NDQYDbW1tZeYe\n", + "ZOr09FTLy8tqtVpJCbNVHgHvypYq4o5GraysSFKqk4TiOz4+TqG44XCoYvH8rCzQHPcyEfjwEyE5\n", + "51PmOVaEPz4+1o0bN7S2tqbd3V09ePBA0nn5h36/r7W1Nc3OzqrT6aRxzMzMaGFhQd1uV+vr63r1\n", + "1VcTQrS8vKw333wzoQbdbjfRhm3mEXFxvkXuueE+Go20tramcrmckEEPX3nivz8LXvRTBmigOhhv\n", + "vAc+9FAT80l/UDY4Ai6joxL2xGHWPHlefo338dzT09NMiNPDVB7BcF6DLzzfhtAzazI6rhhzvr6L\n", + "xWlNvUKhkElKd3QK+e3IymVRjEKhkJDbvBCs6yg3YFyGgzQjx5hHN3SjQeKGtiPHUVf6/9Bzfn4+\n", + "JYI7vSLw4PIbY9aRJx8jY3FgwkOzMUeU5t/3CIbznzsR3i9/xmV/+xiY88vaVfmDq3bVrtpVu2pX\n", + "7apdtf9le2GhPazkeHI0Vr+jFzHG7SEch57xXGOozGPQvsst7uCIUDSWvlv7niiN9+ZWdR7E7u9z\n", + "BMWh0Jij5Pd5oqaHIfC4SU52KHoymaRdLx5j9nc7XT3M6t5iTOaLfXXP06HqiCwxnyAgoBT+zLzQ\n", + "lHvi5DA4H7nnEPuCV4ZH4fPrf8fkZ7xkUCafE88B8Gsk+0JTP9yWcXg+w2QySWEoShMcHh5qZmZG\n", + "1Wo15RLhMTqSyU6piJbG8CJrCVSHa6wZeP/o6CiF70BboLdXfiYE+PbbbyeUhjyjVqulZrOZPH6Q\n", + "HfpZKBRSgja79OgDzwdl4L7RaKRarZaKY5IL5bzJTkHCG3HNg9SMx+PM2Z3j8TjlVfFu6Txct7y8\n", + "rGKxqO3tbd26dUubm5uSzsszfPbZZ+r3+ynna2NjQ5LSurxz546Wlpa0tLSkO3fuSJLu3r2bvGd2\n", + "usFvlJIYDAbJ4wV1mZubS+VeGJMj1YTT/ABneNFzq2LVc3gFnnQaELJCzvJM37zg/YBu8AnoU8wP\n", + "jSg7c0zpDT+CxMN9nr5QKBRSmBVEknHFXXSRTq4TWBPIQEddPNRfLpcTv3nKiSMl8CIHSzNOR+49\n", + "jyeGoNBbCwsLaecqYwA543sxBIkcgUYeMuO6pynwXD73VBau0U8/cJpxcJ0ctzwE0HWAz72P2xFH\n", + "vhPDlz4unutzzTgdtWPMLs89n9jXEbrb0T34Im7M4t68aAfthe3ak7L5Qh7aizHPmBDnTIVyizkB\n", + "0lRB+24Qh+c89IdB4u+MuVL+PhohFZ7n59e5AeaGBWGFmNvi4UoPGWAEIDDdyCJMgZCOyd2zs7Mp\n", + "jyLmn9Avvu8LA0aGSV0A+/z5gmIO3AB25vUdZg5VM59Oa38mi5jdYv58X7D+2+nOHHkOhQsbTwBl\n", + "3t1gdoHDnBIacQMMIes86bSCtz0USp9RhMDYKBoXTswDhhQ8i5FFjg7PBIanVhPPJEcIh4TDhqXp\n", + "UR/VajUpY3ik2Wzq8ePH6vV6un79ura2tjIGEXk8sXYYIeilpaWMESGdVxJ3nlxcXMzMKWHHaDSy\n", + "65e5hAZeOoDf9Xo9HXHCZ4Q+l5eXM7zI92/evKmzszPt7++n+1566SVtbm7q4OAgbfGHT/v9vmZm\n", + "ZlSv11Wr1VLld655MrRXjPZSAyRvsyszHtp+cnKSSh6g6DEgOfbG+cplDrxIrlretnaMfHa2ebKx\n", + "O7cuF3xrOUnmbpAx/mKxmHbzEj72eWKN+LrBKKPf165dS7TZ39/X/v5+UoieK0gf4RHfXetJ+O54\n", + "8H5P8vZ58jBYdPDJOxuNpqUIvKo/zcfl72T9u87zkJ479JJS7TRSFKKBwbvQbZ7LRp/43FNFnDZx\n", + "fpHlOKHuJMZDlX2M0RmPG5Ccv/IMFX+fy1N/j+sc9Bx0dX5i7vicMKyk5LDgQLizDV/G0KK3F2pI\n", + "uVESE/fi99wTcIJjQV6WPBm3lXKNnBGIHHNvILQLDe8PfXEmdSvWDQGuMcEYQM587j24cYYQQLl2\n", + "Op2EAsQjEHwnGIoUb8HzaWg+Nvci4uKPiA33+Xj8+/7bcy1Y+NzvBihjcMPM54u5dM/W+YfF5tei\n", + "9+xIHuN3LwSaci+L3sfA1m0UhSNkjlZFh8ARMObMx+bz4kUZOZ3ehYkn6iIASOB2Id9ut9Xtdi+c\n", + "t+aJoAsLC1paWkr39Xq9dJwLXrgfsFsqlfT06VPNzs7qlVde0ccff5yZ52vXrmlubi4lpdO84KIr\n", + "PeiLJ+65Lxh4vmPNjVA8Z3jYUU7qD/G+g4ODC7l0IFWNRiMZIdK54m80Gtrc3NTy8nI6mBmHpFar\n", + "aW1tLd0vSbdv3047VkEXXJkOBgN1Oh212+3ER1wjGd/5h7nAAUCper0vDghm3WDAzs7OqlqtJofE\n", + "eRTjGuXmCtHRdwxsPxhbyh4/43XicFRBOKNc8N1x7igNBgO1Wi2tra0lxNydIMbKO/mMQqrPnj1T\n", + "r9fLlH/w5HNQHYzavOTjaARwzdeTO708PxpU9N1lOwn7OGFuuLrjhdHiaE2j0dB4PE5lPFwusm4c\n", + "4Y7INHzmaBXvRR67E4NsgQ9cfqEPQSYjmOBghvcFJ9hlvRtn3Iej7cgp/fSiqcxhNLppPk7PCaW5\n", + "4Q1tGTsFSBmrjz3SMLYXYki5weBKLn7mqIF7V27YYBx42Mq9DAwB/57fx3e8MVGXWcHc4wuC+7xf\n", + "3lhkLJi4w8x3gvkY4k4BQhmS0inejnDF/pbL5YRauBCRpohcTA6FST3k5ve5gHGUi7njXR7mhJYg\n", + "CA6VuvCkX96gD7uWomHkcxLhWIRCRMrcwHJe4HO/5vOM8ILWcZ49fJdn2Pnf7vGcnZ1pOBwmRe0V\n", + "0V15ueBHWfMuR+vOzs7r+kwmk5TEToP+JCWfnU3PTPNwtyd2S+eKHaH405/+VN1uV6+99pqk8yrk\n", + "pVJJOzs7mp2dVaPRSMYRAovQRblcTsiKJHU6HQ2HQzUajQyi5cUroSXjAP1wD9drvRBuQZlGBLhU\n", + "Ot9R2W63Va1Wtbq6Kuk8FMh8YGRRK+vp06cqFM6TZ3d2dlSr1bS8vCxpuhbb7bYODg6SIUtfQYxO\n", + "T0/TepSUhDdhMUrAOJ9AE1c08OHi4mIyiuA1SiJgPPuZeb6BAqXiiKukhKwQrqJ5gj686SEz5ATG\n", + "lKcRuIJ2HgZhbTQaSR5FpN6dZN95yc7R/f39lKzvdEPx+9rDoMpbhy7X/Fm8j3mLUQopmxjOnDF2\n", + "R0L4Lu9wkMD7Ca1Ho1Faj466QwfWo+sqlz8eGpOyTpqPnf9dzvNZ/B9edR3gYcUoazEuYz9jgrh0\n", + "sRI6z4jOPe+IwAV84oag09SdefhUOl8zbsz6+JibSBtvLyxHKi9kJk0VWYQAHQFy1EnKHiAcLXNH\n", + "sBwqvsxAkrIeBlCtowe0PIXo3pR7EL51HkMqz8LFI6fPHC8B3Hh2dpZg8ajIo6EUDVanGcYTNPOc\n", + "Bv72ReRM5ULGPTP3SpyxGZfDtB6iJJTJos9Ddng2z5GUqu/SPw9h8C4XPh66dFp7P+l7Xi4UC9MV\n", + "kBuRKDc3RPNCopPJJOUfSVNkqVwuq1arXTDg4Xno7eEHDI3xeJwQCqebdG4cYCBJSmhFq9VSp9PJ\n", + "5MIgpFHmbgwPh0PNz89rbm5OlUpFrVYrveOtt97SgwcPEvo1mUwyyrvT6ajT6aR8plarleaiUqmk\n", + "HXClUint2qvVaolWPu/c52sIw9DlCoYViATzjiKAfhyYLJ0bNr1eLxnQrVYr0ebu3buSzsOR8CRz\n", + "wa5FQm0YI5JSeLDZbGp1dVWTySQZks+fP09ozdLSUmaXJP0ndFQsFtN7OKjcUVU3+KEbx+vQ+J6v\n", + "F6eZhzucD0FffY1G5YJ8hZaO8tEYkxuSyDQUsstaDsYmf4n7yG8rFovpmCTeF3PzYjqAh4MceXDa\n", + "RQfSDXJfi1xzneMKHsV8fHycZFBUyMhUDA6eQ4t6BpmLfIm5t64/HAX2e/29jirSD67H6I+HF/ke\n", + "+ol3gy5JyuUlR/8JU8aUFEekGEdEEpHREcn1eYifMca8cGGv10sGvfclomx57YWF9rCSo+WJcnJm\n", + "8Obb4Pnfn4FhIE0RF9plMVhX6DQEtYd9+NzDSW6ouSCKW1URbCT+ej4WC8WtaDfm/DgHXxTdbjfl\n", + "ungOkDRNrEeoRIPQtxnHxc3CdG/V0So8fZ4X0SpHnXyRuoHhuQaOvsXxQxc3WmKIyo0hD236nHiM\n", + "O0LrvuBc8DD3LgAcvYoOgfOeP9/7g+Dz7zlqyHV/hzsVjspEDx0Uge85UgGfwDd4uvSZBGeUAAab\n", + "oxI4AKAqfg4dob6dnR3Nzc1pZWUlw3uHh4cJNvcz3ECpNjY2knDDURgOh6pWq8kYALGTsoVR3YBl\n", + "XZGXw2eOFg+Hw7QOMZKgL+u+3++rUqlkio4SEqvVarp165YODw/TOm+1WlpeXk5lEU5OThJaRaHU\n", + "o6Mj7e7uZsofNBqNZEyAhMEbjka3Wq3kcNBfR04xJJkLHDme6xW64TNHQKQpkgGPuzHo/Op1mJzf\n", + "xuNxJgEbRBMDx2tNxdxGShsUi9M6adFZcd7n/cgML+9BhfW8/CRPXHfnimc6XVxfFIvFdO4hSfDR\n", + "GeczlxHoAhBCn1+/n7G6I45T4mvR54nP3fhgfqJMdFnvecbIDebMk61xRugrtPPQGPNKyRdfZ5Gu\n", + "PjZpGn5nc4obTvydl5cEnTxE6A5VnFOXl5737IYiNkW/309OixvHEaSI7ar8wVW7alftql21q3bV\n", + "rtr/sr0QRAqL0eGyGOby+Lt0bvV60bKIZrgF7l6WpnlYRwAAIABJREFUw5ERLnWPztExLGiSa90b\n", + "43sxd4O+eJzcty7H+7zPHp6JSB1eF/TwEBxhnHq9fgEB8rHiDbg35JZ+tLTxKkhU9O/i7UAbpy/0\n", + "xGuLCYlA9XhDsS/s7oIm0AjvM4ZuQSfdW/KxxDE73O5zH3O+3BuLKBPfiV6W52F5zpmP0Z8TE9VB\n", + "QvCu47lwjMPzgCibgJcYn0li6Onp6YWigXjwEQEkNEWBUA8lg4IQUjs8PExzvLu7m1CuVquVQW7r\n", + "9bru3buXSbZmXP1+X9vb27pz546Gw6FarVZmLZMDc/36dVWr1QthBzzshYUFDQaDlM/FPHh+hoci\n", + "8DzhJxA5r/rN2YEehvMkX6/83Ww2U8ju7OwsHVgsKSFXoHeFwrS4nyMglCpxXiQVgP44gjYanVf7\n", + "dj6E1+bm5lSv11WpVFJ4zJvzaVxrjm47euu8GkP30JhwuydcU6iU8caQN9/znarMEzssvSyDNK0I\n", + "T+5YPG7MkXN4BNqAUHvaAeNnPkAgXA6Dxnq0ItLUEXDG5+vLS7j4PPO/o+0gc6Br/j4PsXp+sfON\n", + "I+YxGsNYR6NRWjOe1H9ZXpCvJ66NRudlSCgc7HPqiBCywyNGbExgjI4Qud6JuXrQir8jwu95ZP7+\n", + "KIdjdIGxlEqljAxmfV7WXlhoD4HkQhMmdKOD5nF+h0AhMELXBYpDiRFOdQZ3uFPKLghnFr+P5/J9\n", + "7xv9Q5FL2WTz2D/uY3HH2DC5WrzLc5TYEeK7UqTp4sNgcLiT5wDh+tjjeKCrM7JvKfYF7PlMHhbk\n", + "mv9G2NJXDARqYUV4mAUQIVYWALT1vvh8xnExZu5zvvAcCJ8jz3vK29gQDS7PJ0PxewjXhdtoNEo7\n", + "vuI5dQhe4HMvY+BHo2BUeV8IYdF/KXuUj9cHkqb5WhhNvkaHw2HKgeF8PM6hW1lZ0f7+vsrlstbX\n", + "1/XFF1+kkM6NGze0sLCgarWacSQY93A41IMHD5KgJSTEmX67u7va29tTo9HI5F0xTgwFD4EeHR1p\n", + "PB6nhHXPyUMpQ08EpzQ9p63b7aat+t7Xs7Mz1ev1FKaCh4fDoRYXF1Wr1VIY/fPPP5ekZIhxkLcr\n", + "dniNWk+EO+AZjAHyUJzffKOJ8ypOAJXgnQ+LxWIKGeXlfDj/ezmVmGODonGe93URc+tmZmbUbDZT\n", + "yMplKPlHfIbRPxgMLhxjkrfGfG4ZPzIc2eKyIO6o9jQMHDNoFp1rfij1IU03PtAXf4enUuSFhtxR\n", + "jGkuHK+CU+Iyx8N4HlL0OWRMl+kcxsF9HuKLYTr4BjkWUxh6vV7iYz+Wx0uEcF+sHelz4Dt9XUe7\n", + "USspY+xFeRnH6LwL7aKcdJuCcCONOY285+2FIVIoWzdUnACxhpNvHwWJ4FqMgeYRJ8aRaUySE4oE\n", + "PBZUzK+JBoJ7AihLR1G8nxhMbix4P5lkzyFA4dP36A1yOrqfxcXY+C4Lwxk3eofeQHmgqfeP/0GQ\n", + "8oxU/z7XnDbRw6C/3OPCDhpwj+/U8DnyuXHPKjaMU4SbC2Ke44nJvpvJ+x8NYUd3oJ0vWBcwzjd4\n", + "024Euwfr3hJ955ko99PT0xTbp98Yu9Hz9fGT5OuJ75zhJp2jCRQHxVA5OjpSs9nUnTt3UkFK6mCd\n", + "nJxocXExIUnSuWIkgZvSEYyh0WhoOBxqZ2dH7XY7c5YdXjle/P7+vvb29iQp1bmamZlJRo/zEMaT\n", + "F3d0/rp27VpS3l5jqt1uq9lsql6vJ/TBd2CBrrTbbTUajTR+0DAMv4ODgwwiA1oHmkd/oTXor+fm\n", + "kP8yHo/VarUyCsNRY+QT95XL5VTmIDYcFhR3dLBYe6PR6ELNL3f0+D8mdjvq7oU+eaaXZYBuo9Eo\n", + "c2ZgrC3F+nalTPK25zG6sQTtPe+Q53Edg9aNHnd8HBXBIHGHDkfBd/T5sUQ0N8xcJnk/oyPohm5E\n", + "0FkPzEVE1uDXvIRq3umomOuEaHi5nnVD17/HmNgtGo3a+H7+j7miMUrgfB1lu+v1GOVhTIwz6ieu\n", + "xYiJ63mQWX9HXo417YWVP2CSvXPA79HC9glD8XtyGYwNokFjEUVPTsomW8ekZfrg3pMjYlJWEcZJ\n", + "dOQiImQIufg+/s9DSHzscSFijOL1OUyNgvV73HBFAMEkjtxgBDrCxjU+82J89NWFex6NXajSFzcM\n", + "YpK+G5RR+DN2Ry4dUnceiIKNcUNDpzPj8ARgf7Y/x+nqhil9cx5xj9ZDdAhNVz4YLzMzM6lQY/TK\n", + "xuOxBoOBzs7O6zB51ft+v5+ZTzfOR6ORWq2WisWims1mZkcbCgpjxsOCa2trWl9f1+LiopaXl3V2\n", + "dpYqTVerVS0sLCRE5tq1a3rppZckTcN+MzMz2tvb0/HxsZaWltL4OCC53+/ryZMnevjwYaL322+/\n", + "nalBFR2ier2e+LTb7aYQEn0hxOWhn1qtlgxEjF6eS82sYrGYUUiSdOvWrVSramVlRfV6PaNoQIY2\n", + "NjYyPAdqzLMGg0EqjcC4QK1AIZxnkBuTySSF9nBwfF1ggGBEM1aMNmgaEWeXCePxOJVrcLq4IwTv\n", + "erjJEVUKh8LLlG/o9/sJIfME/pOTE1WrVQ2Hw/R+nokxByLjicq0GNpiXB6Kjjt2oaevwxhNQK5y\n", + "DQSOdcizjo6OkqEML+bJfcLv0bGJ6zo2n2saKRJuNESEjM/9+S6XcK5dvrkD6062n5JAnz0dh2cR\n", + "Mne56O/IQ4yYQ9cJjqhFMMTnijl0fenrB+NWypao4DseVYImDoDQN/9uXnth5Q+kiyEkfrvnz/dg\n", + "zsiEKJr4PClb5ZrnRw+M+9w74F6ER4TGvS/+Tmd4R2VoPvlu4fv1+Ey8D645EuLGGl6XMx39xkCN\n", + "wobvIDB9YTP+iBa5IuO6LwYY2+FhaOPeZRQehFtAbdyw8bF680UQjWEXir5wfOzej4hG8nekNzQG\n", + "xXKUw9FN9+SlaQ5JNGjpC1vg5+bmVK1W03VQExSDw+2gO9xP8U3o7R4dh+UyDmgzGAwyVbfdY+eI\n", + "Ep+LmZkZ3bp1K5VpYO11Oh198cUXWl9fV7Va1bNnz1JtppWVlWRcg5RwX7FY1Guvvaaf/exnSQCT\n", + "k/Xo0SNJ0le/+tWUS+F5IxzKu7e3l8lroq/Ly8t6/vy5ZmZmtLq6mikb4YUu3YuGP8mD8aNuWIvM\n", + "77NnzzJClu+vrq6m3XnM4Xg8Tjk+boCheEHYyFOBZ4rFYqZ6uedtTCbnRy4RSozoZ61Wu6BIL3Me\n", + "nYd5nh8P5OEOz1V0Be1Oj4eicEbcwfS++hz4WsWYg+cdOfZ1hMPosg9ax13XvBtaRjnkSLKjfMgm\n", + "6Bl5kdwa38rP2PNQZPriO089SoGR6norprf4uJze/O8Ii/fHHXGXYYyPH78XOnNPNHqi3Isy03WQ\n", + "P5PfLjv9Gs+KRpQ/33PnHL3nur/P6ev2RHy+j8H122XthSFS0chwQyYaGRGS88/cI3MDgGsolMss\n", + "TUfG/D4IDTP6pPN5XiKyNI0x+4T6IkHQRBr4oo+QL/f5Ncab56VhkLl1DsLm1z1fI2+B8S6Hvwk3\n", + "YThFww6kxJNcHbFBUXHNi/X5Nl+nFfPl0LAbQTHp0FG9aNj4QomwMYYgfYn0duPMBa17xXmIYl6h\n", + "Oeh9dnaWcnNAZ3guBgtz5/yNouj3+9rb28uc1VUul5NRsbi4qPX19YRm+JEwEdIej8fpSJlbt25l\n", + "wsGdTkeTySTVpapUKplK23Nzczo4OEjHzGAIraysaDgcamlpSW+88Ybu3r2rnZ0dSefe/PLysh4+\n", + "fKhKpaJarZbZ/j43N5feu7y8nMbeaDTU7Xb1gx/8QMPhUOvr67p582bqz82bN5MCu3btmiqVSqb8\n", + "g5/RWavVEgKIHOE9cYMGZ/7t7e2pVDqv8s41jDlChSi+ZrOZQqU80z1ijm1xj5lroMyj0ShTTBK5\n", + "5Xlu9NPRRWScG06eM+JhHvK+CPGQjA+fOMobHRt39Hxtcy/rGNTJEQcadYV83Z2cnCS6ttvtzLpC\n", + "xvLj8gQnydcktGHduzFPX1xWRLnvTpWvcYwWp4HLG3eqHTmiWjm6ydMIMDw4ncLpDV9joHpfaPQ3\n", + "Ikf+OTrMdYRHBdzw4R6X59FY8fvzDEeXt1yj72xggHf9xAJ3eJyn4GU3vrnf590NTje46bPzQDTS\n", + "fFy/zZC6Kn9w1a7aVbtqV+2qXbWr9r9sLzS0Fy1MrMq4s0fKFr+MaBXJeDFkhPXru/ncUsaad4+F\n", + "Z/JO/8019wzyIMdoPXMtjimiEzFBmc/xOt0z9vt5L8+gb3hkjNefGyF/p6l7sTEUhWeKNxP7Sh6A\n", + "pMwZSR4y4tkewsBLBZaPuzdIFo5esHvakb5eAC/Gznl/pLc0RSH4gd6efE8ozufE8y/yaMp7QBAc\n", + "lej1eims46FoPCveRSiHRjjppZdeUqVSyXhWJOeyRvCEgcMpXMj3Jen69eu6efNmJkzhOULkwTBe\n", + "Em5B0zj3rFarZSrw1+t1HR8f6/3339fKykqmyvrp6aleeeUVvfrqq/rpT3+aEsrX19dTUjioJTRu\n", + "NBpqt9uan5/Xl7/8ZZ2enmpjY0Nra2uSlBCg1157Le3cgzaLi4vqdDoJ5XPecPQABNDlFeGmcrmc\n", + "kCRpyuuERzz3hjybUqmkfr+vdrudyQGs1+uZs+Kcx2dnZzM5bI4cUhYBOefP9NBODPnH6tlRniwu\n", + "LmZQEmjBmgeduAyRKhQKF8JUhEVBUTxFww9e9yOC2HnJYe2O9Li8uCzMeHZ2lo7f8fF7qkRML3F9\n", + "4PzGeAm5OTrlOUGOULMu6JufFiBNiy27bPD3gVDFHDDkl48/6hzPJ3ZU2fWTy1/e7UfqRP0BH/A+\n", + "L6kCiuwomfNU3i5RR6cI27JuXe7FKBR9dR3k9IsoMo359p3hUX/HcKd//tvaCzGkXAG7wvBtkXlG\n", + "hw8o1p3Ky6WJho3HfTFQYtyWZ+T97c/knR7HxjDx6uvOUHmwob8nT5j7fQiqGD/mcw/deR8RCm4U\n", + "RIXtfXVI1KuUx37mJekjOKLQIAEWmsd4P1vDI4zqELL3w+mdZwzzfU9I90RK+MHDdD4WX4get6cP\n", + "hUIhkxjs8xgTWn0c8L7fh/Kl9IGPE2UymUxS2QFCPAgDkjzZgsx9nU4n5UB1u900F5VKJRk7lLIg\n", + "1Lezs6OtrS3Nzs6mvCT6WqvV1Gw2Ux6UH1o7mZzn0NTrdTWbzZTzIZ0fZFyr1TQajVJYkGTrfr+v\n", + "2dnZVAX83r17qWwA32F+Dw8Pk5Ld2dnRysqKvvGNb2h9fV2dTicl/DL+jY0NLS0tpRAY4yD5vVqt\n", + "plAS97EumDs/gYCE9fX1dZVKJT158iTxzeHhYeLjw8PDzGG/3EdOFzvXpKmCYZ16uQvCugh+D6/B\n", + "U3y33++nd87Pz6ter2tlZeVCjhC8xU4zDzXhsHlaAv2Efq6Y3chmzbrz4XKYH56T91w2NvBMQtWe\n", + "OxlDNxiMLpfcyKHOFErf0zx8PUtT5Zw3BvgZ2rmT6degnctVrnsNKfriOWDQimuj0ShzDJYb+Hlh\n", + "VsbhBpXTl/64DIrGhNPVZZTfE8OlkpLjxVqNG5D8XV7r0MPZlFZhDl0H+Pj9ndSWuywM53TBgKY/\n", + "seyP0yLqmbjDMLYXhkh5zPj/q7myzLO+EUTRg+Q91FpxQ8aVKj/+mS+2SGAEQhxLRKpcCdEvR8jc\n", + "WHJG94WIhc+z4sKPnqN7tQhRvgeNpGxNDZ7lSt8XdqzrhLCNxzz4vRiT8X1sAZemxrBvUV9cXNR4\n", + "PE04ZsyMwenGc6NR7c0NV0c882LifM8VgiuhiAa4oI2Cxb1b7vW5cyOLuk7j8Vi7u7sqlUopURtj\n", + "AMHmieGDwUAHBwfp0N8opClTcOPGjZRvQf89Afrg4CA9c35+Xjs7O+k4lnq9rhs3bqQ+j0Yj7e3t\n", + "XdgNOj8/r+XlZa2srKQE7T/8wz9M4zs+Pk41oA4ODvT8+XNJ50jO4uKiCoWChsOhNjY29Hu/93uS\n", + "pO9973tqt9u6du2ahsNh5nwvvOdGo5F2dvX7/eTRbm5upnPtfDerpHSe1sLCQjrj77IdqD7vXuD0\n", + "yZMnOjw8TP3hfMLDw0M1Go1UM4n7MZiQRfQT55E+sjtKOs/lYr2g4P0IFlCw+fl5ra2tZRTt3Nyc\n", + "arVaoj1j8YR5jDTPS5mbm9PJyUnGoJEuJuPCC87PvhvXZbQrIMpS+C4ul3kcFcM4MPSYb2/uCHpD\n", + "Hrrij3KY8XteqctoFLAraMbFNZf7nj9E3/gNneJubUnp0HGe48f8QE8vVePNUTn+93f7/Ph3XGZF\n", + "o8MjG1EuwhvIz7ixBfTQnQ/0rkeUXLdE5Mh36kd0z/vNNXJxvZ/8dqdIyj9jNfIFfO15he7MX9Ze\n", + "aGgvfuYejn8nWolu9HiiX9x9Fqtrx/c508SwEf+zeOIi8V0SUci4ceJojRtYeUiYe3A0klD9fp9g\n", + "Whw7cDhhHEeu4vj43xPRoSmL0Q1H0AeMGEdzHN1hfrjGOykG6coNZYPiYzFSI8u/616bG9f0L9Iz\n", + "/h0RxzyliRDzOYyhAPckfeG5F5YHZ/PjZ5AVi0VtbGyoXq+ncJ10zsP9fl+tVkuDweCCl1gsFtNZ\n", + "dGdnZ6l6tiS9+uqrmpubS4U6MV4ODw/VbrdTeNEF040bN/T2229rcXFR9XpdhUIhKbB2u629vT3d\n", + "u3dPMzMzevLkScaQmp+f19LSUkooBgVot9taXFzUycmJKpWKBoNBotvi4mIKG/V6Pc3MzOi1115L\n", + "8/yjH/0onc3nybiFQiGdNUl4cG5uLhmgJO/Do76+KSIqKSFWNEcoozc/Go10eHiYDJ7hcJjmaW1t\n", + "Taenp8mwdXSMit+sj1hKxStzgyZJ00Oi5+fnk2HrmwngVWpRYaguLi6mUC4omSssxsX8uAHmRReL\n", + "xelZjhwuGxPNY/Ix97oc9MR4D3kyj1xHtsGL/js6KnlIiitHd4b9e6BJ/l3vT146B/c5Yu46iHWI\n", + "go7Iuctrn3uMEeRuRD1w1kAaY9qG089lE2kgOErufGLwwOcxhMV4oJPrC3fc3ZH2sDN0YcygcU7z\n", + "+L6oe6VsTauo/91gxCn0cLUbUW5MsksTfvJNEcgK31R1WUpPXnshhpTHd71zEVZ1uD2iQ/GIBYdz\n", + "4+4NRwcgKu93RoxKGGPJr7mFy8J3YeJVkn18LnjyGAMhlGcscY+jJdALlMLDA5KSp8nnvMNRN++X\n", + "/x29HxcMbtRFFEy6KIAQxHEO3DBCkTvaFz0p/+19dqHCWHlm5C3vI8aw84H3Jc5PHCd8E2H3+Ky4\n", + "RVk6V5CTySQhPZQHoB0fH6dilpJSjg+KMdJkNBql42Lu3LmTnnl0dKQnT56o1Wpl6NHtdtXr9VSv\n", + "1/Xmm29qc3Mz4wnjkXW7XT18+DDVOPp/2DuTH0mzq+w/MWRmzBE51VzuqnKVwe1u2thmYQMWyF6w\n", + "QLDA8sIbNkjwB/AHIGGJHYIVYo+EkNhhscFCCATGlsCiy91tuqvb1V1DjpEZGWMOMXyL+H43nvdU\n", + "lBeWvq+8yCuVsiLeeN/33nPPPcNzzj33F37hF/SlL31Jq6urqYAm/dzY2FC5XNaHH36oK1euZDzF\n", + "er2uvb091Wq1lMuEAULJBsoZuKL5xV/8RQ2HQ73//vuaTCYJ9ZHm/L2xsZEOBC4UClpfX08hQnYO\n", + "zWYzPXv2LB1hIWVDRqVSSY1GI9EfIwNDxY341dXVZPhtbGxof38/7UwsFova2tpSpVLR+fl5JtQm\n", + "LarST6dTHR0dpbngeCcKi+7v72fyxwjB1ev1tBsSfsMoZbedoyteniKirsViMdHfETCcB+jnaJXn\n", + "s7COfe3BX4TvY30m593xeJxBnTxUFHP5YlglIkTugPv7YijUZQHVvCPiAQ2WKU1kho8d2YaBBdoW\n", + "ZQ9oJAaGyxdKYVxcXKT8O+dRaOe7mV3Xca8bjDhI6AqXQZ6H6boMvkA+x5AwNHR9Rx9cF2PEuXEO\n", + "ksp6ipEP5i8ada4TPUrjBhyOvId83Rn2fvJcvvPwpfMA7/u5N6QkvaBMXwZdSgs0x8NbXFuWFxTD\n", + "Nq6o47OlbK0mKZt8iRHjCjMmuNEQbjAyyak8i78RDaI/XgkY5nQhuAy1c0TGFw0CCBrBxMvQomXh\n", + "MfdoPDfBjR1JGW9gGWLj/WEcFG1bZtz4/EkLxYYR6d4V73PjOyJA0Dl6phGJ8rg9itT77v3x+YyL\n", + "yz2xOD62+t+5cyezHf/s7EzPnz9Xr9dTuVxWo9FIyAN5UYRoff6Y48FgoGKxqPv376dnPnnyRLu7\n", + "uwn5Ojw8TPkH9+/f1+uvv65Go6HpdKqTk5NkLD158kQffvihnjx5onv37unLX/6y7t+/L2muEHZ2\n", + "dlI19OPjY925c0fSPBH90aNHunXrVqrUDa0wtnK5nI6Pj7W1taVOpyNpjsbVarVkeFDQU5qfbVev\n", + "1/Xaa6/pv//7v1UsLorZlkol3bp1K/ULw5FxsKan06n6/b46nU4mFA0iihHCfHLGIHPp/IwSGgwG\n", + "qtfr+pVf+RU9e/ZM0hzlY47q9XpGEDuqM51OVS6X0zgwgAjDFgqFlBs2nU5VrVbVbreTse2hcnLq\n", + "6H9Md5hOF8U13Rlgw4I7DTRQlUKhkEFAkQcYLKxDV2oeuvH6Y6Di1FviPVyjeXV/xkCfXQb4HPr2\n", + "f5fR/P5ljuMymYDMjmkOPk8YQq7YY0jd++IoDzLQHWE3XjC24BXQQ2rJeVjbK5s7qkdfHWFx9Gw2\n", + "W+T9scnHmzujGKM+Du+HX3OH1HUbMgqa+LqIqGHUifH+6NDmcrkMiABN6SM868aiz7ejuq4nYuN7\n", + "f05sl+UPLttlu2yX7bJdtst22X7G9kpDe26dT6fT5MViSTu64DAcno+UtYpBlRwhoUWPDQvUkRKP\n", + "j3v/PLbtFq9XwKbl8/lMbpJDiR5KdCg6wot+HIB7HctCTo5ERTTId6q4FwQ9HEHyQ0OlRTJvDF2B\n", + "xkHrZYX3JL2QC+G7uE5PT3VycpLCMHhMjjbGEgJOD0cOPXbv3owjf+7x8AxHtvg9tOdIlkIheyYi\n", + "4Q7CmiQO0xeeC/+ANEjz3KObN2+muT08PEzb/GezmdbX17W1tZWB3aE7OUXc60m3FxcXKaTV6XT0\n", + "v//7v5IW4Ya9vT3dunVLb731lq5cuSJJCTV9++239d5772k4HGaS+3/9139dv/u7v5sKJHJky7vv\n", + "vqu1tbWU/P2lL31Jn/nMZyRJH3zwge7fv6/BYJBy4Ci6Se5Xr9fT1atX1W63E5JTrVa1vr6eksW7\n", + "3W5CZCaTeXXyUqmUPGmOO8nn8zo8PNTW1lYKAcQzEx0NXl9fT7xEQiweP+ERflsqlZKH7+fVgUav\n", + "r6+r0+mo1+slnqZvIAVnZ2cpfBbLlziy6Ghwp9PJhCdB1yqVik5PT9O5gzTWCYnzhC6LxWLKr5rN\n", + "ZpkxeOh7OBxmKqmDiudyucy8QLOzs7OE8pGYzpg8ZSGivJ6rw3rx/CfQW0JunpRNLmbc3eboDQWC\n", + "vTmCwO5EaY6Gx9MTXMYgg+AHR6T8N45Yx7AUuYWMD7lPOJmGjGJtR1SeMReL86K73hfkvW+coTnS\n", + "wljon/fVc9Ocn3h3TIXxXe4uh52OoF2MExnMrj7WKrRhXXiIT8rmspHL5PobuRw3Ifih79DHedTR\n", + "SqcFctfDiVyLvLCsvdLQnpQ95sMhQBSrtFAKhUIhwb8x+ZvJdXjOE3sjZOehwhhLdQibWi0uaIHE\n", + "HZZlDBgXCFRPOEXYAxM7zIjh4VtsvU8ueDx8xBhiXSPot2wbqn+m327YOYQew6YYuzCeL9IIIUfD\n", + "xnPRvB6SH67L2B36J0fA4WJpsUXWF2dcGNGY8t/E3/FMfgvP+UKM74jXeMfR0ZGuXr2q119/XdI8\n", + "FDUYDPTkyROdnp5qdXU1JQejCKCNCylCT4RaXGGdnZ1pY2NDa2trev78earhJM1zj+7fv69f/dVf\n", + "1XQ6rzSPkfX06VOdnJykPJpcLqevfvWrkqTPf/7zms1mevr0qd5++22dnZ0l46XZbOrs7EwfffSR\n", + "fu/3fk/NZlP/8A//IEn6whe+oE6nk0JOBwcHqaZTo9HQ0dFRRily1h6J0iTck0/BtW63m8Jh7O6T\n", + "pN3d3RROKxaL6eBinjscDjUYDFIJAEnJsNnc3FQ+n1en00nV2TG6qMWFYvN16gqnXq9nQnT0OeZn\n", + "8F25XM7MG8fHjMfjlEt1cXGhg4ODZEg1Gg3NZrPEL+7soEhWVlaSjIqGg4fEWB+Mp1KpJFlCvpKf\n", + "6chZeYyH44I8/OJj9PUXw0HIUd9F7E7WaDRK8oAdrNxHf2NYhbIVvBfjnfuiLkCeUHrCFbfLNpdR\n", + "0Wnh2fl8PmOc4TRLC8cHg4ISIR4SpJGDhkPmNMHo8qRv+IR3oadimskyYzOmNcTf+mefP5dr5IBJ\n", + "2dQFaEZf/HeM4fT0NPGx76Jz+eppLM67MYyMUQXPY6BBE59znBjo4ZXj+T3Nx+o0cgPvZe2VGFJu\n", + "KPhxEK7Io3XqExCRqlxucVaZx+F5xstivW5tR0TDUQxPgKVv0cCSlLGafXcE1zxnyN/HgliWz8PC\n", + "5bu4CLgvjg/r2xnSx+zjcXQOertgdAZ3uvNbN7b4PcIyGoLQ5PT0NOXJ+JlgESX0RYMQdsOV/0cv\n", + "0xEpWkwe5J+PNyKf0ViibkmM58Ob5OJ87nOfyxSlfP/991UsFlWv15Mz4CgnPFAozI/RQNGurq6m\n", + "BNyoTDY3N1UozI8pYVfXa6+9JmmOgF1cXOjjjz/Ww4cPdXp6qs3NTUlzhGhlZUX7+/t688039cYb\n", + "byQj4/Hjx/rud7+r6XSqO/83lwuaPn36VLdu3dI3v/lN7e/v6x//8R/1jW98Q9LcsGm323rw4IGe\n", + "PXuWMU6fPn2aFMZsNlO3202Gy7Vr1zQajdTpdFSr1bS5uZnuY+MGByxTiwq6oPAprTAej9ORLRsb\n", + "G1pZWdHBwUE6JNllTqPRyORCuWEH7yJzlhlCppsiAAAgAElEQVRHp6enaWesND+SZjgcZoxCFJ8n\n", + "N5NT6CU/JKXiorncoihhq9VKNAPZJM9NWmz9hj94JgdWk7wPcg3dcIBAIDCUY86Rrx/y8OBfrnkC\n", + "NDxMf1nzvtNvMsluGuA4Igzo2Sx7cDnyHX7yYr8gaM4T0DTumHaEyHWL6wuXc1EOkd8GasEuRu7D\n", + "kJhOF6VFuObRhOiUg+6DfjvKRV4VPOtOcsw34tnQG7kG/VyGOV19jMhT14duaKFH/H7oTdFc1z88\n", + "E7nMvPuGERBR74e3QqGQduBGlM/H7GgVQAY8Fw0kDDDXwe4sxSgI8xeNTm+vxJDyRefGEwsOIsRE\n", + "SAScewMOm7KwIQDKtVAoZGpbSItznJZNoDMU/YzJ3whYfidlk7dBFqLydsjVkRVHY3yxwfguDJyJ\n", + "QKVisjj9w1pflnTpXpsLTf+Nf/YxuDHjY0LYMfaYfI1wyOVyGU8c796NMd7HYojoEYLU++EGpRtW\n", + "bvDCY7lc7oWKu8wdxlUut9ghyli8rAY0Oj091WAw0LVr13Tjxg0NBgO9/fbbie4bGxtpmz50cDQW\n", + "bw5aojDhXe8Hc12r1fTJJ5/o/Pxct2/fVrVaTdd2dnb08OFDTSYTXb9+XaVSKSnojz/+WDdu3NDX\n", + "vvY1ra2t6dGjR/rP//zPNI5r166p1WolhUGI7jd+4zf0rW99S3//93+v7373u/qTP/kT7e7uSpL+\n", + "53/+R7/1W7+ld955J6Ed+/v7iRd7vV5ao71eL5UpYIciCE+3281URB+NRnr27JmeP3+eCoLCa5xD\n", + "RkI1nq80RwQ3Nzd1dHSUwtwo2lqtpp2dHTUajYSaOW+AjDC/8CL1jGazWapF5UphMBikAqNukGO0\n", + "+G4q5p4xsJbX1tZSiI534Siys0uaG1nVajUpCUcBMJ4o0YCShm7w/draWjJEJaVaZMhi53NQEyqF\n", + "QyuvTZbL5ZJR5sVqmRsfj69TKuXDb27YQB8pu8MQtAqZ6SHBqAAdxcUQc+XqSKEjPNHpXCYPJWXk\n", + "KCEsGmvOFX5Ev/nnCJCXoaBPzGGlUkl99eZhQeYQw8+NTcaGDHLH0ekWoy3QOqblsBbhAV8zfM89\n", + "vhOU+fRd6ZGu3Of6D7p4H/xengk/eckU6OHz7WOHHu5c857YP2+vLEcKoiwLq0WDgYFAvBgy4nvy\n", + "VuKxF75N0mE/mD8iHR4qwrr1PANX2tGi90XonoiP0WP9/kynhU+ab8V2rwkjjlwW6Me1WD/HFx6M\n", + "6WHRZdtdY3/IEfJxOZ1h3rgwHJGjyKDniTCH0cPA21kG3XrozpWTt2VehKN9IJnRMOL50+ni0M+4\n", + "IJ3X1tbWdOvWLa2ururRo0fa39/PFGVkQeN1RzqzgKMB6AYkixtl9eTJExUKBX3uc59ToVDQ3t6e\n", + "nj59mvrIrrZcLqf9/f2kMH/t135Nt2/f1s7Ojr73ve9pOp2m/CnCUCjMbrerb33rW5Kk3/7t39af\n", + "/dmf6d///d/1V3/1V/r444/1N3/zN5KkP/iDP9CjR480HA61sbGhZ8+epRAV5R7y+bwGg4FarVai\n", + "wf7+fkIk9/f3dXR0lJn7Xq+XQngHBwfpGjTAYMD5cAMUob++vq5+v58MtGazqZOTkwza4sYLeVCg\n", + "Eq6EqUXDuue+2Wym27dvq9frqdvtpp190jxnZjAYaDweJ2QBg4/SBuwgdKeH/8OH7kB2u12trKyo\n", + "1WqpXC6nqunch+HjRUzhaVc+VL1n7B5W8xpHKPLodNJXeHOZg0LlfMK4HrpHTniBV+aYtYK+cHnq\n", + "aFihUMgYWYwTGrgSZh25AcUzI52Q/VK2sCS0c+cUA8KNQP4SMuU3NJ7hzqwbM/QD3oi7z0A6vV/M\n", + "HX1mbnxsjrAs251MP9zIis4ehjbXYmjS6Yh+ZSy+0xP5zbuiDOc7l+PIRw8lRpmOzPR8Yzcsya1y\n", + "nec6OxpuPifL2isL7TEZLGoEYYxRSwvhxtlfJD1KWebHy3KPyT0c95JcIUe0xicFyxwlxLlKwPoR\n", + "DnYl6KhaDAM6WgVKgzfoC4p+OJ2cjv7u+NcZwuF13unM6McOxMR1F2DRA4ihMxSPw9vMDQYL8+9j\n", + "8WNS/LkonmXeAM9yGNdDdD5OFxhOP/rM4naaYaS6t+ILdDweJ8V9/fp1HRwc6OHDhyoUCtrY2Ejo\n", + "EzTF0Ed5wFN4UCAAzvvkRfFdo9FI5QRarZZu3ryp4+Njvf/++8rlckmx8//pdKrd3V1tbGyksF+x\n", + "WNQ///M/q9fraWNjI+M4tFqtlM8wnU71R3/0R3rw4IEk6Y//+I/1ox/9SH/xF3+hZ8+e6a//+q/1\n", + "+7//+5KkDz/8UO+9956+8pWv6O2339bW1lYydp4/f65Go5EEHLlA0tzIGg6H6YgVVxgkom5sbGhj\n", + "Y0P5fD55+L1eT+vr67p7926iLUYxvEgpA451oQDqeDzW3bt3M0fgYNhgTLhj4or24uIi5SvhKdPX\n", + "fr+fkC/QHknp2e5A+FrL5/NJbrkAZ7s9hokbMl6Elf67AYKhByLtRgNhSWlxdBPjm06nKfQYz7v0\n", + "dRBReBQhChX6QEOQiIh+gJaRguGKD345OztTv9/PGEu+5jGaoTdH/0A3KZuT69EEeIXmBkFUnBhC\n", + "UbG7XIFHvHAqSCn9cb3DPw+1SXO5F+WNn20XoyLQmbF6eM7LSsBv9N91QnRSlzn76F9Pcse4ch51\n", + "3c24HLSQFuUu6K+/zw1PnAgaBqvrX+83ujXqY5A5N6Kcdq7vI2DhdFrWLssfXLbLdtku22W7bJft\n", + "sv2M7ZUgUliCbp3iNYFouAWI93F+fp62N2Kd492BuPhZbngwy5IJHdqN+TVYrnjPHtfmXVjYETIF\n", + "PWMc7iFLCyTK0SqPOwOn+xjc+vZ3OgoTz9SCbn4gaYSjl4WzeG5EBX2M3tyL4V63+B2OxrMA/o9J\n", + "ooRo4tEx7lG4Z+zXPCwW++noEvSO6JXTlOeBTrjXzfyTwEyS8s7Ojvb29jLFMz1/rFCY747ifuaE\n", + "/uAF4ZVznyNlIBR+9t2jR490cnKiarWaQSXW19dTmOn+/fuq1WqpCvfTp0/VaDQySe940OThNBoN\n", + "feMb31CpVNKf/umfSpqXOPj2t7+t4XCoP//zP9c3v/nNRLfvfe97+trXvqZ33nlH5+fnunXrVkKA\n", + "HKE8Pz/X48ePE6pGAvx4PE67AkHqKEwLD5OHxNi73a5+8pOfaHt7OyGZ9Ofk5CQV+Mzl5gnc5GV5\n", + "flIul1Oj0UgIzebmpkajUUKcCU1ISrk8vuPHk61Z05RXIJ+L9z958iSFOZFfoJTINZdX0gKVIiwM\n", + "D29tbaVjacitol9eSBNe8iTtQqHwwi5AGmOH7r6OkDOeb0VzWRFRVc9dk5RBeZERyE5kIHRzOeso\n", + "PsiCI3ye+wId8/l8Ji3DUzG8f3x22kfaxFQNv854GQPP9Dyf09PTlNrA3PNe0FRkgqPkUnYjE9f5\n", + "LSFhxgWa4/98bqABOiGmpiwLZblczOfzmXQLDkFnvTqaya5UEGKQbqc7esxRLr4HQZUWu279uiNv\n", + "fg863PnCx4T+8eiVz3HcrPDT8qOkV2RIufJlkMPhME0GDBljtyROrq2tZeKzENNL1fu7mHQ3LNxQ\n", + "wGjysFWcGD6fnp6mEIxPFs1/G5nbf+Phqphs579FUHreSIz3swBdSEh6IW/AjUdpkdPEAqL5+COM\n", + "Da15tzMqxgl0cUOCcfpvvDHv8fwvp+WyPDeO2BgOh5n8khj/j2OAVvCiHx5LGJbvfacUeRMbGxtq\n", + "NBop2XowGKjRaKT+YxQ6HTmjjbmPOXGE+1yIorhIZL97927amfbs2TOVy+VkvG1tbaWSCvzmzTff\n", + "1Onpqd55553Ulxs3bqR+oqD5PBgMtL29rTfffFOdTkff+c539MEHH0iS/vAP/1ArKyv69re/rS98\n", + "4Qu6deuW/u7v/k6S9JWvfEW7u7t6/PixfvM3f1NHR0fp3D/4YDwe691339XBwUHKycKIWFlZUbfb\n", + "TYnqtEqlkpKcY2i+VCqp2+2q1+vp+vXrKdfIebHb7SaDgOT3arWaDEmMNuQC4eVer6dKpaJarZaZ\n", + "07W1NY1GIx0fH2cMm36/r9lsfuTH2dmZnjx5koR0uVzW9va2Pv/5z2tnZ0fD4TDlJRGy4kxJ8p2k\n", + "xWn1s9ksGZB+Dh/H/GCYMIbJZL5V3r9jnITJ4H3Pg2Ke2CEa1y5yK4aHoI3vMvPrxWJRlUolY9Dx\n", + "bIxjHEZPZu/3+8mwi3k+KF3yc8iTYhzxnLooT1z2I08wSJCTHpr3vFf0k+8ixxDwv9yHwR5DRO4I\n", + "e4gLesKXXuaBFhV+TMXAeVwWhowy3Pvq+UfRAPH8KE/LYcee3xv1Hc/w0C0lLxyYcJ2PY4EO5zmk\n", + "LPBstyegacy387HDO17Z3Q3ISNNlhmVsr2zXnpStv+ELJSZ5xTONJGWYOE4awrRer6d8D1pMLoOB\n", + "x+NxJmeFiUBxxnipnx0U4/7RG+A7FDv3eZ4AAsHf7+9zD8SvwdC5XC4lwtKcGZbllNEiquQGD/31\n", + "EhAxjyIKBt7jVj39Jt7vi8YRMBdk9CUaQd5XDKx4FIYbmC4EoEukQ8yLw+tC2UiLwohXrlxRo9HQ\n", + "wcFBJqeBfBMEsOemMEaMJTeynD88l4VxdLtd3b17V9euXdN7772XQXNASTBGHj16JGm+Vl5//XXt\n", + "7u5qd3c3UyQQ5AoBPxqNUiL2nTt39ODBA/X7ff3Hf/yHnj17pt/5nd9J1/7yL/9S169f15tvvqnv\n", + "fOc7+tznPpf6//DhQ73xxhs6OTnRzs5O8iA5Eqjdbms2mydls0ZJRMaAmE6nqSAnhTEvLi7UarW0\n", + "traWntntdjUej1Wr1dTv99Vut9VutxMK5Nv0e72eNjc3kzGC0ba9va3pdJpKL0jz3X7Xrl1L/cbQ\n", + "ZC7I4dra2tLe3l7GUD84OEhn+l25ciXN4fvvv68PPvhADx480L1793R2dpYMnM3NTe3u7qbSDhgT\n", + "9NNRCd8Qsrq6mg5HrlQqGfQon8+ng4pBqd2o4zid4+NjnZ2dZersYEBFNNqT3vk/yJb0Yg0eR5ZY\n", + "Ry4naOS2cY8jwOTMYpThREtzxxsjwfMNpey5psj1iLogR1zWggxx3RVxjAa4HnG6k4PFvHFckiPL\n", + "nm9K8j2ffe6X0Z3vkNluUDl9mUvmE1SOunTuTLreoUXD09HSaEiR2+g6ItbfQh56Aj/vH4/HydCO\n", + "eg9ZHDdNoH+hgzvc3D+dTjMlStBryN9icVH6g+8w6N0Ai1GpZe2Vlj+I4RWuRUXnqAGLzWvwuAUu\n", + "LWpTsf2XZ7higzFhRkdPllm3fOdIFCG4yMA8fxk0SovhQv/snoB7ThgmnlQak/d8sfEXYzPC1u41\n", + "LoO8uceNHlAh3w0TaUMfPawHfV1A0JgHr3zuwg2FT58iDX1B+wJ2YeOhVH7rnlNMvuSze+ydTidV\n", + "6X769GnGaEeQubfufY0GvNPGw7IYDyAW0+lUn/3sZ1UsFvWjH/1I0+lUzWYzzTe0nkwmevz4cUIz\n", + "3nrrLb333nvq9/spMdlDJqur8wN4B4OBhsNhMoi2t7fVbrf16NEj7e3t6Ytf/KLeeOMNSdLf/u3f\n", + "am1tTV//+tf1gx/8QJubmwlZ+qd/+ifdu3dPzWZTDx8+TMpaUjIcqMFFQry0qMItKRUXZQx4rCAk\n", + "HhIC3cNgpjwA1eLxkCn7wMHP0hyRGg6HaSdlt9tN7yyXyzo+PtbVq1d1eHiok5OTNEaQO0K+t2/f\n", + "TkbteDw/Y293d1ez2UytViuhg/fv31er1dInn3yijz76SJ/61KdSSLjb7WpzczOz08/TFigLUijM\n", + "a10x/nK5rFarlRwZ5328fJwLr7JObS2cQd/peHp6mupcRQTEDauIRjlf41h6oV5kJE4U5+5J86Kj\n", + "7BJlDL7rmjA6ss+RWl/7ntYA8oVeYFMB64n+8zvWBfzkCJOPzZvLa5ddpJa4MTgcDtVsNl9A/3Gc\n", + "6JPTOK5VeIwxOMpLf6IRQbiU58R5ZAwxnOYOfkykx9gEZaQ/k8n8ZAJQ0KjPXb5GwGFlZXHWbTSy\n", + "3CDEWGbeWPfuJMf3+Q5RjHtHv1zPoNfdLuEZUWbH9soqm0dL0hX9spikI0Su6JzY0ROKjOKK0xEC\n", + "D7FIi91Cjib5IvVn0C9+xyQsM46WhQ5p7hksM3r4PsKV/r2jeuQp+S4VaOL3+dg9bOIonOcQeUgs\n", + "Mq1/Zp6iUcg/wmfQ2+c0jh20TVKGmemLe2a+gOGxlwl+DKzoeUbPmRDVzZs3Va1W9cEHH6R3RQ+K\n", + "RUeffEwYvRFVBfGDn3q9XurPF7/4Rc1mM73zzjva2trKIBSOmh0dHanVaqVK6j/84Q/V7XaT8mW3\n", + "mzQvHYASPT4+1oMHDxKS0+/39fjxY3U6HX3qU5/SV7/6Vf3Lv/yLpHmpgq9+9aupQvqDBw/03e9+\n", + "V9I8J+vq1av66KOPMiUBpDk6BGKCcQA6JM2VKYLSqxSPx2Ntb2+nWkJuEJDDw/b9brer0WiUlDCo\n", + "FoaJO0r9fl+NRkPD4VCtViv1T1oYS4TN2FUoKRlm7NDL5Ra7JPFor1+/rk6nk3LmJOnq1asqFou6\n", + "evWqjo+PtbOzk/qC3Nrc3NT29rZ2dnYydANtpWYUeV4gV9DLHQjqDFG5HVROUqasBQg265ADo5FV\n", + "jjCwnjwC4IYM9HHD3u9HniBzuIahkM/nU/6YI8cg3yC4zD8GCv33d6EDYkRAenF3lhtuoGPIYnda\n", + "I8LMe7gPQ593sLbhFxwC1xcun5BD/szZbH6qA31y586d+dhXnsc15sr5zcfE/GPwujykP+gk3xEX\n", + "5eR4PFan01G1Ws2EmT186cgZzwIJch3kBZZdn8Zn4rC6QQSvcJ/vlnd+nkwmyThznQa/RNQxpqN4\n", + "e2XlDyCCw5yxPIDnO0Cs6XSa8iUkJRgVD8ULcEmLMvFskY6Wsof3YBp+70iHM4ujDTG2CqNGQ9DD\n", + "hT7JjNUNymhgRu/DFzPCC7pwzfMFYojN+wSNovfinmVMAoyfPV/Ncx+cBj5u5t29S5KcHZWSlHJS\n", + "MAhdkEe0zY3VZWGz+B1CPdLbjUEQA2leGuD999/P5DxEg9iFAzShRZ6Iwh0Pazwe60tf+pKkeS7M\n", + "kydPtLW1lcJ4sTLwYDBQtVrVgwcP9MMf/lCSUuhqNpsl4UZ+DTRrt9u6d++eSqVS2jp+cnKi4XCo\n", + "crmsr3/96/rggw/03nvvSZrXn5pOp3r27Jm+/vWv6/vf/34aAxXNz8/Pk3HBPHEGHWMcDocJrSHJ\n", + "mi3VIEXS4igXkuFdkeEtr66uamtrS5VKRfv7+5nt7lTNxmjHWPTjSjDGIk2RB2tra8kIqdfrySBY\n", + "XV1NOVf09fDwUO12W81mU81mM4VLyaeqVqup6CjPLJfLKhQKOjk5Ub1e12c+85lkZBJyrNfrqYK5\n", + "G2Ae/nWnzfO7CP8hW6lnlc/Pa3p5xXzyqtzQcCSBNQOy5A6WK0hksstMR/ZdTrhMZDweappOp+lY\n", + "FyrHS9lcUfghIite/HaZE8tadz3jjpAbRJ5CAY2cNm4cehgOQ5CNJg4SOAoS9QblVTwVJKJVjq7x\n", + "GZryvRsb3lx/xc0DzI8bL9CYvkqLvDsMOXdefW6YR57reh4dwxp1MIUwOmkTPrf8defZxxYNVmlx\n", + "QoqHdmkOHCwDCCL9Yrssf3DZLttlu2yX7bJdtsv2M7ZXVtl8GWrjiINbgVTFBaJ3OJaQAYnP7pnF\n", + "EJtbqR4Lx2r30Foul8skn9PcYvZ3MC7QMjwNt3KxxuO4sY6BlB1B8uQ3fxcNZATvI3p6NJ4f7/dd\n", + "HQ638z7y0TxEGUNmEblb5mW6hxI9JLy22WyWPE6Hos/PzzUYDDIesT8rzoc394aW3edQcPxMlW4K\n", + "WT558iSTs+C8Bv1JwPV58PHQV/f2oif8xS9+MXOcy9bWVvJw3aMDEi+Xy7p586Z+/OMfp/fdvHlT\n", + "hUIhJXrX6/V0rVKp6OTkRJubm6rVahoOh2lMnU5HpVJJv/zLv6xOp6Pvfe97mfypf/3Xf9WXv/xl\n", + "ffLJJzo4OEjI2f7+fgoXMW+OVnCeGuE5Txrm+Bj6QLL3ZDLRcDhULpdLOUfOh6xfkJ5isZjQHBLq\n", + "z87O0tE5eN4cIAxd2BXGc0GqSqWS1tbW0lxMJpPMkS6UmJDmSepbW1sqlUpqt9taXV3NHD4MsrCy\n", + "sqJyuZzkFzvTrl+/rna7rcPDQ92+fVvSHAE9OTlJfEGIS1qUqWAHs6+vUqmUDnFutVoajUYJjRuN\n", + "Rjo4OEi7pOE/SWnrOghSDPGQq+K5avGsPZAFR4DjX/f2nffz+XwqeAwP+fu9ErWXGYj5jvAFqFQM\n", + "7aND6AutUChk5sZD9/TH5aj3k7BgRHeQ2WxUqFarS1F7T0+QssnmHh3gt9AceevrLSLvUfbGtJoY\n", + "xiPfzHW0R2u43xP8QdCYT57tRTddVvp9Ple+KSqmMUQd5FEBD+F6mDtGB3yXYNSPjjJ6WNT56mXt\n", + "lZU/gDBO3Bh2g6h+ICeJyIR+/MDbmD8VQ3A82/sQ4VZvL1O8LNxlzEainYcguD/C5MsYnmd6EqFD\n", + "zX4tQpH0j3e4Eo+hPR87zO+5O24oOUPD7AguLzHgRumyBUVfCYH63DBXlUolIzDJn+K5KEDnGQwf\n", + "FrP3xQ0pp7/f799Np/NkShKU7927pydPnqSx+1lvMf7uysWhblrcAeSKhVyKN998U+fn53r33Xcl\n", + "zUNG5+fnScE5bYC2b926pQ8//FDn5+cphwbnA+PDw2nklty/f18ffPCB1tfXdXR0lPp55coV1Wo1\n", + "/du//ZsqlYo+/elPS5IePnyou3fvajKZ6Mc//nHaoSdJ7XZb5XJZs9niuAhXeoTa6DMHVhNGG41G\n", + "GgwGunPnTqakwMXFhba3t9OOLYTb4eGhisViynUqFAqZ0gmNRiPRmWNYaLPZ/EBfHB/CB8wda2w0\n", + "GqlarWaMEDe0kT3S/NBmwqmNRkOHh4eJNzwHaDqdqlKppDVVrVZTWPXevXvqdDqJptVqVdevX8/0\n", + "x3NvCoVC4lMMTuaekLi0yH2Cv90YdMeA61F2Od3cGXTjhdCay0xf36w/N5r8uW4MeZ4Kn70MgrQI\n", + "7eFM+Dp0w4O+esiXtYeydHmATGNMbgTCq/CwyxqMqWVhTYwCjC36wkYAdxBdTyH7kc2u5H1Ti4+b\n", + "v8ucTil7ogXzj0GELEWu+fzTb88V4n2UF4I2uVwuc1KAO9yeG+ty2R1JrvkufU89ic6pAwhuC6DX\n", + "Yx6w/3Vn1sPB6AGnWdyJmKHrS6/8P2wwckQsmCQG4szIonHjQXpx6340ijze7sYFBoDXIHFjhAXF\n", + "PW61x91+rhCZnKi0Yx5PFCbu/TjK4wvK+0FjXCgwT5zkOh4L+QL+DsYRc4ig9TLjww1UN+IcTfO8\n", + "Kf76HPr4PTmQPjoiR/9Qeo4IuZBywcH7lnktywS58wwIzb179/T8+fOk6La2thKdoreKkPBFHnPf\n", + "aFEAcqbc66+/rkKhoB/84AdJebvh6YUqec7du3d1eHio8XismzdvpmeSE4ji8x1fBwcHeuONN1Ji\n", + "OFvppbmCvnLlih4+fKher6e33noroS6TyUQ3btzQw4cP9dprr+n09DQZYHiWKysrKadtmSeHseve\n", + "HjzMQcAIPpQgOUTNZjMhWSAXrLVicX4+niMN1J2aTCapxAJ8ShK285GkVDcKw2o0GqX/s7vMnTfy\n", + "wVqtlnq9ng4PD7WysqKNjY00XycnJyoW5/WyUO6u2JvNZupLvV5PtCF513cAxvXN9m2vBcZ2f0/M\n", + "dqXA4dmerM77kBUYf4668Bd55LuzoKPLRZrnvsRcoLgjzWU0vH92dqbBYJCS0eGbXC6X+uD9cBSK\n", + "Z7BmPB+Wa8wvypq/GO8+BpwEd8ygE0ZCPAbGnWaQWcbqDpfzpBs60MONE9/p7JuJGIcbi06faIDF\n", + "XXkuN7z5OpXmfOhFfHluRMdcLtMvT4BnLPCeG98+p8yH85rTBqfBDVmPPjEGR8B8PP77ZXrWc+CW\n", + "tVeGSEVvgAXkW0edGV3hRyKjLCCs38dnRzWkxena7k24QeCWa9z26My3bBeVlD1lm7G4Be5j94Xp\n", + "wp37CFPAPP5MlDfM78wArdzDdCUMYhQRK198LlwYFwvXUQenB3PrNM3n52UrKpVK8phdgHk9Ga+H\n", + "xftZIA7/updTrVYzULPvPooo309DLkejkVZWVnT//n3t7u7q8PAwGTXQHW/YFx+Cwo1Fn2P/nRtY\n", + "0jw5eHt7W+vr6/qv//ovbW5upi3ppVLphSR7DJvbt2/r9PRU+/v7KREaYYvRCXKyurqaDjS+cuVK\n", + "QoCuX7+uZ8+epZDYm2++qbOzMx0fH+v69etqNpv6/ve/n64dHByoXq+rUCgkowEa0uKacUMfGmAA\n", + "sOWeMFi/33/hvEBq7TjcXiqVUlFK+Mnf4d5sqVTKOFigVawrL2EC33O/8wbPZoeRG4icrYhjcXJy\n", + "ksbhSeoxZOGOXj6fz5SpINyJYRQNF+hHKBKaEkpl5yFrh2u9Xi8ZZigx+uBJ5DH04fNHX52/HVXH\n", + "OZWyhy+jbL1+IPxBzS760+l00tgpdBpDcvTLjRU3eHh3RDPcEXeZ7YiYh39Ys/TXHUhkgRcVdsMN\n", + "A4vnxffR2OggLeQo7/czYx3hczr47js3FrlO8wR8N5iQrchtvyfSIqLxrgscIEGHOGrkKB86Cx0T\n", + "3+lRKnfM/LcYcjRkL7rRjTPGEcONcWefyzN3NF7WXokh5bUcfCHCrExU9PidgSEwQoJ7MVKkrDED\n", + "8Vwo+kKIMK4rSW/AxChmRzdAYpYJWpjbJ9PREzfc/L0oAIQ0O7ekbL4Mz6E5I/g1/42UPc7BLXdn\n", + "VheqvgjZeh9RN1AFjDXeG70NLHyUi0PKTgMgfebPCwhGQy1CvPSDvkM3N8jds5nNZvr0pz+tw8ND\n", + "7e/vp5pN3BcNYV9cLuigqxfCg095N7h5EYgAACAASURBVAJ1Npvp/v37+vDDDzNFJ6UFbC5lC/FJ\n", + "87DYxx9/nN5BCQBJaafQxsaGisWi2u12osPGxobeeecdffrTn9bR0ZGePn2awnflclnvvvuu6vW6\n", + "bt26lXK0GNdgMFChUNDx8XEmhOEoXS6XyxTQY35Resw1fW61WklJ+nE1w+FQa2trCVFgVx80A1Fp\n", + "Npsql8sZR4bPGOZxe/x0Ok15Y27w0r/JZFHh28Pl5Hyw9v1929vbOjk5SXPLfZubmzo6Okr3E7Zg\n", + "DuEVvHx4Gjq1Wq1kFDgPu7Ls9XqZHLBGo6GjoyO12+2UIyYplT5ANnqxSj+6hHxTmq8XZFUMdUwm\n", + "k4yj5buAMZDimnGEl3XiyIs7Tr57ixAlhqTLU69L5DmW3hwVZ57YNey5tl4MmvfyrmhE0hgn1wjf\n", + "ebqCpFTSwvWZI4AvMxzQhS4j/fnRWYPHoY3f4wYvOtL1pNPL3+3hO0/vIBfR14zfE1EgRyrd8Y7o\n", + "k/OTG2mML6YR4GC7bIeOrmNdr7GmPELi9/209koMKZhw2YQxaIQZjQlwr0b66VYiSssZMoYb6EdM\n", + "jsQTjedROVEjyuXP82R2vnfDMYYgY/NFkM8vtoL6AsLLZcGzCBi709SVF/1B0CBsXIBH9MuFoguh\n", + "aGTF0KnDq87sLgQiIuCookOxCGoXfGw2YDyM2yvfYlBFqNi3NNNviizu7e2lc9pi0iH/j4YEig6e\n", + "c6FRqVQS7fC8UQpvvfWWTk5OdHJyoq2trWQk8B4EXavV0sXFhe7cuZPmFRqBQvgRIlQ7n0zmSdv3\n", + "7t2TNA/tEQra2dlJuTjSPNfn7OxMt2/f1mw20+HhoX7pl35J0hwhwHhAWbrgo5SAI5LSXGHMZrOE\n", + "rk2n0xRKrNVqWltb0+7ubtrm7gUpye0CpeQaBoejDh72nc1m6XiZwWCgs7OzDGKzurqaSkdg4DCP\n", + "lUolHaPi4XI3yN3JcF5cX19Xv99PeUjSHGVbX1/XYDBIxSF97YNMQBuUHc/wyt/OfygFEDaMTLz7\n", + "arWqvb09HR0dJb7Y2NhIhUORCY7EYwCyNjyMzrPpI8Yt9zImHB+XffSZe11JTSaTdMTOZLKowo1S\n", + "IxyGUc08YQT6OqOvhHXdEeU+D295or4jI8gLl3/+O6cJfXUEKeonrjs/zWaLcDbPdic56hVH1Tz6\n", + "AO94OG1Z/7zvL4tGuA70cjRuzDnYIS3yWD0czDUHMBiDR1uYf3+u98V1lDd4BX0RK9vzzmhfeFgx\n", + "jpfv/cgb6B2d+9guyx9ctst22S7bZbtsl+2y/YztlVU2jxCee0ae8ChlD98FtoyICxatW+7ErTmC\n", + "w98LUuHImG//pzmUzX1StsK2X4vwqo8Ja53+R2iWPvlz/C/hBqzpGJaI4/PcIIctoQ395HvfXovn\n", + "EMNi9NNDavwmhrYcoSKUhyflYUlCL+4BuKfg+R2eqOyJxqB9HtbFc4vevHs/oBnb29vpHQcHB0u3\n", + "8ft5WXHuCWeBmhGmdJrwDEp13Lp1S9Icefjoo4/UarWSt+xhT1AuttQTbvzJT36icrmcEIBGo5HJ\n", + "k9ja2tJgMND+/r7u3r2b+vrJJ5/ozp07yft68OBB4rPHjx9re3tbtVpNH374oT71qU+lZ3Y6nZSz\n", + "E7fcxzCuo4NsCyfk6/Sr1+vq9XrK5/MpCdoriROWAXXx9QBKRYmDZWdNeuVveN5zU0DWfF2Anjlq\n", + "wTvdo/UxwrP5/GILP3PY7XZTkjo08PCG78bz0hkXFxfp3fBWDLGAHvmZYp4bsrW1pclkcXjv0dFR\n", + "Juxdq9WSbGR8oC9OTx+foz2OcEgvljOAN1xOsP59nnwnLs9knhwVhjfOz89TtCDKZvpWqVQyPMl9\n", + "y/oIvaUsEsh1wssuXz3E5DlMzoPwu8u0uGvP86J4vufUkccHDVyuQEvnN8aFXPcQGjohFsWkr85f\n", + "Thufb/76fVHWRxntNHfd47zq+sYjHvyW98XcMH+mp0wwdp8n15mOZMYcLQ8zgnzH/ERvr8SQ8h1d\n", + "cRFIC+jSt8y74OE7aWHoOKzq0CawJzF6h04hJIvCDRImF8HihoQrN4dG3QCKCtQhzBgW8LFFmFrK\n", + "VgYmLwQ6OoTpBp/XQpEWoQeHpRmz00GaQ/OEA3kXjXF435ctcIzYmOdGDoX30YUJRkSEyLnmAgD6\n", + "R6bntx66cKPWoenJZJIOuJWkZ8+eZcJGkUfjllzfYcUYWegxGZd+wVMksR8dHWXqKPEbxkjezunp\n", + "qba2ttKRNZyLRm0iwlTSPAx4dHSUduzV63X95Cc/kTRPtkbJrKysqFaraXd3N/HU5uamRqORzs7O\n", + "tLW1lZQXOSrQLcLt0MHHyBwyFxgSJNNj5PgxICh96j35jjP+3+v10vEZGC4YFdJi7RNK8zwpDHKc\n", + "LMoy0Nh55ZtcmFsfpysMd+JwNLiv0Wik0BUHX8d1yvMuLi4y9Z2oiB0ru0fnLobYp9Oper2eisWi\n", + "tre3085TjrdhPUAH5gLF48+D9h5Cmk6nGUOD8UYFSH+QNR6Sgaaz2SwdsoyM452e9xjrA/EvGgcx\n", + "vQF6QmdoGEO2LwurOU0Zq8tL1gP3xfvduWYt8EyqydN884anH/h46KOHTz3XCefAU1RiiobLQ5dR\n", + "UT/Q+J6wrBsd5Hl5LhLXyAEkdcT1NHzkaQIxYR3+WOYIw3PeF9dlnvLB+2JOqxvfDqp4SkVMi1nW\n", + "XllBTppPJpPOAD2BDSJwDWF7cnKScitoy4jlRI8txpZ9YlDIEUFzgUJjDJ5UySJmXPw/9sMXZrSw\n", + "fSzkSkmLAzLph48Pj8obAkpa1KGBrhg+Uva0dvdupGws2WlHczo5muRekRt+cVwkkMaF43zCczyP\n", + "iMKEPj6nSUycxfjGsGMbvyfLgti4gRPzASIqw/MRLNzruV6j0Ug3b95M4z8+Pk5b9xmrJyMjgNip\n", + "trOzk/oKz7I13Hdjce3q1avqdrsZgyiXy6Xjb4bDYRp/o9HQ6uqqRqORms1mJvkXI8gNKDd0oZuj\n", + "eIzBd8JGpKNUKiX+j3mTXD87O0tFKOlLsTgvicF9nuCNAHdHweeH30JrLy3hAtw9feiKQeG86Dtk\n", + "URaeqLy2tpbZYUfyMwYt8gyeoy8Y46PRKPGC96VQKGROrpfmMhEniPIJbBhot9tJRkUv3BW2O45c\n", + "QyYPBoNk4CPfQP5YN45u0Ffe58aBK074wx0txo+hRJ6bNF9vw+Ew7fzkWezYov+e78J8npycpHw+\n", + "rvmuO+acvjAud64iKs+8R+TCjVMvRcH7iDQgk2Jz3cD7MKIwUKKRwDhfZtS50euyHP70fDTGH9He\n", + "SBvWPQgaY+Qd0MF1lDs/HulgvplLd2Kcv3wOpMWOc1+Xy5x+tyfoCzTxCBfXvIbdsvZKQ3tu6cXd\n", + "BK6EmAg8TJ/g4XCYMXQgspQtyhhRHkcOHE7m/dy/bCJZ8PxzFIb+LjOy/H73ylwASNmKt7wbpnHF\n", + "xbsi4sL30WB1SN3hVA8n0D83pnxuXDHRNz+VO9IuevHU6IlG1mg0SoUKfRzMk/fXkTNpAcV7UiJC\n", + "3oWW0wIkBGHMOyPKiHJgLugTgtHnyeuXOALDc+k7ioqE6/X19QzShUEiLUI6w+EwheMcquaZ0+k0\n", + "HXIrzROca7WaxuN5HZ79/f2MwphMJnr8+LE++9nPZvh0ZWVFpVJJ+/v7L6CR7D6KiCT8Np1Ok8Bx\n", + "A9SdDmjjYV0PZTnPjsdjVSqVZMBGfmJdIDh9nUIznCw3bHgnOykdJSA04LtI4e+oXFxuuFCPaxEn\n", + "hT4Ui8VUGoECq6urqzo4OFCz2cwkW/NsP/8PmoIsxdpc1WpV+/v7ms1mKfSLAVIqlXRwcJAcRJeN\n", + "jrS6rJAWu+TYVYkh62iOe/XR4KbP/jze5aGfaNjRT1BZaMM7MKCiQeTP9rICIJw44258L5PRjuzT\n", + "R+R/lK9uGMT5j6g/9zha5rqEviOjXCYh1/ykj9hcTi4zxDwFwOcdvneeg97IIubI5wnDqlgsvuDU\n", + "evgbow8a8xzGG41vB1aWNfiA++KcuFHtCJ3rWH7rPOm8T799TLG9EkMKgRhDGFL2AE4fjCskFoc0\n", + "F+7Ao0yGGzYQE4+I5kwTIUf3ZD1u6/dy3YVDRE5cKLjRxjtdCHOPf/b3oTSXTaaH0HyxuTCEYXkH\n", + "IRpXdm4EITToq3sN0NIFJ9d8oU0mLx5QyTEi5MPQN1AB3hm9OgS3P8/r9rA4oA87thxxcwMEmuLR\n", + "eR4MNMUT8flw/nOkwo0anzdoQ60jDH88aUnp2AjWA8KB/pRKpRSe6/V66RBlpwUoE6hTPp9Xt9vV\n", + "1taWLi4u1Ol0tL6+LmluEHS73bQGOaJFkprNptrtdjoepd1uL0UjoSW0ccdhNptljDDPYcPo9XxE\n", + "+NBzqWgYp74e+X46XRwPE50dr6lVr9cz3j4CFT731AGQL5TCbDbLbJ3HSKTPUUn4Goc28F+5XE5H\n", + "wmDYOILdbDY1Ho/1/Pnz1O9ms5mEPmFIaEwlefoCrw2HQ127dk29Xk/dble5XC6NgWNjjo+P03yx\n", + "tqE1CBlHN0lKBpTvzIryxRVWlFWsaTcOeLcrSoyjOE8R5ZTmiHS/31+6sxraeuiGayhXdpnSQMBc\n", + "jsXwliOnNJANL8Pj6wNDD55wOvGswWCQdglDT/gqAgHIK48wuG5DntJ/50WniecK0Z+IskeECF3j\n", + "78aRWVtbU6PRSOgzzyT1wlMdoDe6gntcfsbUgEg315sxBSSO26/x1yM40UFzZ8hPqnhZe6XlD9wC\n", + "dQPDPXIpm38SjY6Li4t0ijmEcwKw6FHEoBggMRgcLohiMqgbGQgaFJ+HYaKFLr2YyBe3k0rZHLDo\n", + "DbrFjoewzDr3cBTPj6iYK2j3KmAoNzSWbTf1FvNHeD7IAO+KaN3p6akODw9TWBIa8Xs8dubZw1fQ\n", + "2o1oQjoYEs5PnmPnAhMDCQ/Lx+rJxHHufeMCvOiekAtdFB/0phwBZQcoBkl/oNtoNMoYhBge165d\n", + "02w2S2evMccIae8j/cEgoCo4vxkOhyoWi7px40ZSmih2aLK5uZnyetyD9NwiP1sMYe/oqKPNGJ7c\n", + "B51d2KOkl9UXQzjG0DpJyswp/MZ6psq6o1nUawLddofHc29AxRkHiBzKxBFY5AKKOOZVephvOp2m\n", + "Y2BKpVIqJkvtK96HcsV4435pgVqDTLlRXy6Xtbe3p83NTe3t7cnb6upqOoeRzQMuSz106coryiqQ\n", + "HEdrQY4ieuZORlRS0cF1g4z3ufNGMdp2u61Op6PRaJRxlnlmRCFidIB5jAoSJA0Z5nlH7oiC2sOn\n", + "HtaK6A9/oYPzDHoE4xyk0hGTZeF0nsfv3HiLzq0DFjTPeVtWlw955AYRNOE7z0X2DUNuQCN7+W10\n", + "MNwg8ve5PmOtRUTT5yKGbplfv+bhd3Sj0wlegHfd+I4GZmyX5Q8u22W7bJftsl22y3bZfsb2ShAp\n", + "oLqYFOiwZ0ycc2/ALWyPdQNpxriztAjnYFX6MSigU25p8zy8ZYfwHRWhD9LCK/XYrKMnPt6Xhe88\n", + "74P3ee7Fsti8o27QiERVYFCq9Triwnex7IN/F0OGeD+OaMUwnPctzkOlUklQNqEm3zkEZO0hSsYH\n", + "yuR5GdDXUR3eTZ7U2dmZhsNhJpQYQ8Ee3iB0Bz0dPYE+8EnMI8Lrgda+fd3REZAp+u5ek3t0QN6z\n", + "2Uz9fj+TX8Q6ICzmPMmOO0J8jUYjobEgIH4mW0Td+v2+Op1OJpwK3aiu7/0GFQNtdh6KIXPewTVH\n", + "Tz3PjblwuoNAkZjPmuD9vr7IJSH/jrmCVnjY+Xw+0cY3bzgCxzyBHHGUkCevwksgadAND7nX66X+\n", + "MffT6TTNE/PMbk4qvoPSeYmDtbW1TO7WaDRKOXf1ej3t2rxy5Yr29/cTXxwdHalaraYE/1jIkDE5\n", + "MsG1QmFxYgHzDG3gQw8X+TVQIa+iDd8gN6EV1wj1n52d6eTkRN1uN4NwIxvIvfT7QHaWIfggHPTR\n", + "5bcjzS6/YvgohsRIFvfIivO3o3sxRER/+v1+Zh0iYx0xlV48XHmZfqS/jvwxF/7OmM/lSI2fsIB8\n", + "9f44Uh378LLQv+809L4yZteLjnw6AuXoZgzR5fP5FGb06IS/j40oZ2dnaR3CB45EMU/I5J+7HCl2\n", + "RTj8D5GA9GLNjphQ5wbSeDxOYQhnWIgJ7OuGDIaVQ83OmD6hcSK4z5lLWoRFPIna4UHizDHPy0N+\n", + "McxIc1iS5pPrDMvv3eDhfX64I4I/JgE6LWL+QTR4vbmx5cbdsntJBJaUhB6LwJU39HRFGUMm0NaF\n", + "CwvD4V1PsPRF5H2Hbg4Ve/gC3vAwQhy750qg+Mrlctqqj6B2qNpp6sJlOp2ms+16vV4KD/JuD6O6\n", + "QpIWtXbIR/PwFRXDNzc39cknn6QxEuI7OjrK5IpAN54Td8eMx/OSBqxtDxl4cjrzi7MzGAzS2J3v\n", + "GHsUkl4ugDAh68XvHQ6HyWiF990gi+vS83I8h46cM8bPETC5XC45R9KiFIXzCvzlxr7ngklzWcjB\n", + "yBhCXKvVaiqVSur3+5pOpyqXy2l+STR22UHb39/X7du3VSqV1Ol0UvkFv95sNtVoNDLGCXzLnLsc\n", + "JGyKzImbMlxBY/jF/CJXok5/7keW+mYh/7uyspL4s1CYb9bo9/tpJxxzyCYCz6+j8Q4PQ3sC+7L0\n", + "DJ9fl9sxrcHlko+d9Q6Pej4wziCGD/PkMnFZfk50QDx86e9nrG68uEHnSfp+v4c16asfneMJ3m5Q\n", + "xYaco4+e7sDYPOzpciJuGvO5cWOXZzM2aIWD5SkG7vy4HGJM0MrlKDSJ4Ie3V2JIocRcAPjCcqXE\n", + "dwhmGCjG7skV8YXo9VhgYveSPLk5xmqjZezM4p5LNPBQ7iwYjwfDoHGBR2TImbtQKGTQBhecEWWL\n", + "dHRh7n2jP57LED2u6I25UetM5YsnIjf+/5gzMR6Pk5JqNBov0MSfj2CGyb2kQMxXiomUHrN3Lxih\n", + "iVKFvi7oUAq+gLkHgcIz/YgdjPZogJPn4Tk4Ths3lnnncDhUpVLJCBrnzdPT04yn6M/0hHgXTKA1\n", + "pVJJw+FQx8fHyfu8du1aQntA3OBFDghGeHnuTqPRSOPb2trS6elpymdhNya08fPkoDfjzuVyGeMU\n", + "wYgA5j6SwumHtMhDk+aKn0N7QV9pjImSEX5+5enpaabGVswJmUwmOj4+1vb2djr4mb6en58n1MsN\n", + "8F6vp62trYSOuhJqNBo6ODjQzZs3VSqVtLe3lxAplECtVkuGgj+fPmJQ+zN3dnZ0+/ZttVotPXv2\n", + "LJXFIKe00+mkg8PdwHb5OpksjmthxyLXWAtuSDuP5nK5jOxxxZ/LLXarYZiQ67gM+QGJdh7GMWKz\n", + "kdP0/PxcvV5PtVotzYM7Zi4jPB/RDazYD4wol2M05A7PcWfax+y6gPfxGz67ocx6eFmeGs8GdHAe\n", + "d2cg5ke5g02+IM375jIN2sOT7vQgn13murEGzd1A94bcch5GLjA2jClpsS5wkt2I9dyuuDPPHQD4\n", + "hbEjW9BNTjdHFV/WXokhBdzui1jKLjbpxeJhy7wF32be6/XSdmLu9+fjvUrZM+PwFPmtJ8H5byRl\n", + "mAjjLFqvTKQzjPfXGZlxw6jRK5eUUY6erOh082fxPh+jCwnGiJce4WM3fvy6tEBsXDi4R8f4HYWg\n", + "Xxg18ZrvluFdKAyEK7zi97KLCMM1himZI/ruStiRB7xFSal+kgtXD28u+ywtFjfC2Xd9eX8wpNyL\n", + "wnhgTXgjVI1g87nGcMHoiXyI8wE/+UkB9Gd/f1/5fD6dxTadTtXpdFKZinx+Efaijg/PGQwGmZDs\n", + "eDxORh9JwJJSwjSGhq81+AgB5vSl0KYbbnjsfOcVwz1MxWYCykCAwsGf8AAK2qt7S0rhLxwZeIH/\n", + "9/v9zDolJE3BXFcm5XI5hfXG47Hq9Xqm/tfFxYX29/d17do1NZvNTKjJlbSjqNT6OT8/13A4VK1W\n", + "S2gNu5ifPn2qzc1NXblyJaFdhEdxAiPywmdkH/10z34Z8gHtHAHhd+74uBNKgy4oTXhqMBhkduau\n", + "rKxk5IKHoXw9TafTtCmDNephb5Q78tbRDHiS8bjyhDej/JayDkFE4pAvrHNf9yh7N2y4z51p5zV3\n", + "fn23myMtbkR55MLrWPk8Mj/u5FGfjHc6os9ccj9GOQ4j13AcXEY50oTxFOfQHWD6HA1JlyFRJmLc\n", + "xbIyjrTGqICnvTgfuC59WXslhhQMMxgMEoTpuyJgDI/PuwXqCgNisBiBIKXF4nfUwKvmRqQlQpxu\n", + "pXpD+HPNJ1FaCHnfbcFCwRiKhddYaNE4cW8zekku3OJ16BghXxo0xnJ3A9YZk2fRyFECJXMER1LK\n", + "VWARuOGG8sbQ8mrmzIUjTtJCQYGgOPODqJF75EaGG4DLcgG83EVUJih8Dzf4/PpY3IDl/cViMeXl\n", + "+OJzIeOK1qv+giJh2OBpOr85n1E2IvKb51xFZXJxcZGOXGEOaaPRSMfHx2o2myoUCpmQEDQpFovJ\n", + "iPKDgKfTacZo4RphzZhTJCmDTETlPZvNUj5iPp9P6BvPxMEZjUaqVquq1+upsGg+n0+5Qzha7rFX\n", + "KpXMTjjeSSXx1dVV9Xq9NFfQhtw+cqRAwAqFQkJtQEC4Ro5Po9FIxU85HgjlheLf3NxMMsrzNzwc\n", + "CG2Y37W1NR0cHCR61+v1NEftdlvXr1/PhJPgW5QhNEWZsT593cN7rBPWoaMwUS77kTVuPDgaKy1q\n", + "ziGrmRfWkhum/g7kIs/3UDJyCEXqSEt0LB2hYh3jlHm/WW8Yd97cKfOCs47cwa/uYMfwFY2ixC5H\n", + "o4L3yIwjbdDKIxfRCIhzTR8wrqFhNDIdJPC1DHrtckxaGEE8MxpSGDvIRm/IWHSGOzQ8x1Ej7sFe\n", + "QCZ6mBSZHp0Cj4TRF19vP9eGlFeQZSAxP0palA7Awo6TCMNRh4OQAswCsSaTSYLiyTvBYHOhwXMj\n", + "yhO/xyCKFr1Pki/gyWSSOVfLkR9fNBGxkbQU+YpxbM/9wFBwL93H4guc+L8LFH+/zwXv8JwWZ0bC\n", + "PREG5zufLw+9IjThgYgigYa4VwqcDHJxdnaWKcCJoPctzNLCAMNbKpfLmQr0bly6kYERFI+qoJ94\n", + "VuQSDYfDTMKml6/wZGQMXk8kduOfMYD2uIcFXbnHnQCEKciNC0OQXHdemCcM1uFwmEnu99IUuVxO\n", + "1Wo10QLjk7wcSSmchLFHWNCdCJQ568jzGMfjcTLMHAWF7ryfJHxqdUU+HwwGqlaraS69rg31tZin\n", + "wWCQ7u12u5pOp+kcRtBBDHdXQvAO/6bTxekLhUIhhT7X1tb07Nmz1JdGo5Hqqk2nUx0fHyderNfr\n", + "GgwGGaSVvnmdp1KppHq9roODg0TTZrOpWq2mfr+v/f39NAaUGjSM6IkbTM77HiJGFruTOpvNEtrI\n", + "d/7X0xBcLrjXHzcMQAfqRbEBgrkZjUaZUKSPYzqd16wrlUpJefoYWa+OgtCgj4egoR3z6WuG/jP3\n", + "MV8PZ8XTSOhL/C7qC+gR3+UOEnPuERs3MFyfYOCSY+dGLX3H2IuOOfzip2JwzR1WB0E8jSIa29A0\n", + "psHEecBJiZEap7uXICI1xulEX7Ah3N5wurtB7AjVshCpt8vyB5ftsl22y3bZLttlu2w/Y3sliBRe\n", + "gO+0kBZbX6MV7TlKeNNuffN9hDB9VwLWJ3A5Xjx5Jx6iW5bI7qiWtIBVydHxPvgYPHTI/REWdm/T\n", + "UTfGF70/moevsLCdLuSL4dXE4nt+5EcMYcatqIwxJgo7hOyeDP32Pjv0/DKY1HMWoBdhHWjl7weV\n", + "wrPzHVKgMSRV837fnUSI0mFwD3sug8Qdqvex0Rc8t5jo72E0dng6rUHQ/Nlra2tqtVqZ3V2OrNBf\n", + "iksyRiqT5/P5dOQJYyyVSqpUKol3IuLIswmpgOKyY3AyWRSq5BqI8MXFRTo30cP2nn8Sd5uCUJAH\n", + "E+kqLZLAHcGQlBKxybPjPfSPhGkP33ruWK1Wy6QY1Ov1FAqqVCoajUYv8D6J7s6LJycnKhaLarVa\n", + "6na7mTAmsoudkq+99lpCViiWWiqVdHh4qPX19SQTDw4OVKlU0rsIG0pKhx8jc6rVahr706dP05mJ\n", + "XOeZV69e1eHhYUItnPehvW+2iOkOPmcgbMyHh1P8OdzvKEoMeSMvHCUgrM/8np6epkKmg8Egg675\n", + "/DoSS5jJ+x+jGTTPxQK18DF4WDLK4xjCYwzwPv1zPcP1ZZEPR82ibAaBQd5BTx8Lc+n5SdwbkWrX\n", + "ey77PFWCcSM3HXXztBX0jaNuUVbGHFPfUOP84ii0I6TINdYDaKjzgYeLvaFjY7qOpGQLsK6ivv25\n", + "C+3FGKa0UK6eMOehplxufvwF8LFDtcCsCGlCCoPBIC0OzwPwaw5B0iIM7TkULlxgSodlXan7ex36\n", + "dYXuY2fBLEtW5Lozt+9UWQan03dnZn7v35Mo7MYbv/N58P4wB77Io0J0iNeVNXT1kGAUSjGHjFwY\n", + "jkfhORGG9dIAHlJgx5TPdb1eTweeevgPvvB4O2N3g8WFF+En8gToj2+f59muVBgHApYkbXgYY9F3\n", + "FXpI2JPXi8XFdl5Ch14/zBUkpwF4/See6YKVXCBo67TxHD12XnIYrNdzgx7wjdPUQxf8DpkQwyO9\n", + "Xi/ljjGOXC6XzhR05c14PXXAeYlQKPLEE3AJA8Y8P9Z+rVZLfENeEnPELqjRaJSZe+7v9/spnCfN\n", + "DaLz8/NUCoQdgZJ0eHiojY2N5Ei4bMARPDw8VLVaVaVSSeHJ9fV1dbvd9Pn4+Djxz61bt5TL5dTv\n", + "91MI10PM/GWNunyGfzG+oowmpyY6oi7XPOeM5o6X50Exp+R8EY6XlGrDjUajlLvmTjnOEmvbZY3L\n", + "QDd6uMfTLFwuYZygxD30487ksrFhfPn1ZcaXG2D8nv5CNzdeMWzcifbwFDLM5wSZ4RuopGwSdwQz\n", + "4H1fFxHMcMPG86DizmKah9wY7wx+SQAAIABJREFUl++q5xr3MgZSBFZWVpKj4yUpXH/5fe7AR31J\n", + "fx3kcN6PvBDbKzOkpOwuGBYRdYGcmX3LJcmgL1P0nkPiyjx6JeTHIDTiuUu+8GPekxtlnrPjkxhr\n", + "QblBgYG1LHkQL3qZVx4T5bjm8XBHvlBQMLAnrFIXxlENV7RxzJ634h6sN+aM/i+bFxceNM+PirRh\n", + "HnK5nLrdbsqVcrp4bg3KC0VG3hxJq4zPhbcLOEfpEFKMHYTPk03dqPYYPAaK57RgZCGwobcbsvTT\n", + "BRi5IPCUe4l8T/I0yoT6TJ7PQp9Zc8tyLVZXVzM5Z9PpNClk3wQAT4DkrKysJHQqn8+r2WxmjkXB\n", + "AHFBzrW4y8Z3zuXzi91lvta5JikZyZPJJPEGyi2XyyWEzNFhp3m1Wk1jA7mMNIE3ML4qlYqGw2EG\n", + "kWN++I0rfWQF6KDTEsOsXq/ryZMnqVDt5uZmMtbK5XI6MkZa5N00m03t7e1ljGj4T1IyPNvttiTp\n", + "k08+SUgaRnJ0zNit5aUvkAls5kGmeF06X7P+GUcJ5MmVqSu9WEqmUJjvMPRdYr6ZwlE/5Dnvg2/g\n", + "gShvPJ8tlirwxPeYa0S+oiNLEUlytMbf65EKrsX6bm4AeH+9MU+uB6Nzwl+MLXe+3DF3HUxzpMkN\n", + "jhixcGQPGTMajTJG2nQ6zaDvEamkkVwfEU7klveF/FpQc0kZxI17ItDBvLpucoAk6qWov6KRnKHZ\n", + "S6/8f2oMxFGZWI5AUkIV+v1+ggJpKESHh6WFx4FH4krIt2iyaNwzQcm4B8YznUncM/EE4ig0HKJ0\n", + "b4FrrvSk7AKMi8sXhe9MdEaAWfw7XwiumDAWfFEiLFgUy4w+3w5Lv/BYfNsrz3SGxmjmmgtCn0Pn\n", + "jdFolDz6+Ezm370kdmx5ojH9dAPI6c32dRCX6IWMx+NUksGVLQYS4cJlCZQo6Bi+5Z0kS/sWZVcK\n", + "7F7knWwBPzs7S4nRCBZ2tXm/3OtCaLEVnvuYF++/hwTZxeeGCX2B30iqd14sl8sZoy0meVYqlYRW\n", + "0RcMTujrCac8k3n3Q7AZBwn3IDaEWkulUlLM3O8bHxyRjggGic/senQEwWUGoUinD8qg0+mkWlHS\n", + "3NjZ3d3VbDbT/fv3tbOzI0m6cuWKZrNZojk7CRlDr9dTo9HQxsaG9vb2kgFG+BejbWtrKxlgBwcH\n", + "6axFjAZXvI4yu7zkr4dpMUi5Dt2QKS6n3ADC2OQZvvYcdWONMPcbGxvJAOVA53a7rcPDQ62srCRj\n", + "cTgcZvjMDRR39DCMXA7TX490SFl5DGoa9YDLV99Zy7hdXjlN3QD19/g8uOHizv0yxN/nCVq70+nl\n", + "Ynwton+Q226cYbxwn6PYLkPRl5407yUfPNrgG2TcePP+05/pdJoxeqITCA09fYK1HEGQSKtItzg/\n", + "6MMIHGTue+mV/8cNQeXKhIUdyw645ctRCfFIB6oMe26PL14gxmgQuNXuXiJ9YzIc/vZQlgsbXzTk\n", + "YdBceCDk8PRd2Xp/JC1V5jFMiWJ3w81/Ez1FWoSP3bDxMGS01KGVIzreVwQgNJdehEljWAx6uoHp\n", + "42XhttvtpDAwXD3M5M/kO4wTF94uBCP6h2EJH7pQRMCAzMW+QuMonJ2uvBN+IwTFNb6Dbuz0xFjg\n", + "Nxj1IBxxjNDTlSD3IRQpPgl6QpgJHq1WqynshLfJM30MhUIhra9Y9gHUFvQMhIY+wS8YN76O2I0H\n", + "Es2acdRZWuzwoiFHQDMckaTvGKWuAFdXVxOS7Uguz8TYoJinOxHkHcYdRqCpoH3Hx8eJ3q1WS7lc\n", + "TvV6PckE+lksFpNRUCqVkpHOGDgCh/wSP3amWq1qNpvp9PRUR0dHKSS+vr6e4a1YooW59TAufOwG\n", + "V2wefnJji/44oo1xxDXWE0rXDX54mPu8LAxGfrlcTv8kpSKdONCu9EHumFt3CN2QQbbE3EkQJEel\n", + "3UiIYSDeH1Ef7nNDwNdMTPFwow5UzGWypAzi7iF71yfMN7IR5JG+uuPsO3ahG2vSnV03mvyvzy8O\n", + "Bv1j/CCX1WpVuVwurQv6Dh3cAPIwHjI/6m43imN40sOMEU2MMlrKRlpe1l6JIeXK1xU/lmycfP4P\n", + "E4BOcB9QNZ6gG1BMeNweHpnWlZgXFvNQjLTwLN3zcmbzyXBhykSAvDgi48qEMUbPxQ2b6CWxEH2x\n", + "+W9iAiA0RRHEfCYXoPzWn+dJrE43+gJNvfRAhPBdaHk4D2Xq84QhRyiBRN1Wq5UWBOEi91pIUpWU\n", + "EqGlrDCP6JcbHs5/PjZHIL1sAsYyOTh4kjwLtMYRU+6l/xhF9JuQIOGfZrOZoTVIEIrd+wzNmM8I\n", + "+TMfrrzK5bKq1Wo6wmdlZSUTLoWPp9NppjgnlcwJxWD4SUp/XRn7GkVpw08uFFlH8KnnOyDo4TVJ\n", + "GZTUESi+4zesa/rkfOMGrgtU+gji5l4q6xJj1uVLtVrVxsaG9vf3M4i4ND+updPp6M6dOymx+ubN\n", + "m5Lm4dlcbh6a3NjYkLRQlqyhQmF+VEq9Xk8IGDWUSGAfDAYp72p9fT0ZLO5QwI84gIzHUQdHOOLa\n", + "iblobjhgrDhCEGUYdPU1y/PJsfFrg8EgI/fW1taSg4XDRT9clzCvzoeONHAmZwzbuTLGMIgIPk5b\n", + "DHO6U+eOmZTVbV5KBznEO9A78EA+v9iA4+gTz+T9OHvu7COLGBv9iY6Yr0UcEUdefV3wFwPPESJH\n", + "nx3hHo/HyWmDnu7QwROu+7iGTmP+IoAA7ZGPPpfuOMQxLPsd8/bTEKnL8geX7bJdtst22S7bZbts\n", + "P2N7JYgUHjH/5y/oSYzB+v/xTN0KBk4HGsTKBBWQsltipQVUipfkcDQokyNDHm4gqdg9EknJK8GL\n", + "LRQKS3MvxuNxpmK0hyVizNif7+iMtEBWfBu209h3UWB9ex4JNC+VSpk4NgiG5625VQ+aViqVXoj7\n", + "S9ljCNzDcm825o/xnBjXZi58PGyB9u31Drszv4yj0+lkvA88Grxsz3uLSKUfseJ5EA47S1rKW/48\n", + "xgBE7iFozgoDbfDjR+r1etrizxhAYz1s4Eiu040QBXzCuNwb9VALiea+bZrfehI8eUfHx8eSlHbU\n", + "El7xkCD9ogwFHih9cWTJ+8k4crlcQr/cS8Rj9nCDIyMcqUIyuXudyAue4+iuh3IdqSUUCv/5/FLI\n", + "FP7yKuy1Wk0bGxtpLgjJwcO7u7uq1Wq6fv26Dg4OEuI6nU5VqVS0tram/f19VSqVTF+YPzYjkFhe\n", + "KCx2W167dk2dTkdPnjyRND9LsdFo6OTkJK1xRyuQXR5i4X3QBXkTc+v8rLwoH32+l/1lHhxdZA6J\n", + "VCDrnS848cALHZfL5RReBmGLaSKg376GCUsPh8OUauKyDVlKzpfvEuS3RBw87EW/YxiZMTv/uc5z\n", + "OeKoKSH0KO88ooKcyOVymfWETGP+HGXxlI6IwjjS7XMlLVAnZImvs5iDxe9pKysrqlarGT0F3Xxe\n", + "pAXKGVFG3zDhyJznbPE7Px7M+xTnxHmWOf+5C+0ty4ORsnkt0gIu9tAPBPSdNAzQt/T7NReO0UBx\n", + "5ReNumVQnicNejxVyu6mQJF5zJw8EPrpApm6PlG4eZiTd8fdA4QjnEFYZD6u2Fxw+liBaGGmeD/z\n", + "FMMtbEP15H7mwuclhtNeZsTQRw/DTKfTtFOq1+slujHHbmRiBCAY/UxAr4DuNAKyxuhxQepKnJ1L\n", + "9JOcMeD4yWRxBE5s/M5LGpCbE+FvnoWy6HQ6SYB7KIF+A/djPBDmITEb2niYyoUG9Lq4uEh5Ni6I\n", + "vczA3t5eorcf48GuNnc+SH53GktKSeh+/puHMPr9fgrNuyEFHQmzESbwUDJHuXgCqjQPCxWLRTUa\n", + "jZRb6flT1KSify7AJWV2SMK7pVJJBwcHKcdpZWUlnW/nmx4Io/phz81mU51ORwcHB7p69ap2d3cl\n", + "zcsW5PN5tVotHR8fq91up35Wq9UU9sW4g1cbjYZms1l6no/96OgoGRrlcjnxB/zE3+h0MR9SNhzH\n", + "OOAZtqa7sewGmPTicRueL+WGDc9uNptpo4krZXLSqLHG8UCc0cda9PG7gYCc9XVdKpXSDsnhcJg5\n", + "box59pQP+k2/MCqiEUAozvOuWEse2o9pBp77CR29KrnT1+mIYeWywmnMmvcNQe5g0S9fs562Eg0Q\n", + "D126TuR3LivdGWAd4czGtBzG5XSBv7y5rOEdkS5OG/rJc9zgjnMHryzLc6O90mTzuPXWDR4pG2fH\n", + "w4GJ3fOGqRD6nguDIuL5TlQEeoyhwiwgTO4NYNTwTGcoR1RIzPMcAjfmPOmTmjRs54yJqjC0K0LG\n", + "7tvmoyfA/f5bz+lxo89zBYg5+5gjbfB6Z7PsjifPt0HQ8X4fU/SEY86Fo1WMP9Zqgf4sYgwReIf+\n", + "nZ9nz3X0vCHmw/OePPfC0U9frNFbjXF8aObCgO39GE6ef0Bx2uihgiyQByUpoT6+MYO8KlCg2WyW\n", + "aqX5Thv6QpLuxcVFRmGMRiOVy2W1Wq0kaKANNC0Wi8mYhaYIIBACzy1y4344HKbDpqE3zgWoI/y0\n", + "urqqbrebHAWKjNIXeAjB6qgTieascYxRaa4M2+12QgZB9Hgn84FCZJdot9tVv99PxoLvoiPHo9Pp\n", + "pKNy4Nd+v5+UKIoWJO/s7Eybm5u6du2a9vb21Ol0Uo7UaDTS8+fPVSqVklHrMgSDYX19XblcLuWy\n", + "YXCRP+U1vfDKJ5OJGo1GRsaCmIGauqz0HEyX2e4oMo8Yt3G9LHOgmRt36GJOGrIBtAia9vv91CeX\n", + "O9SOQjY67/OZAqY+BpzRXC6nZrOZWRedTiedh4h8XJbcHQuAujPtiBbrkH6Px+PMXHgNtojgRxQZ\n", + "PeXyGsfTaUB/XGe5IcncO/rt8+VoD7/nGeg+zyHzOfRIi/PFbDZTt9vV5uZmJtcpRgEimuybuXw8\n", + "cWxuKHqL4AHothuKnieHM/iy9soQKSlb/A8C+4J16NQ9nejNO3waCelM5Ra/MyLMHqE792p8dw7/\n", + "PITFc9yIiAmO/hnBIM0X/mAwUL/fT0aBG1N+GCpeOGNA4HOIrHuRjCuGeHim0xvPXFIKPYAwQQPG\n", + "j1GGcojhBmmx2D1k4uiGL2D66ugh9HZUCKPNkwW51409voM+9B+0JgqVKNxZUI6AMk8YtvCLe/GO\n", + "SlGLxwWqoy0ejoXPSbaVshX0p9NFUbtarZbmfzyeV98uFovJwHEDDFSJPkLTZrOZFO/JyYkGg0ES\n", + "Ehg5hIpWV1dT4i5n2rHrx7fw5/P5lGgO4uKGryN9zsMgUigD3+aNUYPR53OOondDilAP72TcGHnQ\n", + "FgOy2+2q0Wio2+2mOQBJG4/n5/wdHx9nPFPO4ltdXVW1Ws0Ydvl8XvV6Xe12W51OJ+2UW1lZ0fHx\n", + "cQZ983PkDg4OVK1W1Wq1MsjSrVu3NB6PdXR0lMocEPbb399Pa5jq6Kyt/f39tFmg3W6rUqlk6LK6\n", + "uqrBYKDBYJCKXcJ/Kysr6vV6mfCUtNi2jtzEcHTHwefbP/MdssjloPMEz3Sd4Oi/8/Dq6vxgb0fB\n", + "kb3T6VRHR0dJHziS6YhJDLHj3PCbZrOZ1tPNmzd1fHysw8PDF+QIhtrFxYUqlYoGg0HqC3ICZeyJ\n", + "2NAIGRuTpplPxu9hPJfdIOz+e2SNI/qMkZAfutPlq6Pb9MPXk8vVmMqArHW9znwv07ukTVxcXKjf\n", + "76eNELwXmhJdYI3GKEnUwf4XR5r/u33gupKIhTvJUb9EFMzbKzGkIAQCi8YgY4jPF/HLYpUgDD5g\n", + "z8dhsh3K4zdMnuc4oEBjuXgEOOEAP3oEIenWuS+2aDnzvmq1qmazqV6vp06nk6nDgXKMuxHoy2g0\n", + "Sn2M6JiPCUMFj458C6dZDBl6PJ3nubEgvbibhLnyujnMoSMI7iWw2MhVi8YwjOwhHK5hAHqoVVrA\n", + "scu8ESlb3iIKMJ8zX1DOBzH0598zVje0YtiVIy68IcDc4HT0CCic+6iQzeGsoJrc50aXI0tra2s6\n", + "OTlJlahBoJjPfD6fUI5er5cEGErm4uIiGVkuMJkXFI0LftYSv4EvvX9eYI9GYU/oHUOJjh572QWQ\n", + "Dectp7OHElx5g+LBF6enp3r+/LmkRRHQ09PTNEavebWzs6P19fV07AxrrdVqZXZFOnK4sbGhp0+f\n", + "psOJq9VqOnz44uJCN27cSEprPB6neep2u2q326meVb/fTzxYr9fV6/U0m83UarXU6/UyW/xbrVZ6\n", + "jit2jAsMIb/2snCfI66OPLiB4msoOi08N4ZseTY8RmjPHRMMH/8nLQwi8mEwcrmG4UFZDjfqKVHB\n", + "+mUOqWO1sbGho6OjVM8QfnLkGqSLsftY8/nFzjRH4h1NlxaIK0rd830xuqCdGzI8F752xAuecmTL\n", + "6Y0+QFZ42kbUxT6PPB+eiXPsURynB/IRtN2dZJB4R/lorAU35J1PGTeARPyNj9vnbDKZJEfKkTv0\n", + "yM9djhST7MRxDxxl5IrGjSDPhaEBWfs1FiiCiDCCtEB5IJIr71wulzGm4nZYJhzP3WOxDmnGpDqY\n", + "31Ei7gO+r1QqyZiiRcVMX0lQBhWKi9Yha5jLoXGO1oiJyowD4RAhfBQasCkhJ4e3PQ9HWuRPYfVH\n", + "i58xQlenNwIHujJOX+TRiOY55IBEYc2z3ZD2732R+n3D4VCz2eyFGmCed8AzvK/+1w1Kfyd5VVQq\n", + "Z+6bzaZms1ky2kE6CoVCCiVBJwwUN7xIEmecFxcXac5qtVpGQVUqlVS8sd/vZ5AlQkLr6+tqNBov\n", + "5EJgnNIPFBRhR5CoGOYFvcVodIEH71LTyoU+1cOhJ+UXnKdc0TAOeAVFQZkH3nl+fp5o6qgKYc9i\n", + "saiTk5O0hqDbZDLfCNFoNLS+vp7Cn/1+X2tra4kX8/m89vb2JEk3btzQzZs39fjxY3U6HV2/fj0l\n", + "jTO3IJWj0SgZCxsbGyoUCjo4ONDx8bGazWYqcXB6eqqtrS3l8/mUDwafQjP4z1MOMJqZy8ifHhFw\n", + "NAReJNcF+YCx6bIPnqb5M3yN++eo6Jknz9dzY9kNAXiLZ3iVexwUl5PkjzGv6CCOPiqXy2o2m5nx\n", + "EK7O5/PJIIghZuS3K3b41Mfocvb09DTj5PlGCtaJy2k3pKLT7mE4eBoecN2L7HXHi2vISpcl0iIv\n", + "zKMuzjv0B0fYZQbzNZ1O1W63E91Btd2I4ZkR+VwWVeC96BRo6sgaz6Bh0LEunJ+QIS9rl+UPLttl\n", + "u2yX7bJdtst22X7G9kpzpDwvya1ELFCsXodmsWrd4sfLixWssdJ5llvYeB+gEsRheSY5Jngsy7bz\n", + "Az37zg7PoXFvi/AbeSTAuTwLpIIkX3b0MbaYM+M083HF/B9P9CQZVFpsscd79G3+9A1vyMOXHiKI\n", + "oUB+47C2Q67QGfSJRjI11z3h3p8B7UFTqIbrYTV+U6lU0vM8KRUe8pi9o2N8xpMBMfG+4hnzDnjN\n", + "m4cbuc5nQqCMkZ2HhBocQSAMCM03NzczCEK1Wk27lnyMlExwpCgmvfpBtzHZ/vj4OIWqvcTB9va2\n", + "tre3k2fn/AbsX6vVMonMIDyE7xwFYN5YS77DDvQXr9l5n3dyD0iXh2JAoxmHI1148iAT9JXQz3Q6\n", + "zXjxtOFwmPG+KWMCPc/OzlLOErTFm87n86kUB+NHLlSrVXU6HXW7XW1tbaX5JndyY2MjMxcgH1ev\n", + "XtXp6alOTk7S+xqNho6Pj9P6cH4vl8tJZlar1RQCpPnpBhGtZQzuoTtaxPeeH8Q1p0MM+UOPiM6A\n", + "0iLTPbTL+6rVakIuaCDirGtHxkFnhsNh2nrvaF21Wk0hPtalNA9FHx0dKZfLZULi9AXZ7yVCoCdp\n", + "Dsh735zjsssjH15IkzXsCA7zgN6bTrNlQ+I8eiPC4JtVoM2yXDI+cy9z7PPE/TGC4yHG2BfWGCiY\n", + "hwx9Fy3NUy5Yo8idGK70MUTZDA966oXThmKv0GIZChfbKw3tRXiQheOTICkxL/DtsoXoytYJhyHl\n", + "ORP8zkNInjhOTJbPnpDp7ywUCpm4rm+H9rCgtKg2TG6Vw6D0DRrk84ujMOgD43f6xHABz6ahiFgQ\n", + "hLukeS7IycmJarVaUnBc4x62pJOgKGW3lcbjPpxpPWeCvjjMyuKSFiEcF8o0n1voxHXCEB4GY34R\n", + "hvADCpBn+sLz8BXX4T8Ox2QOuE4OQ6zD4mFSD0V4/pYbbdJcKcLbhJY8QZKq1hcXF5nq2OVyOSUf\n", + "N5vNTBVfNyIQnL6rqdFoqNVqpfXhQhrjoFQqvXCcye3bt1NYxQ0+nI21tTW1Wq0XDGDWQrE4r8UU\n", + "6cZYPckWGlIXxw1Fz1tjXJQEkOY5RPQD3o73YLw6f/sxOIRW3KFjDDyLXCdoQgV6D8PBA27c+4HG\n", + "bIm/evWqjo+P0xomv6ndbms6nWp7ezu9jx17udx8h5lvVMDR/Pjjj3X//n3l84tK39Cy1+upXq+r\n", + "XC7r8PBQ0sLZ8ZIgMVzEPGD4uAxHkcawoCs3NwyYC3eOPZTF2kc2uGL3UguDweCFGmOeUiBlD1jn\n", + "nUdHR6pWq5lD0Ak/k2bBfa1WS/V6XU+fPk3r2nOkMN7gWc/Xgmb0P4a0uG82W9Tvwtl25xQ5h2MM\n", + "cMCzYniLMgluaBDq9PxCGjTk+S7rXSaTvxyNWt917noQR5nP0bBBPjmwwjy5/nCZCP/lcrlM6onr\n", + "yJin5uHFGIrkXujkub/sRP65M6Q8UdStWowCz12SFrFQj4W78I2eavSE3BuAcRCgeFGTySQJ00Kh\n", + "kMkr4WR23he9KE/o9t11rtjJV3Cjx/MLXPi4scA4XAnH+DuoGEYP78N4cg/YE4exvGu1WiauD5OR\n", + "D1KtVpNy7ff7L2yZdgZzIzkuVOjmNa6krLBbhjrgWXp+EeMnd4aFzDg9iXk6nWpnZyfNr3tgvkCZ\n", + "Cww76Oa5bCwwhCnjw9vybceu+MkZId/H5xihiVDwhHqMY99Vxv/Z5o4RRa4G7wPlmUwmCdWS5krB\n", + "k4o9H2JlZUWj0Ui1Wk29Xi9tTZbmeTnkEZBb41vAy+Vycjp8Vw9jn0zmW+7dqPHET8bl65fdSPCA\n", + "K0hHEjF6oJsrAebNnaGY/8Y4jo+PkyxgV6rnSoA+uNEhLRwxch056w0+Y/yVSkWNRiOjIAaDQVoz\n", + "d+7cSWj0cDhMOWIrKyva3d3N5MCR/9Rut1Wv19PYz8/P05w9f/5cN27c0PXr1yUtjhyazWY6PDzU\n", + "xsaGrl27Jmm+2w/aMTeO0mNMIWfoG3yDvMMYijtQkZfuUPFsd2gj8uLN6wdypA7y3XkYeRELZIJA\n", + "sc6Pj4+TbGfn1tnZWUJrvbwHBpc7UsxT1Gc0lxGeCwhfoNMwDlzWuG7DwZKU+os8BBTwHGJoiqzx\n", + "eXJjyR1VdIUjUzGfDQMK0MObz2vMr6pWq2lzFAaozzXvjAY4SJYb4xhsroPdOYVW0N6NJc/txRnk\n", + "/egnDD8cZ9erL2uvrI4UzVEIFIkbSdKCyBDWEwtRVjBEJJq0UHIxgcyTes/PzxMKRKVgdu240kMJ\n", + "wEg+GUxqnEhpUaOl3++niefd7gVGhM3LC0jKKBPQD4eMPdnPBZdXv+b69P+w92bNcSTJubZXFdba\n", + "CwBBsls8PdMtyWQmk270/3+HTBppemOTxF47tirUuajv8XwyAM4xmxt+FwgzGghUZWZkhIcvr7/h\n", + "8fSUBQ9BXxhT/oaR93Wz2SyVhh0bI4U4o54DPscg2ZGwYbNT6TF8CYp9eHiI+Xwe/X6/FmEY/h6N\n", + "RnF3d5eLESPsiNpRsN/Z0Q6GA6NoObTz6OJ0VkRcV5JcQQ5RzhDO6SvXHR4exv39faZ3cBym02mM\n", + "x+M0pBFVpXFKHAwGg1rKCDmkFADPA+WcTCZxe3tb21aPs2qyqguAUnDSBFjmje97bCzDODuHh4f5\n", + "fRwyI0fICagdRTg3m00SvekPuqR0epvNZiyXy0z3eX0Nh8N4fHyM33//PW5vb6PX69UMJrLKVnfO\n", + "d8MIg1j1er0syEn/jTpjlCOihl7d3d3ljrrLy8v44YcfUg/d39/nPb2eKYtQBlHff/99XF5expcv\n", + "X+KHH37I50HKJ7jj/XAiTIou0/Wk/HkXZw0IPrneiBx6qly/DprKdCHvYqfYz6NsDDQMnD7QIU4M\n", + "cCBhvdtqtWI2m8Xnz58jotrtt7e3F91uN25vb2vfjYg4OTnJnbPc004z7+T3Mhpmp4bfccIc0KB3\n", + "XL6FQPDg4KBGK0DPGHlBx9AX9892pqylZP3n+eE+zE9ZKwskz0GPn4dOsGNDoGJ7Y/DDSFfZ0L+l\n", + "Hudap+/op51U981/MxWGz0D6PVZl+2aHFkc8R1e8WDwANtr+PaJeUt/oBZ+Zf+PUF9G60QCUG8gR\n", + "k7RarbLw3tHRUUbzTLDTG/SF7bW0p6enhGJvbm5itaq2MhsdK1EQSgmAPhmyNHqCk+g6TQituQk0\n", + "c8eIfDkQF6HmPoxdxNZAobS43ve141im0Lif89u8I3ONo1qmd90XO9r0A36ZHRvkaG9vLw84jog4\n", + "OzurFb90dOXUAs/wIqOPdpq4jvdx+sOQM04YP82V4D4UT+R3EJmDg4PcUo/DT8kMUhTv3r3L6s6k\n", + "MjebTRwfH6czyVwwPhgdxnmxWMR0Ok1EkmiXMUVRLpfLWK1WGR3DM8KBJQDhM6fl7dAj61bQDgzs\n", + "fHo8nRZBSeMA8kzqBCEj5XrFadjb28soudnc1oI6OjrKHZolmttsNrPK9j/8wz9ExBYl8K7hw8PD\n", + "RIVwghjj2WxW01seX6rwR2yNxcePH2M0GuW7mJPF2DQa212SfIZczGazeP/+fbRarUzfwbVC3zIf\n", + "PI/+WG7pJ/Lp+WKOmTtQCa995r00eNzXKR0jNjjApnxwPWsC1HQymeQc8l7WBbS7u7ta6vjp6SnX\n", + "jJEhIx4RVX2xRqMR/X6/Nk93d3fx5cuXdFhKZ6m0S/x0yQOQetM9IiKrz9uh4B3M1/QzkTPeE/5k\n", + "RD3NZXSROUT3Oo1G4znQlcQrAAAgAElEQVTofzsmDlL4x+/MG2AGzwNdh3Pm9zdfinnxuDEX6AE3\n", + "vttsNp+VajByZRCg/NzoGrucX3LoaN/EkeJFHQl6sGn+nIWLcPt7pOe4j68xAhJRrwpNdMXCx8ki\n", + "Kid6RhlHVIaN/jFZ3NMpNfcfoW+1tvV0Li8vcxFRCM/kVysy0DgXKPV9nb+1E8n1NDt/GCGihdvb\n", + "27z/yclJonJE00aF6A+L206P58UOSukU21H2WKGk/TzGrYxmiRRIN/V6vVpKz5C30z5v3ryJq6ur\n", + "Z2fWRUSWaLDTZg6Y03aOrpBN38upD/rj8TLS0263U1mTKmA+WdDr9TrJsBGRROS3b9/Gu3fv4vz8\n", + "PB0JoHQqOF9cXKTiI9rmHo1Go3bsDvN9d3cX7XY7HX5k5fHxMZERnO/JZJKcGxxjnucjUuBg8RmE\n", + "XgcKNIwaypA0JWOGPDsQ4v2n02k8PT3lVnUcRsbUKU8McERVvBMk8/r6ura+1+t19Hq9RHJIh5EO\n", + "bbfb2S8/D0QB/mGZRgdh44gS2nK5jMViEf1+P4uv0hfSfefn5/Hu3btaBN3v9+Pu7i6ur6/j+Pg4\n", + "n+f5BQUtaREOFLhnv9/PscZR6ff7tWCANf21lL4DjDJYcQDlOTYK4n4y38vlMkajUQ2RMpqPrXDt\n", + "JgfsDtTOzs5qqS3P03A4zA0cm82mVrmedTYej58R7bkfSKsDQSNCfs+Iuq7B0fS2fwqu4owRUPO5\n", + "y594TB3QYt9sa0iVYte4jrG13JpT62ft7e09qwcH2uWswXq9zlMACLyQC4IyB90voZ/o4ZKHZ3kx\n", + "Il7Oq+WUAIPvORCkT19rr+UPXttre22v7bW9ttf22v7O9k0QqdI7jqgQG8OCL6V1yobXivdo5MJo\n", + "ARGhOTy+jpxyROSZTkTWTik8PDzEeDyObreb6JLRLqI9oinD1I7I1ut1QsqHh4f57yUeCv0tkRz6\n", + "jAdtUp5TnUQwjnhIc8Jz2Gw2yb2BF0OEbFQEBI9rzCEqI0iQJBqRRZnXNnIHT8gRnSO4rxE67+7u\n", + "Yj6fJ+pEpEVK1VBtt9vNcSTVxj2J0LnW/Xczt8fzY5JoCXHzXqSzjDQxxhC4TTYHOdjf369xdhqN\n", + "RhwdHcXp6WlcXFzE1dVVTYYjIneQHR4e1sjIFF/kXDwQKeQHJPb4+LgWQW42m0ylnJ6eZjoJefLu\n", + "Wqd5SV/v7e3lwbkRkegOCBa8loiopcPm8/mLu2cdKVufEBGTCt3Z2amRRyOqSNqVv3d2duLm5iba\n", + "7XZu4LCOgB94dHRUK5uAfgKpNSeLNCD9PTo6yr7e3NzkGmPN8RlI4GQyScQKeSP19Pbt27i+vo7p\n", + "dFrjTi6Xy+j1es/Ghf6hmyhaS4Pgz0+nQ50JACn02ofyALroNAprxUiUm9NeXnNePxH1qvmbzbYw\n", + "LlX4fYAy6TnKh5R8HlAxo2etVisPjEZfcB2bCbrdbq5V1hgNFBKUxe9lZMU62iicsxv0z1xP68nH\n", + "x8cYj8cp26ZDmIu0v78f/X4/7Ql2wNw3I4DwbOlvWe7GXDnbY5A6l12IiFoqj3krsy3oB1LpERVf\n", + "j7EzkshGF9Bs22DWGciSx4W/I2NO7TEvzoS4OQX6UvsmjtRyuUxDXC5EG9eXUmMMhuE6Gy4z/0tS\n", + "pHcM9Pv9GlmcFFlEJIF3uVzmoJvrQ5Vh0hhMOKRh18yx42K41FwnyuHjeDiNV+aHDeH2er0kHZKf\n", + "N7fJabX1el1LDbpys53EiC3JdTQa1e5Z7myjMnxJFmWsmBf6jZOA8sChiqifS1gSI73Dq7yOOUVx\n", + "w++J2KYn+X7Jw2COn5621XSBpCO2C4Zq4OxktMNTjmnJPSgNAQqM+SdVWpIoSQN2u90aERmHnrG+\n", + "vr6uOQKdTid+//33+PXXX2vwt+uz7O/v1w58Zf1BOLYjwWdHR0d5BI2VIjV4UJDMzeHhYRow1raN\n", + "rrkzTrVA4J5MJuls4dCzAWRvb3s4MNvcI6LGI5rP51nV+6VAAk6JHQ3k7PDwMPr9fo17BHcKZ4/3\n", + "YPcunBX6yPMIAnCoPE84mKT9vIZJk5Q7ER8eHmI4HObzdnZ2stxFRMRoNMo0ignPHGGz2Wzi5OSk\n", + "5hDg7Ji74p1wm80mdwOSiqYvOC5sImFnI7LhnXyUJ2ANWBeU3CqoEHzHzhayYl4b78hYoYPNYfTa\n", + "LDfsoG9MWI6onLUvX75kCqokY9NXc2qPj49z8wb60ilYGlSEkn9qvqb5Spa9kgDeam0PjR+Px5n2\n", + "tS3F+Wg2t+VhTHmgtlWz2cwdnNzX5Hqc6YhI6oedFHNccdzMt/NP8wBpHlvLDWPF707hWX5wPkt5\n", + "4Tmkey1rdqJMLzJlp+wn41H+ze2bOFIoDNcO8ouVAo6j8NKAmfVfogcmOeLRGnWByGfUIyLSiOL5\n", + "enGjhGezWU1pRlRRGwgROWeui6gfl2FkAWPJ9Xyf92bC2+12EnyJNBwJo9iIflA4fM9ePlGto5OI\n", + "alcP48P7cJ139ZhoiLAhwL63uV5G13h/R26MZUTFY/DiodnpZp4wiLu7uzEcDmsOjI1fs9lM3sf1\n", + "9XUNWWCnXKmQnWOH62J0DDmDk2OFihIm4qNeEfLGuEIadt0ucyks49QA+u2336LZ3O7eAnXa399P\n", + "5wbjyDuyBdx8CRzQ/f39OD4+zhIJds5ms1ltl54LFhKx9/v9DF5sSJFvxtDzDc8DJNZOHcHV/v5+\n", + "zOfz2m5GO43j8TiOjo5qSBS6wdwWvg+azM4/b+4wVws0EDnF8TCiGxFZfgInGa5URHUsCQHgZrNJ\n", + "NJqz8iaTSa5H5ALjjNMN18bvzHjjEEZE7uK0E4nOiIh8NjJgcjKGnkDBvBR0NgbTzhFGF46V61qZ\n", + "/8QaKblAyKGdLAdQjLMLNYKQ0Ed0DbqV9VlykVxuxe8ACnt/fx8fP36scX3evXtXQ73MAXr//n2+\n", + "P+gu64TSMgTrDrzpj5ESO2BweYwYMZ7YyMfHx+Qy0tA95lVxLbWxyr9H1DM4ZSbGtpi+GszA1pVZ\n", + "Cl/LuDG/3vTCGL10sDyZIda+gYPy+Cv6jj9gW2o7w3f8O/JZcvicTfha+2aIFPCjvVKEvzRQbDfF\n", + "GBmaRKBsVC0cEdXuQBuM8Xicu6Ps+NBAqIBCSyfu4eEhC1rSVqtVnquFI8Y9Oc+M/mIgI56ft+S/\n", + "IbikE9g1yHjR77u7u1gulzXHjR0RXA+iEFGv3cTfrZAgpTpC57MSBbTTw9+NwHke/E52JB0VeT75\n", + "DGVq4beA43iwaKbTaabIdnd3M2r3+D49PSVZmoKFKGbQG4qO8n4Yw3I7vjcmYIzKBYlBcXTHM/f3\n", + "92M0GsVyuYzpdJqfsTuHMd3d3a0V5ru8vKyRkO2A/fHHH7mmdnZ20slqtVqJuu3u7sbHjx9Tpt69\n", + "e1c7a4wUV0RFTG+1WjUZjKjScDYIGG/vnMH4ITOcUWcHwcVo7QiQUqRRKA8iL2e90bwxwrKIgcII\n", + "NRrVGYXj8Tg/Zw4wmsi+yeNGejCS3NO7kwhiQHJo0+k0jo6OkjiNg4a8UawVp4fdw6DhIOPL5bI2\n", + "phFVxH9/f18rqnp8fBzj8Th1kKN4jCznLJakcKPpNm5e8/6c64xUMpYR9a3qvKPXN7q5vCeBMYGe\n", + "nQMCRxxop4xsP1izRhp2dnYy2P348WOO5eHhYQYWd3d3tcOON5tNHi4dEXFxcVFLcXHPfr8fq9Uq\n", + "bRC0AtaFA90yW2CHwOPWam2r36PjGDdnUjyHvINtHboDOSO16+dhswjMnbpmDNHFpp80Go0Yj8c1\n", + "Z8/Imfvg8j00AqKX0r22LfTVwArjVqaN0f12XO10EehZDg0YvNS+mSOFo1HWdiihuoh6yf+I52k/\n", + "rmGBeNEwIHi13OPy8jIhUXbgGHK1cJQcA/rCAkWAfcgkCsZw83Q6TY/bSsXva0SDd2BR9fv9OD4+\n", + "rm3fZUFTKNPoEnD/SzsfykqtpQG6u7uL2WyWKbwSdXLK0gqTMStzzM73G8ou71EufqdBQDoYb+65\n", + "2WwSLaGuz2azyd1hOLSOjHiGDX7E1rCRCigjEaJw7u9xK51hnJ4yMnNEi7PWarUSmcCBpeFEAX0T\n", + "hUVsiy2SZnMJCT4DugfFNNcJZ5ZSB6enpxFRHVrsVIudVJAuZNw7COk3z/WYGFWcTqc1hA1DaLSW\n", + "z5h/UtpO+2LQUIzUzoqokKTSKY/Y6h+UOsbYZVHgwkREreo96xv+htGNRqORTvt8Po/JZFKjCsCf\n", + "nM1mNRSl2dzWcgIhd+FUZHS1WuVRKIw3qaxGo5FpHYIBdBm7BHEoIiL7hVxjFLknjsJLKAifIxfI\n", + "ON/DGLK2S0NsQ+TUj1GA0mChU0BhcCRxWp1iZ06hbTiVylpzCYuI58e0WH4Xi0X89ttvOYd7e3tx\n", + "enqaa8K79h4eHuL09DSf6xQsBpy1w5iy/gj0Pe78HzuJc887WKdHbNefHRUH2dZBrEHWRWn3LJsl\n", + "dYMA0s5yRKWj2u126k7kbWdnJ4EQAioH0N6xbp1BORPWmNex5w29ZweUMfD3Pb92Mj0uZeqZvrAG\n", + "PRZl+yaOlB0iT4YJ2eWCInoyehFRRUlfi4RQsiX/YDqd5nli9MOViLneqAF9tyPnqMKNCN31QFjU\n", + "5GPt0ePskRpAsaM8gWQxOtyz3W5nVP709FQ7IgPl4cjTwsACsMJzIxq2ssWgGdp11MQYMU82mBCb\n", + "PcY05omF7c9Br7inESKczL29baV2HAIW0nQ6Ta4PRsjwMcoEZ2p/fz/G43HWBLLxwnh47mlEMRgF\n", + "5rfkSHiMGBsUyGKxyLl8KUrGqPP+pF+pE2OEzBw4jkpB9jl7cLFYxGw2i9FoVKshxjiD2pToJQ5i\n", + "u92ucYvYdm1ieUQVCB0eHiaixD3H43Gcnp6mUTT5GafZ6Xka/BUI88gx/Tk8PIzpdJoy5+tbrVZM\n", + "JpOsL0ZR14jIEgpsL/f823ihr2x8qR3X6/VqnCWcNcb58vKyljrcbDYxHo/j7du36Ux73jE0RmuQ\n", + "d7huBwcHmdpDzlqtVgZvFGNFznBOmTtkEoNXcly4J3OPAeMeln/mztE+uofPuS+o0EsN54v7EtTR\n", + "H28Isq4muFytVskjfIk0XRpT7A/oZavVirOzs5wnMg3dbjcDQsYPxInrnGJmvggoqC9GUNRut+Py\n", + "8rI2DuhcEFlnTEgpI4/YFuQG3UM/SsTfa9z6ySCEx/5rnzm4Hg6HGeigNzzPPinA84S9I0h2cE2t\n", + "MGrWOa2PLCGXzkiVjlIJzDjgLxEwnMASDSxtUtleyx+8ttf22l7ba3ttr+21/Z3tm5U/AE4vSV3A\n", + "aEZ9TGorURV+N0TpnQMgJ2XxMaoge7eeIV6iE6NkEdXRDEZo8FS9VdxQLPcEYscrN4wJOkL0Tp96\n", + "vV40m9tihiAXjoJBL+B5gMiwo8MRiMcNCJ/IvkSl6D/ImgmSRAdEyOYmfC3CJIIhumLnSETUECYi\n", + "JafIDPn73iBEIC+bTbX9ttz5BkrCPU2iB02IqA47ns1mWQyR8QaZ8E42o3IgUEQ63tUGaoq8Okok\n", + "VcDYeNs/HB/QSqMum80mi11CNId/0W63o9lsZuFAE2Cvr68zHUTaz++PrLhQHrJIfzudTiJaXOex\n", + "KNEa0m6kf4w6lfJkJOv+/j5LjXjMKMTI2EJidRmDiCrl4fQd6Aay6rMM7+7uEuUrd6yCbEyn0yyh\n", + "Ye4gP0tKAPL1+fPnGA6HcXJykmm4+Xye5UY415B3cIqZ1BnIIf25u7vLOXdK+OlpewzN09N2ZyqF\n", + "QweDQepf5MmlVowYGB2EgwVxHqTMZHSQt3INmxeKnka/+YxP7mPUmjXD+5G+YrfmZDLJzRnIovlJ\n", + "pJxchRw74vQ13zfiaMTmt99+y/V8enr6jBvbarXi8PAw5QI9dX9/XztyzDqB9wFJHo/H+X4uwYOe\n", + "duoJu0W67O7urpYWfvPmTXS73WeoozM76HiPt7M6RqGMyDgVH1Eh4yCnLt/DGsammuPY6XSi1+vV\n", + "9KH1JRxHMifuJ4hdeV3pT+AbML9896XrvIZLpNJZopfaN6tsDunS3AQgY/NpIuqpL64v4bqIisNS\n", + "OlJc59om6/U6rq6uotVq5WGsXlBwjJyH57py4fM8titzD3avRVRcGlIe5XbL8p3NHXMqE+PIdzA+\n", + "ZYXmXq+XaQOnapyidArUTi3vaD6YF2TpkJnEa6i/5AeRf+c9Pb+kAvibn4dhsiPGMyIiFY3LW3Q6\n", + "nRw3uB1eiOaAeBcZ0PxgMEgip40zysaKKWJrsHu9Xo5PuduO56P8Sr4W88OmCjvqfMamAhTmZrOJ\n", + "Xq8XvV4vBoNB7kLjeRi66XQas9kseRtPT08ppygQVynm0FacNB9MDBeFQARZhMzPM73RAqNlo23Y\n", + "HGcKSJ7PkF+nLklfff78OcbjcZycnORc8M6MGw4xir80Jjs72xpSe3t7ScTHKCGvTm0if/yfOmue\n", + "X/7v9CwpnIeHhzg7O4v379/H999/HxERv//+e8xms3jz5k08PDzExcVFzg2OASR6+FsRkSl9+Dns\n", + "tLVMR2x1xHfffZcpf9K6cOvsKJqrxDrAeTY1ATk1dcG80nIe0Sde75Z9gsjyc+tjpwkjtnp0NBpF\n", + "u92Oi4uL+Pz5c82p44DccrcfPDYH5earUavLzg73/PnnnzO1f3p6mk4PdIPd3d3cBEDjOBlvNnJA\n", + "t7Ozk84+toZGEFTWaLI98Lj6wPLxeFxzdmgmerP2vE5JzZV2zo0+IqdsdrFN9lyQZsbGIteXl5fJ\n", + "3bTsMBfoG9vtiMo2YJvKoNTy5XXJvHJfBzu2Azs7OzVubglgvNS+iSO1WCyi2+3mqecRlYNQ5q0j\n", + "qtonNjQl8Szi+eGNEVXESzOxDkK1OS18dn9/n9diqCMi0S2T5miz2SwVnL3biEjiJ3lrO2fkilGW\n", + "nnyTxyHUoty63W7uyAFxcATpBRtR5ZZpLJaXOChGDNww7DgFNvrOjZfGi3cxP8zRAO/OvUsuhccJ\n", + "hcFzcCIajcYzZcP7+XBWO3k4KeaeYPAZZ4yQeR+QX41MeYdVSdy0I9hqtWpOr7eJl3WSuNYKHYNJ\n", + "+YtGoxHT6TQuLy9r5F/Q0svLy2fRKmR3uGPeNRdRIQWgSdzz4OAgLi4ukoeCA2K+Ds4X48YYIB/w\n", + "ixh/b2N3gOHxZc1hEI+OjuL8/DzG43EiU3Y0eA6cJ7gy3BdHC+ffc0DfkRNkic0LvV4vDRyNaNdr\n", + "zLv9QCx2dnaSmxmx3TpPLbNutxtXV1d5Peub8QJFoi84Beys9KG2GCbkyBsqeM/JZFLjlFoXY1TM\n", + "LWLtEUjQJ88xrTTE5pRhyHgWusC8Ke7JWkLv8xwQUHSpDyVfLBZJ1LaepR/ozJdKGURUMlnyWOfz\n", + "efzlL3+JiO2affv2bW1s0aPwVWnU3mK8zQOy7nXJCAjW9K8s90FggSx7Mw3BAI6Kg6G/NUdc6+DB\n", + "gTdj8/j4mJwxvz/zYV7heDzOABDEivfiAPbhcPgsu4FcMF7mfzIGOMIlclaid+aHlcR7fw8nys+I\n", + "qIpQf82xjPiGdaSA1S04JrI2GlXNDtINwO2QwSLqSBYL1AaaKIsB5TMWGdtj2ZFAs1duh8AGytEY\n", + "11xfX8f79+9zG7wjZCM3VtAoKXYuONWwWq2yBhDXcwAphoNxKdNvCAZCUO6cscJ0BPn09JR9YDdc\n", + "iSQ4vUlzasVpjYioGUeMJvcy6ZvvlM1RiZUbCp3UDg4DCBHOgNG4kjRpZw8ZIVJzygoHl0jeuw1J\n", + "g5IyczTt8SaC8n1BLFCMfv9Wq5U7hjabTa6FiLqhubi4iMFgkKTi8XicAQGpQjugJrY7AudcN2Tp\n", + "6uqqtmY+ffqUaSP6HlGhAPzfxGjgfeScjQfMKwiQU7t85rVO8BNR1VMjdYIMowiNuJJWQgZx+pA7\n", + "nGDmcTAYRK/Xi/F4XKslhMHiEGKnIXlf1oB3JqKXkJtms5nPYzcuaES3262hKAQkpSxFRNYiI/VB\n", + "Pzn3j2dbTrnX7u5uppyMnJEmJO3reyLDTrcYuXEw6PXGdfyzsbJeZm34fU0k9z3v7+9jOp3GfD7P\n", + "INKpZe6NETbST//L9B3zBBpZkpFJt/33f/93UjwiIt6+fRv9fr+WFkS+CfCo9wXhmnXhcSxRet4b\n", + "h6IM/spyHh5rdgSuVqssMRIROT+murhaPJ+VZHGuZeeuz4QkZY9N8BzTN9YKp0wwT5QLQmegv12n\n", + "r3T0WWPIh6kQ7HI0SODnObVp++xgmubf7ZC91L6JI0VU4BwukCIDGFEtCIwaEwlcT/OC9o4TrjH/\n", + "yErKQmUIFEH1IncUgVEnJWDEgpQHBs3KxIrQPBv6ybMbjUZ6+YvFImvTcN3FxUVEbKPSfr+fEDYL\n", + "w2NHH1AY9s4Zu/Jv5LkjIg+9LT9z+orxRmiJmGwEiSiJTO3U2VB+DVJmPnBYIup8nlIRYQRxXgxh\n", + "42AaheI6Fibj0mw2n/EhnBb03FJ9m3e0kUKWzJHi+fAqQB8sDygGnCIcK8/xZDKJwWAQx8fHKRs3\n", + "NzeJ0LGVGwd8NBrF0dFRzt3Ozk4t7Uf0XMrm5eVlFr6cz+c13kCZHnPKBMSHQ27hBzGGZYrFaxSn\n", + "xQEJ3+FoFYIu6wHu65Qh6xRZeXp6ypIDyPdiscgdhoeHh7VyDCh7jDHpf97ffD7Pz3q9TlTPfWbu\n", + "2u12HB8fx2QyqaVqCBBAI7w2QE1IL1qeneJpNpt5rE1E1OZoMBjUPiPtDBLPESQRUeNi2pGiMf9l\n", + "mi6iChydDbD+dtBXUhkw7mQj0IO3t7exWCzi+vo6ZrNZ3NzcJHeQcSGrQP+4H84aHDCjLU4rmi+G\n", + "c9Dr9WI2m8Uff/xRQ9Dev38fw+GwFoQhhw8PD3lEE44//bRjRzqSz0xRcbPxJw1lXcNzcdycwrLz\n", + "UKI8yLepHXxOAOD15RpbRnaMAjK+pPBMIUGGOJLJKHxEvShniSxGVHxlI/bYGOyrx9H0HeTMAT/2\n", + "hb45GEYvfq19M0eKCWVx4Sx0u91EpgzxItQYHRe1sxCVSM9ms6lxhfge0C19QPlHVAsfQTWSRX/M\n", + "a3EF54eHhzQUJQHXxtSCaCSM97EA47mv19s6KiiM8Xgc3333XS1Sd/TsiAalWiIk/M1OCNfh7FAf\n", + "xOOGcff9LNQlQmZIn7pHJScCBe7owPMF3O2/MVe8L9eBpkG4xZGjL0Rt5fgzNyas2tB0Op2asXMk\n", + "xHl/m80mick8A0XO4t5sqvpjT09PiargSHlMzGcZDocp36Cpj4+Pefo8lfsp7gjn6e7uLo6OjiJi\n", + "uykC9PTw8DCPPYnYppoitk46zgTOGTVvxuNxDIfDGAwGNePNlnNkx2PocXZ6g/FAcTFXbqASNgIR\n", + "9XpYjImLJPL/3d3d3DwQseV2OJrHufGY3t3dJRLochnIp+tX8U7oC1LQ5l9gXEkPYyQ4qmi9Xsdo\n", + "NEoHNaKqiI7+wrHj3Y3GEYVz3dPTU4xGo5RDnGgoBryPA0GCANK68/m8ZtzYiAFFwc6UdSuOq3WD\n", + "0W47SzbWpY7iu4xP6ejw/ZKaAMWBcSiReE4S4O+uQeTMAXKEXNCgpfz+++8REbk9v9FoJDezTN95\n", + "ffMZRZRZO+YAEkQQJBtZKYNHnlHyIymZYi6fU2W2eTSjcoAb3JN/LiVDfxy42OGHG0bQYuSauSHo\n", + "to4ukTCCYfrCdxgX6xP0D+vM64lrcKIcTGP3Sl4ZY/a3Unuv5Q9e22t7ba/ttb221/ba/s72TRAp\n", + "V0AFlcEDhqjmHVx8F++SLZMRzwnUTmmRljCHwMToMp9ryJHo05wgGh44SJCPdOD75HrL9B3Pw3uP\n", + "qLZj4xW7EfltNpuE4bn3bDbLgoRs68Wbxksnp00qgvubl0BzJEhU5bw/fYWXYb5TRHWUD1G5ycJw\n", + "PZhn+sW4GUJ3lEoapNlsPktfUrCRSKkkxnNWGRGtU4lEsMD/JYGdOTcBkQjKRe6cxmEXC+jh7u5u\n", + "LedPJE+EZs4WUSXjYggalJY0j6s7r1arTNd4LcABgYR7cnKSpOxms5kV3N+9e1eDsQ8PD+P333/P\n", + "atvz+TzTfp4DCLXMhdNJ/B10DJnneqMXzBncs7JyOYgRXEDewZwu5o/iqxHV0TZw2Q4ODmpbr9l2\n", + "PpvNaqn0RqORPA54m47m0UGz2axGQ0BuSb964wDrl/WBvHBPdnrB40L+XGyVeyBjy+Uy05mLxSI2\n", + "m00WemQzw/X1dTw+Pubh5lxHdE9fWYf7+/tZeb3T6USn06khnMwTqIJRHvNI+Y7XKTsPnSaNqBAb\n", + "6xyuM++pTAeScoeyQQqYe3JNibbTyrQNc0EzV5JmXWZu0ZcvX/JZ3333XWZNIipOEjtgjcjAXzQn\n", + "y7u7fWSKU8wgn+i2EgE0gluiK4yxETyPK3YDGeE9QI2Rf3S5x8VZBLImnP5hhJdme0img2b+mGk2\n", + "fMY8W5/SB8aynPeSMO57+vlkmoyo/620XsQ3cqTgffj0cNJgy+UyD3p0jhTBgA/w0q4C7waKqCox\n", + "M/mGlBFMLzTXmYFo7PPreI65EE4R2dBCBiy5AsCU7ouJcUyihZz7Qy61crm+vq4ZKj6DtI4DFvF8\n", + "txqQJcLnviKcJiZyD67HSHFPDKGrIHvXGtA2Qu/UH/fBYfYCZvGXhFM4WIx36YSuVqtadXen13A0\n", + "GE/SGyxMUsl26Hkm8uSFihyh2E1oZu6oQA2J1TvFzLtzmgaFwE4aFFQ5hxgrzz9jz84uuF7spHn/\n", + "/n28f/8+rq+v01Eej8fx8ePH+Omnn2J/fz/++OOP2vPYmec5jYgsvcBzz8/Pc54IfEib9Pv9WorK\n", + "81DW3oIUz+5Z9EWj0ci6PdPpNI0LzhL9wFBRwZw5pB8oTO+KfHh4yBSNS7QQAKF/LFPIgnfY2Tn3\n", + "BoVymzvpPOTK+oS0IEaHtUw9qZubm0yN8O4nJyexv78f19fXcXl5Gbe3t+koHh0dpRzhoOLsI3/W\n", + "TU418R3mxtyUiNIT4uAAACAASURBVPqZiqXjwtqwE807Wpas+1jX5uyYI4ccUuPKaRrGmmtMlShT\n", + "eE4X8jsBgVNbJVWCuZ9Op/Hzzz9nKvH777+vkfTR+RDNTSlA19iZ5B2wSegrPrNDznt7V58dw3KO\n", + "nPJysOY55R39TPSMuXJeMyUXzYAF/eE0AZ6Hc4atsCMLtae0V34/NveUTryDe2wbn9nxcvBt2cOB\n", + "NMfT7/RS+6YcKZRjRCX8cFt8ECsDw8JAwURUpG3/4zOQLeeTza/xYnG0ZOfIzkFEfWssiuElcimI\n", + "lksQmExdKiCfG2akg37wHAwmz+G5OAZ2ePb29qLb7cZsNkuF6kjQjlTZrPD8HROsebadPqIj3tXk\n", + "d39mAqQXyUvRFU5NSeQkp47slA4I48czeQbOCTL1+PhY49yZy2KjgsIyqliO2cHBQQwGgxiPx7Vi\n", + "nkRl3W43I2krqf39/ej3+9HpdGqEdrgSlisWPwRuo7m8NzsWaaPRqMaB6/f70Wptj8C4ublJwzyZ\n", + "TJL/BKLhdQgyhsNII2hpNpvJEyy3RbN2HSThJMAH6fV6uWa4/2KxyKAGo9/pdJ5xbZjLiMjjYVCk\n", + "m011Fhv3pvbS09NT7lajdg99tTGFd+UDmr3e+J3Cu6UM4/S3Wq0aemIOFX2IqLhOyATX8xm7C2ez\n", + "WUwmk1qtqNFoFN1uN/UjyNLd3V3WmHOQwjwhl+hGxhc0gb+zc4u58jiXQZ3J0f5/RDwzlNZ9BLTs\n", + "LiQ4Zf585pwNdkTUdIERCyMXfk/aS0ET1/l+pVFdLpfx6dOndIg+fPiQ3+X8TJwozz3oD/LrjTd2\n", + "9Kx3HVRGVOcuGjFjLl3OhHHh/Wl2Qvx+Rsj4O8iSv49Tiw4y/3c4HCY/cblcxng8zoDOa6l03OxQ\n", + "l05WRKWLIPI7iPZ7l/23g4cd4n4RVSBd8mbtAL/UvpkjhXLlxahU3Gg08rBcYHwcIe8Y88ChMCHm\n", + "mZRH9F8So5kEDCOVjiPqOw9emkATX7l/RL1eDs6Zya8+T8zIEue6NRqN3KpaLiKiGveHseB0eSLK\n", + "iK0h7Xa7MRwO4/T0NI6OjuLjx4/x6dOn7I/RljKdRtQCoueonEVpyJ7rQK+4v50Q1+1x1MC7WwE4\n", + "dQt6aHSHcSOqhiDrKIt+eZu4ZdCOL8+DZMt3mAM+s3PpqsxEMJCCcbQg+W42m9qZcJyxRXMK17tg\n", + "vB3dMhMR6QxFVHA+le13dnbSAen3+9Hv9+OXX37JeSNt5nGmn8fHxzGbzeL6+roGaTPeRLXz+TzH\n", + "+O3bt2nYKA1g2WLnICiCkYjDw8PatU55+7mDwSBRF8j0rDHWFmPKVn6Mk9NE3M+puDLap7iq09r0\n", + "mX45GLC8+fBymoMKgh7eg6rQGCru3+1203kHzfAGFXQMxTI9T2dnZzEcDlOv0beHh4cYj8e1mnZ2\n", + "bkj5euck7w6yB1JnJxuZ47ukHRkbjzFjh7w5ELXO5X7oKeuAzWZ7KDkZA3Qhn5UImNNCRpbskCDX\n", + "LuRJXzy+nkveD1v26dOnrOsXsUUACSL5ng/MdkbA5GeQX+ocgpggf9gQgqzSSTDqQnDjsbS+s63h\n", + "Pr6GBuIMiuvxdnbB5XIIjPb3t2eYejMF88DmI48pDVtQ2m/0frk5oEzzEahEPC/MXM5p+a72Ixi7\n", + "r7Vv5khhoFlsi8Uibm9vYzgcxnq9rcxqZAkhQ2mWRQxBYxyVRtQPYeV3mp0JFwIs8+r+/+3tbUaH\n", + "KGlzDIzAkIZ0X15KQUVE1p4pUS63l9Ajw8wYJcYM2PPg4CD+z//5P9Hr9fL63377rbZw7UwwtmyH\n", + "7nQ6z1J0TpfSMGzsfIIr5ftznatw8/58r0RrSv6T+Q3A4nxuY8U8Mp7mp6CULRs8nz6wuMoImXn0\n", + "bhgca3hM6/U6C81FbFMwLM5ytyBKkaNscIIiKqMABw4Dzzyt1+tEbz98+JDzf3Nzkwqs0WjEx48f\n", + "0ymjvyAWcGoiqiNEPn/+nAiMq8Xj6OM4ukK6+YJ2Eh8eHmpVoMv16EBhNpulowxvkPWOgxoRGWwR\n", + "/WJUmH/PA0ggYzOdTmMymeSOTo7T4TOnZm2EGQvvOrZSJjgEXSnRBYwPCKrHbWdnJ1E20negek6J\n", + "I8MYK4JA70SEW8WRI5SN4XnsYsTBAmFoNps5lre3tzXqhWkMjKPLERA4OLBk3Fhv1oVGQaxv0Q80\n", + "1j8GmbHBdrBTlh1wEfVijS+labATpeFG75jfWaZ+rBuMUDnQub6+rqWTkK+yZATBL7XDVquqMCzP\n", + "YcydJcHZ5HrmwoiSUS9nRuyolnbG70WgyJgSKDgVztg4aOD/zC8OP+l9H9zO2vd4GDWnv6w1j53p\n", + "FS5uzFwQfON00hfbEds/1qydVSPRphO91L6JI4Xxc54VztTu7m4MBoNYraozxVhgEZWxttMDxIz3\n", + "WW67jqgKcFrxmXsFzyCiUho22I5aICgjbDQiFStgC6qjVgs7wsmCtxGKqIwP+WV7zwg/aSVQPB8h\n", + "wdh1u9346aefImLrnV9fX6dht/OCUJX5dfqNUkBp2glicZRl9UuyngnVjAOwagm3c1/Gx6gTi4E5\n", + "9LZcpxfNu+Iz8wz8dwwWkbnROBbb7u5ujXsCemAC5Gq1So4JKetGo5GGjsZY4oDCRYiIJFHD2+G4\n", + "CcZlOBwmInt3d5elCnAqWCs4CIxzp9NJJ+jLly85z4wTqI25KJztxljjvEdUpFKu6/V6NXI3SAtK\n", + "3ak9z2WJ1JpXiEMUUSHDk8kk1yFHOiFfBwcHWazRpPx3797Fr7/+GpPJJA4PDzOdyVzQjzII47mP\n", + "j48xGo1q8oQMErUTLEZUyh3U7fb2Ntc4SF2z2czaetSgm8/nuQ7hkJbIAqgQ1bO5DqRqOp1Gq9WK\n", + "N2/e5FzjRONsgZru7u7GcDhMFNOlH5xGIx0DtyWiSqF4LZUpf3SHxw2HCGTExhWdxHOMvKFbQKWM\n", + "1iMbjJObMwoue8H7o0OYZztE6Ogyw8E8YKdw/iMizs7OYjAYRL/fT7TLxpo1wPyyLthYhBPselfI\n", + "ptPPdrIZu1JfMidOJ9q2svYAFYzGAjY4qOXnfD5PDibyaF1DUMPmFY+bwRTzA5EXv4vXE/d239zo\n", + "50upYt+3HBuanVTG+yXELJ/31U9e22t7ba/ttb221/baXtvfbN8EkQKKM6ROtOjdTbSSiNxut2v5\n", + "TbaKgkgRRRF9cE1ElbYi2ii9fK5z3p5nRzzfjeLcrmFEPP5yq2ZE5WE7v813F4tFonM8F/SGNEwJ\n", + "xxIl2isnAiJ6IqKk/2/evMldUOW4ma9E2tRoHTs3HM3w/jzDxUhp5go48qSPRrYctRFxedMB80TU\n", + "YXlhTBkfEB9D3/7n7zsq4xk0okyiYefbneJljLyLCcTUkDz3plimizPSnA6CbI2MjUajJJvTD0oV\n", + "rNfr3P1KqgN0zMTw6+vrTA9GRI1nSPFGiOjr9bYg7GAwSETCZ7k1m82MTg2TszGDXTZeX57XMvJj\n", + "HszT4TPu2Ww2M93OO3neSP9Np9P48uVLREScnp7G6elpnJ+fJ7p2dnYWEdtipaQjymNwWq1WdLvd\n", + "rKZdbnN3BAySxHvs7OwkCd27Dw8ODmpn5a1Wq0Sk2u127nRiPTo1wc5ckEjmt9vtxs3NTdzf38fp\n", + "6WmmeSO2aNzt7W3tXNDPnz/n3LNrmirlfgfSlWzbd2HGErkreThO+fi7rIWX0n6sXZPCzZvyhiMj\n", + "9Tc3N7V0nrmMcM1A9FzklP6AtnqTERXvWYtlio7rSM0bbRqPx/Hw8JAHHTslxvuhA0GA2CQEKlva\n", + "nVKX+TvWMUZWPE8eU+tK72b3GBphQhasv4wE2656w47l2J/RvHnDfK8SvXZDB9CQC/PzLGv+vtG1\n", + "krLi76Gb/lb7Jo6Uc79eiHt7ezGfz/P8HZcjcOopokoVke6CK+C0gQmPJsnyGUoNY2WyuEmK8J0i\n", + "qoNr7dwxyIbd6S8ChRBxv5eEIqKqKG2SekSVUvMuLjtm7EJid8779+9rBGyUlQn1kHCBcO0EsojI\n", + "h9uhdB7d/TB5Ex6CU6nMO5/RcNY45sHj5gUFhMtckLu2wjCviTktOUkYJBZPSXAu03M0O1+bTVW9\n", + "PCKS00ffmCufUQbEDZTPHDN3BBMR1aHFm80mIfPLy8tot9uZhvIOMI5egVuFMWTH03A4zPcnRbFc\n", + "LuP29jYNMM/lvZl310QjWMDQuEr24+NjOhdwQ3h3O4iMH+/nTQOWJwcH7D7z/G42m1pQxc445hg+\n", + "5d7eXh6lFBFxfn6e1y6Xyzg9Pc00JGOMM1Te//DwMIbDYe5CshzjgMFnImBk3tFNDpQeHh4yLQz5\n", + "HYfv7du3WZkeA877XV1dxXw+z40k8/k8rq+vIyLi+vo6hsNh3Nzc5Jicn59HxNbh7XQ6cXR0FJPJ\n", + "JO7v7zM9jY7iMHdzwJgXBw7mgNqBLIOskjPl/5vrik3gnjaQcIa8gQQd1uv1ckMD482OU9az7QCG\n", + "HhkpUz+kWZ1KJMBwSozmVBMbB8o00e3tbczn86wJhwyjd91XvzunZJiyAtfHQaavQdegH80v4r1Z\n", + "27ZDUDrQiTs7OzUSOY10ozlbLjNSliPwmvBZkgRGTrGV69ubFPiJfBG42z4/PT0lxw1dZeespOv4\n", + "npZtpxzNT/ta+yaOlCMdIz9MAJFZ6UmbNMxLW+lF1POeOGclxyqi8kbhTxhZstKCe1Q6LRhtGwV4\n", + "HDzXdZTw9B19lVFGxDbyYSs8jf6ASpnESnRAH+DInJ2dxZ///OeIqKNm9u5RROYyRdSj/VJx4Cwx\n", + "BnZ6PEdE5GVES0RjYry5co+Pj1nQknd3P02AtbCzMPx+kCPhgXn3lftqArhliPm3sXx8fEwekzco\n", + "REQeVOv6MCa/866Mh40UxOCTk5M0yMwFCq3X69V2fEG23d/fj5ubm7i5uUmjGLGNzN+9exftdjvL\n", + "MfAOnHPZ7Xaj3W6nEWY8QdSWy2U6bnCROp1OlhdwLR+IuuzOY2wODg7y7D94QOZGWX7Kmk44wiYB\n", + "05gDnE0jmRidbrebO4W4L8URkcXxeJzrzXxEEGLvsqL+krlaljfWi/tqAixrzeRfrsVpYp4uLi7i\n", + "xx9/zHpQ5kCenp7GbDaL8XicBoq5o4gqKCYOQ0TkeZD9fj+Ojo6Ss8V4QuhHLzpYctHViEhuF5+j\n", + "L6xHPVfMqaN9xoyxLPUJP12ehuvgG8HDsU3Z3d2NyWSSx/3QIFC7bz5KCJ2F3rGjx4aP0sFGP1G/\n", + "yw6RETj4jSCONvKsA6NVBwcH0e/38/BhGn1DhyOrHmtsA0i59Tc8Y+aNcSVQcNDrHX3Wl3ZC7Nw+\n", + "Pj6mvvCceg4NWHgOsJ/0hXEpuV44SThaRn/R7eiv0nZZPiPqO02NJpZc3BI9K9s3caSIQDlDKqIy\n", + "3nj0EVVUjjFx/Smu8w46tjgbqjWZ0QvRA9hoNGrbZ2kmDzMZbDlfLBZZVdnfZ2Jd04d+skAdRURU\n", + "njKRhreP4nnTdzsdhndZaOxq+f333zMtQ7TgCIT7EiUTVTBm9JV3MOnSEZ3fEcSNcTOsDDyKovbu\n", + "DZwkl7tghxmIAn00wmTFWUYNbPsGHSzJ5jakTichQyhmO8MRkc4TqI4RE8afcaU8BH3keqe0+Wy9\n", + "XsfNzU0isTa09JsUK+k7vutzKvnuyclJ/PnPf47lchk///xzbhWOqB9EfXx8HJ8/f07jPRqNYjgc\n", + "xq+//hrz+Tz++Z//uVYVm8NFHfkxbswrDqxRB2TBKQ/mmnQRP/kOzyIt7bQA+oJ7r9frRBsiIonU\n", + "EVuDPxwOawocWWq1WrkJICJqKAuyhh7yzjmTxbknShvZZg7ZtMD9ymAKA8V72Rn8/PlzljGhDk9E\n", + "5CHVpAmNLA2Hw3TIkDWnMJrNZr7z6elpzhP6zP1xw4DRP4zf175HY97soNiB8Bi4ryCg/N33BMkB\n", + "mXKwvL+/n7tbcTiQCxfxxa4Y4XbWwrvo+v3+s4DURHtqc5UoHn3l2aChEds0MmsIh8Zzwd/R29wX\n", + "mTdoUAatzAGfG3lhNy/3N9JlPVrW0UJ2cIYcKNDu7u7i/Py8tmHqawAC9zOyxHqCkmD6i9+FTSH8\n", + "3fbRqVv3zde/hJqCFtvu8+wShSzbN3Gk4D3YsUEw4BLYCOGEYORQ2hFVntXIhJ0bL+oSbiUatEce\n", + "UUF5XsQ0Sgrg1ft6eCFlnpdnM4H26vkek8f2YxpCBkRv6JvnoaBd1+Xm5ib+53/+J969e5fCZQVp\n", + "hYZAITgU7iQ6dMqMqAyj7pSox4n7enu0OQ3sooyoc6eOjo5qc2jDymIuI136X0bQ3mJeLgI7qDYO\n", + "GGyQH1cIp+9sqfZOGuYVQ1vubCHqB+Wy88a7LRaLODs7i7dv36byhRO1s7OTqRhQIJxElJDTficn\n", + "J/Hly5f4y1/+kv3zDsPNpqoX9fnz54ySj4+P4+zsLH799df4t3/7txiNRolWWX4xHjjuIFdOjzA2\n", + "pBeRX6J65qaMcC0z/KS4KfNE1EgARbkC5Jt1NB6P4+rqKtN7jPV0Ok0E0WmKiCrVzPsa0eC5rENz\n", + "ID0nBFPMuWuh2Tn22mQdeJcoyBAHSCNH7DRkTq+urmrlD0hZLZfLWvqK9XxwcBDz+TwajUYeLbNe\n", + "r/NvZb0vHEXQcfpq9LB0dkp9a2e6XMN2tLxTmLHCqfKa9r1KRAZaAzqSNCsZA3Y6Wi+xhlxjzfOE\n", + "LLDuGXsKozqQtGFnLnd3t0dGkbpdr9e5S5L+WbcbzbFT5NQZ3/OYGpHC4TH9gnHmsxJUMD3D92TO\n", + "+d32koYjaX1HfwEXPN6lnJjr6rXC2mGMCFT4WdpaxuQlCg0yZkCDuUeH2PHj2S8FDbRv4kgRuboy\n", + "LguFgXZ6A8ElNWAym6NQBJ/rgMxfguVs8BAmC1TJb7IzRokGCgnaaDrHbAWMAWXyjDI5V1ymgEyU\n", + "JJowcR4BiKjOboqIVB7z+bzG5fEc8E7l+FDg0+ifieCPj9vCgERKJqLjZLJ4HQUwN1zv8WbR7u3t\n", + "xWAwqD0P561cGDyj2Ww+g7Bfmu8ynWDj4kVq5edUKoYc5NBFXDGIZWqpJNAbCXPj3rPZrKYYSDc4\n", + "rWsiPGvp3bt3cXx8nPP/yy+/xHQ6zaNOOp1OGszJZBLtdjvu7+/jl19+iVarlfys+/v7GI/H8eHD\n", + "h3j37l3M5/PkaQyHw5r8N5vNTCX3er1ajTdqNDH3pOFKYjC/o8C95X61WmW6y2uAe2LQIbguFot8\n", + "j263G7u7u3FxcRGtViuurq5qDjG8osViUdM1oGJOG7h0ByiYgynPhcm13JO0JH8j6kU+HBARFdPM\n", + "2cH4R2x1InXnms1m7QgcUw9AjbzWlstlOsOTyaSGkJC+RO78fnakcX6c+kKOy9QcDgY6z4GN0WUC\n", + "ytLJcurdDgrlLUD8cEYw2qw3r2mCddKY1lFlOYSIqK01+KmksZE10Cg7krZJ/GSMQH+vrq7i4eEh\n", + "hsNhGuoyDYUzGBG1NWAebqNRnbhAs7Pg9394eKihcLYDlhs7aJ4fxsuoIt+jkLBlH33pFJznHBvy\n", + "UvoM5L/MKPEM7KVTm3DJsF32Byy7OHhG1bDRRspoZUarbK/lD17ba3ttr+21vbbX9tr+zvZNECm8\n", + "XrZXR1TpHVAHIqaI6rgHvlOm0xzhOq1Cjtv5WrxhQ6cR9ZOg4QuZ4OocMz9NzIyoDtk00dqRJ5FE\n", + "yZECojQnx6mCMlIFIen3+5lLh2zqCGq1WuVWbXviEdUuxvL96A8RD1GRUQLG0DslGEM3eCvM79PT\n", + "U0aKoD00ECLuBWy+Wq3i06dPNZlwpE8EATrAeNNPoxCOMEjLGLrnJ5Esc2GEymkdkBe/O1EQiKej\n", + "KKc2DRW7j6vVKrflR2yRE9AIdn8xx0TU8Jqurq4yKifVsF6vs/gmxwPNZrP48OFD/P7777XvMg/t\n", + "djtLHPzXf/1XjTT++LitdN9sNuPs7Cxl4c2bN9FsNnPXJegC/VwsFnF/f5/8LG//h+dIpI7M3N7e\n", + "JuLGdaQMXO4EVMtnSTKHoCx3d3fJL6JYJRtVqJJuuQDlckrFKACy7J3FToN5rTkt32w2a0flgBqA\n", + "upacndlsVkPHQEH29rZVvklDNZvNODo6iogt4vH0tC04aY4JcxFRbVlvtVq1Y4g6nU5uvTfa3GxW\n", + "h7qDrlhu6a+Rp5KozHecRrWclOkwo/boBtYr6x2S/nq9TvkZj8epv9kFDlJrkjVjZBSbOYB0bfSf\n", + "MeC9jVSD1L6UAnKKESSNOQDd4h14X3N0sCfWr4w140wWhf4Y8fb/yRYwT6UtMupotMopwXJOjcSW\n", + "5G9sEmvA/GXslncVWg85Q2MEDLQJm1pSe/icfjjzgNz67353xtlySfv/HUeKF/cRA6PRKCeuhH9R\n", + "vHd3dzkQziV7EixQm80myxsgXObeuLq04UgTmq0sI+qnjuMQmE8AlAgPiPuQnvT7lVwonC/qCdFw\n", + "sJzO4O/NZjMNCNWdIyKP2iAVEVFPUdrZLHPWKOYy1857wEkBtvUCN9HeHCAWC6RnUlgRVe0RHFvn\n", + "w9m94maFTr9NhORvhoDtKHuueJbLQhhKN9yObABzo8QtM9SegdvCHOMIO13sBR5RGRAO8KU/du4a\n", + "jUY6mcDTjcb2CJj7+/sk7GMIu91u9Hq9+Otf/5ppuH/4h3+I6+vr7AOORcR26/xyuYx/+qd/irOz\n", + "s7i/v4/vv/8++4JcTyaTuL6+jj/96U8RsXX4qEeEUTG8z/U0r1FkCGWJXLCeSdm22+2s6u5UD/do\n", + "tVq18g+TySSJx+bBwTNrtVq5Ziw3yBHv4DIVbJDxzuGIKi1kQ0Nj/drIUKZkMBjkPLCbkLno9/vp\n", + "BN7e3uaOyIitQ9Tr9fI8QY8JKRGcTHZBR9SP68HBcKmV+XyevJ1Wqzo6yBwlAgzrTBuy0ijyuR1C\n", + "ZB3jzBq2TrTTyucmXOPYOOhinnCsKDvA+u71etl3TgswSdsUE2p88RmnBUDdsAxzHf0qid+uis67\n", + "E4ShKyIqLmV53JhpC6Qynford6cxFyXlgPuZjmJnhb+x7uzYoYuYF8ubbabnCVACp9XOGUEA82c6\n", + "DQ4R48r6sSwtFosMLO0M02/e28G8OVpl+o7xNAWHd/9/tW/iSCFojlparVZuyTYxNaJaGNQ2Iaec\n", + "L6H8f0RlkDA0zp1bgKzwbbxNfkZImQy+78E1zyuiyqdagP0cFizfJyLHWHAwaERF7ja3onSkMO6t\n", + "VnWqPErJx+V4MZHzNzfFAscYec4iKtStRFx4BouMe3vHE0YIUisN48+7lk4m6BmOFgufd2ShOUpy\n", + "n5h7I44eEzvtzHnE81PVPdc4IEayMDL0uVRgzFXJ40IJ8hlISUTUtqYTQTI/OG0gKJxnxdwdHR1F\n", + "o9GI//3f/62VMWi1Wrn79OrqKtrtdjpB0+k0/uM//iPG43FMJpP405/+VON2YNzn83kMBoN0sggU\n", + "iPpANRjnZrOZu5ow8owTHI+SbE2Q4I0NyKiP02H++v1+EnnH43EiZPAIcUIcUCF/DixK3pbrW/Ee\n", + "IJKus+N5K51GjAZGkXty5l+3242dnZ2YzWbp8D4+Pkav10sZIApHLkajUR4bRF+RW8uvOSQU5+Tc\n", + "RIyRx3uxWGQRVgez3IuAzOuC57sfNtDmQZbcSX/uYMgoNU42fWVevIMYmaJILXO9XC5rXEWXJzFX\n", + "Ep3NWjY66KKTBC9G3HBOGK9y3fNeluFms5m6H9vAO5Q7PyHJc2/GxFkVmjdyvBRE4pzj1JtfxHiU\n", + "G4jgWuGk2H69NJfmKbNxjADGGwbIlpT8KPsBL70DcsguaaOcrVZVWsd/517oW29qMO8aOXVdSNb+\n", + "19o3caSYFEogRFQkQG+pNgmw3W6nYvYL2XiWRE0GgAVgeJAokf7YQNuz32w2uaWbe7qhcLknjk7p\n", + "nLFLDQ/aaBgCjxDv7+8nhE8dFJwMjwtRCv2zQOHBf/nyJRVEGUXbgTBaRZ9N2LOQY/DL+zlKIerk\n", + "XovFIueY75FSWK/Xeb7i7e3ts8gU+N2pFfrvui1W0I6WIuopX+YbZVo6p3ZCgcLpJ3Lj/3NPGjt/\n", + "jMp4zB0EMI+kPIlE6f90Ok2UBkTECoxgABTCjjSE5GazGZ1OJ43jYDCI/f39OD8/z5pd3PPf//3f\n", + "Yzqdxs3NTbx9+zYJye4rNa9+/PHHnEPqez0+Psb79+9ryDBGwakNFx+ldhrIsaNg3os5NXpyd3cX\n", + "nU4nlaBR0JubmxgMBnF5eRmj0ajmZHqDCGkVxoZ16ajc+sBrFJlg/hlHo5Zch0EhYOH9IUvz7tZf\n", + "k8kkv3t2dlbrC87saDSqUSUYt3a7nboLRwuZmc/niXAdHh7WUD7Gu9y9ZxKxEfcyrU/gUeoZrgcB\n", + "t/EtEYDyOtBEB4bM/3K5zFIPzCk7StF7dly5D3rE5x4yXhGRBh/75E0P9LcM6HDSyjQvc4Ls29nC\n", + "QIPaYF9wPuyg0kB/SC8b4UMWsYu8p8EG+o4edzBgRBF55Zl2gMpd97x/SZnB1nFff8Y9WMcObgjI\n", + "CKJs51kv5WYgnjebzTLA9o5Vnm09YZuHvbPTH1GVdvlb7Zs4Uru7u3kMjA9njaiiPhucdrudfCoW\n", + "+0vfL1EXDCyD4PyseVYINM/jXkykBxXhKhd4RJWuMcJkhW1nwGkfvm+0A+EYDAZxcHBQ40PQ4ExQ\n", + "HM4CBe9qsVjkifXcm/6U/xzJ0Fe+S7OBJCX3krPA4ud5KCHm0NfgLLIbzgubcWOePcceU3+/7AvO\n", + "UOn0WaEy9+zEw/Fy6oPrO51OLnBD/yxCO+WlU8DYGlYG5cAZ8Nig+Oinjfju7m5GyqQxnGrkmBC2\n", + "/r979y7l5suXL3FxcZE7Z/mMQ2zfv3+fUT/je3R0FHd3d3F4eBhv3rxJ7mLEdm1NJpP48OFDNBqN\n", + "mEwmKfukz3AEHh4ect3zDGS/THmyFghCGDMCBYw6yINT0IzV/f19HB0d1Zxq5AinlzH10T4YMqf2\n", + "LQcg3jwPAE5hCwAAIABJREFUJwFuF89DP1EM0ty6vb29dOyYCwd+Z2dneXyQFTpcQZ4F0sX8Ird7\n", + "e3vPnIxGoxGLxSJPkCC1wgHAIC42sow7awkn7KXGOkX2jcgQXDht4u8ZIUJ/oJuNLhCQPj4+5vEt\n", + "Tl8a2bYRxrkiI+Lgw4gEuyl5b8pp8CwQScY7YmuL2NHpNJkDVgelOE7oRae2kF9SgiWPEn3vXWpG\n", + "UMq5cMqs1OvuG84EffG6NE/L/2eesKnW0fSV59pRs+PJWqPhYGGLDZKUjqRtADsHoZ+UTqZ3QZfO\n", + "J0h1GYwzfmUA7PZNHCkWLk5ARIVycO7US3WkUHoR9e3t5aQZAkUR41BZEFjcLxlZ/k4E4QgDZ25v\n", + "b68GG3PfiEp5um9WEBYM5+TL55HTpdQCW8jd106nk3V0SpLf8fHxM3Ih/cHZiqhQg4gq522iu+F/\n", + "uEAsNISYBY/w+/1xOIn0rRSbzS0Bt9vtZmTgaN78CCslX89Y+DPfAyeN3/lXKvanp6c8S5BoyqkK\n", + "5h8EjWgex8oRr+UUeWPeS+XOfZ2q4h3m83kqCwxuRIWacL3R3C9fvsTT0/Z8PY4FMX/u+vo62u12\n", + "vH37NlqtVhLRV6tVjEajNDj9fr+GvoCQUJuJfp6fn8fR0VF0u93aWW4RdUI5TjQ6gNpwpOncWPc4\n", + "J4bXGQ+cEPhnyCn13g4PD9PZNCeP4An5dkFSlCny5Ll0WsVGH8cGI2QjjGOy2WyyZhByA0cKOWu1\n", + "qlIUyNf5+fkzsj1oCRsRkAEaaE273Y7j4+M8IgbHeDAYxGQyqSHdh4eHacDMSWFdeCxIMzr4fMlx\n", + "Kj+zbuY9+P0l9AXUGB2OA4qeaTS23DIQHdZFmWLld/cNWXHNI5OUbaAxvs5yGOVh3eOA81zkxMib\n", + "ZZifOF8u8Iu+LtOFpfxRssOZnPKaMsA0guTUHsip0dWI6lxcxqG0lw4+nTovEX87Z5av0pnFcUMf\n", + "e+5xlqbTaXKg/TwQfBxinmPqSGlnDCaUwECZxn6pvZY/eG2v7bW9ttf22l7ba/s72zdBpEajUcLU\n", + "eLx44ERtRiyI7rwLjobn7Dw73rijVe8qiKg4UnACSvIcKTryyWWEY8Ia183n8/SE8d5fSo85vRNR\n", + "oTygbsDKfBcEp4wCgURB9oCxI7Ze+9PTU0KcLrZGg+DL+72EANK4LykK+ASGPP0dw9f8NNLn1Kqj\n", + "J1IP/szIAXPnVsLX/I2oDfnwThpSL07v0k++T3Tmwqr8PaIqLBtRFTEl3VtGMKAN5PSRL48XyILR\n", + "KpAx754qd6yaQwWfaXd3e5grxNvpdJr3JAV4cnKSu1dJUfGsvb29ODo6itvb24yS4Uydn5/H+fl5\n", + "/Ou//muSu5fLZXz48CHu7+/zqBvI7WzxdukLk3+R75c4jUTcpLG9RknhuOQDRG3QwX6/H81mM5bL\n", + "ZaJg+/v7MZ1OE/32bjgQpfV6neiaURNHvE5v0CdayRMBRWw0trsu6TNn9+3sVEdcse4oQ4E+cLqQ\n", + "MfVmmpLW4PQIpRFms1mmUTgPkesXi0WmF42yMGZ7e3u5/b9E5Iy8Iqfl+nbqzH8rKQ4eR3Qlusop\n", + "HOYNBJjyFug0Ut9GGczrRCa5rtfrJUrDeHqNIqtGuv2u/CvHxTQCnut3QBdYlmxX0G/Wf6Q2ndJl\n", + "DYO2Oo1Jf8wlJV3qFNbj42MN9UQ2yh13nnOPATbTGRzktCz7UqJm9JvP6OvR0VFSgXxPTsG4v79P\n", + "/vR4PM77QXlxdofM0EsoE/rbxw5FVPawTPG7fTOOVEQFaUZUC/D29jYrxZZnv5FOi6igQBoD6p0T\n", + "XGuCop0pjFu5648+4sSYQ1OS9pyiW61WydPwYvLzEG5PMEqfrcdOa5owCJmXMSOdAFfHfBYWCie9\n", + "25BFVAbMBDveA4fMZx2WitJpljJX/lLqAy4AzgsOB9fjPGAw+Iz58Th4btfrdRoGO4p8D+VgJeCx\n", + "Z1F5yz0LB8K2nSzabDbLVAjX4WTZKTJUzZbykhPnvnItjflhF9r+/n7tOIl2u52E29vb20wLQeTE\n", + "EYLPxvwOh8N4enqK2WwWnU4njQl9xYCbl0NZh0+fPsUPP/wQ+/v7cXl5GRHbqthwekgn8e6LxaKW\n", + "0sTBpy+eAzvJpPuQTXMOcaSY12azmbvfIqrDu0nvcbxOxJZSQLqUtca4jcfjXL+c+4mTRfV2gjOn\n", + "r1iLcFbKtPbd3V2NZI5Sht+GnJPG5DrkBFnhmJvd3d24ubmJx8fHGI/HMRqN8jtsIMDxMmmY47fg\n", + "m+3u7qbjtlgsYjab1Wp0OdBAFk2JMK8ThwXdUKZIWL8lcZfxdnDFPfn8/v4+D5+m0Q8cPJxFKtZv\n", + "Nps86BvZn81muduPPvPZZrN5xlWyjuP9GAtXkmcOv+ZcW/e7XA625SVnCV3h4Jl72W7B47Njx3g6\n", + "nY2cEpzyPrwrOgSaQFkuh8DFqVOa72XqBoFjs1nVXfTYOnh0OhlnuNvtRr/fj+FwmOvCO3b5PjaR\n", + "6vN7e3vZJwe+pFDNieZ5zBv3sK9gp/ql9s3KH5DnfMmrXS6Xz4htJRHNxpt6VPP5vEYAxji3Wq3o\n", + "9XrPJp9m40YzEmSSekTdq+f3iOqEcHvldgjg6UBwtHOyWq3i5uYm+v1+HB8f15w/cuB2eiIqD346\n", + "naaxwcj6Pfr9fvJQTJDEszefw9exNR1UgDHFyUIB2EB7F5sdD4wBC6fMj+O8lWRrE05ZqH+LM2Bl\n", + "gnJizFx0kTEw0sX7gS4xXy5GimPC2PjdI6LmyL+0HdqLn35gdOwMlvwpHG3X1aLEguXE26XhdGFI\n", + "mA8iOWoQcdRIxPaMvuPj47i9vU1ekhX/bDaLH374IT58+BAfP37MvnBg8tPTUwyHw+h2u1lSAYNr\n", + "JWpngeOCvCOPuScQYi3ZAcEpJ9o1fwynDIeJDRuMG4fQQkZnHo1QTyaTLD4asTXCw+Ew9YvHNKIK\n", + "viyTyAF1veA2cU8MoI054w2SzK5GNt1EbJ3B9XqdZ+xdXV3lzkOcAwwOHEueNxqNYrlcxmQyyaDB\n", + "c2iU3zoRuWQeza/h3c0DMv8S/VeuU3OCynHzWqH/5Zl5BC82dAThOMDwq5ApHy3jYA++TatVlTJw\n", + "RgF9CZeJvoMOsjvNtovfzZGzjkKvY/i9KQgdav1Iw/EoESCutS4xj5U1ZSeS96CQK+jL3l51HFm3\n", + "242Dg4Pc0cnYRlR6jHVjgMRrgrl0AImjz1zwGU4XZ0xSuJNxA7TAsYNz6B1+Jd8Jnc544eBFVPYQ\n", + "Hqht9/+LHxXxDc/aM5kuooLrcDIQLD7jOgsEn2HsIGPbATMZknSXrwdJKCMoP8cKw9FxmbZD8bCg\n", + "PAFMEg6NYUyUy2q1iouLi2fn0Hk3CgsronJIqeHT7XZr6TkWY6vVyoNqEVQrH0dlfueI+kLgmShU\n", + "E/Y9h95JYqfBBFEraIoGEkWXAu77lOPNvf0ufIdxBbXw9w1D27FzGtCy4zFtt9uJQLwUdQMNO51M\n", + "UUWQGRvhMvr1+/r/L6Xh+I7J18yb0zBOC+Fg7OzsxHg8joODg0RyTk5OotGo6rusVlUNtdVqW+l5\n", + "NBpligiEBIfkzZs30W634+bmJpXb4eFhbm9eLpfR7XZr6xfD43pREfVzJnGkyzpeGL71el0bm8Fg\n", + "kMZnNptFt9tNYz0ej/N9n56e4s2bNzUna2dnJ1EdIwiz2Sym02kiH05RsduNMXeg1G63c+fiZDKp\n", + "obm8vw/Z9U6p5XKZQRYOCeMNujSdTms7KNlVulqtsnQK+ouU/f7+fqbGXOsNB5Q+uoYW6TICCqP9\n", + "OFjonDJN85Khj6ijURi5MmhGL3gOJ5NJjMfjdAScgqWvh4eHiT5ZbhycujmtizNhG8R7gcw6eLIu\n", + "sL2wYw2ibH2C7POOTkPZoS3BA+anJK7zLGTE9sDX4jiUtm13d1unsdPpxMHBQe2gc8CPk5OTmjM1\n", + "mUyy6KkRQt7D+tRZkzIVuLOzk/ccDAa5RiHvs+7YMToej2M2m8VyuUwHm/WKHSkDGmcn7Jyie7Dt\n", + "6BX6+VKGye2bIVIMnAWNhU9kWfJWIiKhca5DiBlMFg7Piah2BrFV0v0oHQHuzeQzgDx/PB4nKkB5\n", + "BDsLPt7CSA9pBN4F+J/rIrYTNplM4vLyMgUYp8XRkB0pIF5H1VyH4eEdOMCUZ6LsEXBD0oayvWBx\n", + "2jyPFkbSli+l4UB/XkoJehu455doHYcXeSjlyf3h/dmlQXTl6Bk0g0Jx3lpr9Mi5cuYd5Wf0D6O7\n", + "Wq3yfu4nyr6s98W7olDMV/Bc0Mx1enp6yiKQIDJOlYN8PD4+Jl+AvqzXVYHbo6OjWuQ/Ho9TuQ+H\n", + "w1rEyRZ+EElQECK54+PjuLm5iel0mn2hphHpFiJ+xtvOyO3tbXKrdnd34+zsLKNhR5gYHvpFGpax\n", + "wXHzESl2el0qgfIQEVVNK8ogePzZ+Qj9wIYYhxVF7Xd0KQbk3Gv+/v6+dugtzgm7eClT4CrmrAfG\n", + "ZjqdZn/u7u7S6eB+vAMIpE9a4J6grfTfc4NBQmdbvpBhr2enjNCRyFRJvbD+ceDgNc/cIVMgijc3\n", + "N6kj4Qcy9kbduQ9oFSgPcxZROTY8z2uUccSJBGHku+h1B+iMhdGl2WxWQ2boQxmQeecfes16AHk2\n", + "CMCzmQsQd+tFEDBnTEqH/+TkJB0ngghKDlFU15mDyWQSFxcX8eXLl0TNjbZbfqj7xrh5N7jt/HQ6\n", + "Td2DrqVw87t373ItgdRbXzqgtn13MVFnDdy8Tkod7GC+bN/EkQI2da4VQwSU7Tx1RP2sMje2MuMY\n", + "4KxE1CvQAsWW6R0iMASSZ+EIlAt/tVrl1u7BYJDRD/dcrVapwHg2DQ8ZI4/iM1LTbDZrXAAbAD63\n", + "h2042FESzgef43Q5p0wEQMqkVBwIpAWohJq9oFCWOAXmifCe5lvRUNAQbv0eVrLlAn5JPvhbyVPw\n", + "IsXweu4cudlY2JHi+8yJiyc6jegjbTx2yAPGAiOPkraDamSNOXcV84jIjQk4py6Sh1LEYcfxYdwu\n", + "Li6i2WzGn/70p0x3RGxRl8lkEu12O3q9XoxGo+wLHC/m3+nynZ2dODo6iouLi5hOp3F4eFhDbs7O\n", + "ztIRfXqqOFInJyeJvJQI3/39fTq9yBuK9+7uLobDYRoC82AiIonpjJ1lkfXJfSeTSQYuGFqcKVBA\n", + "3h8Hi3F1oUenFOBXRWyDr/l8HqvVKrlnyJvnDF3E86bTaTorOKomhiPTIIrML6kOc2l43nK5TN4K\n", + "fCGaNwHwTPpGSgr9Rl+dirLDYn5VGQQZ8WaNOJApr2NcrQv39vbi+Pg4ms1mXFxcZLAQsTXsLgJp\n", + "buhms8l6WWUpFqNRERW/LiJqWQb0rtNb9JE+lzoOFAj9xpihR5BTb2xAp30tyDVqwv24FufO+svf\n", + "KYNYz816vT2fs9Pp5Pu32+3o9/u5PsqyGaenp7G/vx9XV1d51BHzyRhjSxwsUtgVmgLyDeL4p//v\n", + "CKqIqNlLBxi+J6iYuVZG/rHRzJODIQc/zohZfr/WXssfvLbX9tpe22t7ba/ttf2d7ZshUnjbJiSa\n", + "0FdG0EQ/L6FSRKrwHJz2wyMGHizRqpLgF1GPkEgdmo8CeRS40ygI7wTXgqjFRDzQFzxeUBATac11\n", + "MTpjIp/TlbwL1xEhE0X5ufQHJAK0zrwl8yQcCXIfPP8S/jdq5pQoCN9L3r1TcyCTHm9kxTwN3tE7\n", + "kIxaMqaeX1f+Bf3kXQ19g/LwLMshssR7esemPzf3B9kiMkOGyk0McBQcUXEvpzrpN3NNuujw8DCj\n", + "cu7DmB4eHqYsXl1dxXA4jH6/n7sPzeWCHxGxRUW88wfonvsz3p1OJ6bTaczn8zg8PIx+v5/jPp1O\n", + "k7S+t7cX19fX+e69Xi83aJTrwOgb/DTLN2sK9MnzX3KV1ut1DX00Z+b6+jplsNvtJmpwfHycCDl9\n", + "6HQ6Od6gPfSHdJA5fhGR6BQ6ylxN1hbIsPlqFNXkHg8PD5n25FByZMSEcsjUpIE7nU6tn8gKRTlp\n", + "ICnmOprnVPJyjIiUKSzTNlgL6HGnAXl/aAfmMpYcxZI7tbe3l7tPXSKk3+/H/f19pkJNGWAeeUdz\n", + "hDjmaHd3NzqdzjPEgjWPHbKu8fp01sDjgAyASNlegLTzzu4jNsgFnEE1bRPMvcIucF/3weP4EoEd\n", + "efTmFdZlu92upWkjtutpMpkkSuq0O/PN2HlDCMgmyHC/36+lruHvnZycJDKHfG82m2i324mce10w\n", + "V8yvqSQvcd4i6kdCoVdsZ5xyfql9E0cqImoGJ6LiCsDELw0uLwMR2/UtgCLLVjoShnip4RFRKQRv\n", + "/0dBt1qtrKsTESmgKFgbWsimCA7OVMQW3rcjZ2WK4baTiJJkxwVQKoQ/PmMcymrZGGxvC3WDw4NC\n", + "cjqJBY2xNMSPQWIhe9EwjzYS7g8OdJmiY+xw/nhfnuf0BlyTiOdbhCOeVxKnHygVPqMBt5fEWDuv\n", + "NDtY5iDw3jYmfj73Ne8CnhJ9Nr+MHYHc105A6fQhN5xHaRnm3hgTZIXSBJPJJDlhvAelRyIiU1t+\n", + "/+FwmAqu1+vlO04mk+TsQNTFAfHxMHBMUHwofQjqb968yXdAcQLhe4dRufOHs+EYJ2TtJUODs3B9\n", + "fR1HR0fR6/WSGM9643NSD8gRTjvvwrhhaNgs463nfEb60QYTmSFVtFgs0iEidcpacOBJ3Ti4TlSj\n", + "Z9zYgUddHe7poBMjxpiaIE8Kz5whO0AOsvjd6VNzJO1A2ajyGY5CaYQdhJS8V/NpGU8+Q3fiTMFl\n", + "5Z6Hh4exXm83J3gnM2e0HRwc5Lt7V6EpBQ6CSse5lDWaAxsajq0Da77rVJt1B7KHLkCmmONut5u7\n", + "TW0T6Lvvb3oEY4jceA5sr3EibfccBDsgd3r56al+EgYyjH5zYLa3tz2Q+NOnT9Hv92upctb509NT\n", + "DAaD3LEfETVZKpvTdeUckj51CtU25W85URHf2JEynwnhoh6SvXwf6UDEXZaUh6lvTo/RAr5b5ovN\n", + "rfEgRlR1RUo+ixcCzhR9iKgQj1arlSRWHEUiCyMlEXUis9+dhU2UZwFGKWA0/G7O/TsqMXEawjWL\n", + "wxwLhBEhsmHG2D89PSWpnnmiMaZGB1G8cNUsnDhrnhP+bifI8+moECVvw8911BVBdnB2MXg20EaV\n", + "kM8SBUXhY8j8fp1OJ4nfcP2YKxt5lE5E5dRybx93gbJk/I3KMkcYate1ohAr48WOlIhIRwgkh7pR\n", + "3B+HiF1m8BTa7XZuK+/3+zVuAuOKscAp8NywPr0pA6I1xoTdpbwDRW4Hg0H88ccfz9AKnETOoWTn\n", + "GvdBH3gNU6YEVHB3t6oVZQ4RjqePbMEhIEhxkUCQnv39/bi5ucmxwYFip5yRYwIjxsbIOhGynWOj\n", + "IHA97u7uktcWUTkSg8EgHVT+RiAKR5Pgj3vyDAIbZNS8KFoZLDDHpUOEzkCWHbTZAfW93JAHjCdj\n", + "MZ/P80xHry8QRcoZ0Ad+8rz5fJ71qSIiZQG55lgUnodjYieQcbCz4t9L0nKppxkTdvq6n9hIvufN\n", + "D5ZDdBtIJqUCuLcdYNBfxqa0ew5KvduTsxlHo1He344lc/4SL8tghscJ+UAOncFoNBqxXC7jr3/9\n", + "a3S73dpOdnSFuYXmN/udSn4v4+hjZbgOzuNLOoZx/1r7Zo5URLUdMaLa1dVsbgvrmXnPIjEpr0x1\n", + "AA/7IE2ntPg/SondTjzbUQXXEFnbeKHcOBAxooITXX0VR8GHyK7X6zg7O0tDiSDyLAx/uf3fKQ4v\n", + "ZP6P02RBdASJILu4ohUdC9aKj7+h9LgvTiJGxM4LDh3v5oWDwjcK5uKEXMP1jvSdtijlwgRiRw6Q\n", + "e3l/qjZH1HdR8f7e3cU1yJU3ExC1QFalLzx7d3c3d0yBakRUu8QYS6f9UGxOmdlZL1Msjio9vrPZ\n", + "LO9pZWGSPPcYDodZc+3NmzfpSFBD6/z8PO7v7+Onn37Ksb+5uUmnlIgeWez3+wnH23GKiHS6GVOn\n", + "w5fLZTpSw+GwdnYl6X4czfF4nDKD3JGKw7B4JxVjS/BjFAtj6iiV63hHHEOjk8iCHRPmn1IEvV4v\n", + "jo+Pc+5vbm6SUEs07RQ7fWa7uY0//xgDy4GbN68wt7PZLPr9fpyenqaz4Cr9EVWtqojKSfduMho6\n", + "0alCI2tln8pxIxgrEVCjxegwf8b13BvnFnSf3bDMtRvoJ+PHmOJksKvTwRCBK880Gsma3d3dTTQF\n", + "mbG+c5BM4OC1YGcY+4Vd89w7Y+G0FBt2ms1mnJycxGg0yvM0I6qAnnfkLELmiB3eOO4+NcF63rLy\n", + "9u3b3DSBzCM3nN3J2idgiKjOvESOLVM+H9YOFM8/ODiIq6urODs7i+Pj47zOB7y7dhdjit5HPplD\n", + "9LptrQNUHFQcQaNjBBlfa9/EkcKgl3lH5599HAwGC2PValXHSKCIyM96m3fpmRoiJqL04LphpHDe\n", + "zK9gCyi1j2g3Nze5Wwlnw5yN0WiUUVS5swBOR5mic6qp9JT5HAiaBc13vKWY7zki4HqUl6MhBBIH\n", + "oOSC8E4ggYyNnS732TwJlH6ZejOCUDqZdgZ8JIajWws/ix2F+/j4mHA1KTA7Fu4nsgZqZbSI8QSx\n", + "4h2QCcaj3NV0e3sb0+k0VqtVLkyUDeUErIzdN5QCn7nOEE400WU59kD8ZVoxYpviGwwGcXNzkzJ1\n", + "d3eXu+7+5V/+JXZ2duLjx4+5Joge37x5U+sLjg5Ov2vJGIWF20DwwXgC3eOs0T92wOFgMU/IAcaD\n", + "delUFGkE1hD9WSwWMRqNMqq2o+5AgMYcYrhZr/P5PI34cDhMWaBa/Nu3byNii2idn5/HbDbLsQE9\n", + "IEA0j8cRsPkz1KKime7Q6XRqOhGe1OXlZS3A4z34HnwYZJh5QoYdtCCPBF1Gap3WQ19aFq17rL+d\n", + "6isLspbUDHQ2Y0S1+sVikXWtPGe9Xq+GSPK8vb29Z0eO8BnrnUDbaJJ1aYmGe94c7PJ3nDfrBBA/\n", + "bCFOX0S169rv7lRxt9uNXq8XJycn8ebNmyxXEFEhw+zeNGcrorKnrCHzDnkutov3R2bX63Vyahm3\n", + "29vbuL6+TlS4PFrM8mAdtbe3l/QAOIK2ewTrFxcX8fnz57yOEgqMnxEwp5BZP0by+D/p3bIOmndV\n", + "O/PDevha+2aIlJViRDXgX4NOidZRelYGl5eXtbowL8GK/LPBiKigVyMPEfEsAjDSBPy3u1s/dXu1\n", + "WsVkMskT3bmWdxiNRmmE5/P5s8VtVMOGvSRK+p5GjEqvmYX48PDwTJmyOBGSElpnQRGlsRCJql/y\n", + "+JvNZjoE9NP3xAlDgJ3ztsNYCjGKgMXFO2IAcAKtLOC2tNvtrHhvmcFZhDPibewvGVOPGYrHUTeG\n", + "jrkD2WAe2+12HlVCLRnky1W+TRKNiNqYlP3BkMJzKQMHIPj5fJ6IRMTW6FOj5fPnz8lRYixHo1ES\n", + "rc/OzvI6qmh/+PAhlRXt/Pw8NptNPtM1hkC+4HFA6o2oUvKk3rwOcQR3d3fj/Pw8DVJExZtC1kAP\n", + "eP/7+/vke4FAMf/U8+r3+7UjnRhveJcmqtNASymFAFnb9XNAdJCpdrsd3333XVxfX2etLNY0ZSqo\n", + "i2SU3s4I+stIR6/Xi6urq6y5Y94Z66vUNUTzjFer1ao5w+iBMsB0msjGruRHlpwg/5/rLd92jP0M\n", + "PmOdsP7p6+7u9hw9Ni4YHcWAsjGA+3NPOFOWPcYNtJnvligX34uoHCcHob4f98CJQh86o8B3+LtR\n", + "avfZDgpHIR0fH8fx8XGMRqMa0uXMBmND/6iDBvhgvYiux6G07ub4Keut0unhPubaYTvshJR8T9LL\n", + "FJ+NiOQEdzqdmM1m8eXLl1oxVmdg3CfI8GRyeCfLk8fJQZK5WvSdn6V/ULbX8gev7bW9ttf22l7b\n", + "a3ttf2f7ZkfEEP3Q8LZNirbnC6cGb9yRxtXVVUK4jpCA/ZzWcCMyMyRN/0zms+dKhWwfKeFidxA/\n", + "v//++0SJIioO2GAwyPcGiQDFMCzpaAC40QRC99epMb8bKAZcAUctvh+5eROjndp0lExRRj/H6UtQ\n", + "Mg6VdPRFuhCeBOPmSAfI2OfJ0UjXODIwCRRZ4XkgI6RESn4IHBzzrnhXw7vIB7C/eUnMJVwk8wcc\n", + "vdOXbrcbk8kktwtzHxdmNBoGpwjuUpmChptjNDOiqpoMB8SIBf3+9OlTNBqNWmXz4XCY79xobI/D\n", + "+e233yJim7L6x3/8xzg6Okr0lfcHoXGBW6dFQAxAnoxwEpG+tA6bze0RLxcXF7WjZUBwkRe4Hy6S\n", + "eHd3F/1+P49Q8Rl5lGTgOiMKpGzhiZQ8zogqfUaKDmQL5IS+8TwQ6VarFbPZLGWROfPGBsYNukK3\n", + "2817mwO2v78fx8fH8fPPP8disYiTk5OIqPM/WRs8zzoXlNq6kY0+ROGgAGQEQBiMftIf5q1ETtHB\n", + "rB3TGpBhj1MpB3zXOyEbjUa8ffu2htL5uZSHaDabcXx8nPNGMU7QQ/NRkdu7u7uYzWZJ0aBvfMfp\n", + "f/5m7pr1kxE90si2Ud5IYKTOckmanNQdx6dAwGYuTP6GPkHaE1oDRzvd398nLcbVxUHOGo3GsywG\n", + "RzAhH6YKlHxNyxm6H26ZU6KQ3km3IlOsa747mUwSHUcX8t4u8kza/eDgIMfAdBcoNKW8mF9b0mSc\n", + "Qvxa+2ZHxJBSQVCddmHQnTIjL3x8fPxsgqfTaUK8hhAZjOVymXAlCoVjK1CIdnpQ4F40Jp4BObIr\n", + "y1uL2S01n8/j5OSkRmREATHRJQ/IcKj5BU7vGHrEsJK2wEiV42zyOO/BgsGAe7cG6T4LpwWcbdMm\n", + "YPIe5gdhCCIqDgWOoB1CeDU7OztJjCQVdXp6Wsu505+ISNL/09NTpoCsoHEG7ExFVAbKaRs7mGyJ\n", + "RtF64aMwkJ0yzUjeP6I66JM+c583b97UlC0y4/Sc5x/DYz5aREWQJI1jhxLl3mq18uwsV8zGQcO5\n", + "Mmkhkt0rAAAgAElEQVTaHKBPnz6lXPz4448xHA5zfqbTaXz//fcRsd2qP5vNkh9kxx4lv9lsnjk1\n", + "7XY7FotFchst+5BlF4tFEstpOKlwS2j8v9frxePjY+6apSQA98WYMJ/mOpEOGAwGqacsT+gJ6wWC\n", + "OxNTS7I19+cYHuYeRc3zvL6pB0VZCesI6iQdHR3F1dVVHhLd6/VSR2JomcMyYMKR5XfWMPrQgRCO\n", + "J30z36Xk8TmIYK3hpNqRMuWiTHmxFng2mzV4XrPZjHfv3iWV4uLiIiKqndQ+fxV5Y5ezd0mXwUmz\n", + "ud39ae4kzrW5tuZysW7os+/pVJF3FZsP63sgM8gQARpOrY9HIQVHMG254d9yuYyrq6uIiORE+VgV\n", + "7zonqME+OAVrWgNEfd6L5xLsWrez3gBD0InIBGNmXes0LqAL74Df4DReuQOeMbF9KmXRtpRSMuif\n", + "ssaf/Y2X2jdxpDBgCEPENlLodrs1h8oC2Ov1otvtxmAweLaLrtfrJQfDEYa5P+v1OksrRFSCQKT1\n", + "UqTPdXZOUBAonPKIBQZ8Pp9Hp9PJd7i7u0uP26eS01j4Jpry004Mz46oHByEAuMfUW0RRTFbYCOq\n", + "Mg54/RgtmqNLowXeMs7C9+JnfECu2I5Ozt+L15wGBJnf6ctkMkkkwjn1iMhCkpAnqVWEXPj+cIb4\n", + "HcSsRPkiqoJvLGZzIUz+Rh54P5w/5LBE71C+RJn0r9frpUOE019ypIzwWG4ajUY6w5YNR9soThck\n", + "3dnZiV6vl+/nOmmdTifm83n89ttv0Wq14ocffkiZmM1m+fPDhw/x7t27iIj45Zdf4vHxMR2Yku9h\n", + "vt16vc5dOBDwefbt7W1thw7bwr2jkbVAYNHpdGIymdTOokPeMYiHh4c1gjsOD/LE+9/c3KQjuFgs\n", + "kksVUW0Hhw8C8Z7nEZCg12xgzEXp9/u1s/2oPUVJCq/DTqdTc9iN0j8+Pia68vbt29RTIBGLxeJZ\n", + "fT2cdProulV8hgPW6/We8XRwvJAtI3nIKfrdXCcHUs4CRMSzde8xjah2hxmlZ7yQ3ePj4+Q2zWaz\n", + "nNfHx8faMT+gfqwnb1CgD5vNJnlFXt/oPO7r/ltPWy4YN+yZSzIMBoMM4sssDI4fusubNwgeAAcg\n", + "lLuMBRshOPeSsQFVp78GJQgEmGPPE0619aQRKH56juirHS4K0jK/XttuzmBgGxjz6+vruL+/Ty4n\n", + "epl7An5g+x0o8BP7YE6fkaiXHF6/e9m+iSNlD9GQa0R1fpgJzgjSwcFBIg8M3N3dXRrQciLxSL3t\n", + "GWO6s7OTqTi8ZUf7EXVkyIsNhc5EMOh8B0V7c3OTC4LnOP3C+3nRWfmWf4uoH2ZpR6bVqh8iasFi\n", + "0TjCREiJhktCrYXGSAeLkJo5VnyOaJ1GjKgIgihTFFJEVQQRobcimkwmuRMSpWKUp9frJXkSo8J7\n", + "ozDLVEO/34+9vb086BXHppxD+shnpHvYUuw5RA7Yudjv93NsI+rVeBl/pyy4/0v95fuO5HjHMpK1\n", + "Y080zrg6LeICkc1mM2Hz09PTWK1WcX5+Hu12O46OjvJdHZV2u9346aef4j//8z8jIuLLly/x/fff\n", + "55g7JYaTiLM7GAzSYHz+/Dl+/PHHRHF3d3ezphUlLCIiKxjbgPEsEN7r6+taIMK7objRMSBuTg16\n", + "XgguMCQYIeoKgUyQjmMOHdHaCFuBs4UcRwrjRSDlYIgxNBLqgqSs7Yioka2Nitl55N3t8BnBR77R\n", + "F6Sc/dn/Ze/NfttKkjzcIClq46bNdpXdNd3ThcG8z8z//zbvszxMowvdXVWu8iJLJMVVEkXyPhBf\n", + "nu+EWXMvGhjoPigBw7YonpNLZCy/+GUkjhB/m2aADHoOeHc+CGT9ApLF851KZ24oEWKn+8uXL8X5\n", + "pC4Ua+j0k20Jz2G9nGoz2szY6IsPJ7muodce5y2ntXl2pp6QDuZ2CdsY0DcCIh9Acn9ADq3bHx8f\n", + "yxhx1HPmB8fNwT9OKQVJjWT6uzyP/2MTcGLywSWc16enpxiPx2WvcdIVe+D0MPuBFKpTa+yBxWJR\n", + "Ds0gF7bZgCXMKw6R9asP+jhdmIOEiK9Ljrg9iyOFoXReFUTFhp5FBGoEdnRkCvxoFr8dJ35nX979\n", + "6uqqHPE3IsJ3zdfKCEREvRQA/+cZ+fJdPGyEzekqn9CwgPI+KyU7Ofyco98cX2bM3mygWeZlOVrw\n", + "WvAOlIznBUVMmhDEI6KKonB2XI02IuLz58+l767ezfwQnWRFZJTAGwqZQOHhOERUl6yyUR0xNhqN\n", + "gmJOJpOYTqdlI5pX5e/zPaf5zK3i+ZvNJobDYTnlwjvZ8EbNnMJxCi+nxVg/UEYaa4TSdzkGGwXk\n", + "ysejKRrKZyBL/X4/3r9/HycnJ9Hr9eLm5qbICHPSbrfjj3/8Y3z48CF+/fXXiNjVmen1etFq7W4C\n", + "IHWFLFrpNZvN8jlXyXz58iVOTk5qx/hns1lJGVLoFIQT5Utqo9FolAKUEXXFSGqHlCvGhdQA5Qci\n", + "KmNiOUWm+I7RFaMQ/L6d5Iio8RNZJ8YBaomsgZSyLk6h2ZiCcNMH73eOoeP0g5AyPtARZDsHH+io\n", + "jCDjuOIQ2Olx6svpE9YC3Yc8O/jCCTBixR7z3np8fCxyMxwOY7vd1U776aefagjCZDKp3SQB8kRf\n", + "cDLYI+bd2TEEDeH/lhHkgf5hh3xaknlzZgV7gsxwMTVcVFqer5zuJ2ADmSOIo6/8Xg607JRnxwDZ\n", + "R5/4e6D+rIOzNDirppA4S+Gxr9frGI1G5bsEVft4S0b/cxqZ/X97e/tVCpaWKQHIL/OaA1DQOnwI\n", + "15/ah7bV5u43P/k/bJBNM78moiLp2rnAyOBQmSsQUU3C/f194T5F1AvamfMTUTkXh4eHcX5+XgTT\n", + "ffGGt/OCcsLZQ4CdIgT+dRqPiJwog2gPw8uC+eipNzqC5X7a4XC66PT0NO7v72M8Htfy+a7fYvjd\n", + "ggJ/i7WwMgAyJUoAQeJ7kAm9KVnzu7u7WtToHLiJmCbwHx7urv+4vb2Nb775poaAkQpmDhyZgDbi\n", + "NHgTMI84TBR+i9ilBQw5k86IiBp0jvOeG4oKkiPOC7VPkDk7x0Sc/DxHdGx4Uo05vcP4HHmjzKik\n", + "3el0as77ZDKJzabilqFsbm9vCyry/v37WCwWBT0hzfv999/Her2OX375paBHkNTZDzlNzd1+y+Wy\n", + "5pxTDmG1WsW3335bS+kfHR0VxJDvei88PT2VUiibza72D5wvUoYYZ6OujoI56OAUhh1G1oc55boo\n", + "Uil2pHESMUTWQwQeFN1EvpElxujaVOhJy7D362q1u7KHAMlXJ6FDcL4cXcNHwzgbBffvOqjjWayd\n", + "6QXIBnKDrs0omH9GY96sX7Jjw7sp+hoR8Ze//KWUdZnNZrWq94+Pj3F3dxej0WjvO3E60BE0HE76\n", + "awd0s9mU4MxBDt/DGcyBEJ+xh0FCkYvNZhPT6bR25Q/vA2kFdTL6CJeU+xhtB1gndEJOb+EU0XJq\n", + "zw67i53iQFFY2QgVeg0ZNRptp7LZbJZnsu/gf5liYRlj/DRz0VarVQyHw9qBAyOa+AQenwEPyz4p\n", + "0+12G5eXl+V7Dqp+q72UP3hpL+2lvbSX9tJe2kv7O9uzkc3xsJ0qIXVDysL53Ih67tunB5bLZYlk\n", + "fRWII8RMGMMTBZ4178oeaGb98128cPNlQC84yulrBHxCDvQBrxj0yDA+jdSVI1/Dpk4LZGI06RsX\n", + "WvMxf3OfQBsidkgPiArpEx91hXsGIudCaaBSRHT0td/vx/n5ee24Os90Cq3RaNQKrrK20+m0kCB5\n", + "Jgif8/JGwCi8eHFxUTudBBpHtH9+fl7m7fPnz6XyfLPZjF6vVyO3A20z10ReVKbOJFM4KqQMF4tF\n", + "Qao8DlJMrC9yg+wR6eVjxUS8ufAgEV2j0SicB/q6WCwK+R5uzZ///Ocip1wcvtls4urqqqBqj4+P\n", + "hZMGcsWpPTgN7LHlchkXFxdlDOfn5+VdFNnzWsCXcCoVOeWOP1Jk9IVn+UJvk/RBnFxgMaJ+d+fR\n", + "0VG5EobvwVdh7xjl4y4+iqBa3s7OzopucqoNlIt97JOd6BDW0ukl5IoLhnOa3frOqaGcnrMOI5W3\n", + "Xq9L9G19wv/z/XdGXMxDYQ8zJ6TNXAAVtNlrYHQwo2B8ZhoBKAmI47t37+JPf/pTOY15fHxcTi1C\n", + "tAe9v76+LnMGgs6+MfnbiB/vN3pkjiHzynwbQXYajv0AsmYkGp3tAsG/deraGRquJyMTw/s8x+wr\n", + "dPg+JNDUCGTRtIrtdls7dQ6CZ9pNRHXlljlGNBBPp25pli/G6cwP68WhCMtFRHWbAbo+Imo2Bf1u\n", + "ZJz+OCXNZ+axIR8RFaUhnx53e7Y6Uvvys0B2FsKIiq/EJaZ2LIBoUdIWRlfhdh6b9xkeNK8h9y0r\n", + "9oj6qZmc24aUahg3oroPDkVkweCkFA6NlT7v5TSG+wdcifLEkJsH43oa5lhYMbPRI6r7rJz3z2P0\n", + "fBmqHY1GtbsSPX7nnd2YE893zk8/Pj7GfD6vEY4pXQG/zmuHHGGw+/1+MV7Ox6MQ+YzULWkBH7k3\n", + "9M8fO7gYdOqaWE6n02kxyigik+3NPbHTYwXK85z2pQ+sh9NRrCm8JQcmOHWbzSZubm6+4hUeHByU\n", + "K41YZ47ncyEvvDVkBsNwe3tbg+k7nU40GjsC+jfffFOrst7tdmuydXh4WOSJe/jgpzjFTPkG0kL0\n", + "P9emg+/glCjryB42n+fg4KCWQnx8fCx7kHc1m82yp3wCibRw3i+ZrDqZTEq6lEuOfR+aDz64XlZO\n", + "l6Hw5/N54Y4yb+wNc3voA4aNAM6pYhtjX9rLHuQ0qoORiJ0+YT1szPiuqQKu+5MdKq8xP3eqlGd+\n", + "//33MZ1O4+effy57mGdyKTdpqsfHx8LLIViPqNJVdlxt2E3E93jZd7YXDoqgNfh96HtSvH4mOjYf\n", + "+OF7OEbMC79r0rdTf8wVTj22yH1FN1g+sJ/mvxmwADzIlBaew7p7LQj06Yc5nsw/e8Z2wGn57PBZ\n", + "Xpgnp/74jHIL5qQR4LpeGu/DGXVql/nM78/tWRwp35HliCaiykNaESGAkOtM8iVfbKKueTJm7OOh\n", + "RlSOAwrWgsiC47ka6fFkmrjod+wzbC4+aVQmokKWUELk/pkHPjNRlL7QB4yOyeYRUa6eoFaRyd8m\n", + "v2dnEUcTwTI3w/NgxcRJOG6iz+Rnk6OtNMwLy84skS3v4Th7RIVs8jveTMzN09NT3N7e1hzefr9f\n", + "5tf9YAyvX7+O9XpdSKusPQ6ueRM+DYPsse7mBzCHh4e7m9p9TYg5UHa23SdkgEtA6bsdYDuuPA/5\n", + "wAgig1YioGX0BfmHAP7dd99FRMT79+9LuQF4OD4J980338Rf//rXgtjRF+48Qz6/fPlSHIl2e3e/\n", + "Hg5Uq1XVQluv14UvB5cCzuHj42MMBoNy3Q7Iqfc7z8Dw55NX/r85REavfTzeAaBRK+YebmFGE82x\n", + "Yl1w8EGocJ7t9KC8XZ6AqDiTmH2whbnHcTFnpdGoymUg03bUMSDZGcr8VAy8kTzrYOtJ81TR4+ZY\n", + "8V3WwEiWUSC3VqsV3333XaxWq/jhhx9iPB6XS6LzNVWQ0plvo2lPT1UNIjss7DnztbLOsk7EmWMv\n", + "ZSfSyBTOPmvBWB0g571sp3W7rV9jw3hMhqeved54nrlcRt2Yf3SZZdkHqH7rpDey5+CBAHKzqd+P\n", + "yfdyPSrPKTIMQsozsZW2t3zGOuZx2dml8UzLApmynC3LqJ7bszlSEVGL9vedmjNZk0ldLpe10xTA\n", + "jUYJeA5CbOWQoUR77vaWgQRttCPqpHicDBNHSRHiRLBJ8YJZlExGRZE6VcczgcbZqBYEPiOKR/Fg\n", + "HEgvTiaTWoFMKzungZg3lB19zg6h4W0TGTebTXz8+DHOz8/LJsj9iqg7ITyPZxpiR1njGLkKNesA\n", + "apCVDf0jIjVakZ1jK7eIKCkEn1BxypENZ5QDBwj0xOli+kZUjQLlHTmNQN+QWaJ9EAEa91PxnuzU\n", + "s69AN1gDR7NOeyLDkMK/++67eP/+fUTs7tP7l3/5lzg4OIj/+q//ipOTk3j16lVE7NCqu7u7uLm5\n", + "iYeHh9oJuuPj40KMHo1G0Ww2y95nP5+cnBQHjMb36QupNtYCB2swGNT2IWNcrVYFBXXFcxwrZNx7\n", + "itTPyclJQW0dYPkAxsPDQ1nH5XJZCosif3a6+Bmpa/pDtG5Umd93LaN+v18zrugDn5BiDCaS814b\n", + "K4KPiCoFyr9B63LAlJ0a9BljRN68j63fIio9472f98i+tHYOkCKq0hDdbjfOzs5iOBx+ha47lWZn\n", + "kb2KfkT27QTiODozwHx7bvns6ekp5vN52btZlxIgWyc6Bcf/mWMHxYzB9AocGZAp20v+DeqaM0Am\n", + "1FuHIYPoQztLnGjDEbXcoa+dQrNjY/TecoGso989r6wZyBF6ivlA9jJKZPuBw8n7MiptB4y95YDP\n", + "yPD/5kRFPCNHCpjQJ6EYCM6DlRtGgdM4hjkRSBbMgunN3GhUx/+d42YBUTa8z6mwfWMAIfCx44OD\n", + "g1KBGmXDMxk3C2OjDG+C/rmuDUUa7TFH1IuWNZu7o9PwUlAk/M7Z2VlMp9PixFq48e4zPIpQMUf8\n", + "nO9ZcTKnmbPGWuAIYJgcuUdUjit9M/TfbDbj4uIiNptNjMfjEl2ykdhUTiuguKxQmdvPnz/H09NT\n", + "XFxclOs3aCim9XpdjtxbBtjw7i/f8+ZEdoz0oLhcUZtnGv1zetvy4XpbXot9R7lx9H1qC3kHwcTR\n", + "6PV6ZS045XJ4eBhXV1dxfX0dP/30U0RE/PM//3NcXV3Fv//7v8dwOIx//dd/LcqGAp6r1SouLi6i\n", + "1+uVyJNIdbVaxd3dXa3QIykh+m+nEM4NhsnGAM4R8+UghHeCxOB822CyD1GuDgY4IccfdJSjV97j\n", + "9R2NRnF0dBSnp6dxe3tb5AM0A+fK6SRzwAiK+B5GBHQEh5Q+MH6CwGzIrL/sKA+Hwzg5OYlut1sL\n", + "PpAT9o0DW+TNDpMdBpBYI6R2bBzY2CkAMaSBavF962bXykIv3t3dFZ7jt99+W+YUBDYHZk45s/7Z\n", + "kWLNfNqXZ7AmDnZZH3QvThXy7XSaUR4KCmP7DAJQOgbd5SDCts+OhlEwvo/TlB0pI0UeI2vCz+0Q\n", + "gsqwJ5yWRdcgG8wxKWaQZdKCyBvlQkDXLcNGvtx/mp0yo77oWcAMAiyP9elpd20aY/B7mTNnHv63\n", + "tF7EMxbk3Gx2VYfhprD5DTd6EUlPAeHnaIXFiqgEwkRRCwKfkU4Cyt/Hs0FBZIcK4adYZESUu8eI\n", + "sM0Hyn3K0WVERazjGfQhC7ohRzsr3CPFfDin3+l0ym33PCvPsfPFkEeNGvFOoiiUt4XThGZvRMPb\n", + "fg7vxtBlB6vZbJZrBUBmMN6Qwp0eyAKPkXGqCbI0Ssx5dKJRNo8RoMFgUIPqGTPNKBKlJ0xUJ9WW\n", + "o33PrbkRNL6DwvY7I+r3eTk4oC84YSgU114CjSEtAupGam80GpU73H7/+9/Hf/zHf8Tnz5/j3/7t\n", + "3+Lg4KDcwweacHFxEZ1Op2bYIf2Px+NinO7u7iIiyvwSqXvclhUUW1ZuzClOodcR9IG0t6NKp7iz\n", + "XsDQMEdGfChrAkqUkczr6+v4/e9/H4PBoMwp84qSdnXn9XpH+saozufz8j6QDiJ2owB8F+fEe8by\n", + "wVF/p3GPjo5iOp2WquYucJs5S5YnHCfQIKdoPLfoAOstZIo96vQ0Tk+O/NELjH84HNaoIOjRX3/9\n", + "NT58+FCrMYb+y6lG7ADy6WDI+jjrXPpNf7wORu3zdWNZ39uOIO/+mR1MO6I4h7yPdK5tofeGUT07\n", + "xZZr5NzvJDDNDhGyYOfZhynM87Q8gIYSkFoWjV4yT0admHNssPc26+xglPHRRwcrXif+jUzzfZxB\n", + "yke4EZT9Vnspf/DSXtpLe2kv7aW9tJf2d7ZnQaSIgrfbbYki8AINM2evkOOOERUxjWj31atXBc3I\n", + "RHWnBTKHxnCiv+Ncqb+XoU4QE8ZALhkYmsjT5F9QFEcYQMwHBwdxd3dXoGFQJ8ZgLxoEj0ji6emp\n", + "nE5xocGcQuS7GbWyx79arQqXxH01zwfSrlMRoIdOtzF+5of3Eb3QR9bcXBcXkiSV6iPw4/G4Fn3k\n", + "dAScj30RBkRpl3BABpHRRqNREMfBYFDSMhzH5b2WXZCu2WxW3uvrjUA1kFOjCVl+Sd1RcDFD8Ya8\n", + "c/rLc+so2b97eHgYHz58qJ1aQ/4hf799+zYidoVjf/nll/inf/qnaDab8cMPP5Tn9Xq9glQis6RS\n", + "KbrJGt/d3RUOWrfbraWSHHmDUBKpWp4gLVMtfR/Pj1QDe8R8Ra+XOR2gFIzB8kSVc1CJdrtd9BdF\n", + "NofDYSlOCtrOaT5OnZpG0O12y54h1eQUItwxUFCnzeDjUWrFyAJyStrESHG73S5pPd9DR5kMo0PM\n", + "p9FQo+smamfU38greiNzQPm+9YVRDfpwfHwc5+fncXNzExFRkI3VahWz2Syur69L1XPeY6TE6TD3\n", + "LaNBIDXsT/oHdwiujrlNRpXg74L8I3eupo4Mm6vldDJzy+9EVFeMMXbSUqZYmH5BSswcNMZhBDvr\n", + "HsaVv8ucMJ+et+l0WuNist8sF5R9MVrm8bP3nYJ1RsPvM9/Up2/ppw+BOP0H2gaH1adSmXuKg4Ke\n", + "MWdkxH6rPetdezYKuYZFRAWr+pjzdDqtOVksFEezqSHi75uv44Xi+0wQv08/yAXnnK8JqoaiSYdx\n", + "rBxnhGe3Wq2iGP0+w8ZsZHhAzAuGwmOgTz4tyPdGo1EMBoMiuIzfuWAElZQcY0FpzGazr4y335lh\n", + "XOaAvjpd6E1hUj7PzFwEGu8xNI8jxf175tPxPvM1SCXQX5cnmEwm5ToXZM0pouPj41K9G9gew0Xl\n", + "3IhqA6NsmQPWmtN/+5SbTzJlhwBlBx/CcsO7rODNyzGJ3ScoI6rLiVG4jJFgBeVsnsiPP/4Yg8Eg\n", + "Dg4O4qeffqrtQ4wavBSud4mo7iEkvdftdsta4Fizp+BM8b31el3qkrmEw2KxKDwQFKpTNexNHGTL\n", + "DYbCqXGXDeH3ebYPKTAnOOLmlcDjIWXGs0hduoQHqU0CHhP/aRj236I74HjhCPG+w8PDmM/n5YJp\n", + "OwStVium02ms1+u4uLionYayc4BMe1+iJ3BqkVn6gx7ACWNPkpY2l4fP0G3sU1Me0AV8p9/vl0Dx\n", + "06dPZf/haHGAgT3tZv1ASQS/x+PHaYUSEVHtNVNJkEWCcfZvpoGQpuMAQ05DZZ1Hc3radtHpKObX\n", + "up13klKz/s7pzkwo93wZZDAvzCnXiCicYM8ffeP/7HM79TzTZHPr74io6T2aaSmtVr1avKkX1PZz\n", + "ag/7jVwxBkAG9IjlEAcs98PtWRwpn8JyLhfuBpvfXIHtdhuz2eyr0194wiyE66kQBZjPY+8UD5p3\n", + "o8Q48mzF4U1DTp8J9zMbjUatcNc+j98kWhqb1E4FY2DD2TGIqAieRol4H0iNDbEVscm1/pu+mIRn\n", + "ATePANQhH1HO/Cs3b+j8MzshfE4EnSPkiChEcdZvPB4XYXd0heLwprGMmFt2dHQUl5eXpf8YGxoG\n", + "FufNXCnehTNhJGy9Xsd4PC6cFK8xRscbnHHC/WMNPW+sqb+Xlfs+hMAcFu5sMz+u1WqV8gzv3r0r\n", + "BQ3n83m8efMmRqPRVzwYnHWcJDun0+m0zMnp6Wmcnp6W+W6323F2dlYrAGlnIvNYTLiF94Wz4b1j\n", + "3eGCuTyDtTPi4sYzzTujzArzZMU6mUyKEV0ulzEYDGpGAQXOOqMjZrNZnJ+f1/a/+2KF7n2BU847\n", + "4Z9FVLWpbm9va/IQsXPczs7OYrlcxmg0in6/X9bJKHuzWV0v47ljbtCN/NyBlZEd3m3UOQd0OIWZ\n", + "f5iDDTiRrOtkMinXax0cVJfvbre7y6HNu2PeTHTGCTMyjqHH4SIQ9ljQHy78zNhAbjwGozmscZY1\n", + "nr1PZxJoZztjMr6dU+wrJ44dmKEPQEF9yIh5wgm5v78vzim614RyNx+gMDqGXKPjzKNFJoyk0bDr\n", + "BKoEhW6np6eFe+q5Qvf7PsKISkcTKOeA3air14gx/P8OkUIAXQzOpxqIThnMdDotkbEJ4jzDxjIj\n", + "KxCNjUDxN9+xoaTRH28svscC5VNUPoaaIU76aCE0ugN0aCFmfETBRi1o9/f3JXLkhEREdRs8pyLy\n", + "0VtHXRZ6GhsOpZg3yXq9rtWgYb7tvPAczztzYEK9YXcrWMZxdHRUijpmcreh2KOjo/jy5UttLdjg\n", + "RIQRUUMvQF981x7RyT7EjY2P7Jocyd+OTP1ODDOy7RQeP8uHG9brdYn4qOPC9wxn4/zbKWUfGRX0\n", + "3KHYSCdH7Gps3d/fx2QyiTdv3hRSckSUC4SROc8p+wQD7wurqUr/9PRULikFOb26uqqltI1yeX5B\n", + "MbMz6HnPSIdTe/tSnqzJPuMVUZH37bw6qs4pMwzcarUqRTE9RqJyggOex7w1Go1YLBa1u8Gc3vIa\n", + "YhScTkOGDw8PYzAYxOXlZQyHw1gsFjVndDAY1Iq+IudGVdin1jXMox1E61MjLXZemENSJH4na4HD\n", + "4aDNcz6fz0s1/YgoqZn1elfaJdM5kIl8QtZrBvpLAy3ySTHS/ybH08+ctnfQk4MX1shzwNo76LRO\n", + "zMG/aRL8n/2Sswa8D0fKFBXmw7YpoiKxozOQS2QKCgpyYEQMPZsDOmRjX4rut5xG5gFHDzn0HiBz\n", + "4EwNDRTKJ8g9pzTsgufWiFruS5ZLt2dxpHL0SGMRnCKIqC6hHAwGZUCuRE3OE0OEMFJp2sgAk+MU\n", + "GY6ZNyDRsbkdfGYUKC8GjhyolRUfAsz3Mupjz9kKmg1jQ0lf/LehdrhGhljzOJhzDHwWfiMlOdok\n", + "YvA62Vm0gucz5p+xu6w/x40zUkZ0gJPVarVqhoZNxdzQz+FwWFIscAqIvPv9fkH5Wq1W9Pv9MhtC\n", + "9csAACAASURBVPfj8ThGo1G5VgauUET9VCVpHRfUw3lpNBo1tIjvUtOIOXdqNxsiO6AogG63WzPQ\n", + "nst9yCLFP70eNIIOInMbttvb2+j3+3F4eBjX19e1S025WcDHxiMqnpkRGXPn6Av9N7IAsgkny4YG\n", + "pbxvfHZA8l4gzb/dbr+6mJi153lGSLzHnPrmd/luhvqREwzqarWqnYRkDY6Pj2vHrk9PT2sGLKJK\n", + "sdh4ZFTCOoM+Iac3NzexWCzi7du3cXJyEp8+fapF9uv1rrQHCIn1IIEhhtfp5Jx6+a3+sSbeNy4C\n", + "6jnNgSF7ww2DuFwuy5w6C5FT3/BgnPFwIJ2RL2SGOUUGMxJPYIIsZS4jc2QZYl54b9bfvpjaOtiB\n", + "KE6PP0OOWDOPlcY6ZIQsol5RPqfh0PsEBP6eHUP/DNTNzhXzho1AXrz2/l3LIv1gDbzvSWmDGNpR\n", + "Zt32lU1ANul7Djz5PnNtR9N7b197tjpSTIaPUOI547wYNvYGv7u7i8+fP0fEblK5EoAjxI5aEGJD\n", + "uHzPnrkFdTKZlPdtNjtODEaYRUBI891ILJ55DxFVJMMCYWwjohwl5nlGjpgbNkM2mnZ2ECDmjD4w\n", + "VnN2UKKsg9NGKDMbNKNWQNsWdsZv/lHuq//vjcia0R8r18ViUYo4np6elhIEEVWFcqITOGoRu036\n", + "6dOnaDabJXWVSbwoNztnIE1E/Mvlspb2g+fCMXWnNa2QQRDpa6vVKmkv0kom2rKGrLOLweFInp6e\n", + "lut3WAvkFjn0++gXCtxpXRAp1pO1ABWK2Bnkk5OTgjrhBJ2entaQWBpV9I+OjqLX6xWEhLFThXy5\n", + "XJaUAc/AMXdai3Ejj4bcQWDNZ8u8O5AxG3vmBLQHJyobLtI11guOaJEPv49CpHCUkJvJZFLumWQ8\n", + "fMY8YhS979ATBCx2Fk5OTspeIxBhDDhxh4eHcXl5Ga9evarxXxyYGDkkELWsECjY6PAuIw04EZSV\n", + "saNtZBuHynOKfDr1x2c8p9frxWg0KgjRaDQqe4mrgByIoivZG8gV/cQhcvCFEXbAuY+a4SrvEdVd\n", + "bOxd6wKPFZ1pZ2a9rooME2Qx3xnFsSFHDvdlU0yQx07ZnmRagtfQNZc2m00tLc5tFYzP+x9b43Qz\n", + "jWdZfnivnalMk4moHHkDHwYWWG90opHinPFgv/B31hf+/Qw6+B372kv5g5f20l7aS3tpL+2lvbS/\n", + "sz0LIhVRoTf2ToGAiUrwJDudTrmvCxgUb3E4HBZ4m9QADSg9R7K8L0cPJtxyegjvnb4AJeLtG+Ll\n", + "ma5ebk8ZZMnpvYiKqGfYme+Z3EckmcfoNF2upA4MTVTrKsJwvZjT3IjIHZU5ktvHsbA372ie+SL9\n", + "5TQkaVqQSJPB4XJMp9Ov0qytVqugUPATQJaIrrgvzpEu/fGamQtA/0CKHBXBZYO/gzwxB/TfRFDG\n", + "0el0ylp6/pxeZT0cQdNAF00AhfuWo0sTYA1le+zA1ZkAyrvOz8+j1WoV9ATCLKmr4+PjghAQTT8+\n", + "Psbl5WVst9vCu3r9+nXc3NzUIkhOCSLrIDzmV4BiGC0yx8Gpa+bM4wB5Y0w+qs+cIY+ZX4L+MeeS\n", + "SDYjiMhup9MpJ7PgNvLZ2dlZ7bQSn0G+59Jic9pIXbLfTD/g+piDg4OyPtxfyOXny+WyoIBG+tB7\n", + "yJPTmv7/er2uFevkfXALM5ePueP53hMglcy/v+f0EjqQNeVz0Fini9FfyKOv5yHVSRrazXxF9ilj\n", + "dDYgp5G9R9nnNL7jK7QYX5brfSn9XC4G+TLdxPNi7hConhGyiPq9kaZ8gEbxPc+p18LjQdfSV1A9\n", + "t30onNN4UEJymtH20FQQ1n+z2dRoHx4zupj3QeNYLBbl1B7rT6ke9DNzQV/Qp/TJ47Fc7mvP4kgh\n", + "XDnHTPO1KxERl5eXNeVmSI4FYELyUUg3Q3MIl6Fl+tBq7a5dIH3jflp49zlg/DyTVHkuStHQ6sPD\n", + "Q0lTkN7zpZQIN6kvK33Dj84V+7QfQmHnBW4RZDwLqlOShtw9DpzgbrdbOy3z+PhYq3HiOcjOgSsj\n", + "t9vtUmHc78KxWa93FapJu7LWlCdwOoy1oPYKc+sN5ZOjHp8rImNg2VxWMN1uNzabTVknDDlyZEct\n", + "ojpJZQVkp4d1xRC7BhPrinzSH3hT6/W6EGX5HStpxumUAo6lT7DRjo+Po9/vx3q9jru7u9p6NRqN\n", + "mM/npW6bHeXhcBjdbjdOT0/j48ePNY7BbDaLt2/fxmKxiKurqzJ2k6uRGada2PPZcDHHrBHGhblB\n", + "6ZNmyukkjD77g8b6oRc875Q8wfnabreldhE/e3x8jMlkUkuLcO8ka7BcLmsne5GFfLyalA8Oix2p\n", + "x8fHwp/EqSAgefPmTdzd3ZV9mnki6DAcGr/35OSkpged4uPAj51zp5StQ3LQgs7L3CrG7r9zehdZ\n", + "9R5HL8FF9clqKrfbuTHXyzowE5U9H6wp823ZcH9tQzglZtvAPOMY2DlCdnmO+5Fl1in9ZrNZLt7m\n", + "3XZQPE95/dk7dnwjqjJD6E1/bz6fF71p3ULLoERucETN5aPlAzbMW54P5BK9g33x7y6Xy7i7u6vt\n", + "txyI4RSi55kXvsPBFq+hSf/72rM4UkRk7pw3dzaKLDboko8i+tilnxNRGSgEMp/ow/HhcwutT1b5\n", + "tJCjyexgRFROIv3KUYSRMCsQrjIBgfE77DQ6V8x3UbDmSHmzmkeSCbdcG2PUjZNsFjK+B4mTwpjm\n", + "QjAfGGcLI3NHP3yShJ/zvHzM36dIjORERHE6KHZpx6Xf78f5+Xnc3t4WdJKx0wecRvME2LTInfP2\n", + "/IHvxPhwXDE2djD8TkfBzK8NFHwOHDQ7EE9PT4V7FVFFyVzr4popILy824VTGZORMPp3enoajUYj\n", + "JpNJQTUonkl/cN6enp4KOsbJvIuLixiNRjGZTMr7XQ6g0WhEt9utnThkDTNX0QGSOS+WH9bIDq9l\n", + "ln5STJN5pKFzMv/EPCbPv3lOllN0GSccvYcPDw9LTSe4Scz34+NjDSX2HvHJPMsf/cZpIyBiXBym\n", + "QP8YxfOpMiPVPJ/Cif1+v7Z3vT9wUO2E2gEBrTLXCZm37PE8DCm6LuvX7XZbC/iYbxwk86/y2kdU\n", + "qJf7b32Y+XGWB+tL/nZGgrVgvDhc5pfaeWTd/Cz+YLDdT5rl00gd+tL2xDXzmPMcvNEXo5XsRes8\n", + "vjeZTL7imjmgx1HKBU+t67D56IzM1fL3CP58ctCymJFsnLP7+/tasWTuDaXPHq/BG+ya0S0aeigj\n", + "cG7P4khl5nxEFe0b2kYxLJfLWhTrNM1sNqvBjo44HH2tVquSBomoCi9CfrUj4X6iII0eRFTk2Kz4\n", + "nTbxGOzx0kwIRpggnXoj5pMtdgaBN7OhMRLTau1OplF9mv6hwKjwahQK+B4HkOPqs9msEDyppmxj\n", + "YkXgzYZhMYnfhsYb3uNHQVjJG+2h72wOKz5QKCI3YOqzs7PyTKBek/Adydh44eTiwKA8IuqVh7vd\n", + "bjnubhnmO6B5bMzBYFAzJC7ah2FmnC5Y6Sj17OysKB/mwcqVOeFv5N3KkHGgoNg7duSRN2q4/O1v\n", + "fyvvf/XqVQyHwwL98z3WdDab1W4BoC/ed74zE0eGk4cumZERaeSK+Vqv18V5NCLLd3wowg44cmxn\n", + "ne+BAmVEgf4Q3FHj6Pz8vMjpbDar1eui4QDjJHst0FutVis6nU7NWWIMpPEGg0FBxwj+fKDAhzB8\n", + "0tSNgHGz2VXuN/kZmSf9yLr5WP1isahlDLLcgP7YUcnZAxfKZO2Y97u7u9rhJHQ6joWJ8RRB3Ww2\n", + "pfAsDUeSPZ77YDI573NAbuSZz2zUnU3hO+i+HODYKfL+xTm0Pst2kfmzvmbeeKbfwXPQi0aimBcj\n", + "kHYyQao43OOTvkaUmWcHqw5OszPCvBFkGHiwDUCGvE7YOFfnZ3+ia72+/r/T1/zNHzt2/1/bszlS\n", + "CJ0XignDAGSjjxK3sCJEKIEcgRkFMofCG4SJZVJt8A2vRlSX4PJsvwshsZKmsUAWanNvaAhb5gyg\n", + "EB2xue+kdeBJ0Afms9vt1hwOUlMooNPT02LkuJYFgzudTktF4Zubm5jNZsWwRdSjJUfQmXvCnLFu\n", + "VkSkTbbbbTkSzvfIkV9dXcVwOKxFszgkjIP32Jgb/aGhuFByKAM7ShiyvK6srRFO5oHSCKQ881F+\n", + "Ih87z61WqzitPi3GOKbTaTktd3JyUjuSTP+JmByJ2nnI6CiyRXMwYJTXaCwRW6/Xi8PDw/jxxx9L\n", + "Py8uLuLLly8xnU5LZGp+Dc8EeYRbhdHjRCRONeOz07her2scFAwpKQkj3OawOeqPqAzlvlOpdp69\n", + "Dp5DHC2nIXFAQZ9saFD0PBuuHGP0dSIeP+gXgUu73S6O4nw+L6dYr6+vYzAYlNSejQHOkCN9dMLx\n", + "8XEtDcX4SaNz/Qw/d7CZeVfsocViEYvFIrrdbi3wRR4dlPKZjet6va6lS32adj6fl8/u7u5isVjU\n", + "ys14j/N//tDYM9ng+3PrWJprGtlJ9Jx6DH5e5tPRsi7M+xE9470ZUe1t1sDoLA0aAXbNto3Peee+\n", + "kjPMH8+ECoHddHCPHWde/D50tJFABx/sTzvEPNOBisfPvgQBNBXFJyfRK+bbunZcDjyxs/Q5gyIZ\n", + "GXN71jpS/DuiXjMmok5IXK12VW1R8laoIEvm2xgVceVjIyYQ0djY+wSZln9uQ5sdAjsvhi1ZNH5m\n", + "Hg1j8sJmiNNEbvfNYz09PY0//OEPERHxzTfflFpAKACuhmDeyHmjJHDCLi4uCnrlO94idh4/5SbY\n", + "QEakiKAzIsV8OJ3qqIXfyfW3OE5NBGrCaUTUkJ19iog1cRQHomK5YA3NQ2EtfedSRP26BDcTGTFQ\n", + "dpascB1EGPrfbDa1NBTcMQyUAwX33xErfWFc/HwfAsr/M6q6Xld1jRwZomB++eWXmE6n8Y//+I8R\n", + "UdUuQhlxPD9ilxYAHXI6lebUjfe2jRafmScGoRvlbh3AOrGmTvs5LcdagWbY8cp7kTlpNBqlRpXn\n", + "nOfe3NzEdrstTsh0Oi10hG63G0dHR8V5coCUG7wUHMyzs7Ov6kH1+/3CCWL/sv+Qt4xms098PQ9j\n", + "JyjJFALzM9lXzElEFQifnJyUK1qcsmSuLYP0x/rAKf8ff/yxHFggoKCOFI6rHSnXrcpVqL0PMyLm\n", + "z2jej/QTR9loFg09jd7Z5xDk9zgr41Sbn5mRVPpMJsHBtZE82x2PFydhvV6XPeqK+Ov1rkbjzc1N\n", + "DS02Gpf1DSgi8+IsRZ53+ue/XbvJBzKs53P6nb2HTWF/8x70DfXreAbBtm0/fSGNaB+EZzr7sK+9\n", + "lD94aS/tpb20l/bSXtpL+zvbs15abC8TDzNHAfxtBAteQ0R1RNepQUeiJmI7kgKqzoRL3mEv39B/\n", + "jvqJ4mhOqWVOQ/aE88kuIitDoxEVXGluS0SUO6aOjo6i2+3GH/7wh3j79m1ERLx9+zZev34dFxcX\n", + "EbHjNs1ms9oN4qAfoAA+Xpr5NY4GOJmCB+/0EWkF0lB8xpyAZEEWzc8nSqYvPkoOkuESB+aYOIom\n", + "0oQUbzRusViU+QfRyjJHis/jZr5BedxPTovmS2f9b6ORLvEA/8L9cfTj9JGRFbiB5ld5HI5M3R+i\n", + "NaJV5Io5Zf5AB/M+fP/+fSyXy3j79m1J0a1Wq5jP53F4eFiuILHsk3o1GhQRBX0zkdVE9Ha7XfaR\n", + "9y/cIFASyOqG4ZEzUCsib9bWvBcaew+emtFM9i0pN0fQpG05en12dlaTN/YGiBbfm81mZZ1ms1lB\n", + "IPke6ZsvX74Urhj9BE0mmrZeZa4sE8gMc4IuMeeLeTd6zzPRdei2xWJR43WRwuGkKY15A7Fwf5A5\n", + "+DXtdrsga91uN3744Yd4//592WsgebPZrKR12FvIIqgRpUqc9gM1ps/eHyBilllkkrW27XF60NQF\n", + "/vAcf25kJu9xpxSdWja/lPVxWo7DJk67MlbQGo+Dz0A5mW+4T6A4vV4vPn78WOvPPp4Rssfesb3E\n", + "rpj7+luZg8xTBpXaR0WIqC5mNhUB1MlpXacS2fvmyTEfLn3A7zOfWZfm9iyOlCczOxrAooZHgTEh\n", + "8ObTOXmy/UzXDDGnATKdDbEn0NCtnbu8MBmyxanj/2x8uFUYMDZ6xNcXpnperCgMtfI7bLZXr14V\n", + "QnlElIrUHAuGw+ATC9PpNCaTSTEOFn4MkY1DRJQUDMIL/yWiSgv5FBpzikLYx0tBHphvX6HhtWm3\n", + "23F3d1fjlrHxTeZmzTBKrAnv5lQHp4tcD8qp2cxpILXs/iMXOECu++UUg1M4mYOB42QOEZ/jSNJP\n", + "jjvTH4/VhiFzwPibvttomODrlCrf8RpmR8GptsViUaqbO53GuwzB40S7wniv16uNgXlErqgLRF98\n", + "uXjm63kP+znMG2tFX/fxL9in2dGiwrv5gA8PD4Wzg9zB58GYEIBQ+Zx+ku4j/YcjtV7vyka8evWq\n", + "lP7wZcd2RglSIqq0rnlpNHN2rDcZOzqSdbV8M9/cvmB9xL7BiO2rsZRTJl4v7zs+f/PmTfzDP/xD\n", + "fPr0KX7++eeaY4Ne4m/vfV94i6OaCdUOALMD6n3itCe6n72fnS70pfUE62GOrNP25jRa1ngWcpaN\n", + "OHKNfeNQkZ/l9JqdZMZ9cHBQ+I4R1Z5Hh5+fn8dkMinyZhsRUbdRtpfWNU9PT6VMB7LH9xhDXgeP\n", + "Mac7mRvey/tyqtY0C+s20zasA9G76Gm/E93hwDi3Z3GkuEjRCorOo8gwDhGVo2HByPlgC5qVG5sP\n", + "z53fQ0idh7YC5/8Wdt6dOUCMA4XokwruC0oWAcpKDG+aSJoxwxHJRticqdvb27i7uytH1REIvG82\n", + "JnMIMoQR4lQMfeX0w2KxiPF4HNfX1xER5eJQO0GOchzx4QTwbzgNKLKMAkEOZK4iKqWL8nGNMRwV\n", + "jPF2u62dCkMpgo4Z1eT3MWw+1ZSNqBUUyFdWpqwN8mbHO/+NA2huD2uBrBoFYtMjd2xoHAHkBXSR\n", + "/iAH9DnzkuxgGJVgzjGKVryQuClyyjrd3t7WDjA4aGFuTERnPZfLZRwfHxeZAS2MqE4TEUBlDiH7\n", + "meKUliVH56BPNPPKspKOiHJpOL/Hszi5BFJnLshyuSxOLtwgDmiAAKFz7BCiP1jbjDqydw8ODsr9\n", + "jqwNe/zgYHekHI7QfD6vRfmZH4bh8ykvr5M5e/4MZIf1MoLQbDZrwaKdbOSKsWYHzOvi1ul04urq\n", + "Kl69ehWfP38uPDzWlz1EaQlzGJnv1WoVr1+/Lg5oNqz7goh9Db2GPgbd8BryPoJGf4YutjEngHIZ\n", + "D88Xjvd2W5WPoOGsWu4zX8/rh2wYgYd/SnPpHPYwzYTx/PsEJoAY3lfojPl8XkMC6WPODNkm8Md6\n", + "xO/2qWjmAd2JPFgX23ly4B4R5UCHA37z3DJCm9uzOFJAslmR2ZGKqBdwRMF6siOqUykIKAY7ImqK\n", + "DoXjUygoLjtQEdWE5z8R1f197rOdOgTVhoxnm6DthtF2VGWvPY+B5k10d3cXv/76a0GkECjSA0S0\n", + "PAsh5FTeeDwuCvf29rY4J5zYc2SCUiEStjJlg/NzNpuLdLrvfI/oiurkHjOONSfTjICB1jAe5pa6\n", + "UtvtNnq9XvR6veK4OAWcU2nZObYDYifWp/toRlptsDxGZMtwtCs+ZyTATjvPsXFjHKCKtIzQOl1s\n", + "xWL0xZ/xb6dFPAand5jvo6OjUmzSyHC32y0nPdfrdUwmk9phERwiyOpGajFOGBTWkEMmoIvcA+YT\n", + "SDZq9Js1zWlBIygEBxgv5n69XhckifG56jvvbTZ3aTp+5nsFswOCPsEJc3QNAmkSLPN2enpanEvI\n", + "8qzTarWK2WxWHGtkzvKMI2CEBCQCPbYvTY0MnJyc1MpR4Dz5cnA31iEj1TaYdrQiKoI5znu73a6l\n", + "kh8eHmqnDhkHc/b4+BgXFxcFlWbd0FM5E0F/9jlWBPaM3zQCUwsIFu3U4AxYv0fU64IR0LD2yKj/\n", + "uGwCiKzXJ6N7/J71EjaIvd9sNuPy8rLIooNYzw1pZWeETGsgzZyzK+gnp81+K6BDhrxODnqzTTBI\n", + "YL2Zi7b6XTwDxyjTL+wLeA35/Lfas6X2iIhyNEREnL3ziMrQ2KAhDBg2BCWiyrFuNpty8ozvkS4k\n", + "WmVj8Uw88OzZs6jeMK4ldH5+XsZhLxbPG0Vh1MFKOI+PPru+UebWsIE/f/5cvvfhw4fo9Xo1Lo5T\n", + "EaTfiL7H43ERlOl0WjbNcrmspREYF+vFc7wWFl7PN0JOn5364XcoxWDOAQaFSB7HAycQZMhoAI7U\n", + "ZrMplbqJynhOLnXAM73OHguKxbJqfhiN73kunKrOCKv5LVaYPNcOljc7xh5ZArXkfcwd77Aj2WzW\n", + "i97ug7+RDxu29XodnU4nnp6e4u7urqwFNbZms1ntOif6zJH42WxWLpyNiJJudo03o0qkBbbbqthl\n", + "xM45cd0uZNsOsHkXeX1sWCiSyfdQ1Ow15sPFOBeLRY0DaQUNkgsKQloSFM9OJmm/09PTcprPaBpc\n", + "Qp7F9/j9VqsVs9msoDK8jz6x1zIagM4kOrdsGbFzs0PtcgARVYV65txyFFGllDCkpk3we/yM/4/H\n", + "4xgOhzEejwtPkjVHz+/jaq5Wq1gul9Hv9+Pbb7+NXq9XmxsbZ88XDogDnoxy2WDn1BJ2IZfIARWx\n", + "/vX7jCx7LeyoYm+YHzvCOSWGg2bUzGthRNU6CocfJ5QK/bnlWlA8i2yL9RA6HwfMto2+OP1Og4u6\n", + "b76ZD/4YbGCsyKKBDuYNnWlk1HzBzWZT6iVGVMj4PvS69Pc3P/k/bEymNzjohr1Q13rCkWAy+QyF\n", + "yQS4mCHCizFwuhBPlujJi4SBtEIz5MjGQeAsrL1erxRH3CeEjNFRgo2yo7WIeg2WvLkRCMZ5f38f\n", + "P/30U+lLTgu9evWqjJd0l9NYNCJ0ogzDyk7d0V8LGvO8b4z8nZUshgXFYRTEBGFD0vTl6ekplstl\n", + "Oca7z7BRbweZcS2nzWZTyMD8vg1QNsI5HWBo3NwQK0Q+I4XH/NPs/Dv9yzgyguE0If1DBjL/wpwq\n", + "r2FO69B8LYn7xJgwRBi2nMZCpiynnz59Kr93fX1djFzEbq/ZIeFqk4hdhW76MZ/Pa1XWIf7jZJPi\n", + "5Tkc03bh3Jz2xOBmNI/5zqjqer07Mk4aLyOOrBXf974g9eGAjM+8DkazQdvRlQ48mX/SKqTzaK1W\n", + "qzhuRrLMi+MdONSgqBhhGz2cWWTOSD7vc9rLzYEl85gDFjv1ds5ms1mRj9lsVvYwP+OP9yEBxOvX\n", + "r6PX69U4kBh97EROw7OP8rpwbN5IjsdHP7J9MocUXZXBA6NA1sME3kavWSeXSOFZdnT9HT/T6Sr0\n", + "gwvfdjqdstaAHTxzMpnUHB4jZNbpdl7QTfxxOhLZ9p+cyeFZDj6wldb1zCllfdB/OKm8L4MmzqZg\n", + "f0A5vU5G7fe1l/IHL+2lvbSX9tJe2kt7aX9nexZECh4PKauI+nUAREQmFhJRkgrAO+Q0gSMiPHVz\n", + "HfZFguZROJIy6gEilGFtPNSMVsBN4DnO+RKRZoSAZs5P9vrzBaaMgWf7RE1ERX5l/PAXvvvuu9JX\n", + "OGOgM/AP8Pg5CeIoGUTCpEXe6agSNIfv5cq7hsmZe9ICvJv3Ad+SAjL5m2gb2aEvpJJAKUDgeCbz\n", + "vF6vy/U3EbuojHcSkTtqcYqk3W7HYDAofWm32yVyBWkx3wUOivk3ERWXjz+MhzV2FOl5A0HwPDvN\n", + "CroFquj8v7lnTjnkfZQROU6DzWaz6Pf7Ze6Wy2V88803ZQ06nU45vLBareLk5CSGw2FBDowac8ko\n", + "qS1QUw6lgEY4KmUeOEGH7JgjR9TtPW6Z4gLsfegwiMt8Pv8KjSZq9VrQWEuXMXAKgetjzC/h2fCS\n", + "HM1nsiyNiu6gwp1Op/AYjWRAZjafJyIKSo/cek2MOBuRMPJJoV5H7ehN5HFf+s78JMZtVHSxWJSD\n", + "LT/++GPc3NyU+SRrQV9ZcxAIp8EuLy/j1atXhVuVdQbr+FsUkswZBJ0BlfIBBqOdNMbkTAPvxj6h\n", + "z9AlOWUGwpznk3XEZoKe5DQga+uMilFs0Ni8xhEV9QN96u9jO7K+dzqT+QC55XtGeninm+0e46a/\n", + "RobJotAPI1KgrKSC6QtpevaH9Rr6Mp8gZ+ym4uxrz+JIuQ5Q6YhOugGl0XELXq/Xi06nU5TUwcHu\n", + "1nmcLhsMjGur1YrJZFKu2fD7fA0Dgsh34AH4NJRz0iZsMx6qOJMW8+kNp2S8kCbPmSzHZwhuhhaZ\n", + "KwQtp30Wi0XtuorxeFyc2IuLizLfOBZWUu43HBTGb8VmZzFzg5zeYf2c1vX7nBO3s8hzXQfFBFcT\n", + "IDl9yLtcSTqiqnzd7XbLFRhOtUbUT6Iwl3bqbFRNqiUVyrgg1zudhlzCAcMJ4fd8EsUwOfNhBUEf\n", + "zPewMnNqIh9ggPjtk4xuOCSso8fQaDSKg+6ThxcXF7Fe747rX15elis8InYpuvV6d/VHfmbEzglD\n", + "8Tvd//j4WNtjNsBHR0cxHA7LaVyUK86ygxKUJ59tt9uSJsIZcaAFiZnx2rGBU2jj6DWMqBxu3ucT\n", + "UyhxE4XZKwR8JrV6b5h7Yl7hPgcIvg7cOT5rt9vleXyGw+u6e8ynU3AYLIy/Tx9SJds63XNjMnUO\n", + "SPiMNNft7W1ERAyHw/jy5Uvc3NyUfjCn7Pmjo6Na6i5it7+4VDyiCjhYi/l8Xpxrp0tJW7EGDlCc\n", + "XkIPZHqCA+4cQNPsrFh3M347vDzP9AzWnL3CuzL/Kn83Uywi6ulk+or8kDbn9+ERIgfIkcdIn1ar\n", + "VbEzzLlTxt4n9I858DOzXaEhR6QJj46Oio63Q+p38n8feMjyjZwyd56ffUGT27MV5KRjTKr5P0ag\n", + "InYL2+l0Sr7bXKfLy8tyuoPfN2vfJ198XJJNDwKQvdNc98mKD6HNRhjF741KM/pGiQN7cuaZAgAA\n", + "IABJREFU+0Zw9kVJzjPn5/K3NzInVY6Pj2MymZRo1YRrol0QJ96FAOLxm9th7sS+/ngtnU9H4aMQ\n", + "LJR2HHL0YWQwol4HhfcTkRodQ2HacLCGg8GgnEZEDs0twunx/XcR1Y3z3mjmchHxgK40m80y38yd\n", + "x+IoHfn0VSl8xkbGONuRYo585RGySO01F+20XIFYeZ38b6M/rCHPxvFzNHt9fR3v3r2Lx8fHuL29\n", + "LcVgW61WQUDY10bH7u7uiqNkZ4kSHEblGN9oNIqnp921RhDfOegREQVtshHhu1wwjYEFYaGvrAEH\n", + "IzK6AKfOhHcrYpBzrzt7DfK8uUrIE9w7O0kYKYI9notT52icv3GGMhpPX+gPjm5GG/hjRMrIBnw/\n", + "rslBVlqtVgkiHXCiC3imZcpZAAj8vvOz0WjEdDqNu7u7mkOCTNsYw7vjeivGsVqtiv4bjUbFwfYf\n", + "+uRg0HPD5+bLZITCqG7mq+F4O1DgWXZK7Chnuc3vyjwkyw0OBXvA/DT+oL/4HgVzWU/khDmNqLiJ\n", + "+4qJmvzOGLmmbLFY1AKiiCoww75YLzCH7Ll9iHJExYXMTibv8il7I1roGfsf9IF3+5nes/vas57a\n", + "c2TiiMUQfkRFGPalnBZwECMMGMIAYuLFyKkFnuf3sThGmvievXwrWP5er9dF0WZ0jN/B83ZxTIwN\n", + "EauFhu9ltAIHaF/EgYM0GAyKU+XSEHd3d+VyYMPWfldEfKUAbSTw8C2Mnh+iTfrKJsMpcIrT76Zk\n", + "A435oB/8LlGjjYn7iUywvswbztfp6Wl5Hv10VVzkyugQlznTB9aQlKChfJNPeY+jX69tji5pJmIy\n", + "D5yuQdmRxvUYGQsKgNRvfq5TmJZvO+VGDj0OR3+j0SgGg0EcHx/Hzc1NzUA9PDzU0micqEGGbm9v\n", + "o91ux9XVVQ3lIaXHOhwdHdUKnOIocmLNaTCQYaOG/i6OIM4xDSSTvkXU7wPNhOF82ADlbQXOAQoc\n", + "YgJC5pTvshd5dqfTKbKBYbChcRBH2pi1NaqELuAzBx9eZ+ZovV6X6tbIBQEuCADpdx9rd0rMe4Q1\n", + "xcBaRjFcm80mPn78GB8/fqyhIOx75sDGjGet1+vodrvFPmADWK/5fF4cKcopoDN8uTT6hSAb+WDt\n", + "s/PiMaAnmYeMzGU7wJxiA52moy/ekwYd6BcoEXonIz127GxPCKLYB3bY2C/0w4R21w9DtzLfRhit\n", + "h5BBkN+cRuf9GXVjL6NLeRbvcDbFjib7hXkxoMHPQdWto+zcGeVHzvZlhNyetSBnxG974M1ms3bM\n", + "nQ2XYT7gaRaVCDyiqprcbDYLKmWDzXuJtuwQdDqdGl/Eih+h9QZ0P1Fe3hg+RbRYLGppODsVhhv5\n", + "LKLaDPboOZHE9xCSiKpOBv188+ZNOaXEGszn84K6tNvV1QwHBwelrhSCbmTICs0Kk4gUAbXwZcVj\n", + "ZYPQ2oB6LegDa4/xyjLhuVsul19d6WIl2G63yyWwpM0Yw2ZTpVet+PicyMUKkrlmI8/n8xgOhzVj\n", + "DLJgY4hMoTBAshg/6Rbk2gqaueNZv2XIcKic3jGaiNPPOOgnishjZD+gcBhfp9MptY2QVd53c3NT\n", + "ngNSxjPH43GsVqt49epVbY6RUQwgR9iNHOH8b7fbePXqVRwcHJR0Kf1yqQmvP0EVDpX5JaxFs9ks\n", + "6HLELq0E5+L09LRWK4o5Zy/ZOQaFAgFEL7EW/swpG+YQx4a54Hs4GMiU0xvZWPoUlNfRkT7yh6xY\n", + "nzCudrtdUnsOWtl77B+nshkLv2ddT2s0GjEej+N//ud/alyv4XBYgg4bffYf6TmuguJd6Ajq5+Ec\n", + "45h5r7oiPDo2IxDoc+su17Nj7tA1diKRUebF68ReyWkjO5vZgDvt7sDSmRh/17bKTibyz/epEcj+\n", + "9HNwgAAYXE/KJ40dWNAX7MA+gMIOIHuDZrvgvhCws17WQ+wVZ7XyiXyekZE1z31GInOQmtuzpfZA\n", + "V+x1I8Sk2kyMJL0HidQGGqV/dHQUJycnNSKnc8URX9dsMgRKY6FwpvZVGiY9kBf58fGxcDYspDzT\n", + "KZYcmTkKsKKxIsybG+VFxIZgoExxJNjs5onglCBUvB+j9eXLl6JsvGmazWZBFWz0czRmw29HcTab\n", + "FePCmHxlT85He/1cBRujZ2XC3/BxVquqSByfHRwcFFTn5OSk5iw4PWPlx/f53AY3okpDrdc7ntB4\n", + "PK5ddWP0Edkz0Zh1hLPB99jscNI838wVCF+73S6KjHQfht/H3B00MAZHiY707IBlHgHoC880tG/+\n", + "Fc+hRIERzul0Gufn59FqtWI+n9f4eNQwOzzc3QmWUWoU5uXlZUEyaexpAq3tdlvmO9d/MlLdaDQK\n", + "0mKibESUK0dwQFwviL3Ivttut7XinZ1OJ2azWTG2fMbeZOzHx8fl0Md8Pi+6pN1ux8XFRY0OYAR4\n", + "X4rKQYYdKe99O7zdbrdwi9CjdrIODg7KtSy80/okI2o0B0n79jd9PT8/j81mEz/88ENERFkDHA1n\n", + "Djy/V1dXtVQqKPVsNovJZFI7MICxNippZ5B5zKi5ETfmz0FMDqzcsjNqZ5AACf2HnsXBdSCZOTv0\n", + "OZdMQQcb9bYNw+7hMBnpQS/jlDrAZD/wXdpsNis8O+xNTouZU+h9jKPDM22nT09PS61Hk8at90hj\n", + "0+xcOpNB35AlAg/bWfY032cMDhB+q72UP3hpL+2lvbSX9tJe2kv7O9uzIFJ4fYY5ncckteDoa7lc\n", + "xsePH+N3v/td4SFF1AskEj3zTLxhIganAEnvEB35Ql/4FkRX9Ie+m+Nl5MynWohmTIzm/4bhI+op\n", + "wdVqVSumlnPgPqFANAliMZ/Py7xA+uQZRH1454Y0STkalQAuJ32R89P8ntN+pD2JZI0G4dEzp0Sw\n", + "EfW0QYb+Gbu5YE5tIkv39/c1/oWfDZJjFILn7LsihnUAgTKXy2k4TnDxPdaXIndOERoFog/MI/07\n", + "ODgo62ekw1GnUz+kYUCDvL6UKCAd5aPjcAUcsTqSZm9mNJF3wDHw+Ej5cBKOasZ8HxknCvbVMp1O\n", + "J25ubgqnyVd9kCbNp+Q8P5BZ1+t1QUjMU2TPMR7k5uzsrJYG8vg5AZq5TkTDeZ1Mokb2+d5gMCjr\n", + "a54X3wPJIso2Wsh63d/fR7/fL3uf/XpyclLG57W0jBuRcoqMvWuS+uHhYSkbYmTJZT32Veo+ODgo\n", + "l0475U4DzUF+8v1/8/k8Wq1WvHv3Lv76179GRMRf/vKXMldGQJBFOLFOqyOLyE3mwvD7ZD7W66r8\n", + "CYdzzImkWX9xwnkftYODIs5EGJHKtAh+x2lFv9Of79PZzLXRHNaI5zklStkM0LDMn2JtSFVmCgxp\n", + "aCO8EVFOiIO6+io20HdTdLyGTm2a9oCu4BAOaX2nZVkrj93FYp2iZbzOhNh2weFifLaHeW1ye7bU\n", + "Hik54Nl9REQb7O12d+/br7/++pXy8xUPNg4IHgbAKSIUD5PLwkVUqSSMFD/j7+zE0Xy6ACeC76EM\n", + "UZqZm4DSwdmzEnLe3kqRNBdCDs8gYkcmRzHgVGUuFpsJ5Y+goqAMWTOOXCU455+Bh7mbyRuD57Va\n", + "rej1erWNQVqS8bBOTi/kzeO0RualoEibzV1tL6fSSGUwt05HopQx3CaqIh/MiU+Bkj5CcXv96Ctz\n", + "h7IyRw5lgpNi54W5gOjs+SYNmZ1znL7pdFqD11lDxm5Z5x18hlNppx4Zx4jb2WIdUNQmd/NeHCx+\n", + "9ubNm0KWJ8XnvQ38ztqavI9D6Jo53kco88yjIDXL/uWEntcWJ86pD9/7x/zntUDmHx4eSvqYtI2v\n", + "ZWJNcXKdmnFwieyuVtX1OxFRHCjz++zwO3hysMNn5qv4vayRT3wxZ5YB7xnkm1Srj+7z3cxz9BH1\n", + "L1++xPX1dTm9eX5+HhG7E1+sz2QyKfIYEV+l9eywsP7I2eHhYSFR41ijD1wtnc+tA/I1Sk7xmU5g\n", + "59QBNLLDuNnfrCFEbZP2mWfsGjrOOop3npycFF1rh81XOzHmiPpVPXkd0dHor/v7+6/2EH30wYej\n", + "o6M4Ozsr9eDMceX3Scs6aMXxJI0KVYZ+5sDJV9hkPeDmOUMnWQ5x6H0LiteH30Un4hhbTnJ7FkeK\n", + "/LvvEuLOK5P17IRERHGmvKFQ6iwWiE7E/gt/zYWBmGYCZkR1CtAnmuyouViZERqe6xolfObTNe6D\n", + "x0Cfs3PG99hAvvA1olp0bxgULwgJCBNzavRsNBoVZU8fbDC8Kc2DwmgYQeDdOGlshG63W5xnjKIj\n", + "XjZqPo7P/DpHzffsYBgl4Xsce2Z9fS0GRGUXFuVZ8OPYvBQInE6nxXnAYNj5NCKFY44iOjk5KQqa\n", + "KMyGLyKKExJRlalA1n1C08TKrHhsFJkDHKqM5vD7R0dHNZlDEeVIjDXDaTNP5OnpqTZG9hbvYY1w\n", + "cJkX+sZccRiDhpJlfRj7fD6Ps7OzYtTyiS7ewZ7YbKoSJr6yw46X55H18T133PdoZI/G+JCzw8PD\n", + "WgFYz5NPipn/0m63Y7lc1vQD1zUR0TM3Rt7Mn2PO7FQ4Kke3Mp8Y84j6lVOg6uarwfkDseZd/M1Y\n", + "WHcHbehR8wojojg50+k0/vznPxf0IWIXuPT7/RgOh2VvWxbfvHkT/X6/hi6zlvP5vNiTfGKVPqGn\n", + "zE3FHvCujNagoxzQ8Szz0RxgmnNjXqFrwjkI9Lp5Tfy9x8fHghzybJ+cs23KNsrBF9kefk5RWOvi\n", + "iKqgMDaIE7MRVSYCGwu3EZnieaBk5pbRjJ4xBmqcAUBkJMu8RjugRvzQD36HMw40Aj+cqX08vyxD\n", + "tbX6zU/+D9tgMIinp6cC2UdUG9E1nfZ5/Cb70fgMJZWNMIuybzHwkBGuiChRPBOfC74RJWcSGu/y\n", + "ouSIzgrUhhSY1saKMZjg7MjAkRb9otK2U4pcagp5LyLKEeyHh4eYTqc1UjFwP0egQZkidoam0+nE\n", + "4eFhSVOwaVzPC8PoU4Kkl3AADDc7mjXUi3PCGtqpIxXBnBjJsuIl8rFjiDE7OjqKbrdbDBOGm8j8\n", + "9PQ03r59GxG7i6A/fvwY0+m0GFynEp26cLoyokKzDLX71I/RKUefRNXIi+UwHyW2I2Vj5tQn7wCZ\n", + "QMaNMtIn0q92sDEoHLawEeZ7rFFWRkSBEZUjAEG52+1+lfLFqOFEWg5pmVhqMjLvY208V5BUiWjt\n", + "UPF/jGx2vCy7GR0FcTWSgfE4PT0t83Z5eVm+z95zmg9ZZJ2NqCIXXHjcau1qX/n+RAwvz3IaGUOf\n", + "5cnpG1LD3k927iOqUiGsO303OuPPLCfMN87J0dFRPDw8xIcPHwoCTDDm0i085+rqKi4uLgrq4EAY\n", + "fcfzbStYx31IBuvtAxg52GF+fa+na6Txe9bftO22XqqFuTZy58AZvQBC5LX03X9ZNph/9lpGB0Eo\n", + "6Rvrip05ODgodRstH3bkcrYFHbJYLOLk5KScAMdeYEc8DkAH9oRJ9F5/DgyAQiKLOH527AFP0AXY\n", + "eM8N+9GOm9OOzhCwFpaFfe3ZECk8SqfJUCZGnPjMnAh+FlEvkmZBjqgfjweWd6TAd4wiRVTHOfnD\n", + "aSO/1wowIwTeHHzm3Kx5LhH1iMX5/Ih6Ne2np6dSE4pmRbPZbAr0z+Lf3d0VxTidTmunQhyxcxop\n", + "IkpF8PPz8+h0OtHtdsupjHZ7VyZhMBjEwcFB3N7elv644vV8Po9Op1PWdz6fx/n5+VenLGi8H4Qo\n", + "p1RRfrkuiIv/2ZFgXTKfLSIKqoDSd8oXtKrb7ZYNykW5r1+/jm+//TZ++OGH+Omnn2qOMgoB5QhU\n", + "bcfEacucFvIm9rhZWzhARnEjvr740w4hcgDfh+85TZxlzkoj86BwdLiWxcqbz1DKRrlIkbCP+/1+\n", + "kZmnp6fodrsxGAyKMbXDg6PbbrdraZiLi4vYbDYlGON5KFu4Vqy1nR8cVT7DeWbe7HSDgrNOpB55\n", + "hmUZeTDyGxEF1To+Po7RaBTdbrcYmi9fvhTejiuFe16pbeV1Ql8S9IBO0A9+x+P1M5E50yIcyeNw\n", + "8SxQepDNRqNRDCTzZLTBXBh0jNEr1mk8Hsd0Oi2lQqbTaaEnYNhJi67X66Lfrq6uyryxt5GN0WhU\n", + "6uRhMJ3aJHXO3rdtITjBbiDDGFZslDlLPN+oDA0nHtk3hSSvVXbQWbd8GtIBFPbPzqplmsLLDqyw\n", + "P9hEZzEYG+vFvFGyCCcJPcH6bja7WwXOzs6KXeEz9Ln3GfOGDMKvIigHEGk2m4Ub6MCCtSM16ufy\n", + "bJ5vm8+c2yeIqCqiQ4Oxw8sa5L3p9iyOlBWz0zM4Ihg+p/Qi6l5+9rAj6gXaIqLGVzEUyLPYOEDW\n", + "5oegLDFMjjxBxPyHts+o80xvTBtvzwnHPf08+spYzWchEjUxMGJnSF6/fl1+h42BoC6Xy1J1FofD\n", + "qS+M/Wq1uyft+++/L+/E0YjYOcWOhDEkpAIMm/NdhNbKHUXovDzzwsZHRowCOS3CumUZIRLMUDyf\n", + "+2gt88RVRL1erxi9VqsVg8Egvvvuu/jTn/4U//mf/xnD4bCsL0bW8DTrStSKI2VEEtTJt5bbgLHu\n", + "KAejjTiEzIH5T0boLBvmXvBzFBGRPc+m0Cj9BOEBceT5RpNBHu3wub6YDUGn0ynOOd/xFVI4y6vV\n", + "KhaLRRkf/BajypPJpOwd7u1j/3ivYWAc/duxg6SMM4GBtrJGvrLj4CryyBRR+XQ6jc1mE+fn5zU0\n", + "g8Kbs9msoL3MKVE58m/n1U4VBomfo18w7Nad6CbW2PrV6Y8czDp1OZvN4vT0tFbAMafrbaQyOokj\n", + "9de//jVubm7i5uYmvnz5EqPRqHbHqp2gi4uL4khh6OCKUeogoqp677XyGK1PPI/MicuheI6dqiZg\n", + "jqicTPa7qRrIBuiJUTxSdqyJMy12kIx2Mh70DX/b3uRg3ugRQQLvpaRBRNTmbD6fF3pKRJRUHraN\n", + "qvo8v9lsxmAwKOUznCpnXo0wM6fISa/Xi6enpxKwj8fjGI/H5Wo3gxlXV1clqwV5nn6iW0Cb7ACZ\n", + "e+xMB82p1Jze+9+cqIiX8gcv7aW9tJf20l7aS3tpf3d7FkSK9J0JmeTA8c5NArTnmKNLokJH8TRg\n", + "PaNbjsyI7vHQDXHzBxItzeRW0kw5dwp8nI8QO5WYYU6e7Zw4P8PzNnxLP5fLZZycnESv16shK0RA\n", + "g8GgHAflZFnELjIZj8clmjHScX9/X+654udEwhwZBynhpA9z6xTtdDqtpW45jt/r9Uqaj3nh+Zy0\n", + "c7TCWuS1N3cORCYjYEbzvE5E0ETRPBeiJLwdrpKJiFIcsd/vl2j8v//7vyNix58immV9OZEVESXd\n", + "Q9RDusMyBVpocmxOJxithCdAhEqqw+MzGZ1m+crROXsPJMipa6LXfr9fSyVFVAVJfQqJMZCaY67N\n", + "2QBhcArHiCtzBtrE73uujci47IW5aKR5eC4IIRGs0UHGn1PJlq+cnvfedVorouJUNhqNODs7K6kM\n", + "5DQiSuTtS7aREVLGRqMiKg6JTy7yPpel8PicyrJei6hO6zIvvjnBd+ixVk6BHh0dlfQWaAoNdGBf\n", + "qnG5XMYvv/wSNzc3MR6PayejWAf2InLE+9DPy+UyptNp3NzcRESUA0kej/Ui68ffToM7HeR+ooc8\n", + "NsuCT95ZT8GnMvLrkiiZo+jsijl/tm3m8NAnZ2accqMotVE+xpdTwNjZ+/v7ImvoPqPi2CKfggUh\n", + "uru7q6FORgKZX5p1HPab752fn8doNIrb29u4vb2tpei2223JhDAe0wGcsTCdJcuBqRnOLpGVYH5A\n", + "0X0gJ7dncaQMX9q4sehZUIEUUXImgtnostA53cBGtlGwYPq294jKkQKKNMTpMaBkrbzNE7Bid5/J\n", + "PTtdyN84BZ4Xb0znyk9PT2O9XpfqzxjciArGxKHKRFE7hAiQlcuXL1/i1atXtes8IqLwWRBscwVI\n", + "tZ2cnBRY1afafK0A9YNYdxOUzZNptapq3/w7H6unL05t9Xq9kkqh9pYNtMefa9Q8Pj7Ghw8fipJi\n", + "cwMh4/Sfn5/HH//4xzJnP//8czHA9M1ke1KakJF9Qo/vLBaLWK1WNeeN9edIvlMSXjPzXZgXnIFM\n", + "nrSxxfGPqO6OI3VLfRi+d3V1VQ5nWGbg6TC/BwcHZQw+4YWh9TVOELwhKzsdyd43p493MC/T6TS6\n", + "3W7hbiFfOFOcfDMH0EECZG3Gj9NOanofcZh58/gxNjg4yDckXMZ/c3PzVdrMxHGnIni2dQfvpuU0\n", + "hJ0Dp4b4zKevTLrm/zjlJlR7jUipuT/oGTsFTjUhY+bLsP7w37jSibWg7+fn57XDCBFVSQl4NfP5\n", + "vAQivnEiOxnI0j5iOGuIo5ADV5PQ85wyfqetmQOCOQIJ82ztrDm4MoeL5+f+8gxsm/mVPjDhsbLe\n", + "Xnf+9tyzf7PdIUC0TUQv4dS7Vhpj9z5yStDcJI9ru91Gr9crJzdxrCKinMhsNpvl5C6O4mKxKAEs\n", + "NoUDWOgA9JffBzjAHwfX2JBcb87t2RApIi07NgxwH3HRvBOUcUTl9CCEv3UaA+OVo90cqfAZKA7H\n", + "5BGMXq9Xi/JyVIp3jBfrz/OxUnvYmd+VlTdzY0/ZxMDJZFK7RgOHk/eiyFyqwIiaBX29Xsd4PI5P\n", + "nz6VInteJyKd4XBYnFA+I6ImmspFGVFuNiSNxq4WDgqMUxyM24RFbzhQCis8RxEoAtbdPAHeAVJH\n", + "Y21Ho1F5rj/v9/tlXMhQxA6pe3h4iOFwWE4uOorCECHXJp0iWyjxZrNZfoZzimPsvWBFzJz6KDN/\n", + "81k+vWIjQWOfwIcyIjsYDGqkbDtnzCVzYkeRnyP3j4+PBVmyobGjxztwrEHIMm+Sz7iXLyt371Hm\n", + "lNIIrIk5HeYNsXZGJRy5Zh4MsoS88TmBgU/yOlCYTqe1k8Pwh3CiGWNGpPJdmzwTh5r5Mr+H3+Xd\n", + "x8fHNZTT+xK0h59D0sYJ84lhAhk7GEY52eM4P+adcfqY+TWKPRgMCprrZ7NX0NVwelgL+owM2JEw\n", + "Nw7Zo4GoIgdGI1lHZDyjSOwH633PtYM5non+Bi3JzyIzs4+jg244OzurodXsNetgB9jMPX8bPYXD\n", + "yqEmH5Biv+D8eE5Bxwjmrb9AW3HQ2fsg271erwYmMG/sFUrRoC/JIFm3ucYfVwKhvwjwWN+M+vFe\n", + "uF6MzXNuXb6vPYsjhaA5ZcciUYsmoo44+Hi5UShHQHzPzsvBwa7iro9UR1RwIv82pOyjtrlmEwoa\n", + "RYkDwHvZtPzbDtH9/X0h7x4dHRWFmcmduQaJj8lamZg0mNEhb2afhLNTsNlsahdX+oRZRMTPP/8c\n", + "h4eH8bvf/a4QOc/OzmKxWJRNul6va0eNqevCOjraYa0cDUdE2Ujr9boUdWPecCqog+Xostvtxng8\n", + "LmlG+mC5oFKzDRupM5OYMVKGrUejUfk8YpcyePfuXTl16jlrt9txfn5eNud4PK45B5vNphRbpZ9O\n", + "b1HzKh8tRqFzIMCKwAaCuWK+UfoYbTvpGE8Uh1E3DAunffr9fq0vjup86pZnsDfsuCJ7jMPGiwAK\n", + "4w9hH7ll7/Ne3ud0wOHhYQ3Cj9idAmWd7UBH7BBAB17IAb/D2tLPjEowDqcw0GcuIEozCsEYjGI3\n", + "Go0SgNhxPzk5KU4suggdh7OGgjdiAZkeo8d88Rnr2263a0VVI6qsAOiokWwcL6ejnBnImQajpfTj\n", + "4eEhrq+v48OHDxGxu9B6u92WuwhJ4zFG3/lnfYIzZtQw2wEMO3/TN+8fp7iQJ88Hn7laNpkNIxY8\n", + "L1M97HDxu5nEDJJnpNbUEz+LuXbakv3mQxrsa+qEeR1Jw6JnrBetz/LJNf4mEEQ2jfjzPAchLhzt\n", + "vUFAy7Ndm8oEe4IyZw6MdkbUbT52EefeqXJsBX2xrCAbIJ9e1wya5PYsjhTXN1i5w6lwusLKDUcL\n", + "A+S6ETgsmYXvWin27mn8m1M7OdpFkFHk7hMbzt68I4yIqI2PvrLRDg4OSkRHCmq73Zajzl5Ep1Ai\n", + "6mgDEfBms4nxeFw7Een0m3PqfM4fjAf95mTJ09NTfPr0qbbByIHj4JjvwfyyoTi6zjiMlqCw3U5O\n", + "TuLi4qLmnD09VSf92ARG8nAOObWFXBi+Pjg4iMFgUFN8zM8+B9Och+FwWIz3x48f429/+1tcXV2V\n", + "vlhm2u12dLvdchLUChwFtNlsas53RJRSCzhChtSdTsBo2CjyO0a8aHbOLft2uLMRQsmcnJwUR8bO\n", + "MO+9v78vR8xZu/F4XL7PdS80X9KbT3AZ3bLRZb5Q0vP5vMgQSDFjmM/ntdQEjj9Ij1M/8PDy3EVU\n", + "aVY7oMw3eySnaDwOR7s23kTQcBORfRxQAh87505pwm9kj+IAohvNAWPeQJBwcJFD5pqUGuPgmDnO\n", + "XaPRqBkvn9g0AoBsZP2ZeTKbzSYmk0nc3NzE+/fvI2LHLZxOp+WkpGvj5bSQUQF+H7qAg1bQGfYf\n", + "e5z5zs5OPkXOnDnNCvqDg2FEBj4pfbUNYxzIVj45bgfI82l9QeDptCZOFH0hOOdzbA160KnrvE6W\n", + "WWeEvFcZE/bNgRJOFb/vsfMs+mL7i5whk0axj4+PaydCTZPhO7ZtjAmbTf/tyLKmzFd2vplj5sB2\n", + "Ntuq3J7trr2IekSNgC8Wi5qXzO8xmdmjt4OTc8mZN+L3odgwxuYD8LtEnxGVgIPgIDSOYJw7t7Ph\n", + "vlowvbldNfjk5KQYHsO9/G52qoBNMeARUbvviOjJhFRHMhjr/BlHi3/55ZfyPjYKzzMSgBA7heTr\n", + "Lugj68mmGo/HpTZJp9MpRUJZJ37O77iiLZEsRofvMcfMj4nf1DhiDb3ZqLdENLfdbosBvrm5ievr\n", + "6zg6Oiq1tLzx2ZxET8iy5xTFYmeKqJT0IGhZRBUJU+IiEx7t9Du9Y8csNyJxp1wcpbMXMWyuobZe\n", + "r0tpCx80GI1G8fj4WI7vcww6Iso1O8fHx3F5eVnQtX3zZmdhu62KWObrGUBnSCuY94PJAAAgAElE\n", + "QVSwnuZ44GA1m82vCvrRb2TJTqmd8OyYImc4Wk5fgSqxd3jm4eFh3N3dlSr7nU6nli5cr9c1nei+\n", + "GBGwzuC59NXBHo3negyZk+Pv8Bz012AwKEGESfggFXYm0InIh9EMdMt8Po/RaBTX19dFp/z8889l\n", + "XeCn7HNCqHhuJwD9wdwYeWCeKbZrpGNfHaKISlc5Tcn6Ukep3+/XSr4gO1nvOzuC3aLmGbIPqtnp\n", + "dIoDa12a9y79w+mgYDDvdWrc+hzbyb+dDcIp4TOoECA5Rn6c9nbQwPtAY/cFagZO6FdOXZLGQxYY\n", + "Hylz0zdAnAiGnSqnL6BgyEmmBjgrgL50cGZd6nna117KH7y0l/bSXtpLe2kv7aX9ne1ZECkiOnt9\n", + "IA1E5M5dR1Qn8CIqz5xngdo4qqZlbxwPNJO6IyqIk1QZUYUJzuSusyfL951+dPRHdEmaarvd1nLM\n", + "nKwDIs6pBiJhv9upJZNJI6I2f0QB5k0ZkQIVMCJnyPXx8TE+fvxYPnN/XOiUuTafIeffibR8pQVo\n", + "A+lVUkMRUS5/7ff7cXZ2Fp1Op5zeoHgn7z08PCzRLRyC4+PjGrE4IgqR0vA5c5qRyXa7XQpykl4a\n", + "DoclzcRnRqcajV1BTxNAiYDgpZkL6OrHHDGnEaGDHJGqolGdF/k3QmDo3PuA3yUyN/JKOmO73ZaU\n", + "I+tLZM/cRkRBAJfLZUENT09P4/GxupDcldDhZ3iOQZ2I7B01kk5gHzEGkGHkb1/qYD6fl+dxMCKi\n", + "OilIP4xuEO16n2d9wt/ef4PBoBCjiXzNzeI+y8vLy3KCL6KOGu1LheX9nnmgPt5vHovTki6M+/T0\n", + "FN9++21Zn1evXtWQGF8XQnqQ7202mxqnynJozo0RTr57f38f4/E4bm5uauly+mi03il4dBYIqfUX\n", + "qInTmMgwXKter1e7TxCOGDqKdHxElbr23COnoNfw1rwPzVXi3x4DXC4u5zYRnfkCrTYCxhyB8PgC\n", + "Yb6HHjP3yOhK5hIh8yBjtl+M0ffqGZXhO5nWwrtZR8+Nsz408wOZB2TYfDX/rnmc6C37AT4FbOI4\n", + "v88YeB9/3E/rJGea3M/fas/iSJFnt5JCmbFghvJQdk5BeXAokXwKyXlOfteTYSfKBF/exxHqLDQ0\n", + "E8D9PvrkmiEoChwKw+pWCjyLaxLgFiFkwM55TOv1unYCh7niGRkmxmjjKLnuj51baifRbm9vi1IF\n", + "5vcpGxSH6y/Rz4gojs9qtSopM04GQgLmvRE7p2cwGES/34/Ly8saN8ZH8/meDS4OAQqSucGJg2Rs\n", + "XgpkZxxCG0QcC5z66+vrr4jIPKfT6USr1SrOhDkO2XCSQrChpK9Uusc4+AAEyqXf79fSB6w5f5t/\n", + "SF8YXyZdcu2HFbTLP0TsHBR+jqGlZlm32y1zk3lXcEmQG75HatPGjX7ijMORywEGBs9lTlgL0rNw\n", + "aVgr+G/MleXTwYeNE59l5ZvvroTgbsVMgESq3Pucgw7oGe9tZA0Z9jrZ6Nop83dx2nEc+Z3RaFT6\n", + "6TQnv8dcIXeWUeQok6gz/cBtu92VU7m+vi4pMo6kOz2ZHUf6i/PB6S3LFO8y+ZuggxS703AEyDgL\n", + "rorN/HvvmANmI22Hn5+ht+ycIMP39/elrh7OKsE0e82cpOVyWTtV6nRZPiCQObQ4LgRMtl84Uug4\n", + "02hciiBzGVn/fbYWGUWGLafIinl6lmGn/MxJcyqRMZijad6hHTUfdMmfmSKUU/c5Jcm8IoNOA+5r\n", + "z4ZIkce0cmdBF4tFiWojqlN0VhgmAdrDjKgjUlmg7LVHVJGtT/9F7ISVSMWePXwM+uuoFGGirxZg\n", + "nCeIeZC8eT4C4FNZjBXBN5LAZwgu9TMcsToK9ZHoiMoJzBFJRB2ZazabBWXguXDZIPtlwvV6vS53\n", + "p3kc/L3dbmvcGxRoRBQukB2pXq9XDJUdglzozsfBKRgJyulrOYhy920OSLy0HIW02+1ymedisSik\n", + "ZiNvdrB5FkYeZWO+mhUR/ATL9z4eg+fUXCWOFi+XyxiNRjVukeeb92I8/H1OEbo//D7HzHu9XtnD\n", + "rBNF+a6vr2O5XNaOHXOlDPObo2ATRB0A4DxhYLn3sN1uF86REVLGa4SPUg6eL1AyuFRGDmmZC2Id\n", + "wbyBSBIg4UDBzaMvzNf9/X25sDiiQs326Sbkx84s/UNGMBbZiex2u3F1dRXD4bAWUCK37D/zchz4\n", + "8ZmdM0jdyI33Po19tc+AsQ7Hx8fxzTffFDlFpphro0cELaAojJH+cTDH/TBaYx4o/YPUTLCH7Ltk\n", + "QHZcCbaM+toxwJYhwz7NaWTDwQABBCimneNer1fj6nkf0qzHMn/H8uFj/qBQ7p9lw2vm/zM2n6i2\n", + "3s+Ode5P5kcxfvalHXRkzXwzj8GIK33LfC36lfuAc4bM8Dsmydt583j+N47UszhSEdXmslHMpQZQ\n", + "LK5ia2URUZ3QcLqQzzxwNoGFJqJeA8QeL+kfo1/8PpMOouZNyu/Td6d7GDffNbLCO4l0MELr9bqc\n", + "UGETW2g8T2y8ffPM73lunN7LiAVz2e124927dyWCPDg4iMViER8+fIjr6+ty1NRziIL1vXMRO+eG\n", + "Qmlee6pio0x4BvPGpsGhBEngokscUSt+iKTeAD7pSZ/pK30BqWKuXHsLInqr1SplLPxZLvppdAXD\n", + "CjKBEaAPGWmFdOm0TE7rMF9GRmgcqaYir42knUWfaOIz1/ixQzCfz2O73Ua/3y9oCXJBSYjb29uY\n", + "Tqdf3cGIXK3X69qJHyJ51jDXSkKZ8z2fArUDleePVC/pZxO3nY7OQZRT2tmJzk5UruoPQooDZ4cV\n", + "J3KxWJQLvZlj5iaiIuCyzqvVqoYYOdVkXZNTEaQuz8/PizPFOlHM0vsmoqpLxR2DnK7mmegtB2me\n", + "N36Wg1bQee5TYywRlW4nNejTWjhCOGEmm/Oex8fH2gER5tQHJFhz+hJR7U8/E6ceGbTu9NxmKgl/\n", + "gxQ5jQ5SttlsirzwTJe5yXaDvWKk3X3nOw7a6SN72nKc0SDmyPbE5RDsDPKunG6zk4XTaxuS598Z\n", + "n4ioIetGqegfwRzP9cELbI33gdfHQYazV54rk9SxMaxXdqL2Oatuz4ZIWVAiqguHSY84usTb57SP\n", + "uT4oUzaVI3anL1CWjiZc3dn/NqQZUVUi59/2xP1/n7TIkZojZBSdDaRz196k8FIYZ04z4gAxpz5e\n", + "mzemlRvPw9jbeUF5PT09xdXVVbx7965E0XDZUEKu0sxcoJydhuSKBxTV01N1QSXKzDwaR0bb7bZE\n", + "rg8PD4UjxWWnpImbzfqlxYeHh8WZWiwWRUHb8BrVi9gpb4w1StqpS1If/K6LanJaCYXK/PJdw82O\n", + "kkk1ohidFj0+Po7JZFIiea8pCginpd1u12qTRVTH/532pNbXPmeXsXAdB+OK2O3Rs7Ozks61zGw2\n", + "mxiNRjGZTMoaY5C63e5XqKidN/YFStFyaDlHtiIqFA45Y12sNFk/5pp3mk/D33xmNMjPiqiuVLHO\n", + "siPE6cJmsxm9Xq98n9Sd69tkPgaGwwbHCLfTJpZv+uZaWOiPyWQSl5eXcXV1VagCj4+PBRHPJSqc\n", + "ZmGvWSfakBA0OkBEpnKgiB7nJgbv06enXcFXir0eHx/H+fl5RFQXWm82m5hOp185vBSX9PUnrA/7\n", + "jHUxv4Y+YGP4HmMB/bZ843wakbPMYD9arVZJyzFPToWC6tAX9KxRPq8HqLBr0DF//Az9nU/XGm2y\n", + "k8n/87iNKoFkGbhg3rBHNH7PKBeN72E3vE68y7yyjN4x3znNzvwbyOB7ZEroi/WJ05m23TxzHxrF\n", + "c3Jg5fZsjlTOiRKZkitHOCPqV8Uw4c4zO41mD5QUAgLqlAK/7yObNnoYdoSZ75G3diTo5hQBSpyf\n", + "O9LJUR3OgmHKiIpfAYKR04UR9UiIfqIgMpRKy9F8RNTG32zujqOfnZ3Ft99+W5QbimA+n8fFxUWN\n", + "xEsDnneEQiSGMnRfSYeYJ5TnYLFYxHa7LXVoInaOFFXE90UNfAcj5Tz6ZDKppVFdxgDndTab1coN\n", + "EOkBz9tw46zbwWg0GjXEwiiA1xGD73U0UntwcBDj8bimNFlPIjWiQqclURLMC/LnO9bgLTn6zKgi\n", + "xnYwGBQ5BVXzPpzNZsUxtzPIAQH2qvcTc0Pw5OBqX7rL+gIUDB6ZycGuep1T5uZeuA/MtxEeI0Q2\n", + "FDhyTnMYMTZnx4VzncbhmSDSEXWUwgRukEnWkGCF9+V0NJXCHx4e4uLiogQH5iV2u92vUpcusmrS\n", + "sB2pnO5FxtiH7EXvfdJ6yKJ1NH93u92SAmZuCDJ5nknFjUajxo3LurjVapX37iu4Sr9zyQGccHQB\n", + "v2eZPTio6j/1+/1arb19NQkt40YVPV/W18wRAQjrijyxV4w+edz8HvrP8sZaOrhzX/m3gQEH5Pvs\n", + "BfNjqk1E5YA43UtfkWHsutFRUoiM0/1jDf1er72DVQcfyA2ygpPKs60XbIP+39CoiJfyBy/tpb20\n", + "l/bSXtpLe2l/d3sWRMq8JLxNkB48TUjZERUE6sg5F+jjuY7YHanjpRLR+Fl4tDyTyACY0MRgIEaQ\n", + "hcxJ4r0RUXumI2O8crxhCOxEWY7YSE9Cms2et087MRaeCfzriMARBlE373AqA+Tl/Pw8zs/PC6mW\n", + "MRGR93q9EsHyXubTcCwRkBE9omM4DnBAKAQZUXHnptNpjEajGsEb0uxmszutlhFHIF4QAtIboGPc\n", + "ydRut786WkyF5cViUb7nQoMgIiawwzEhskGWmDfzuEA8WWOOR19eXpZIO6Lil9CXiApRAqbmea6I\n", + "Tz/4Tq4kDzzPeJk3n2KKiHj9+nV5H3eaudI4awgyBEJGWobPQBtJhznVQLROFLnvdAzrnPkO7G+e\n", + "YZ1BQw7yQQz+D+GXfyMHGeUwVwVUxgi00wTsd55Jior0tm9IAMEgtZWJ7+xVEGv6ws/pp6NrUr4g\n", + "GhcXFxER5aAEXKmMyvl+P+s9kEanzbLOsO7KqASIFQiYUQnmB1n25cOkG41gR1TpXtBSI4DIGIgK\n", + "KcCIqJ1KhGJhPhPIdZZTz5M5Qcw340ZOzQfy+M3PY//RF8s988d8k6nhfTldaKQLnh7fz5kJ7xmn\n", + "+Iw25TUEoeJ5mROHns0ps2xT/DOjwvYJLN/IisfnPmcCPuNzCnYfny8j404L0y+vef5/bs921x4E\n", + "WCuqTIpjkOZBIUSZxxQRX8GcTushjBYU/m8YMCJqBu7u7q4cteYdbHz3KaJevRvIOJ8iQsE1Go3a\n", + "VQi87/HxMbrdbg1KBdL3JoyonBYfo+dZKCHmgLGa6Ggh8nzCZeEklisDNxqNcoy30djVSxoOh6Wv\n", + "vIP19aYhXYTRd6VpGv2lkfZgQ1CLhTGgFEgb2hCycXHcmDvGjoK1U9vtdktKkFQRY3eqmMa84Xii\n", + "nDMXxOuEcvW1DfP5PMbjcTSbza+u+0DhGvpmvlkrO6i8o9lslgMMVN2OiCJ/PjThqu849Dj9cNIe\n", + "Hh7i9PQ0Op1OjMfjuLu7K+M/Pz8vzh77zWlmO/sm9LJuKDCcFH7PTpiblSAOgOXIqSV+3/w5GyP3\n", + "h7QkgQtX/dAfHNRWqzotyDNxnigZwglKZI7ncGkycoODzjvMWbEzQwqYMftwgxU9PCzW8ODgoHzv\n", + "4uKiHJRwatDzjZPvNCvzgMNgg8P7bVhJcyM32VmhOe0KfcE6ykaPtCjr6YMS3pc4xvQNKgJzwx/2\n", + "iw9TOJhGrhiTU+WZ5wa30Zcns2bMGfrdTkY+KJXT8ayRHRE7eKxBPjDiFJWDk+wg2kFxmo059QEV\n", + "/rZzw/f4m+fZJtqJRp95juHcGgTJB0gcqJgaYeDAfzslSrPNxkG1DfS8ICu0HCjl9mx1pEA1zDGI\n", + "qOpV2NP0orMomQti3pI3d/Y+feO1c8QINf1brVYFjbAy9ak3E9loOC9EdNlRBAnx9xCiw8PDUuoh\n", + "EwfZ1CipiHokZOGIiK+EYh+HiD7tO1p8eHgYvV4v+v1+DV1Amd/c3BTlgcGAr2RkwdwWNia/Y+cM\n", + "RUg/mTeUD3eCUXbBMmPFzmeQna3cnX+3HDIO5AJl02w24/9h7816G9uO8/0iRWrgrKlbPZwcx7Gd\n", + "xBe5yvf/CrmKgQSGY5+xWwPFUdTA4X9BPMVnL6nzAwwE+l9oAwc6LYp777VWrRreeqvWbDbL59B+\n", + "gWdaHhgr9wIhKBFA3tuKkUObiZTX63UFIeNdQSu4Z6vVSie72dydTu/1dlEFMudjOHgnV81w1Mtm\n", + "s0mSr2VqNBrluY6sPf2jQHqMuiyXy9xDyBLybeJteSQNCtPor5W2ESj4LDinRoNZWxsDxsO6lRG7\n", + "+T3WP8yrCcIRkc7m2dlZrhXjwDGv1XbnJfLeGBbzjqwbjKCbs+LWDQ4m+Fuc/hLlQ74YC+NizlwN\n", + "bX1C0QGOD/e23ubffM8VrUaBeD+ew/2QbRBn7yHW3xWl3gu12o6PCPLptXPTUeaM90QGkR/0YRn8\n", + "WFZKPYQzjB4uOWsEEzg3XAR1jJP3dXEEsm6bUNo47oXM2sFwUMk7IgPmFRoFM3rDZ3bYjA67kIR3\n", + "eMnBfykY4vcEhdYZ7K9y3tAJyJsRN9aX35nj6MCgfE8j3gRLdpTtcL50vRrZHI/ekSnRHMrbhzAC\n", + "yTJICziTRqqjREFsVDwZbHaTObnKqjYuOx4lyc2wtpUe74KhtyKO2LUUKEt2+QyFz0+MBU6NEQVH\n", + "l5Ab/Xt+lv2NTH5/fHyMXq8XJycncXx8nEhSxK4/0WQyqVRxROwqYlqtViyXy0rkidLiXUtvn7ll\n", + "bR2VktLg/nxmJMrjZlxl+sDpFH9vs9nEzc1Nju/4+LjSfqJMm7pSy6kkV1ExZiOLjppL2Biir5Gw\n", + "iEgnCceOXj68mxEltw6o1WpJDjfszjjYLxg4R/MoRObIChO0gmfyPcr6QQ0cwd/d3cV4PI7T09Nn\n", + "qbvlcpkHPS+XyxgMBhUSvpFjOzxOwfJOzWYzU3Q44KS2bXSNABg95WKeQTztZCF/q9Wq4rhtNpv4\n", + "9OlTrvXBwUGmqJbLZeqhsqAEpIX96ojdxODlclmpsOO+rLXXd7OpUhgODg6yTQUo27eaDWMwmW/u\n", + "6SaQdsDsSFnO+X/eEyNV6tOyn5VRBJ7PWNw0GFTbwZQd1/v7+wxQPFcgXiCP3ofYH+TOqLEDPAoZ\n", + "QDgh0e/t7eWJBg6wnJosg10yDUZb+Gl94u/ZObLT46q+Ui4sG8ivG1OWf29nhe+VqCdjtHOP01fu\n", + "U/7fziK/s71zGg5ZYC1eyrzw3g6S7LCXqT+nij0e5tdj9/h4l48fP8ZL16s4UpTfGhpm8vf29ipQ\n", + "b8R28CiAiGojRnvKbGxvbgQ/Ip4ZBd7B1QMRu8V1btbGG+XKhHtRcRJ5vo2eo3/SVDwvIjItYo5K\n", + "t9tNw4TBszBTOo9Rs5E3j+Ilp8/polqtVulrhFFiM/PZcDjMXkERUUE6SDExjs1mUzl+wfCyv0cv\n", + "KBwsp6gwJmx4O1lErHt7ewmps/bL5TIbiZaOratznNLleWx2KtOYb9YF2fHam7tiKNpGx6kWR/PT\n", + "6TQajW2PJH5vp8cw9tHRUUWB8zdE5DyPPWY0xfPmVC97gHsxjyAlvCfOFYgw88CF01dykFgbd/3m\n", + "YrwYE7fMwLjyPjZ8/lnyRSIinfnxeJz713uYOeEzR+VOx5RUAWQVx4TvnZycZAqJZsI2bGVazIEJ\n", + "vCnm1I5brbbtEUagVzopDsqc9np4eEjnez6f5/vSBd9pYsZAdSzrZ0TnJU4NY+OZGCKOTyK15/1m\n", + "Q8k4jOx4vzm7wJ5yqtyVya6EZK5IGRnhRodaT1uWMJqk+fgeDp9TWuV7rtfbNg1lypX0LO1YjDQZ\n", + "TbRuL/meXien60BquFdEpIPpLIT3vmXEOpN7gBg6gC51q4NXZ16MSPOuZAf8rp4bAsgSEeX9S54X\n", + "qBm/cxrPDlxpn0E9zVFzup99yrt5f9h2vnS9iiOFQrUBIx1mpe6XJ8IrkSwGD2xHuWvETuAwevy9\n", + "L4x06Z3ymSN137NUaFx2zCKi4tXyfRSK/+alKI73tYMU8fwIF/+/HSkUgcnbfk+E3pAtYwWtG4/H\n", + "FY98Pp/H1dVVxZHiXTG6jO3+/j6jcvrEcE5V6dgYKnfKxJuSsTvt4jmP2PHbvC4o6JKHQsRiWWy1\n", + "WhkplqkWNqI3ael82+CU5FEcSIyf4WUceZQysmFiaEQ8i/aQXZxfv7Ojfz+vbNtgQ+PfEy2bM4jM\n", + "YKRKbgKO0NHRUfYJe3x8TJJz+RwQAIz7YrGopFlRkvTS4XKKiN9b8ZNKIQVUIqA2gmVEzBqXaXue\n", + "Qed9Chz43nA4jHa7nXMKgkTK9eDgINNWfk/4PG53YHl7qfyfMdspKNtbYCjr9XpcXV1FRMT5+Xki\n", + "jpZP/t4yab1UBmJ2cjyvj4+PMRqNYjKZ5Fhd8GJDGVFFwTDWDjjtPDkwZQ9j/FmXiK2s0werdP5s\n", + "L0rUxYgTMsI6cS+coYidQ848O2BjfUgxko2wrsFAOwiwA1JmU+ys2EkHWfJakQYt18jvWepKO3Ps\n", + "uZe+R2BnFMiBg+WUlDV70ek/9j3tKdwAln1Arz4HhbbT5gIjgyXowUUgQ4sPZITLDqqfZ+f7W9db\n", + "+4O36+16u96ut+vterverr/zehVEyhBmvog8QBAbIy9EbF+/fs0IIGLXFRVv8yWEiIjOeVe8fxCi\n", + "x8fHZxwSOBg+M8xpP3OlPA7gW+fYSRcQfZSQNvd2RBQRCY9TyfWSBw2079TH/v5+JRLyO0fsCLUg\n", + "CEYlWJ/JZBKXl5cxn89zjIvFIptDgiAYfjdMXKvVErm6vLzMKJ1xOlrwmUu8f0Q1lVrmykEk+N3T\n", + "01MlLdpqtXJOLHNGuZADIihIwuYGOPIyP8ERG6kpGlh6nZFToiy+zztAFPe6OBI2OuV0Ycl/sBzy\n", + "PubRlGhQKUc8w+lAw9pEa6TpXF3Knux2u9Fut2M2myXvDITRcu/IezweJ6/IqMVLKTEjGozRqT1z\n", + "/0C5PL989lLpP3JH9Oln80z0DWgL8jaZTHJsnPPo1NbBwUEi5bVaLT+zzuMZrD0I5WKxyK7gXE6h\n", + "griA/q7X62y4WSJL7PdyP0Rs036k540UMc4yg+DP2WOkS+7v77NtyGQyybWwfuQ+INRO7XAxp6Cu\n", + "Rl1AlCk0MOqE3ivXl3EYqXKatF6vV1LQyBP/b46uW7QwbtA3I9Xs9TIlxmeWeSO7RnzNmyRV6H1b\n", + "Vtvxk33guWFe0R2MH/2FTfQ+BRUrW4lE7NKE2ALrT/QF/GYj4/P5PCaTSUyn0yxmYN7oLO+xlf6B\n", + "EUX+1ilmrxHjY6z4AeZou9mt9aALN751vYojZTj8pTQVEJ8NBsb04eEhxuNxLobPGGPA3B8yrY1m\n", + "aRRQjK4g5FnNZjPLxl1NYAHld9wfISuNt/+O3zFeFIgFmqtMQbD5eE/4KqVSsGLCGBviRticRuFA\n", + "2Ha7HZ1OJ2F6Q9Wj0SghYypcmF9KxuEucGZXROT5a8y1nQW4TvAySGexvqQ+MG4mx+JAeQ24p1Nd\n", + "3hg2zNwPmeEdgY1xnlgXjDYKGUfZaQH+zr2bHCggW4aODeWbS4Iswk2yDJMKsUL0+pPSBFb3OMwj\n", + "fKnC06kzKykcdkr8kYu9vb04OzuLXq8XNzc38csvv1ScHj/74eEhq/0oJmCt9/b20uFgLcwh8bxQ\n", + "5epAxHID38dGnr/jd8w53yv7PJXpKK9xs9ms9IlbrVYxGAxis9nEly9fct6Yq4eHhwpHLmJXFeie\n", + "YE6R0LUd54Z34Z4ljwvZf3x8zM7vrgi0nvPfc7HvTZC2nPjvS74Uzs5LKWHSKdAPvBcptPF+9HPY\n", + "R66EhFPI+Gy80ROuYmUt0D1OCzp4Q+59aD3ri8OHTjDdgj1tPpTniJS8gxsCATvETtkh4yV/iL93\n", + "xZ/twsHBQQY5nAHq9J15U6QA+Qx7gcNnR4SghL1kpwQnsky/uYCAcbh9Tdn7rpQl3tNBtp2aUn8R\n", + "oJdcLJ7Pfbrd7jMfw4Gm0/+M+3/jSb2KI1VykiJ2+WYLpD8jv8rkwL+4v7/PzYliLKMaR2V2qngX\n", + "8rB2spi4b+WfEWRvGjYlQgCfJGKHKJngZm4RwoKwefwRO6cBEjHf5z3xzM1xGAwG8d1338X5+Xm0\n", + "Wq2KMWEz2alAcdATqNvtJoeFPiyz2SyVXuloMI8oG5en7+3tZRNAjlOwMR8MBtFoNNJw4yBjeMoq\n", + "TeQCRcUmsSNlZ4J59k9vLDsLlh9zKDC4oH2utkEWarVaOpLmGeAIehy8K+Pgd+UzI3ZOnJ0g/g5l\n", + "UvYcIhJFIdsB9Rwhr6xFKYMlz8pyDA/o+Pg46vV6/Pzzz3FzcxPr9boS5IDSULXGe5qXQ38lG2zP\n", + "Q8lnMukXQ2J+I8a0dArMH3PJOmOFH4czYGVrJQ7iwjg4hxDd5BYH3Ofo6KjS84rAAq4HbWGYb8sJ\n", + "+43vbTabLEbBGeWyLEVEBallv+Bkm8SLE4XzZSPEVRotPmce2ScOFAkkcJTKwg10ETLIOqHfCEyM\n", + "UtiZcGBWOkasKfOG0cTJ9vid4SgzDZ5H26/FYlEJMGxn7LTd398/O07LSJP1jmU1YleswnsSfPKe\n", + "dpY5K3C93h0VZD6Ugy7QPp6Pw4+Dilx5/AcHB5XeinzP728bhc1A1sp+buj9EiXF5iNfjKF0suxH\n", + "MNcGElzNjGw6mOL3PAO9aZl3kPrS9SqOlHtqMBCiDgwKJMyI54eE2mGgDB/hsSHkJHEqWGww7JE7\n", + "RcTzUKQ2WhE7Q4tBsYIGZrYidiRgheJIgPfFsBvCRkD5XlkeDBR9dHRUUVBEVN9//32OqUTIeA+n\n", + "SSN2yABGzaRFHK7RaBSz2awStfD3rsC008K8OvXFGLk/CpjPkAEcUxSgv1c6H8wpBEi+42jWG8My\n", + "46qxUjEzJ6yDDRsG2+OyYfeckzryOkK2LNEFO78gQE6fGrEp03yOqrzOL0r9hz4AACAASURBVP3O\n", + "c4dcl+/C/sFB8f3puXZ7e5tIru9Zr9dzHx4eHqbs39zcpEOGs4Eclmiyf1oOHBRYEZNeQzbKlAqH\n", + "Pbfb7WeNF7mXnSyu1Wp7qG8ZYBHlPjw8ZHEF42AvcLahURcQEAyyAzN0kBHCiKhE8uzX0qkhSCwJ\n", + "uI7mPS92bko5tRyUTr5lir/f399PhLvT6cR8Pk+ytaN/5Iy9Y5kxisw82CjyDuwRrxMpOJBpp5Ih\n", + "8GMsjSxxHwwyzye1aj1jNJYABwfArXt4P9a9dLDZ34vFohJkg046dc09jWyWjp9/8re8K/Ns3cgY\n", + "sVugwk4XMk4cP9Au1ubu7i5Tey+thQn8pk3YGbIDip4BZHjJibGe5p6MCafY54qyruwr20KvRakT\n", + "3bvsW9erOFI+zJcJAolAkRkSPDs7q6AB6/U6ERJY/44AHLWsVqvk5XhjIJj8zoYNQXGlnb1vIEnn\n", + "Zvk7M/+tMCJ2R2WU71mmpdiQEZHpMZyp5XLXrNNdq2mc6YNinZZxGsP/5t44OqwFCIbTSoxhsVhk\n", + "ry8rcO6JoLIGjJdndLvdilNrhIn343coIs+nq/0ceXgNidAeHh7SkNkIs4m5p40skTmGtIwOee58\n", + "Pq8cj4OSQMm9xGGAK+IxOnePgfQzUQx3d3cVRxrkzsiUEYQyhWUFgbPQbDYrvA0+93whn8w9zoK5\n", + "R3S7xzlZLnedrUnBHBwcRLvdjvV6nRwjl+m7WSDPc/TJe/szO9F2GIjYQczKI6VIa4OQ2rlE6ePY\n", + "2TmDy0FQxNyw35gDZIh79vv9NHy0u4jYdZnnvc3/xAFgjNYl/J53LXtMkfqLiIrzgWzZmHndmW9+\n", + "X6Z1mTsjwdyX4LAMQJhDH95cogteY6eHQEeQ17LlB/sJ2eK5HLtT6nf0kINgyxTpV+7tzwjcTDPx\n", + "vLFOBAsR1SOHarVapmr5HqgQ+ob5xlF3IO35BG2jythOqNsfcFnv22EwWIAdMOfMz8Qh4p2NcEN1\n", + "KOeUABZns3TIrbOcvgP4YL6tj1g/ZN+ABWvG+hlZ5/vYb1/MM/cymlvazpeuV3GkHL1zTSaTNAoM\n", + "ngm4ubmJ9+/fV9JbFxcXEbHdGNfX1xGxg7Md0TldZ8PGxOBNm+vTaDQqTdmswIigMEDm4fhyCsrP\n", + "J+r0uXkIE0JuRypi1y6CCJNIr9frpQOFE+UNbJjdabOInWFHQbzETSBn73QSUCkG0Uq5zEVHRCUy\n", + "Y1M4zcTziMR5lhW0N1KJALo8vHx35p1/28ii/MrvReyOsWDuzCNDHsr1ZQ4pjy55RyhzI6Ceb2Qe\n", + "JWjH1albyzBjQg55Dz8Tg2+H11E66+/0ldEIo4VE1lZcRlXZC/QS42JPksIiamUNO51OOjYR1dJ+\n", + "FDsOjtFbK+ASOWYezYHyOBhfrbZNxRrNQS/wOXvK84ETyTv3+/0cM58xDvf0Yp6McuIk8zfmZ3lf\n", + "2pg4pYN8uImsZc6y5rUmALWuKVMlvr71e9Z/OBxm/yXLAAEXAbIROQw0PEgjsDgfNpZ2CsfjcUwm\n", + "kwzOGBd0BBtExohcYMTt1BHcWhaQbzt0XiP+Dr0MbcGcLL5vhCxi197h6enpWcoXuX3pNIX9/f1n\n", + "fFOey7NIETMHvofTe6ZN2KlhzxlM4KfllTESPGM3S7TSOpw5YT/xX1kcAIpdIuMeh5FF1rdE6nGw\n", + "mW/aLRjYsD5hH3rflaBIeb21P3i73q636+16u96ut+vt+juvV2t/QITq/HBE1fN1ftxw+MHBQZyf\n", + "n+ff1ev1jEyMDhF5ANGbC8G9iFzwZHk/R4dl8zpXiZRRGpGL78E9I3ZwvSvaHL3CsXqJbN7v9+P4\n", + "+DgRqZOTkzg5OYlOp5P3dTlnibgYdSs5Fa5KAP0ADSovUEFzzJhv7odHz2eOyl9Ci0Cx+K75S8wf\n", + "//kzZAli90uctBJBIqp0tUz5Gd9zJOQIjfUllUqqGeTDuX/e1ZwA39scn9VqFbPZLNtGkKJiv7hR\n", + "KBG001tOi/C5Uyfl88rCDCNQ/J3HwJhANElvgP447cVe6/V6icKCGrvM2UhfCfXT0gKUmKtEHplf\n", + "oytGJRyVU/RQq9WyZYD5J/V6PQ/HdkrU6XhQLMYxnU7zeBAqW09PT/OePAtOFu9vvpWRGd4flA/k\n", + "kDEQXYNu8V3uCZ/I5f6MgfE6nek58Bw7feN5L/92tVrl8VF0f/dFA0SoCS5CgbdkYjlrityiE01V\n", + "ME/V5fLORLD3ywtd5H3Id5jTkmwPr2ixWFT0M4U8JSUiYptpYZ+5KzvPs36zDsZeGTn3+Fh75MDo\n", + "GegtYzDvzkiUES4+Q5eY5sGFHeVz3sfyVtpFo+geA+PAxrJXGT8Vty5MK3WG19JrZ/3mtK5pCeY5\n", + "M3ZzqKwv+L3f/Zk8ffOT/8MLgaP6KaLK27BBjIiKgel0OhUYM2I3CfB2bKCB050LjqgeFAycW1Yd\n", + "+Pe8D++LMDrdgECYTOhKMUOGFgR4PKR29vb2ctPxHoeHh9HtdmMwGORxD/1+P51DK1su4Gt3fmbe\n", + "ECIg8zJlxGfmCHEPBA3n16kENpBTcVwWTDs2QNBs/NJxZSy+v58LBF5+BoT7ktInpYtyNMRrgw4X\n", + "is9QeDhSXE6fMu67u7sKb8NKsuQKoERQGK5429vbVizBh3AVHf9h9O1ksZeczvX6mmjrNCX/NmTu\n", + "9eX7ZcGE95KfV3K0GEtEVNIlOAplhSbpIKeRS4fWijtiu9/m83mlw7TfCw4dh1bbyYzYVqdiBHG2\n", + "Tk5OknfJmiAbe3t70ev10jiWfXAwpCWBN6KaHi2JunzHqbmIqOgm84UidmkZ5NH7wuvpg3x5vg1Q\n", + "eTllw37kfjiIw+Ew01gm+k6n0xgOh0lPYF+wn9BVnh/0noMeOx4UGC2XyyTxezzWXXaGMZLs+9KR\n", + "Ilhxyhzj/fT0FMfHx2noeQ56mKIpdON8Pq84dawJ33N6nnEx9pIK4fQVOsp8L2wGwQx2xHw587NK\n", + "Hhx6sV6vP9OdOEqr1Sp7RlmfWM+UdADLnNtU4CTh1DlFT4BBmpgUdcS2KpE1MoeW5+E/MH92epGh\n", + "Mv3Id5HB0jcpeaTl9SqOFIrB3q4/Y+HttHwrJ3p4eBjHx8c5kdPpNAfMwqNkOJcuokrYI+r3RJUI\n", + "FJNO9YYjayt3Frd0FGkOyec8N6J6GCz/76gMQWi32zEYDJILQW4aB8oePQLKBkUZWWkbkXCE8RKf\n", + "w0aR79vg8T2+WxJOXQ1j5c9nRBUoVBs2bxLPm9eL55pbZQNbVuYYBZvP54kAMa9uGuiqOeaUcbjK\n", + "hujqJQVeGusSBSNyQ24wNETMNipGM3DAN5tNxXChDOBSlO9kx82KDkeWy9ElCt+RnflMrBtryBio\n", + "KmO+zdlxBa8rJrmnnT4jWciyo0iPg+/aebVj4/5xfO4xwpskUkYuCOJoOsr6ttvt/B5z73Mmedf5\n", + "fB7Hx8fPKuTm83kiM8gbetDcTz4DAWMP22Cw9+v1eiLHNvrw1Ox08xlrbqJxKQf+W/+u1WrF2dlZ\n", + "pRcV74osLhaLRPsYP/qXefMasiceHx8rhHKjjA7qeFf2DQ4t62tSN/NipGhvby8mk0k6zC60oAlt\n", + "xNapNtmc90YueR/zLZEh5NC/512M6ltfWrej890nq9SLRq/s2LAHy3YZETuHnwxNeSHDAB6WU/it\n", + "OB3sReYR3e49bsTcup95BGBwdTRzaGfHAaR1RhlcMW/fQikJgLH3Rj/xJb51vYojRQrK8CLOAwrD\n", + "jhQKpOwSHrEbJH2Ibm9vnx0GzN/b8FHeiUPHYZ4RUTH0LBZC6vQUxslwu2HIshEeqIU3dkQVkSgh\n", + "8dlsFrPZLKNcHDKeV8LEVnCMA+E3cR4hMSQKSsBGxGgYSgXdw6GwsrXX7k0fUT3YMqLaKblU9GXK\n", + "ibFx/5J8yf+bSItjiuIsz5djDkBH+Iy/x6Ep78n7oCCtvEBPTKwso31ko3x3fl8qAae5/OyISIXN\n", + "nNgQsZ5EipYtPxuDY6cWRYpi9Pjr9XqldLpMFaH8+/1+9Hq9fJ7nn4g5IrLAxIqb5xHcuJKG98Sp\n", + "BFFiznEmn56e8vDcx8fH6HQ6FZQPJInneYwgdXQrt+O6Wq2y0SXGnfk2quk0Ow0nI7YEaVAmPnPk\n", + "3Ov1KujB4eFh3N3dZbDIe4PSm7hsnYIBoyu6969TSHaEcKxLJNnz8i3ECv30D//wDxlIcb4fa06F\n", + "3Xw+z15bOKyQtUHleCYBEfLswBCd8NJei9hWi56cnDxrqExAVDqLrBE6zvoN42rkhcvBvasumRfL\n", + "rh3ziCqR2VmTcs96rdAfBG2mKHgty6pPfg8aD6rmTIEdJWcA2u12xV6bUM+cmIjv5/k+1us8z/Lo\n", + "LIWzG8iDn1eiTRG7fVGigJYZO9LlM2xj7GOUgUR5vXpDTsOLrug4PDysNJFjkah6s7I1d4NGiRGR\n", + "B+E6D2r4l/41RKgoWibN0W5p2Bzle8IjdgJi5WblWkZfhndLCBZFCZRa5v9LbgljtdOAk1GiYDy3\n", + "FHKcKMZQjt9jdprSOe0SIWBMzEPpPLF5S5jdskIEZ0eyREts9EAh3ZgyYufU1mq15Ok5VeQmjd7k\n", + "vA+yw5xylQqjTIUgVzb8yDAb10hZxK6CzakUfoeMgP6AmEREVnAig1burJODFz4Htkepl/LhVILR\n", + "I5BkIjnzH+2Mkjbgu/v7+zEajWKz2SRKZLlAVh4fHytNc5EjHPqyxBkdQosQzw0VZYzT69TpdOLo\n", + "6Cj6/X7SCcyLQk/ByXPTSebIFYqMA90C4meHAL31+PgY0+k0uVWknknPG80wVQC5cEAHgvISr4O/\n", + "tZFnznAGSK97r5WpXu7FvFv+G41GnJ2dRcSWJ9RutyvHQKH7Hh8fU9czJuQb59oojeWYvktO1fl7\n", + "6/U6kQR+h+OGDjbKGbFLNZPa4jOcZ3qb2YCjB9AXTsWi7325pxPPZJ+xXk5/od9LVA1g4FsIo9e6\n", + "RFwJFo1WoZP4jN6EEbsejugEUn0ROyeTVCJ/53fgOy/xmZC1MlAyqmZ0GVnBttmu4TSWVZsRO32C\n", + "3vcaYHvsK/gq5b68XsWRIlLyyyKEeLZGQVgEoHZ7vD4+BO/TpEujMm7Qxf1BXSzs3NvRhx2oiCr8\n", + "XUblLIpz+ihroit3cDbkSMTA8/b39zOdiDKz0ua+Nj78tIPGRi3hSZQFyjpilxJljCgej5t3i6j2\n", + "mmEM/J0Rx8VikeMoOVne/IbUuS//BoFgDdm0PmIj4nmDTMPDKHLWyLwFKx7Wq0yPls5TxC5d7b8x\n", + "sub0FH9jTgFyhBLge6yd0wEocZQgcmFIHQOBsrSTaeTBqdqISKcTFPju7q6ShmHdUESMH+4i7/ZS\n", + "6gCn3Kli1on5K+fX6S4jLqAbDiJKpMTGxdwyDOJoNMpxU6rf7Xbj48ePue9ms1l+RmoKBMVR+d7e\n", + "7mgbHB4rd4ISCMTlWXtHR0fR7XbzKBXemaNJ3KIhYpfa6/V6z6Jq5JuAwagDsvgS+kTaDcfXaV4b\n", + "1ZcCU/7tgIG5+fjxYzw8PMRkMsk14Ygg0pO8q/d6q9Wq7HenZF7ah9bhZDB8Tqgv97FCZ9B4mD3v\n", + "ZxOUkWYk4OIeDhSs25FJt5owOsYzvDciqvu8RAedtsaZdMBjNAfdZkqLnSPf3+vKu5Ryw/1s2/xO\n", + "6M5SPzDPJurzLp4/yyL7y8Vb/I2pIyWAYPv7UnoaPet7lrL0/0Kgyuut/cHb9Xa9XW/X2/V2vV1v\n", + "1995vQoiRdSNhxux8+SJSs2DMgrTbDZjNptV+Ex8D6jWnuRqta1EaLVa0W63s+IN6JBqC6eJeEci\n", + "b0c0RsmMcPCTvy3z4URQjMvvSTQBauBUA+9qr53vAXUbPSrz3eTS7amX3zW8yZwSBdj791hJGTnq\n", + "9/1KzpbhWSMSjMeImc+jMp9psVhUogh+wqugeZvvCdTsgoG9vd0p5D6Lje85Bed0AvczIuo14Tus\n", + "o+ebOWc+WRfuQXQGImkkK6J6dh7vY9JnCet7L1jOvPaOQP08p2Udwfoz/h5koV6vx3w+r9zT1atG\n", + "ijkuhHE5Ted7m0uETnCE67QUqcQypQ3fqWwCyzqR5kCfXF9fZ1UQ62V0DR6To2DGAZJepsBcNk+z\n", + "SGScDtLr9TrTkOahWMaMTIAar1arRAiM4h4fH2c0D8rPvdiDPId5ubu7i59//jkRI9MInOIvES7W\n", + "GFmzfkJGTk5OYjQaPePDwS1DVnkOa4TuYs5MqEfG0N2me3A00MPDQx58zjhcqWlOFrrFdBDrIjeT\n", + "NW8WJA1kyLYEdNkpTC70DjzUzWZX7UeazEiTdSlotCv4LG/oEfad541CGqNIETuqAP9vHeGWISWH\n", + "jndFr1pn8BxQvpJzauTfdt52zVXnrIPPRLScIofoe2d3/G9/h8/M5yrRqP8XOvUqjlREtS9HxA6C\n", + "dG7YJ6tjmBEuSpIhYnJEgxcRRwjFcH5+nlUflNzDJbETVCozbwzSaCxI6SzYcBreR/DNbbCBdkrI\n", + "m6fdbsdqtaocemwYsyQplkosYnc0jeF2ExlRHM4bG6b1JkWZojycu3Zqz+vM85yDt/HGCOFEbTab\n", + "SqFBrVarVNaU/CwUpufe6VycPjs9GGZIw76nFaONIunoEj5mDOU8lXPn9zcvC4XKOvozy5G5BIzD\n", + "KXGKESKe9+3y9xgbStXOcrmWJYfECg7Dz9w4RWlCPX3OaO9BKoN5I03HcSnu7owjxHqRTvERIHDO\n", + "ms1mpUs1c8062MnC0eK7yD69kNbrdeWEBMbulLDnhXdjbY+OjlJHRew6apdOtOeKquKSb4U+KI0q\n", + "fCIoC3YIeNfSCPN+dL72PmSfQQR3+op9XXJZuOysvxTwnZ6eZvXedDpNeePZ1ouWNfau0/YRUdnX\n", + "flZE5JmVDib9XVMwXI3FeNFRbm/B2HAYLIvI6XQ6rZTsI084NAcHB9HpdCq8NRwUeLp8bzgcZqq1\n", + "Xt+dp8p32NcOKk0xsb50/zVS9qUsW26cAuNijzL2krbAWpqu4HVFfsqiCJ7LfuR7OP+WQV+m7fgd\n", + "DFJgG2yD+Ftk34GfbZd5bsyRdUJ5vZojhQIzh6YctDcbCpfIi0E+PDzEzc1NLJfLODk5qZDUjIBw\n", + "nAqIlPuE+D24rIh9WZnxd3ZsbGQtiCi1knPF91CypXPGpnHU4Dm6v7+vKGkrTiIEHAcLDpwNR3tu\n", + "roizxN+VeXVHJnYWI3aKqlRe3rSr1Sq5IDRDvbu7i4eHh2cl0DgRcHe8WT1PZWTC5xg9rxPjs/PO\n", + "OqGIcGxMDvW8oHg8H1yes/JznAOeSwsA5vIlpW+Oj50eGzhImH4+37eSctNMoxWWS+btWygPChFn\n", + "ASfOCBCK/+DgICaTSdzd3cVms6kYE/rsOOhwBErFFc8teRwlWdZVbEZBPQ4bCxSqHQH4NSBwPiII\n", + "2ej3+xVC/d7etiEmfXsspwQyPiLHFWKME91hvcc4eV8739wDbs/x8XGukx1P6yz2EOthOeTdMZKO\n", + "5nE6/T6WF+aOvy2NFAgC+9vBVjleF1Ogf8rDlz2H7AEjciZS39/fVxwL/h4HxeiJuZvmMXpvlkES\n", + "pOnj4+OKrPOerDF7mHvSRoN38BjgJ47H41ittsTuk5OTiKg6X+xDEGjemywGQSpzaoQeveJed0bN\n", + "vYYgd0aMvd5Gs+xk2WHj37ZB7Fk7+tyTIK9Ef9n36CGADcue5cpZCtYfXWJdShaGgIL7uGnw/68c\n", + "KSJMR7sIJ8JhyNWKgAm08DuCt9PRarWS+NfpdKLT6VTKw70IpbfJhsHQlsiKoycvsqFKDE/EzpHi\n", + "dx5TGcWVqJqf53dhYRE4k5S5DFeWa0BF2mq1rVKhlxKC/1KqwlEFSoJ3L9MGRqv4LkalTOE5rUn0\n", + "w+UKmnq9ngfeopzYjE5TPj4+xnw+TyKz54D1JrVXEtuJ4hyd+DPkr0zbMX7ey0bR8+X3QE55P9Ai\n", + "y3OZ9nIbENYXcrRJno68mWPWAdlGzsoKUu5txcQYWd/5fJ7Po+qsXq8n8ZzP6GiNzJrETKoMOSNg\n", + "4p57e3sVON5pNubZCKoVMpVWbhkQEYk0gvZ6bozg8b6lYu52u9mfiXsPBoN8frfbzdYLPA/nkf1G\n", + "awhkEATRUT1/64CGq0SgV6tdbyDObavVahXjwBoyBigS3Pf+/j6urq7S0D49PVUQfN+n1CeeO+sL\n", + "f9ZsNmM6nVbWCeeQUnwbVQJg9ken03nWBw8kj88jIh1FZzDsDDNe94XiM9ae/9wShv1QOv7IVqvV\n", + "yoDdhHIj7g4wWCOj1A4MaZtB3y1kjc7x/X4/74cNQKaMRtqRBIHHvrbb7bxvq9VKXWPknbkh4C2z\n", + "DuhzvlfqRuaPueC92HNUNpZZg4idzsGx9zpxeV9gX+wQ2uHl3yU6xj7BL0HfRuyyDS/JfL7DNz/5\n", + "P7zgVdiZIOpwtFimvnBq7GFH7LqN4wjwbxaIA33tGXtTgIaVufLSEYjYRWZMtHO+CKEXiO87j196\n", + "2SgEQ5yGbMt0lh0polkcQvfJcjoNBM7RkJ3RWq0Wo9Eo70seuoyuKRu2YHkcZQqJ8TO/ID12bOwQ\n", + "AZ8breLvqWIqBbzT6VSUKrJgpWfHl02JQ1XKoQ2BS3lttMu14KfHUkatdkbLYMDzao4U70/AQJQe\n", + "sUOW2u12lu3zWYkUGpFB2dEry9GXUT07/YyRMVOF5L28Wq2Sm1NGqSBLyCNzCoLMvnLHaI+XPWpU\n", + "jd42/K3XDbSZ5pAOtsyNQnka6cABMeKH7DPPOP7oGoKyXq+XaJajZNZ8uVzGbDZLY9pqtRLB8Poh\n", + "M94vOFx85pSRKyZBWjD2Jd+UdAmHnXstZrNZjMfj+PTpU7x//z4/43slks5lXYBuY97QFRcXF/HL\n", + "L7/EZDKpIGt3d3eJbMJbjYhKaxrGUvIxSePhhPNZxI7n46o1Ak90vA9BtjPDOOxIGsVw8OVgCZ1s\n", + "dJW/Jw2LE03F4ksUg81mE4PBIPb39+P29jYzDxERV1dXcXBwEIvFIo6PjysBpNcKYIKAmPHbDs3n\n", + "85Q5pyvLVjvWOWUGh7kkOAeB5Hu2oQ7M+DcZJv/eGSrskd8FfYk+9t72XHh9uJfpEB57xG7/Gzlz\n", + "sGLH29erOFKUAFv4mVAm2oYPRWIHxz1hmBQWEWEk3WCinC9D/mXulsm0YeInC8IY/FlEtZeNvWWn\n", + "RkoHzZFQqbDKCMAOJhsGo8jfuVGjkb7SeLvkl4teKygaFFrEThGhbOy5R+xIzn4/xr5eryvlryaA\n", + "Gmms1+vpSBGlYkBwxnhPyKG8P99DiTKPjoQctSBvzAv/9tzZWbLxtRwyXygAjLHRLOYLhekNz/qx\n", + "yZk3lAVOhlO7oD5HR0e5RjZodl4x/FwQX9l3VjZeh729vZxT5BQ0wKmter0eZ2dnKRtloDMej+P+\n", + "/j76/X4lPWD5Ho1GGVCx9hg2ggK/hwOSRqNR4SSZY+GjLSwjpLRLw2jH0c5bt9uNfr+fjliv16ug\n", + "fZB6F4tFdDqdvA9pmIeHh0QHMIroJkrr2ZO8B3KCIbFu855oNBqp5O1A7O3tPTsiBONeBkSDwSDO\n", + "zs7i6uoqhsNhdLvddCTYY+zjUkdZNlgb65TNZtt5//T0tOJIU3hA/zJ3y0cn4IC4iS/B3cHBQTZh\n", + "Zt6sYwm6S/SDe5VG3UHAS4G+G8va0BIA8rfm8rF3Sb+zTpzNGLHricV7gkahb6fTacot5xYOh8O4\n", + "vr6OXq+XGRfGCMG+2+1Gq9XK3mQcm2QbwkVmAtsHCZ6/I5jFoXXwVdI/bDdJ6aOvcLJw8tEXTgki\n", + "I+wVOH3smdJhdxNuZK8MvngmOtGpuvV6XeFm2jllj/xviNRb+4O36+16u96ut+vterverr/zerUj\n", + "YpyrjagiPnzuPHqZV/e9QGWI5k24dXrFED4eJ6iT03gmpJE+chRC7t0oUsTz9ge+uIc9bv8/0VHJ\n", + "xwD98vw4mmg0GpUT440clZV6TicZDiU95tQTYyO68PeIIohATUB39Zyf91LDUxAER+AgPY5mI6pH\n", + "rHCRrpxOp8/I3bwzESbrybu4fNZRGd8zF6DkpvB+Xm8iT1IA7gzu9ycK87uSkqRCx6kII6Dm80VU\n", + "KxOdgoyI5Nu4oWYZXdfr9SxUMFfA6JWP1/A5ZUZBI3aVeYyRueB7e3t7cXx8nKgNa8EcLhaLPOTZ\n", + "8srflpwNokZS/uaXMDfMf5lqdFdzIlOj0SBUrD+f0VkdfpXPY9zb21YzzWazePfuXRZORET0er1M\n", + "7Ww2m0zpMEZQzvl8XiH/Ov2IfjKJud/vZyr4/v6+kjJiHGUqharAyWQS19fXFVnb29tLQvPNzU0c\n", + "Hx8ngR0OCUhQicow58yPOTqmFFxcXMT9/X1WBpJROD09TT4biBRpXloHkHVgjKQw4ROZqE3aeTab\n", + "Vc7RRKch204HIwesu2XKyCNyZ3tkGgGHi/P3Tota7/vs14gqknN0dJScsPv7+zg9Pc15ub29zcOh\n", + "n562x72QrWGMNHAFmTLCPZvNUtfw91ymOpTZFNJpjNk2x2uPjkM+jAwig9yj0WgkXWOz2VTmDR8B\n", + "moptt9+7TNuX2RxTQbBZ6Eae5+akoI6uAPbavHS9Wh8pJhdIDkUBdGiYz04GisWKDw4M3YZduYNB\n", + "YUIt/NzX/CU+8zvxDvwkzQDUWRLmMXwWRnLFVtrepOZ6OD/rXiLcwwLFu2AoyiNFSOuRZrLgYODg\n", + "jvEOjIs18HyzSXhHuGdcTqnZiXW6hE1Vcmj4W6d1MeQYPVI1EZFcFfd2spK0jJgL4TRR2d6CDe3/\n", + "XiJAlukLp/DI+Tt9h+FHFuxoNBqNyuHDJrlioG1UbYT5m5IXwLOXy2VWBdqpZR2RN74PP83Kn5QB\n", + "Bgpi9P7+fhrtw8PDJMTCLbFjfnFxkfLhvd1oNGI8HqdD7nQK6QOfVeegCGiesZE25bt7e3upFHFk\n", + "LANWsrxP6XSTGkPe6DtX6gVSU5yJN5lMKlxNUu3wR5zWZp65h51zZty5IgAAIABJREFU5gPnCqcY\n", + "5wkeE2ensb6sn3khXKSkN5tNFmREbB2+wWAQ5+fn8ec//zlub2/j06dP+TzmjHcxRcF6kfn1vmE+\n", + "e71ezk9E5AHBR0dH6dyXQSMBBE5DxNYoci/SUcw3jhzjs55Bbzt9Z2I478tewz459YMDx1jZa3Z4\n", + "uRfvjd7a29sVTEwmk9QTpOjNLdrf34/BYJD3gxR+enoa8/k8ZrNZchUPDw/TkTZxm0CDi/Sl9b+D\n", + "AeaeQNH/RhZxRlyggp1lvbx/0K/MMwGGKQwR1cKOl7horD29wSKi4oiyTgSVJYVms9mk00YKnjEw\n", + "V4+PjxUqA/OJ7fzuu+/ipetVHCmM4mQyqZC8yH1inGyEMDDk/b2BUaRE515ghMWC5av8bkS1HQGX\n", + "nSs7e5AhuZdJch6D+Tg4Jy+dJehoKGIX0bzkDaO4XqqE87g3m03lfLmI6tlJKBQT3BFilw0zfnPE\n", + "yKszBngnlN8aBWE88EScY4fcXvYCQ9HxO6MgzH2z2axwrzzv5irYOcVxRGF4fm3kjYQaGXELAeYH\n", + "zhBrwv0Zo422KxaJeOzYgNa57Ydl1GtiJM/IktElc8Qwshhjj3k+n+d5YrwbChoEEKVP9VrE7lgK\n", + "95vBYGDovbfZv6PRKLrdbnS73exFxcW6gpx5r3G5cMGE65ITVxp9B0LlfrPjYUIyjToxmsgtzzg+\n", + "Po5arRZfv35NI8hYceTQEcy7jRxOPe95d3eX+wgOVnle4Hg8jnfv3kW3283v3d/fV/af0WfmhKo8\n", + "Owv1+rby7J//+Z/znZFDxm7DbV1aoumuBqTQgmDQxSvIHA64nUzrByOEyM1kMsl97AADOUGnQKqP\n", + "iCw8cjDvve9WJF4bileoiOv3+xlEWCaMoETsAivkxXLIGm42m0pbHr6HE8R+LZ1veHfwj3gf9Lz1\n", + "TYnK8H3WhGc6qPa7urChtG0OwAmSbEtKuSt/Vxbi8DwCJYIM6yjujd7z941io7N4Ns9C97EPWTf2\n", + "Pwic19BOXXm9miMFzM3EEXljoL3R2EQIvZUNG6hETfie008mlDu6x5Ba+B2VOJ3GpmZRTCzEMcEg\n", + "sJBc3MPoD89zJFymCN0N3R42UYBhdkdXjIE5sxDzXgioFSH3NNnXwmgFbeIiY0dJ2Qnh/VlL3olx\n", + "OO3puXEaDfKjHeWIXeWXWxawVm4LgNFjzKQFXlonZMLpOUPzoHyeb77HvFkmUVCO1IwuUGGGo2mE\n", + "xA6BI33GjOK2Axqxq3h8enrKrtIREefn5xkhllE5zhxOoJE92hogo14nnK+Tk5Not9uVoGU2m8WX\n", + "L1/SKTTZejAYxGAwiNlslvc1wRljWDoeyIxlPiLSsVutVs+iahupTqeTMmw95GianzhSOJRHR0cx\n", + "GAwqyh0jNp/Pk1TLvqDP3Xq9TjSrdPoJdpx6IoKG6mA0qNPp5P1ns1mcnZ1V0sFG4O3Ez+fz7Pfl\n", + "c/UitqkmUmKnp6cxHo8rRh9HxwbFASYXDhjvY0OJw+t7kO6lp5gdAnQ21YRGemi/MRgMKtQE9k+t\n", + "VsuSft7PvbXKjtkQ2tF/TpfjALNn5vN5fs9NJ/lbX/69U6F21Ph/3un+/j7u7u4qjnCJ4PO+Tqnx\n", + "XfQBY/VnzE35GYE8Py0bUGYIwCzDpsmURS04gbxPidJbzxmpZkz1ej11tG2wD1dH5hiDnSD/P/vA\n", + "tBzLLTad5t4GAco1La9XcaTgZZToEIuL0WdybKwxWChMO0OlJ44gvAQxR0Tl78o0nqMrvhuxi7wR\n", + "rDJ3iuEHtvQCIIQ82/dGAEGK7JlzLxtyX077OOK384PRsfFjs7AeRiF4FgqKuUIpMV+eT1BFxmfn\n", + "zP8PemOHyBvBUSLRFuMwQsAY4SUYdcKI4kjRw4bne60pr+Yq00dWNI7mQJ4itkbIfDrQIKInlBCy\n", + "Y2eCjU0bh9IZZDwoPe8bFOxqtapEX+T4QUJc0eaO7ay/kRXkqByj0yk4OXyPeV8sFomQsE4Yebo+\n", + "TyaTHCM9fzBw+/v7le7OtC9g7v085hKn1Nwr5IP9Z5mi6SSIolOjGFEiUNYlYme84DzZWQDZcSNE\n", + "IwI2EsvlMt69e5f3vL29TfTKe5T3Qj/ZwSb9y5Ez4/G4QjFg/Pxng4i8vXv3LmazWQyHw3w2nEO6\n", + "j/O84XAY+/v78f79+0rQYVn0c1xJy/xw+agUOoX3+/18H+sCG/DpdJopQRA1HAjLxnw+j06nk+vl\n", + "lO90Oq0EgZZd0ousgYNkDCuUBHMVqR72XHu+cXrpeF6mz0Cbms1m6oTpdBrj8bgSYHDPdrsd3W43\n", + "BoNBIvLsrYhIDtR6vc4UZGn37NzyE3QXygR6jjUD7GDflylDrwVygY1wWs+UBv+t6R4EFryT9V63\n", + "262ker234fxhw6wT5vN5OuPouPIwZ9r9lClP3udb16s4UnjmHiQoTwm/R8SzyMAIkR2aMjoyIlMi\n", + "Ol4YOx08A6NneJl7WhE42vE72bGL2B3L4fE7SjM6g+MTUeUm+Ds8z4RSc6CAmf18O4i8z3Q6zZO2\n", + "jQ76dPsS1sRDd08jfm8nAqfDa+LowBvRzlnJaWA85cZg/HZczTGwk+s0Fs6YYWzek7/HCbFzimGB\n", + "01Gr1dJRQpEBR7vFQsQ2FYGicT4+IioGAHTNRtfBQnkRWSPbzB0ybc6aI3YMD6iKo0s7Guv1rplh\n", + "vV7tTO20gJEfDLs5Qhj+VquVTkNEJCkbuXl4eIivX7+mTADfk9Y0pxIn0YGGHSLGZaQ3YpeidBrR\n", + "QZtl0k42aSee69QexsmXCdaz2Syenp6y8zWoy97eloR/dnYW8/k8z7iL2BrEwWCQZxiSUo3YcdJs\n", + "OLz2ZdqjROWm02keWcKFjJJaxnBGRHz9+jU6nU6cnJxUUh5lMMyYXiKk8/ePj49JYqeRK4Yd3g/j\n", + "iIhMk3748CGfMZ/PKy1fHHARkDqjYCSe37t4gPfmHe/v7/NsRNYSR8sE74hdGgo7g/5kfDj6tHYw\n", + "R4iiBdBH1tD6g2DRuhOOjx1NIzbsXTew5ZmkzJkXy7cdIqNgOJfQR0hxsj7YIWy1u9MvFosciwPh\n", + "6XSa6DV/Z8eG/e9CAr8L7+jAkzYSs9ksgwZ09Hg8TpQPvqMDVZxd0ro8k33vwKC83tofvF1v19v1\n", + "dr1db9fb9Xb9nderIFI0net2u5WUAHAw5FQfd+F8v73okuhWpvJMGHYEDWzp/K0vf6+Exg37ObI1\n", + "98fRCZ+5SsH3NApH+uqltJzJ5L5HmT/mJ6kBR6VuWkeUDKfDc1Ov1xOVKvPz5OXLc8qYj4hdCtQo\n", + "ChGLIz+/s+/h6Jq5dKqC9eVepLbKiM5oHnNkNJGUi9HB9XpXAgvMy2dElLwPqQY4DSVqSGS2WCwy\n", + "2gbp4AK+BmEzodMIYhl5mi/C35lfYySiXq9XiJWr1SpLzS3Pnmfvs4hdStAkfaJSGoKC2O3t7cXl\n", + "5WVEbGW41+vlGji6hne1WCxiPB7HZDLJyhgaDzKuUgYh7ZeFIVzNZjPu7u5ynzBfpFhANEq0FfSK\n", + "dyyPweF+Lpgg9cPBvCAu3PPdu3dRq21PDzg8PMzP4YQxR+12O6uGTC7u9/uZxouIlBPWx80qQbxB\n", + "eYzG8f/NZjOGw2EeJ8M9QQ+QPeR7NBrFYDDIPVA2OGZOeHf4ZP4MXQE/kfUH4aCKyqg632u32/Hx\n", + "48eck19//TVub2/j8fExptNpHB0dJWGbPWsCOJf/TSf5Ml2KbrLe8xmJzWYzWq1WpZDIfCzzcthn\n", + "k8kkDzW2HLN2EfHsMxAwPydiu99/+umnaLVa8fnz52i1WpUO9XDdSH+RrWAtQKE3m20bD+tT0CGI\n", + "8MzNdDqt8EKhUzCnoMW8g9OMpPJB6vis2WwmcmS9zthNGuf9IiLT5mUxmmXYSBM2k7Y3/DS9hLnh\n", + "vpZR9pFtb3m9iiPV7/efEaVZeKcIUKJAm6WR9uW0idsfRFTLLF9yiMoc8ktkcH9mx8RpL94ThWGO\n", + "gR09vyvfsxPonK/5QEDI3li8e5m69P2YV48DJ2N/fz8VuVMzODMoD0iu5qGhaEziJu8MsdYVOHYG\n", + "XjJezKVz6lwoRhO8cXR5l9LJgqjLmpSlrqS3mNeI3WZ7fHxMhcQ68V4mW9o5wXFeLneHantD2zjb\n", + "8FnR8878HcrkpTlBLsw3tJwzJ/x0t/iDg4NMq6GIucy34DwvrxOOIDwUPiPlzVph2AgAlstdXyvP\n", + "AyX3h4eHcX5+nob98vIyvn79mkqYd2KdPEfmhjHvpSNpIm8p915j9h96xEax5P255Hy1WmUBw4cP\n", + "H/LZm80muYb1ej1OT08zvQkvg7PSHHyw3pzjt1qtMiVIwDkajZ5xNR2gMXe8M2kpAoYff/wxn3Nx\n", + "cRF7e3vJ+cEoRUSutx35cn5Jozw9PcXp6WklBch8Ybw9hxhSjJu5o+w/HF86dLOncdapqkOmcGbK\n", + "tBjrhMNYr+8O3iZdt7+/n0UB5f5GT9mQ8z4Onpm3xWIR0+k0gyh/pySMs2a8C845vEG/J7YR58z0\n", + "FOYNh8N6n98zH6bJIHukrk3mHo/HmX6MiMq5tegTU0NstyJ2nf/dl86yiW607ceeAU7wPeSB/VLa\n", + "NQ6C5vsELcynA3cHnoAG3NfFBHAgv3W9iiMFv8QbnFLE2WyWSrdsjbBcLp8hHSh3lByGkM8c1Vg5\n", + "IvA2qiYBskAIlhcfgw6HyGgQThjfc57fqJcFGI4P72CUy/wunmXBZxw2xtwfJwpCp4UfIiLfh2vD\n", + "WhjpqdfraRS9EZbLZSoK3gfjSgk2Df6IDNgwRlFwEsh7LxaLigNmlMToiT9DNphvVw/S98ib2orL\n", + "hwTjzOF4MBc8zwrGjhuInpVNyZGDn4ACRR7gTiBn7iVEWwSTwK0I7EDaocI4sf7srYht/5p2u51j\n", + "8D7EUUJe4YNFRFZM4jAZPSjXZr1ep5Nxf3+fDQRZXwyBW4CUvb84+mIymeSxK1w446ztZrOpkFVd\n", + "QUQ06R5TyD5G0bJBNGpdwT0ho242mzg+Ps53wvnCKWy1WhX+FEYCUrEDSNaQ9i8YxHK9MfCeAxqY\n", + "GsXEEJgTyQU/ptlsxvn5eczn8/j5558jIrInHLLkgojT09PKWYA2XlzD4TCdhaenpzg/P8/7Gm3o\n", + "9/s5pwQrIKB2KkAwyh5cyAqGcTweV46IabVa0el0cj+iX5lvI9F2bB4fH2MymWThio2py+XLAiRQ\n", + "Vs5/5F6MD7lkndFtIGd2Rrkn2Rre1foLvtx6vY4vX77E1dVVdDqddDJBKuEq2Qnhwqk3Lwv5ALFG\n", + "jvx71n+1WiVaOR6PMyDAiWK+W61WxbHCnkRE6mz+xs4g+9D6xM43z8D58fE8OFLYcfsK2AuDD7xX\n", + "6QCaU8n+/Nb1Ko4UG8PnDi2Xy1yYiK2nXSo3lGaZSkLh4927Uy+OgjdQxC464vtl2i9ih2SV8CJR\n", + "y0spKf/OhpaF4/dWmCWa4FRdSTT2GHCqcBBLlAujDOpgpI1IkPG5d1Cn00nFUaYMy54pEPj4Hqka\n", + "0CiUBukUjJbTRhhunBejNVyeozKdC9HRf/f09BSz2SydH883/2bdDdOXFWwPDw+pFIhkUTTInNea\n", + "En/elfsapmbjGz0ySdNKA0Iz8LmhaN6JMVlOnMqlWaMPgnZUaqSHMfV6vTg+Pq6k39mDdqK81/jJ\n", + "+to5pfM5KW5XUD49PeV+9/52ZGiSqsfeaDSyms3IImO0EbOSZq5x7P09HEIqPm34WDMcKt4VJ+T4\n", + "+DgPkWbv48RiOIjgGb8rOtFHjO/x8TH3khFnZMmHRrsTc4mMcpHq5Do7O4tff/01IiKur6+j2WzG\n", + "aDTKTvNl2icisk+c5Y13gjjO3zE31qOcWcczifR5X1fzGiVx81/k+x/+4R/iy5cvMZ1Oc/yz2Szl\n", + "iOIP3p1AG7mxjttsNnkfnDHvfewQOtepYhwk0CH2DM6ou4+zZgSi6FqjK65QLnWxEfzLy8u4vb2N\n", + "TqcT//iP/xgRW6f37u4uKy+dwbGzQoViGXwR0BN8+8Jhsm6bTqeZ9nexBPLd7XYzVYjjHLE7g9J0\n", + "GKfvmBPmyfckwMMOs/bOWrGmzkyVtAWvPTbQBQl8xnO/db2aI+XNErHjCtgLR4iZ1Iid124DTzXL\n", + "0dFRVjFE7BQf9/NCEa2+hEhF7Jyoer3aOJNFJ3KCE8JlR8e5WyNc/Nscl4hI6NwX0eFLjpc/Y+N5\n", + "DAgNyFmZ52V8KG82OPNDVdfj42Pc3Nzks1Fu9PIwT8ZIhisqUJ7T6TQjfkeXKGbQKTcJRHGVKQxH\n", + "k0YXGDu9glBELuPHEep0Ool2shb+Wz+PeSZlYNTCDpbljMtjMjISEdkHx+lkvk/FFvLksmvfG2eC\n", + "9QX1JQ3A+0VsjSkGmujOfAAcJDeAjNhVQlr5sYZHR0f5rowFBMyBCdWc5nvgyIzH46zi4TOca4xs\n", + "abjLd/Kc4FywtsgL1Wmnp6eZUuTIEpwdI7KmGDC20omwjKxW26o3o54475PJpIIcgsItl9u2A+X+\n", + "Z1zoqjIY4//tfDutz2XklPeBk+Z+Zg8PD4lQ2ZiQlqWS8PHxscLfwSEwWoMscuAs8miHEAe/5LlE\n", + "7OQdvXVwcFBJF8PZIhC7urrKzwgU+dzOGvdG97uFCVVim8321AY3ypzP5xUeJPdEN79UBet0J++P\n", + "PD09PcX19XU2Ae12u4niYuOGw2HyK603bONwtli3m5ub5Dk5A8G7EpxYr0ZEBpS1Wi3Tr7bTzWYz\n", + "UWKvE20aCAqcdvceKoNPbKhtiCsTcfSwX85QsW/YHw5oWXPGYn0CKu6/s1yw1wxKOEgmqCqvV3Gk\n", + "2IQWRoQDEmmpGMo2ByguTih3p2WXXfO3GDffs3RMXOrJ37CgRkEQRj7333sBrMxwEF4qZydyXi6X\n", + "KYR8RoqKVCeRdsSuf5QNq6Nu7gP6YljVJHLIo2yQ0og4ZcIYfLSE58bIAj2AIrZw/sePH19M3WL0\n", + "cEyIbCOqKSPmzQ4U788clGRc1qtsqVCm9vw9b1Dn7RuNRoWYW6ZoWJunp6d06rkvcDNRIo5KRCTS\n", + "an4RRoj3wTA5LYlcUTTg93FLhdlsFrPZLBEp0CBImXAXmJtWqxW9Xi96vV4FAUMuFotFpX8N74G8\n", + "MUfwgHDkut1uclYs+/v7+3k0zXg8TjmEQGtyr1NK7GnLCM4pv38J5YXgihEy34V7gGSyPhGRARtr\n", + "RCqbiz0FksTcgCQul8sYDAa5fyKqPZVAyMq+aaXTFvG8hYoRXkfZyL+dqna7nWmsxWKRzsL9/X1c\n", + "X19X+EBGCGazWfK5cEDQ36PR6FmvMuTs8vIyzs7OMt1p7hUBD7zEktOzXq8zZbi/v5/zxhwMBoNn\n", + "aMZoNEo6iA2p18IIr8ePM4hMIP+DwSB6vV7ynXD+uCfPQAcwPsYLFxBHLWKbCr29vY1arRYnJyfR\n", + "6/XyXY6OjnJPuK0Ka02gzx7FyY2IdMj5e/c0sywQiFgPky6mNUAJWIAgO7CHqmCagBFXUp7ePzwP\n", + "O+LsAt/D7uLEsLcJ4nge9obvkUWgeawDKZxI9jfvUrb7wcn0nL2Uzk5Z/OYnb9fb9Xa9XW/X2/V2\n", + "vV1v1/96vQoiFbFDb1zmTxoOUjQRBtE1HiIRc8Suyyu/A+aPqDZfK/Oe5hQAIePV4qkTdZdduM0d\n", + "cCrP0KMrGiKqh6Jyf5+CTarPUTZjBloEPnbFmzkEnk/fn6hof38/yd9EMUDOpF24iHhOT08rCOD9\n", + "/X3c3t7msRdOYQFBN5vNuLi4yFw68wB35P7+Pm5ubrLihkoi1sh8FhAJ5KNM1RC1MWaTjb22/D+y\n", + "x5zzfe65Xq8T+SSSK/lZJkA6SgE52N/fz7QiqBPRD5ENURzf46wx5tpcHJNejbKAtPG5D1IFxr67\n", + "u4vb29uYTqdxe3ub8rDZbOLu7i5arVYlgl6v1/Hhw4fkh7iBIBGlU8tccEQYt2WRKrFut5vRIvdg\n", + "fagUBJmM2O7tyWSSyJHTRUSJruRxeq8krnodifo3m012OvbeBSWjczhrSLoDBNQoJ6gDJH7uxXwj\n", + "w6ytkTMIwRzfwkW1WSlnXOZt+iqRca8VSDx7ZjweJ3K0Xq+zkzbNfE0S5mw7UNyIXWX1ZDLJcdJC\n", + "wBwxUqkUGjgbYESURqDMN6gnc2YE1BwZ5I55I4UDr4r5RieBZJti8O7du9xTf/vb3+Ly8jLRSLiC\n", + "ZA8Wi0UlXcj68LlTnEZWPHdwhU0hccYApPrg4KCS4kdekUPub2oAe4GWBdbtvJtToMwbmQlQS5/d\n", + "iv1hXaGC9Pv9Co2A9DjyBk8MvWAkz4R4tyKhjQiFCS4icxEUGR5XjjOf6GrTWdBp2HCnGXlfUCn2\n", + "CLLnOSyvV3GkDNFZ8WP8MTpOvwC5NpvNhFkjtpArsCGGpCSN45zYyUKYTGg1L8ZKyqkmFh5j7Od4\n", + "AUkZlL0nSKeZX2MHjs3B2MsqpJIcyLsDR5ojw7sgJFQMcT8UP0oPnsh8Pk/eDrC7HUNg6OFwWHFA\n", + "IXhzoOfp6WnOM1D/4eFhwtAUFxjqhwhqZwkeh40Pn8HD4vsoPhtzeGKG39nQ/I1TQFQXomic+qU9\n", + "gavbWEOgYZTYarU7nNaON8qV78Kp4H7O+TMe5MJwe8TufKgylcU7oPycMiH9sFwuK5VOEbuzJCm/\n", + "Nu+F1B6p2Ol0+ozX1Wq10jHFQMORcTDBuLjXbDaL//mf/4lPnz5VeB3mL5YOiA2LeYDMCzIC6Z65\n", + "6Xa7eU9aQJiTR0Uba2UHHNIzhtXrw96m+7kvnGd+z/dIAeOAOD1JdaCDv5JD5fSd+Zhlaq50fn/8\n", + "8cf45Zdf4pdffokffvghIiLXDb3h3kSs93g8juFwmPJrWkOZIqWCDQ7i9fV1DIfDuLq6yvf5/Plz\n", + "rFarXIf7+/uURThDh4eHcXl5WTla6OnpKf/daDRiMBhU9v5oNIp6fXtOG5w1xsH7LJfL6Ha7cXZ2\n", + "lu9Zq9Xi+vo6Wq1W9n6KiPjrX/8am80mixFM4KZikDS6U0a1Wi33m6t2mTMcdrh35nHyfdof8C4E\n", + "SRRbsN7YRJO4S04xuo3fHR4e5vdwyPr9fnQ6nQp3ydXMvLsLoFjDm5ubrNhmHPSXYqx0qOcYKZxS\n", + "+oIhPw5WsFURO1vIO9jusW/MozU/DOcQveiebcgd+5R7WuaojCyvVzsipiSZmaMB2dXcG7xqNjCL\n", + "3+12K1VEVrClsxRRRYbKxbJiRoFjcEy6NEnPRh/BZSGN2KDkMepsAr4HImXDx8W7sCnsIBKtosh4\n", + "FyrWut1uEqrhRUTszvADzfM5XggzKJ+JfnB9Wq1WnJ2dJZoQEelYrdfrPO/KjgbGdTabJaLFZzg6\n", + "VFawEak+eXp6ik6nE/1+Pw0NCh9jbyN0eHiY0bUbF/pdeK433tPTU9ze3maFGvwd5MgOrWUHJ5Uj\n", + "JFD0boAKFw1FZySBfzebzcoZdjaSbsFh2cCg2VlAMUBwNZJ5d3eXCALfN8o1Go3i4uIi59XGm3nm\n", + "M8Ywn8+j1+tVOCYl/xFZtVNLddvt7W1cXl7G999/n2sI4ReD7v1kbhTOsM9pA91lbzjwMRfJpd7c\n", + "l7/B4XXgB9dlMBhUIv29vb0MRHDwuRgz/DFkj+cgZ0Tkrk7ECS0vO03+6eulz9Af3W43fvjhh/j6\n", + "9WsF5YO4DErgyjT2Mghjp9NJPdzv95Pv1ev1KoRy3v/y8jKGw2H8/PPPFeeFvwP9M1KPk7xcLvNM\n", + "xojI/m8cIG10EINIQOq+aIvFIvl833//fXz+/Dnfj+qzZrMZHz9+rHA8r6+vM0C28xKxa0PR7XZj\n", + "Op1W+EpUTeOAuZgCfW3+qxFAG3DOlIuo9h5D/l0JisOGk27Ujf5ZzJ/RQPYUPM9Go1FBSGnLUga0\n", + "kOmR61arVRm/Hd3Dw8NEhLl3q9WKH3/8MatHI7boIIEo47NzhF7CmfJa2HcwKMHvcbDN/eUe6BLr\n", + "KObeRWXl9SqOFB4/qYKIXZrGREuUBZAnyAiebURktZ4hfSYOMi33QjlGVNM73vS8Cx47gmM4FAOO\n", + "0eciSjHCZGXGIpYwPc83cdROHY6Vn8U98chx4Bx5Imh2AlEoJktDHvQGKTe7WwKYqOd3Xa+3J7dz\n", + "OOT+frWBHmOgaswRTbPZzLSIoVrSCybSlmgdisXOCQoTAqMhbJNDnX5jDKB5QOtuD+BGfXYwOPvL\n", + "zrdLdjebTbb7oEqtTF8C+1vxMzZkHIjcc0GUWcob84Fzhwz3er04Pz/PoMCEzL29vWzCiWww9xSI\n", + "EFg0m7tDVnEuSYc2Go1ce6M9/OQ9HQT84Q9/iH/6p39KeUKZsUalM4mzZqTWjhSyj8zxmZ10fucW\n", + "BzwLeXUUjtNN9Rb6CyfPzifzTVoCh7Hb7eac4KyQYrdcszYgp95rrDFz4ZSJr9Lh4vr8+XP88Y9/\n", + "jEajEb/88ktEbJ26i4uLdOZB33kG+xAdQJuMiIiTk5NKisnoCo56u92OXq8X33//fTZJRO4JLF1B\n", + "e3l5mfNNmgd5I3im99Z8Ps/xk1qnrUZEpOOGLJycnMR3330XjUYjq91++umnqNfrcXJyksEn3+eM\n", + "SWTVpHfQu/39/TwzEaf6+vo65vN59vsiwEaeQP673W4iwKwXc469scNJ2pM0FX/Dd5F9uq1bt9Me\n", + "giABpMdpx8vLyyx0QhbRX4yVtUAnIefD4bBS5X1xcRGnp6dxfHxcQeS4SM0eHx9XwA90OM6d28qw\n", + "50tainVMxA6t5nc8m7Qun+Gs4jQZxTMq9q3rVRypn376KQ/AZHImk0luGLxKVwyB5BwcHGSVXsSu\n", + "EWLEzrDYKPgqnRUz+3EmuBDkiGr1HdEIC2whBeXiWf4en6HwXYEEYkZkAlQasSub9/f5HgqNyx2q\n", + "2bR2QBy1wB0gHWeB63a7cXx8nM6uOQDAtFTzMVesBc4xBtV5ZuYYZIbnkbZCeTtFAGepXq9nbxsj\n", + "K0QkODAuVQelLNM9Ebv0FhGiEQSMqnkGXkNXCNmpw5gy7+4UsmdeAAAgAElEQVSpwrrhDODEWN6I\n", + "wGq1Xcdslzrj+JuP4UojpxvgMhilNWxObx93eGaOQOGM6DAGUvAEF9zz7OwsOQ9GYJgjy5dTVMjJ\n", + "b37zmyynt8PrikxHmlRa4kSU6AdoIYaGCJzx48DwXSNk7Dnv/4hICgF71cYNjh9BQKvVyrUg2KEx\n", + "pR0+UHlKwc2vKZ0j6zPzRMrP+NyyZYcKR/ff/u3f4vz8PP70pz9FRMTf/va3jMxPTk6iXq/nfgI5\n", + "w7EldW+uar1ej8lkErPZLFNyjIMg+P3793F2dpb8Ghxz5s6ouRFy5h3ZgL+GY2I9jL5Arh2Ut1qt\n", + "dPqoRByNRilTpGVJGzK/2BuqzLx3I3aVsDihXBzBwjtafzebzTg7O4uLi4vodDqV+xoNLZ0DgkYo\n", + "Edy3lAF0nzuhl8BBibjCqYLX5s7upMDJZphislwu4+bmJn788ce4vr5OO/Tx48c4Pj6Oer2eus1Z\n", + "Ggc8FxcX+Tz6eZlS47lBxzBGxg4tASTL9JpyT5hSApIIV5U0PfNOFuZ3v/tdvHS9Wh8pBAoBRdkA\n", + "RcIZiKiSxolQmACUK0rdyA0RFBNuBMEGGLTIaRiUHRGqF8opBtIL3BPDY15FRKSBsZPgz8qGlb7Y\n", + "nBgxnodBAHKGm8R3UMxwGxiP35Vn9Xq9inMKFPvw8FCB1P1Ow+GwQthzygtugCMs5oBxGBUiAjFE\n", + "z2c4OiBzbg2AcmWjlRvPyrj8f55rpQj6CYfLaT8rDjapnXjWFwSl5AXZ8TRpnVQehvGlxoOklcqj\n", + "ZTilHmXk1IdRjLLHD+sVEc8CFu4LAsU92UMYKUjZzBv/Zu4dtPR6vUSEnUrEwdjb20s5A62A81ii\n", + "unwPeUPpGVUFLSOV7NQAwYAdDL43Go3i6Ogoer1e1Gq1CveGdzGHzbxKnndycpLcj4hdihxODo5I\n", + "xM7xQxat7EEjmLPyYr1BO/kuMmjUzwEXOoriHMZ3fHwcP/zwQyVAtL5g7kGWnOrAOWu32xmYcoHU\n", + "WuczfpOzkVXz22iJcXR0FJ1OJwMzsg04bEaVSXsh86vVqtIb6/Pnz/Hw8BCXl5fRarUSOcXxs5Na\n", + "oiAgzZYBvkOvNgfQIDgEJp5TAk/k3I45xhv5cUoNZJo97gIQv6s5nqwdzzcSbfQbcGEwGFQI3rPZ\n", + "LKbTaTYX5V4RkfQP+GHtdju72r979y7pGI+PjzEajZ6BDQ5Y0VEuggENs1OP3seOOZXnFKP5ik7r\n", + "4lw70+LCHSNnZVbkpeut/cHb9Xa9XW/X2/V2vV1v1995vVr7A/LXPiOnTKW57BhSecSu8iBiV2WE\n", + "Z+roixwqHnvptRslMcGZz0AJTAwnbQWSYfiXdykrhhgvkVeZ1omIZxEE98DrJgppNpsJp4Nq4D0b\n", + "kYrYdrgdj8eVqMrnBc1mszg4OIjz8/M4Pj7O+RmNRnF7e5tpv6urqxwHJeBPT09xfHxcicoobWZO\n", + "zEkDigd9Ia3EBSLJd3keZEo4KU4ZQfY36lKmec1ZKc8+g9zrFAroz3K5jPF4nKlkv2ez2cxKHSOP\n", + "pC+BsEEakVneGfny2XfwPfgPdIG0K3C+OXbA2jwbtAR5Iu9vLhrvCnRffg+5JkJzIzyiMlCr9Xqd\n", + "c8NZeCcnJ5n2dfqAdyp5hbVaLStHN5tNBf11I8Fyv4Aqcq8yLdZoNLJQAaTTvAkjJlTY8r1Go5G6\n", + "ibQE8xaxa1wIf433odksRFmjZ666fHp6ynmjaenBwUGlOMLvZX6m0Tn0RKlTQK2tm5za43c//fRT\n", + "3N7eVhoY+2Bi0IWI3eHV3BfU2e8DQtRobFs5ONUGmowcG6k1b9IUC/ZQt9vNfW/dyl5jTfiMOaYU\n", + "v9lsZuPUyWSSxHGQY6O/7AkoI6wheh1CvOeWfUl7D37H2Lm3ic58ZpsF6o48L5e7o5WwR8goVdDo\n", + "Nmcq4KchS65II3VHwYCzAOg2yPHmItdq22bLVEN67Z+enmIwGKRtwlZFbNPF7969yxMEsCnsGeTO\n", + "FYesL3YNuos75XPGK60xnE2JiCyEGI1GqSMajUbKMPdE9imS4HP7CmU7k5euV3GknNYxHO20gSFE\n", + "Jh4yMpsuYqekKB+1AuM5CJoNNFCzKwAQejYKn1nxY8yBVc1TYCyukDLXCRjbpFnehffEULp3FmlH\n", + "jL85G+ZWmQD59PQU4/E4SdGcgYfgkEOGq4QTELGtvpvP53F+fh79fj8FkrExJ+fn53F6eprjphIP\n", + "he9UKmNibsxboNKPdJuNScSuvBiombnlfSE/WnlHRCpmO2X+CX/AFTERO/gbUqmNM4YrYpePj9ga\n", + "WXqekNLs9Xr5txhSOA3wMCIibm9vM4WEQvUY4SqYtxMRWQlnA2p+IAaFTuSsPRwtZM18AO5FqiIi\n", + "KsrUMmtyLIaVdOfNzU32rfr06VOlKhM+G3NIOshEb+Zlvd6e3k7lqGXGnEg4HIbq4UAwPubG6wxH\n", + "h3lttVpZcUl6yOnC0pnlYo0wXE4FjEajuL+/j4uLi9QbdhA5YHc4HMbd3V38/ve/zznmvexc8NNp\n", + "X1+l4+cUph2AiIhff/21shakmajEYn3h0tGhfLVapT7ivlQK2wGJiOSp8ZnPW8Owsycs41Qzsn4O\n", + "rr3PXIwQEan3cMwbjUaSzd+9e5fONfLhAMs8QvY7Y8Bg8yz3WGK/8X52os0psj7abDZJQuff5hE2\n", + "m81nnEDWyUUxpMC8F1ln0ocGF/hbFzogJzinFH69e/cuIrb74vz8PHmfOFURW71/fX2dsr2/v5+6\n", + "7eHhIb58+RKfP3+O3/72t5WWGlQ3kvqM2AUWyB56db1ep32bTqdpo2q1WuVoNVLAFHfM5/PcH4Ax\n", + "jLOsji/9Bj4jBfpSej2/+81P/g8v8pauFrLQIAAm7bnizYtvZ8ZRe8QuakOoysi7JJv6+Y7WbUB4\n", + "X75vwhoT7aM8jEiZO+LokucQJfmAWQiuEdXjSzwvEZF9TJgXzoUyKdh8H8aHMbGRQqFdXV3luxkh\n", + "wUHBkHFPIiScO3MFUGxU5pTVfigj5huFxLuxdo+Pj1kRgwNNPh9SKhdzyvoSXeMIs0a0V+Az+A/N\n", + "ZjMmk0muhY8cQLFBMkU5mC8GGZ41RkGVJG6M983NTUZJdsBQligpomsCA+8HG0nmjEDCzhKRMEEL\n", + "ShqSPPJghIggBXmwIqLvDITddrudlTu3t7dZHYRM2JB6PxiNQ1lTseX9hDOCM4Excdm1uUIO3vg+\n", + "ssG8sm4YgYuLi3j//n06oKAjROwPDw/Z4BY940OEicprtVpWJF1eXmY0HLFrDsraXV1dxcXFRc4N\n", + "a8feL7lOPq7HqCqf2/HyxTEnrJsvdK3fjYOM2+12GtcSAaXJoVFLyyRkZZotRuzadCBXnU6n0rCS\n", + "Y4WWy2UliGJPE5QSaPC8h4eHSpDI3v/06VNcXV3Fjz/+mH9vJ4PgaTKZVCpPHUwQNDDfkJRxvspC\n", + "KS72hwPvo6OjdBr29/fzPV19yl5zxsSOEtkdZB99gHMLZ4h3KHsnOTihgq7Z3DY/paLz9PQ0UZ5m\n", + "s5nBTcS2Jxm2ECAE2UHP0yeuXF/QSc4UZD9RHW1nz/J0dnZWCdC40D3YDXNRsYMEciXflmpcOGLI\n", + "BUjd/8aRehVHqtfrZfUVAoeRR6ggUEZslTT9Rdg4DAohgnBtEqArrEqCNwtvhWxSLUqI71uwXWXm\n", + "ijZHT3yf55WOG85ExI5UawKuy/95BgbIZGM2L4icET7DxlbsEZGQKIRODBIXzsavv/76DMlbLpeZ\n", + "hjAigrMUEdmjyO0tVqtd1aBJpURyGFEjUihLkLjJZJLPoFM6UW7Z/NTpY1JmXKQFSf+xvm6QiLLE\n", + "sELCxvnwe/L3pBIwLEYzkGGIklyuvnt4eIjb29scI4qBtfeJ9LRJsJxZ3phn5p8xvkRCxjljD+Hc\n", + "4FRzT5dwu5JmPp9n5Vmj0YiLi4uMIC8vLxPZfHh4SKPJO7CnqMJCLjqdTnz58iVubm4SBfHl/cS7\n", + "IgPj8Tg7R5OO4sKhx8AYWSEAGAwG8fHjx6jX62l4Op1OBitfv37NMnq+NxgMot/v53p6bgkMv379\n", + "Gk9PT/Hb3/421wXjM5/PkyjNviC1amPhtWPOynSpf/rid3/5y1/i69evSX6PqBLmkTsCBc6WI5r3\n", + "gbPIHc7GbDaL8XiccorRvbm5Sb3utbSDeHJykg7/aDRK4i/Ov59HyfzR0VEiZr5nxO4sv48fP0bE\n", + "roUHAbD1ED33aFECshWx1QsnJyd5Xp4D7H6/nwcFWzZ5D/QsQSQXusAUBC47otgGf45MzufzyskD\n", + "EVEx+OhPNwYm1erKNr7X7XZzb3BuasRW3i4vL7MIxRmMDx8+5Fhubm7i8fEx3r9/HxFbBJB7zWaz\n", + "DCQiotLDirV030Gcrtvb23S6IrbOsPUgKDj/z1yCaPJ3puo4pcvzsPvoBFePImfful7FkcLbNC/J\n", + "PTrgrhius1Iw94R7kB4gguOeEbs2ARZENpOREITf1QFGXriXK8Kc0+edHHWXXi2esPPCKHtSNVQc\n", + "ROyiOJQNqE/E7qBcKhfN2Tk+Po5ut5tOG/NtYzqdTmM6nVacFuYXJKJUUEDFdujYUMw/EZs3v6tz\n", + "+En0hQNK0zrGG7FzMuGL0MuEd0Ehong830bpnKagfQYOE8aP77m7up1T+EY0uDMCRv8bokKUjbl1\n", + "pJ7NiWCN6cCMgkSWcFxecvpIkRDRW7nxfBSt03esNUqjjLZA20i7oKhRJn4PDJtThKSMkW+qfVwp\n", + "ZCcatKHZbMZ0Ok14/+LiImazWXY+dnNUno/zBKrG5yAoyCHOIWPHmWU9uZjHz58/Z4QKKkHAAc/D\n", + "UTl8OuTf1ZU2lvf39xUuI++F03RxcZF73zSFMpXotSJ1478xEv/SdXZ2Fn/+858rUTkBKXwXc0je\n", + "v3+fmYThcBjHx8eVSlgHHvV6vVLVh7NM1oCu8BE7ngxzY4dsMBgk3469ZNSNYA39D1JNzydoIEbW\n", + "/uM//iP+9re/JQJqFAhH6eDgIA9wdpNVgiiCVqNjFxcXGWAh74wd2ggUBKPmpMOQSXQC6+dWMdgg\n", + "Ag8jfebVEliwFiUPiipAjgdyS4mrq6u0ieaj/vrrr3F5eZn7xg4KegLbhTOGTLnNA9V/rP1sNsvK\n", + "SYKSiN1egydFo9SIHXcQvW9aDgEujp3Ts656pNLTHEdQbeaQMczn8+SGfet6tdQeL1miR6AWODFc\n", + "NCpE8ThfjIOCw2Pjzabi9ybkAY1yH6MpNr5lZIeQowAdXUfsjpkw9I0D4ny/eQ/mcTkqZ554ptMp\n", + "tdquLHM+n2fkHhHxu9/9Ls7OzlLZ3d3dxWKxSMV4cnKSKUQrOq8Jl9N+KFenVu30mBtg5Q5s71Qk\n", + "yoYGccDMTtE0m9vu68zL6elpKj7Wlw1vrgibCyccQxWxc0AgkptbZIgaJ9KRtZ0OOzVE509PTxkt\n", + "YVAiIlMUoI0YgIgd6RRehOfNJcOgB3aWcbQYn5EJ7k1EbzSWZ5lLxboh1/BIUHDwFnHI4b2wTqQv\n", + "acaKHHW73XRqHfn5e+xheDYRW+T64uIifvnllxiPx9mhPWLXTBNHj+eSTnRKlvVzKh1FaeSZ8eME\n", + "jMfjXD/WolarpfL/8OFDBf2Bs8i+9BqQ3jg4OIjvvvuuYoRYb+TGTq05ayXnECQLZMpGmJ9GHfle\n", + "rVaLDx8+xHfffRd/+tOfcl+s1+uM9klPMY5+v5+BAHqMwhLmFK4L+sIBH0R25NdkbNoGNBqNisGC\n", + "F8dVNlBdr9dxdXUV4/E4ut1uXF1d5d9++vSpksr/7//+74jYpqHa7XY6TJ5XN1TudrvRbrcrfZSQ\n", + "U5xijK6dwdlsVkH+4Sbyvm4Zgt5uNBo5d+xD7JMLNRzoghzbufIeNg/R6S36ZsGpfXx8TJtxd3eX\n", + "AUir1UqHGlm6uLhIp84ZjM1mk73a3r17lzy0iIirq6tETWu1WnKbkKkPHz6kvqGfGrJIsQPAirvT\n", + "w88iu8VagIb2er3UucwLndVxgh14LJfL1LHT6TQ2m02ll1/JTy2vt/YHb9fb9Xa9XW/X2/V2vV1/\n", + "5/VqVXv9fv8ZikAUQ8qh5OxERPKjiLJo3mkkxCiBkShHZvw/qIJTGE5dAJmaiM47A3OaswT5GmjU\n", + "sKKhSRNn+W6ZiuAivQWPjPE9PDxEr9eLwWAQs9ms0pQPGJr0C+gNUQrdyyFmkl5hfUjBEXkxX6CJ\n", + "vIcjOqBpyNucvxWxRU+ISIG/mQ84KXt7e9nh3pAr9wbeJzL59ddfk/sEWmLSN9wJkEevuSMyCP4R\n", + "WySj3W5nBF6v17NBJJC40w1EQrwTCBc8EsYBYkWq1VVdoJ6gjfBPIrYVlHAZIHkyb05xR+w4UxE7\n", + "zhPRoFMBEbt0KpEu72IEjlQLc+Mzp0B/TbilupKUmDkIFD+4fQZjIAWM7MJNAP3sdrt5aC3R83w+\n", + "TzlbrVYxHo/j69ev8eXLl4iIbMLpZo+G9tm3oGtGkyO2lUgcqsp+A9kGGQWZYQ1Bl7g33yNVwnuU\n", + "CCgoFrxEX6y7OYq+zDcyqlYWiXA5ffTp06f4z//8z/j69WtEbLtQU5FFusa6lEIH5PPk5CSfyfhd\n", + "Ecp8s+YgLFSbITfozX6/n5WvjAPSb71ez/eMqHY2J51DupRnn56eRr/fj9FolCm63/zmN3lP9Dry\n", + "FrFNRXGI88nJSaKxyB060aijK/u8xyMikRGqip0VsN0A6XXRCLaNLt9lk16eYbsVsTuuistI12g0\n", + "SltxfHxcscHwzricMmOcvJf5kegEF22QDm+328kZfHh4yGdHRLbccUW4Dzv+y1/+Eo+Pj/Hu3bsK\n", + "pxQ+LHrbPDeeR8aHTA4XSDq2hjHQtoH9ad4pTV+/lV6PeCVHCoIwXKKIHcHaUDSTymIDZXpiSF2g\n", + "IJz6QqHhSNmZgluBUTRUyb9R5O4zQ2oRCNgOj50gv1fEjgQXseNQmcM1HA7j9vY2jo6O4uzsrMIF\n", + "gW+B02LljXJ+9+5dDAaDLDnnMFIcxF6vVykzpSU+aUYrPgyQjygoOzDbGSyrGZrNZh4wbOPNvLqU\n", + "mDXkflSN2JFy6sVVJ9fX16nQmRN3jPYGY+28TuamADePx+NUDDiNjI9UAwaYiilklZw+z3AKezKZ\n", + "xGQyiffv3+ehruaXMHbS2nx2cHAQJycnCW2zlsiwKzLPzs4yJYqRwIA7XYwjAXfKF9/ZbDaZjsAI\n", + "8Ty3DWCPNhqNVHDIuVMGw+Ew96DT2jb+vCvfpwUBzvloNKpUxV1fX2e65/LyMn744YeUDVIbTj07\n", + "nWR+n7ll5h26fxjPpOoKjh1zM51On6XeGCOyzTjtNBLsNBqNbDOCc84zPAYrc5ws7lOm8JiH8t+M\n", + "t9lsxsnJSVZmXVxcRLvdjtvb27i9va0Y2f39/ZjNZsmFwfFjXKTfn56eKkUVvCdkdSgRDkx9TFOp\n", + "L1xp/C//8i8Vh+bo6Cg+fvwY4/E4uWLIHSn/6+vr+K//+q98HgUDi8UieaSlc0p/osVikfrUtgqe\n", + "JrIPb5WO3m7Pg2Pp9J5TsI1Go1K0ZMcV3cT9kQvmCeerPOYJ2UN/m1B+fHwc5+fnqVOto8zDxB6a\n", + "7oKsQlnwHnIHfMtNr9fLoB7Agz36888/Vzh64/E43+XLly9ZWdlut+PDhw/JdQOU4ExDgi3mhrQ0\n", + "h7M7ONpsNnlW4V//+teU/cFgkNV+OPTsLfMUqagtr1dxpMjvll4tXAKicxaDc6vgdNhbRGiILB3R\n", + "Ifw8y0LsEmYiDCMroAYvlT26Ms4KjHfDWDi/D1JhQ/GSMn16eqqcgk0+nzy0S5U5uBKSMgowIioV\n", + "SzhiJo1jmMy9MdHO5FAUE99jva6urrKiISIy0gS5MRF/MpmkU8icMd84RxDcjZwxTzQ75NkRu8rC\n", + "+/v7bNpnQ4sCKvlaJlkjP3wPQvPt7W3c3d1lg8GIyL4lJiszBhwX/m3kBJn6/PlzNn0zQsSYuU9E\n", + "VGQEZTkej/MMsIgtx6DValVIoW5iCzLGs8z3idg1nywDGivR5XKZUfnd3V1cX1+nvG42m6zOGY/H\n", + "iW5yXxdTLBaL+Otf/5rvyBgIjnDQzGlAXnD44Yt5fYfDYfzyyy9Z/l46y+7NZXlCJpALO5n7+/vR\n", + "6/Vivd6Wj1uhPj09VQoL2A8gIxgiE1kJPlyk4mIZgod+v18x3qvVtscUjkvJkzLS5gAUgjLyXiId\n", + "zHOj0Yjf//73cX19HRFb9BMngfdkPs3fw7Fzs1f+DWJhfXN7e5tFA3zuRoinp6fR7Xbj6Wnb+45x\n", + "wFEimIIvE7Fz3AheTEbGOR4Oh3F9fR2r1So+f/6c+4tiBypljQ7u7+/HH/7wh6jX68mVYX0jdsU/\n", + "oOARO87O3t5eHrXFPiQQsWNqp9aBi4P59Xqdfcl6vV5mFXgXZBi75vWnsMOOmREbkPQShUXGCRQN\n", + "WHDQNnbawQH6nMpTAsKIXQaDNg+Q1nkW3+cIM/Rwp9OJ7777Lm2BA2KyGlSOl4EQsjUajWK5XOY+\n", + "RPYbjUbc3t5WirOwQWQyptNpIpVfvnxJbuO//uu/xkvXqzhSGGorN2A1elmQzop4XhHiRfa/rTAi\n", + "qtEYRp1n4kRZsTh9BcRpUjn/Ngpl5wylhqE1ub1EVFarVTognU4nzs7O4unpKS4vL2M2m1VSMwg6\n", + "iBJCOhgMYrVaZentcDjMzQYi5qpDN8KL2HWqxng41eQ5Yw2Yb0iSpCzc0I4Ig/n0mWRuzIeBiNgR\n", + "JSFrU5USsUuXsoGdLgWaRolMJpOMMChHxyh44xNV2yEBirYThcPgA0kpjUZZo6hWq1Wl4Ruywbz1\n", + "er04ODjIChDkLGKrpLrdbnbh9Zwyf/f393F6ehrj8TgV0XA4jF6vF/1+P8meyAo/SX3a6WONTMJE\n", + "gbl1B8gYYyQQuLm5STQLgu9kMomjo6NMp9jQNBqNdISbzWZGft5POJcuCliv19nAD3njXZ6enuLq\n", + "6ip+/fXXNL6Qmnnm/v5+7sMyILLzaDSW7xE5+zMj2qPRKNFDLirPQFGcJiEQwhHBwUa2QQBBKCIi\n", + "x2wEzeR+UMCbm5tKew/3PeNykQ0FHfRp+vd///eIiPjzn/8c9/f38f79+6xAdGrdzjl72A1+F4tF\n", + "XFxcxN7eXlxdXVXSJpwIQWDrVjMYRQJXO0uQ6NHRrD+2gvHa8NnB/OMf/5jBW8SuSo6siPfFbDaL\n", + "er0ep6enqedcsdrpdOL6+jr76xmNbbVacXt7G4+PjzEYDDL4QHbH43FsNtsGnD6hgzYZ0FV43nA4\n", + "zDUsq2fZowTAzWYzyfPIGvOIw++ihVqtlojLarXKeSNd2Ov1YrPZVA6md7NN1sL91QhiIXsbBQLp\n", + "wvHD7rFP6MdmSgt945A1n6WIXf348WMS/HmXZrOZ6b6IXU/EiJ3TTqFVt9vNsYOaEVw53U/BgB3O\n", + "8noVR2o0GuVklGkTHBcizojIKoKyd0TEzilztRUbzCgEShBhxOiAjjl9BDLmlKCdOlAl7m+kh0ox\n", + "IjpHCfA6rMS5Hh8f4/r6OkajUQwGg/jw4UOOgQZ2bH6X82L0cTKZT3coJvdMaoL7YvAwinxGrvzw\n", + "8LAyT8w74yKv7Bw9qZiS74JTgbFjk3udWHfn//f392M0GqUid0oQ5OvhYXuwMohAxFb4z8/P8+gN\n", + "K2FgZqMXLlf2cUSkynhexBaVc1TI83C6eE/Sg4yfZqblkSVUQ/EujgQZEzC+2wpQsQTChpFkjPRK\n", + "YZ95/DjROOpOKcBls6xHbB2u9+/fZ7PW4XCYn83n80z9oNjMa6CSjxSIy9hJT/L/Tr+jwIbDYeVI\n", + "Kar8kBVX/vBdl6lTNcsaI+dl+tcVbziOlmF+T/NAo6TsQ9AVyxQO6GKxyCNKeA6OPfwbBxFHR0eJ\n", + "hP5/7Z3bT2PZ0cWXaWMa2/h+AWygQd1z0+RlpEjzNA9R/uZIUf6GSEmUzGS6e7qbuzE2Ngcb8AU7\n", + "D9avXMc9Tzx8LX3aS4pmJmBz9j5776pataq2NyaDwcA0Qt1uV/1+386Fp6cn5fN5NRoNc+wZsy+D\n", + "Zw/SY4keTugJaTnB2IfDoTG0s9lM5XLZfu6ZQh9YsjdoLMzvw7qhWUGz49cw84PzcXt7a/uRWwzG\n", + "40WDXpxHSbEeQVw+jWNCdSB7yTughUIhlkb1aT/YmGRy0SMtiiIbM+mgYrFoQS3znEqlTCPFmcLY\n", + "fcUx5yOfQz8E00c7EtYte4Bn8sFnIrFoAAsryhnP+/dOIMwkc9Pr9azSHUJDWuojsSFeO8j7A163\n", + "R2YJFsy/X9bEdDqN2SLWMA4NAZQ/izc2Nqwz+tPTU+yKGGwCJAu6Sc4yxlWpVGLNrjc2NhRFkW5u\n", + "bixwl6S9vb3PslKr+GKOFHlOf8UGBoiXhiMlLfqerN7qLcU95dXGljhZXpzOP3E8+JxPbXEg0pTO\n", + "pwYw+Gh9VoWqvHwOFBYbEdNkMjFD7e+J6vf7ur+/j/V/YnywB3jXUPGMhwjf66d4HqJrFqSfN3/I\n", + "ekeKUmUcH1/q64Wk5N854DFoLHif10+n06pUKhaBemeL78EZ8NojhMsYPH8Y4wASBUlLkSMCxX6/\n", + "H2OUeC6cDy/gZHz5fN7WWSaTMUMaRZEd3slkUvl83lgHjAA9oXzKyn8WJxvjKS30bL4Tt3fcYXJo\n", + "DUG5tLQwfHd3d7q4uLCDnO9kbBy2vmCAKBedQavVsvFXKhVlMpmYTocIkkN/Op2qXC5bBM+eoS8Z\n", + "zgfr4P7+3kTorH3ffyuKIpt33/bk9vbWUl69Xu+znmf05vHOFfOdSqW0u7urXC5ne9TvYd4Nh60v\n", + "RAB8xjsJXkbgtV44egcHB3Z3IoYtiiIlEglz6DudTswpIogcjUax9D3P9vj4GOsIzb749OmTOfTd\n", + "btfE2AQ5iURCh4eHtsZY+1yjkU6nY+lQuq/joNLzin2B0ebM8OkmdGX8fXpAScs+aQQ8RPjSIm3y\n", + "4sULFYtFY128EwLTSfoHNpbg4Pb21hjVarVq84Yjvds4flYAABpXSURBVCojuLy8VKVSMQbEBwqM\n", + "zeuEGD8sm9fq8jlK6nkXJycn+vjxo+3RSqUSS2Ph1LF/vH3yDBD7jRYFPoD2bDfnLnaBdw0DuLa2\n", + "FkuZkW2AdfdOCM4cbCw6QXp/ITHAxjGm9fV1W+f5fN6ehQantLhJJBK2Lkhdsjc8G4m8Zjpd3DTg\n", + "2ejxeKybmxtdX19bcMI53Gw2VS6XrR/dN998Y/vm9PRUNzc36na7xjwyPjRssMypVCqWpfAp/t9D\n", + "aH8QEBAQEBAQEPBMfBFGisgSz15apoyIeL2omiiBiNAzPXzOs0M+XUgEwb8TmZDaQH/gWS5y2TTm\n", + "8+JQIlHYJ88e8D1EKz5iI/r1FKFPtSDApE2+pzHxzCmt9VE3bA7RrNcekGZBFLqaZ26323YPmk8p\n", + "Ua7qU5Bem4KQ1bM4kqxBny8/ZbykJom+faqCVImvuOK7vfgZ9o3IgL9HOs6zVfP5XFEUxS7s9XMP\n", + "lcuaIKLhxnjP4nhNQyKRUKlUMrbOp6g8k0ZkzdqA7vaVekTXzGsURapUKrHOz2gWSKnQDkFaUOOU\n", + "aHe7XQ0GA0v7oVMj/env/4JV444wIjRpQWP7zxBtsmdYZ8Vi0VJCfr6ZcxgWaZkW4bn81Tlra2vW\n", + "yRwdG2uYVDjVUIVCIaZr8lE7TLAvXoGlbTQaFmWz3tifpCt888LVFCP7Ah2FL/HnPdF4sNVq2dzC\n", + "km5ubhrbBotyfn4uaVmZxtodDodWfp/JZFQsFjUYDCwdwfhgXa6urmxvsZ9I+VarVV1dXcWqDz2r\n", + "SVqeNcn4SI3V63U7hyaTiQqFgqV90MOwvmHuYWN99TSpTtJw6KukpS04PT3V5eWlVU9Jy6tAjo+P\n", + "bd/5DtbpdFrffvutcrmc7u7uLIVDSh0dW6PRsGqr6XSqVqulXq+n3d1da8DIGGBIYBR9yj2dTqvT\n", + "6RhzzPh6vZ5ub2+VTqfNDrG3T05OYvqaRqNhFyhvbGzEpABek3RxcaHxeKxisWjsmdfs+AKp8Xhs\n", + "ejJpUX3Z7/f19u1bTadT1Wo1NRoNSUu92uPjo7GDvvCB4hWfqeBzSAzQXPobQPh39LPsb9KjsLGk\n", + "8JjTfD6vp6cnE3/zOa5SWltbU7/fj2lqT09PrZ0KFYOcw71ez4oLuIMVZml7e1vv3r0zFnK1dQxn\n", + "P4wqa41Kep8hW0XC56P/r/CHP/xh7juKS/HOvb6qQVrePF0qleyaAg5pShlJAUBPSktdFNVgXliI\n", + "ocO5QTAnKdbrhJQXC4VUIY6d19r4sUAN+2oPxoTjxBxQiVUoFFQoFGJ6Hi9EXK2k8BUHOAYYCyp3\n", + "vHaMPjg8D/obRKS+vHY+X5TPYpg5UL2zhR7M38pN1RYb1lfYcXijWfFCVRYwug1f0dfpdKwvjK+M\n", + "89oSxsq88Tv0+2Fc/AwHGI0RhxsVHVT7+ENwfX1dg8HAel15fRhOFWlRUr9Q6rxn5hCaXJJpPxD6\n", + "stalxdUc3nm+u7uLafJwmK+urnR+fm4GAz0S2qDVi1RxJEajkY6Pj23d7O3tqV6vm0aCdA7PjbOO\n", + "QN47SzjfpDh8FRWaqcFgELsf7MWLF7aGWKf+3V9cXCiKIkvdMAacUu/o+3TLcDjU1dWVXr58qaOj\n", + "o5hg26exMZZ+TpELSPFu2uPx8hoJAhMOV+4lo/LHH9TVatXaXuBA4GSVSiWrTuNqDap2EeJj3Lmv\n", + "kDn1lc/VatXu70NTRnBRrVZjmlKq1Xgf3rn3GstEImHPyTlJawPmwwcuqwVEjB8ZA2lFr6nhwu52\n", + "u22OEHuxVqspkUiYpsj37aLgYWtrS+VyWY1Gw/7e4+Ojzs7O9P79e1UqFX399ddmvElNzedzC1p5\n", + "11EU6e7uzopkstls7Cqf4XCof/zjH2q1WlZJzbyVy2VLaW9ubprGdTgc2rUrs9nMzkVpmYJFD+xT\n", + "R/72hVwuFxObJ5NJczbb7bY2NjaUTqdj/dem06lVVfOM0kLE7SvLCYwl2XdSiOXtF1WO8/ncbNT7\n", + "9+/tc999951+/vlnnZ+f69WrVyYHmEwmVrFYrVZjmkNsGmelT7NeXV2ZNhDNH2NAZ8zZtrW1ZWlP\n", + "bFK9XtfNzY1++eUX2/dc+5RMJk1Ty3qChFkV1EsLG/LixQu122396U9/+vwCS30hRmptbc0Wva/4\n", + "Wl9fj/Ur8oyHL/30bAaHBRvcfweOEwI0aekI0HuD7/Flk2xuX0Hm8/ZeaLyqn2KBIub0wlm0PkQX\n", + "fCdOXDqdNgbJN5dDI5FMJnV3d2cGmJyyv27Fl3Hzt7i80Y+D/49oCPEq33tzc6Pb21tzGLy+SFoc\n", + "avl83iJDPnd8fKwoisxArGpO+BuUOktLUS0OnXeqiXIxGNLygKbBo2986ZvjTaeLcuZUKmVVSowB\n", + "bRxrw98Ej1OLRsUzefx//X5f8/nyMlA0DGhyJpOJNfXk/Xujg26En2HEiIo51HC40On4y3ARB6dS\n", + "KTUajZgmDQ0U7CG6BklWyQhz5LUwtVrN5gxhOIfpcDhUNptVFEX6+PGjXr58GdOlsI8ox/fsEUYf\n", + "FpDnxCHDEfHaCwpMBoOBGVPYK94xjrkXpjJvu7u71vx1Z2fHnBgcvnw+/5kDRrk9/02jWNYG0Tdl\n", + "8J5Rf3p60qtXr5RKpXR1dRWr6GT+0ZH4829nZ8cYG9hHSeawZTIZbW1txYpzuMQ5n8/bO2Psm5ub\n", + "+uMf/2hOt69ikpZnA/uR8U0mE9NEnp2dmZPC2KlalWSVxexJzksKMWhPwDhms5lVl/p1ivaRJrj+\n", + "XEAjx88RiEuyd3t+fq7T01P9+uuvtk8JKJvNpumT/HnCBbgEYN5phhm+vLy0fSVJ+/v7kmRViVzS\n", + "zXeyBrPZrAqFgmq1mj1Lo9GwSt9+vx/TjsFKYavY59ij+Xyu6+vrGFtDtfZgMFCn0zG2knfDfqvV\n", + "auakMEaCx2KxqFwuF6sQz2Qyarfbury8tHXGvPG7vrCJYI++VNgwX0jVbrf1888/K5FIaH9/X6lU\n", + "KuacszZWK1ZhqllfPhNBQOIzUfysXq+r2+3qw4cP5tijGbu/v9fXX39tLVXIPDHfZJl8wCgt+l35\n", + "c/f38EUcKV6sd5a8ANRHCR7Q8CxWaekskbrxgjWMCYccDSH5GVVLMFK8RDxvnomDQVpS6kRglO1K\n", + "MuMLwzSbzWKfI6UAo8VhQrNMIkSfaqI6hMh0MpnYRsRRQ8BNVAuurq40GAxULpftQPKVPbAgPL+f\n", + "c++g0UZAWkZK9OfxY+RAvr6+Nq8e8JzMi4/6+S5SDr6ij8ibCAm2h7mRllU6ns0gDeK7gnu2CoaG\n", + "6MynYPl9L+Zk3aZSKe3s7KhQKNidVdLSIYBBHA6Hlu6QluJvbj/P5/O2hjlcMHoIM/2cEmV6VgmB\n", + "Pv+sVCqWFoJRXF9f/6xhIVE3hg/hvCS7ccALSZlv3gtj9OwDQk0ON290cRx8xZhvnOqDFtLYkqwn\n", + "Tb1eV7lc1vHxsfWiqtfrxprgTOHA8s5SqZQxdDQ2lRbCcIKZ1QDOV1nCkHpDy7/Dhnr2m4o9qjc9\n", + "fOd932NqlWH1UTKXa1NE441JsVg0doGzjLU4GAz04cMHOxP93/BVU2trazGGiRYG9GvyDBWGnBYO\n", + "7C//7Gtra1ZtNhqNzEg9PDxY6s2LwKWFker1etrZ2dHu7m5M1sHav7i4ULvd1uHhYayaud/vx6oM\n", + "WVPMCeyXvzOR85ssw/v37038vbW1pUajYa0OfLuYx8dH5XI57e3t2VlzcHAgadE24uLiQgcHB/Zc\n", + "f/3rX+3db25uqlqtqlwuq1ar2edgx7BhVIIy9qenJ/373/9Wt9vVV199Zc7Z4+OjOVc4jY+Pj3rz\n", + "5k1sbp6ennR5eRlLpZKi7Xa76nQ6+uqrr+w5j4+PLcCjnx7I5XJKp9M6Pz+3NeADpVarZa0/fIFP\n", + "p9MxZom0N2xVpVIxSQupQtjITCajfr9ve2U8HltWhH2Gffad67e2tpTNZu08ffPmjZ0BOLG8y3w+\n", + "b5/DtsDCUpAgLc6LQqHwWR8+jy/iSElLw7BaTUeE6L0/r0WRZAyUpFhUwMHBYYdhJQLCuPjPScvI\n", + "1lfu+FSA/11K2HnOVCplC2NjY0O9Xk9RFJlh8uwBDgRXl3iWLZVKxQ5aTzn6hURuXIrrQGARfOqO\n", + "AwWD4Z0byvFvbm60v79vz8ff9NV62Ww21tuH3+PfMV48697enu7v79XtdmPMCvOcyWRMTyDFW/6T\n", + "5vOUMiwfhhNnAmPqy/R9+wMOKFJ0bAR6LvE8/A3WAhEO0aq/uBSnpVAoxFI7OBZoJXDQvd5HkqXD\n", + "RqORbWK0X8wpjirrTZKxlb4ykxQpTCjODHOKgUGz45me8Xis09NTiyz5WbfbVaVSsaaD3qmCydjc\n", + "3NSrV69ipeI4it4I+opc5pFUnq9mJXIkKmW+ifRpnVAul+1S4tFopHq9bqkftFnMDbokjGkymYyl\n", + "p5PJZKwa1AcgrEVYUNY3jiLVXL7FA3uPYI10DOPHMPr+PqwpHEbmh/3ty+ZJA/n9S4n34+OjisWi\n", + "ORn9fl9nZ2exNKgPaljz3lGSZC1SZrOZKpWK5vO5rW+MDAEk/+N7PfOKDsr/rFgs2lUng8HAzsft\n", + "7W2bS3SrrCmY0mw2qw8fPkiSVYNxsflsNrMGioyfliewO9PpVH//+99tHD/88ENMK8Waurq6UrFY\n", + "VLFY1DfffGPMBXNKehVHAaaD88obaJha9FS3t7eW5oLl2t3dNe3PbLbo1M/az+fzxhaxdxnP/f29\n", + "vQ+qoX/99Vf961//kiS9efNGe3t7lm73QeRgMLCbMzqdjtrtdkw2AAt8e3uru7s7c8B++eUXTSaL\n", + "ZrTdbteaFUvLimQyF94BOzw81Pb2tq6vr+1KMt/nrNlsmmNN5oWfkeYmJbxaOV6v11UqlfTbb79Z\n", + "Wvjdu3c6OjpSOp3WxcWFOp2OzTeMKHKN1bYzrP9EYtGTkO9EcuOD2FV8EY3Umzdv7I96r9azVJ4d\n", + "yWazajabajabdhXKKiNFPtl/bnNzM0bT+V4eHGb09PG0OX8TI8LhIC2vOaGkFO9dikcY5IN9SwGM\n", + "KekkL+QkDUa6yIvicQRJOWH0cbwwpOSbpeXhiWCYnileIEg39GKxqHK5bAc/hobfY76AT9PA4PA5\n", + "5nI2m8Uas2HwPdPCd2PQ6NQNCyjJ8tnj8ViVSiUmusTB4iDzuhxvCH27BsbkmcHZbBZrrocjiYbA\n", + "dzDmbzDnvj8LzifsTyaTsUODd8PcIZDnXfnrUNDZSDJDAgNA2llaOrw4qYPBwETMk8lEzWbTnHDK\n", + "haVFzn82m+nk5ESFQkHFYtHGkU6ndXR0ZEGIF2JDfTMOr4GDcUokEsZUcngzxxyI6+vrsdvacZIz\n", + "mUyssaJPAxLt8g4vLy+Vz+dVKpVMlI5j7PcbLC3sjbRwGCjEYJ/jMGD4WNe+mSNGiBQsncj9+ycl\n", + "6tPtOMY+bcm6YO1ykPvmqDC1fD6bzZp+6vr6WtVq1fYbjLUkffz4Uf1+X5VKxXRABJ6sJVh6f/6j\n", + "b/RzBDCQPgDxzhntOXq9nvWfYm2Q1vPCZu8s8844N3CW7u/vTRf38PCgdrtt5xeSBa+VI/2Gg8V7\n", + "297etu+czWb67rvvNBgM9N///tfmhGeCASSI5NnQ5uKcE4Qyhul0qlwup3q9rul0ao2BOUvp7l6p\n", + "VIxZgsWhaMQLuHk3tIB4//69sc3FYlHNZtMC0kKhoMfHx1ivLNjLFy9eGLsmLdiV+Xxua+ef//yn\n", + "rUlauLBPYCiZ70KhoGQyqX6/b20kpMX9hTBLPvCQZFf4UDCw2sKhWq3GdHO+8IFiGPYSNmhjY8Ma\n", + "vh4dHalWq9m8+X1Fip3zq1Ao6P7+XgcHB0qlUjo9Pf3MzpF9effunc13rVYzfe6PP/74u/m90P4g\n", + "ICAgICAgIOCZ+GKpPR/1A9gGSpuJaGi5f3h4aBGBb8znNRt48ZKMHYCN8lQeeWUvOvNVe6RQoBzx\n", + "2onI0WNR0isty/FzuVysek5adv1GaEyULS3ywVDl5H6JoHzFIZczetbJ642iKIoxPgjCqTxCayUt\n", + "rzuRljQqgl4odbQOiBn5XaI92ir4KMIzUC9fvoyJJ2FbEEaSvoI59NoRvyYon+U9ep0KrRRWq0Bh\n", + "fohMYG2kZSsGnseLi3lHjMVXdMG2sG589QxMBu+e7t6rVY+k9Gq1mr0rWC60G76qqdFoxNpf+Co6\n", + "UlCsL0+pUyk1Go2UzWZjFW++ioW55DlhsHhnPsXu0zXMtW86+fT0ZCJjr+fyjANj5Ge+mSzr2N/R\n", + "xz9hBoloi8WihsOhMUFeD8TckJaGWeTZ0UCORiO7fJWIljWQSCRUqVS0vb1tUXm32zX2qFarxdIU\n", + "rEvSML6CbW1tzS7D9oyetGAc2dPZbNZ0UcwvImXSf+g20JewFhEC8956vZ4mk4mq1aqlzhib36/s\n", + "E9Youin+vmfj8vn8ZzIBXyVJVV+pVDJmivfOheykvP0NE7DniURCJycnxpx+//33ur+/V6vVMlaN\n", + "ux0zmYwxmA8PD1ZJJi3L4/f39+09UdGYSqXUarUURZEymYwqlUosnba+vq5Wq2XXbXnRNZeHYzNW\n", + "dZwHBweaTqemS5IWtms8HhvjynnIvMCc3tzcqFQqxdJl7AW0WrQbqdVqenx81MXFhYnVacgrLbRO\n", + "19fXlmbE1krLNgYwvWRBpOXdjsxrJpOJMTU02iSteHZ2JmlRFLC3t6fvv//e9pIvwkBPxt737Ws6\n", + "nY7K5bKKxaJubm7MBlEhy92kPo3smdS3b9/GtIpktWazmYrFog4PD40dbLfbKpVKdu+fP4Npm0Cb\n", + "lL29PdtrnU4n1ij29/BFHCn0PF4czMv1OUsqRprNpnZ3d1WtVm2heR0Uh+Jq7x5+zu9jlKVlB2MO\n", + "AwyOtDhsqPJCk4Oh9v13cHa8PgD4tAv/jfKfNKJPM/qOsqSpJFnPHp+DZuzoiXheUiSMi3nx6VNA\n", + "moV0kn8en9pjzrxjiFPKeHylpbSk6P1GJP+NaI+KM0km2vYlyjwrjiTl8b7s2Au5MZReNM6cYcAw\n", + "3qQg0bj5d0cVG04oTiZrBiMZRZFGo1HMsHuRsNeU8IwYGsbAoVGpVLS/v6/xeGwpKl9FRtsI//x8\n", + "J3uI9UOKCoeX52Wt8E7b7bZevnypV69exQwiDgn7yd8diGH1zhxGyAv4STXxOa/V8gJ/aXkZKul8\n", + "r9sh2MBh8p/jviz0UxRvMP7NzU29fv3aCjF8FSHp+XQ6reFwqPl8bmuYzusIWqVlpWCz2bR0DC0r\n", + "/NrAseVZ/ZnB2m00GrHziTmjapYUGWufefC6KRBFUawTOs56oVDQTz/9ZOl8f0m0tLy5IZvNmjMl\n", + "LYwsvXS8/k1apso5f+hkzrPidBDclEolGz9BK+ezD5IfHh40HA5N3Hx9fW3iYAqESH1vb2/bM83n\n", + "c/X7fX369En/+c9/lMlk9Oc//1mS9O233+pvf/ubvdurqyt7lv39fRO8U8HH/F1fX6vX61ngQQWY\n", + "tDijRqORbm5uLDDlO0ulkg4ODpTL5ayS0t8GMJlMtL+/bxd38zPGiXgcHZYk7ezsmGHf2dlRs9mM\n", + "Vd1GUWTONSloNGKlUklRFOnt27f68OGDisWiOaC0wuh2u/rLX/6iy8vLWNsM0Ov1VCqVLA25vr6u\n", + "Xq9nleOz2Ux7e3uSZPo8HHgf4GF/0Ce/fv1ax8fHkqTffvtN+/v7pv3LZDIW0JBibbVadmOCdzLv\n", + "7u6so/unT5/sZ1QSl8tl9fv92B6tVCrWfoKqeR+UTyYTs0tessJND6tBvscXcaQwAD6CRI+Bx5/P\n", + "5+0FHx0dqVQqWdWbP/gwOl547V+i1wBgcKRlybkXY3v2yH+nd14kmcYDLYuvvmLRUEHkI3iqmWA6\n", + "vBeNsUBfgdHMZrNmFEejkW1saeFhJxIJE/H5y2Dp6USeH20KefT19XVjD+7u7jQcDs1xLRQKiqLI\n", + "hMVedOpF1Gg3mBsqZdDVJJNJE/pxsSq9YbiZW5IZNd+rZJV1KxaLarVaJnjk/cIgrYp42WgwEl4D\n", + "x5hon4DWSlocamhn6FPCoe/XmL8+iDFgfDDCvE/mBp1QOp02po/P9no90xkkk0ljOemngnbL9y3z\n", + "wmzGxvNQHcPfZQ74e+gO9/f3zdBJS90Za9M7WRSH4LzxvKxhHL7VfegLQFj/vsEtBpZ97VkO1jzP\n", + "7PuxPT0t7q/b2tqKNQCVZD2ZqIJj7nlWxjAajWJCUuZ3OBzq+Pg4psekMo3rb3BUWIu0i1htYYEm\n", + "slarWSNLH3TBcMFqegaPv1Mul62VA2ux3W7b3+eqDJ6F99bv91WtVmPsJ3osKX4mSkstkGd7JVnA\n", + "gGPD//gs+2w0GlkLBOaUwJnz2/dE4qwrlUqaz+dqNpuxYJerbjxjydpgDb5+/VrpdNrE3/P53Kq1\n", + "YLN5/lwup9FopNPTU9uLvmGptHBwGo2G5vO5vfv5fG6OPWcgWj5fsIF2lv2Lxomg0velQ7TuGW/W\n", + "fq1Ws7ONd4GTcXJyonq9bvde4qQwN9wZyN+cTqfmvO3s7GgwGKjdbhvb46uSh8Oh6Sa73a6tE/RT\n", + "0rKdBU7W0dGRstms2RyaB/OdvEscSeaNZsJeowiZgQOcTCb1ww8/6OzszMb/8PBgVc8EugQY+Xze\n", + "An2cTMbHuQNp4jWeBPIEXv4sqVarsV57v4cvIjYPCAgICAgICPj/gCA2DwgICAgICAh4JoIjFRAQ\n", + "EBAQEBDwTARHKiAgICAgICDgmQiOVEBAQEBAQEDAMxEcqYCAgICAgICAZyI4UgEBAQEBAQEBz0Rw\n", + "pAICAgICAgICnongSAUEBAQEBAQEPBPBkQoICAgICAgIeCaCIxUQEBAQEBAQ8EwERyogICAgICAg\n", + "4JkIjlRAQEBAQEBAwDMRHKmAgICAgICAgGciOFIBAQEBAQEBAc9EcKQCAgICAgICAp6J4EgFBAQE\n", + "BAQEBDwTwZEKCAgICAgICHgmgiMVEBAQEBAQEPBMBEcqICAgICAgIOCZCI5UQEBAQEBAQMAz8T90\n", + "n59+FodZjgAAAABJRU5ErkJggg==\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Load the net, list its data and params, and filter an example image.\n", + "caffe.set_mode_cpu()\n", + "net = caffe.Net('net_surgery/conv.prototxt', caffe.TEST)\n", + "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(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", + "\n", + "im_input = im[np.newaxis, np.newaxis, :, :]\n", + "net.blobs['data'].reshape(*im_input.shape)\n", + "net.blobs['data'].data[...] = im_input" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The convolution weights are initialized from Gaussian noise while the biases are initialized to zero. These random filters give output somewhat like edge detections." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": [ + "iVBORw0KGgoAAAANSUhEUgAAAicAAACbCAYAAAC5xzv6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n", + "AAALEgAACxIB0t1+/AAAIABJREFUeJzsvVuMbVl2pvWvfb/FjkueW568VN5dXSUbl4sHbBBYbYRK\n", + "jRqEJW7qfkD90MItN4gGgQC3QHYJiwdejJFfcNvgRtBuaBAPyA9gt5FBcrnc1bbLVemqPFmZlZdz\n", + "TuaJc+KybxH7sniI8839rxFrx4lMU7mjKveQQhGx97rMNeeYY/zjH2POleV5ro1sZCMb2chGNrKR\n", + "qyKVdTdgIxvZyEY2spGNbMRlA042spGNbGQjG9nIlZINONnIRjaykY1sZCNXSjbgZCMb2chGNrKR\n", + "jVwp2YCTjWxkIxvZyEY2cqVkA042spGNbGQjG9nIlZJPDTjJsuyHsiz7x1mWHWVZ9jezLPuVLMt+\n", + "7vF3P5ll2TvrbuNGNvJxZKPbG/lBlY1uf3rlUwNOJP2Hkv6vPM/7eZ7/13me/0ye518uOzDLsrey\n", + "LPuL36uGZFn2lSzLXsmy7KUsy/4wfLeXZdn/mmXZ4HE7/s3vURv+8yzLfuOqXm8jH0m+X3T7Z7Ms\n", + "+2qWZZMsy37te9iGjW7/4MiV1+0syxpZlv3q4/sfZVn2tSzLvvQ9asOnRrc/TeDkM5K+ccljc0nZ\n", + "x7lJ9lgu+L4u6fk8z9+Q9EVJfxgO+W8kTSTdkPRXJP1KlmWf+zht2cinRr5fdPs9Sb8g6e98nPtv\n", + "5FMp3w+6XZP0XUn/bJ7nfUk/J+k3syz7zMdpy0YeS57nP/A/kn5b0kzSWNKRpFcl/bqkX3j8/U9K\n", + "eufx378haS5pJOlY0n/w+PN/StL/K+mRpH8s6Z+z6/9DSV+W9P88Pu+lC9ryBUm//fjv/1LSz9h3\n", + "XUknkl6xz/47Sb+44lqZzibCW5LuPz62H5/Jjn9L0k9J+tLj+5w+fsav2XP8oqTfl3Qo6X+TtPtx\n", + "r7f52ej2iuN+QdKvPeG5Nrr9Kf/5ftRtO/6PJP0rG93+c4z/uhvwCSr670j6a/b/r0n6+bIBlPQd\n", + "SX/R/n9G0gNJX3r8/z//+P+nTDnekvQXdMZG1Uru/289niDDxxPhkaTp40n3UGcRwhckDcN5f0vS\n", + "/77imf6apG9LekFnwOZ/kfTfX6CU6bkk/Wcca9//Q0nvSvqcpI6k/1nSb3zc621+NrqNbofjv6wn\n", + "g5ONbm9+vu90+/E5N3UGqF5b8Uwb3b7Ez6cprSOdp/wuSwH+VUn/R57nvyVJeZ7/n5K+KulffPx9\n", + "LunX8zz/Zp7nizzPZ/ECeZ7/ep7nuzqjA39c0j8h6ev5WS51L8/ztyX1dKb0LseStla0669I+q/y\n", + "PH8rz/OhpP9Y0r+RZdllxjXT+efPdaao38jzfCTpb0v61y6iO59wvY18cnLVdbtwyiXatdHtjSDf\n", + "N7r9OP3zPzy+7rdWtGuj25eQTxs4uYxRLJPPSPpXsyx7xI+kf1rSLTtmZdX44yLXgyzLDiT9hM6Q\n", + "7uuSfujx9f7dx4cOJPXD6ds6Ayhl8rQknxzf1Vn+8+blHqtU/Dm+K6ku6dqf43ob+WTkqut24bRL\n", + "tGuj2xtBvi90+zG4+A2d1Qz+7AXt2uj2JaS27gasWVYpffz8uzqjyf76x7iW8jx/KGkny7J/XdJP\n", + "5nn+M1mW/QNJv5zn+W/bod+SVMuy7JX8rPBKeozUV1z6fZ1Rg8jzOsvR3pf0rM4oPklSlmVVSdcv\n", + "0d7nw99TnVGhw495vY2sR66abl/qeiYb3d7IKrlyuv2YpfhVnenNX8rzfH7BPTe6fQn5tDEnWfh7\n", + "VQR3X9LL9v/flfSXsyz7F7Isq2ZZ1nq8xv6ZFddeJf+kpH/0+O8vKKxmeEzx/QNJP59lWSfLsn9G\n", + "0l/WGRovk/9R0r+XZdkLWZb1JP0Xkv6nPM8XOgM6rSzL/tJjqvHnJDXt3HuSXgjUXybpr2ZZ9hey\n", + "LOtI+nlJfz8/S05+nOtt5JOTK63b0plhzLKspbOgqJplWfOxsSyTjW5vBLnyui3pVyR9VtK/lOf5\n", + "yROut9HtS8inDZzk4e/4P/KLkn7uMXX3t/I8f1fSvyzpP5H0gc4Q+b+vomJfBoH+mKR/lGXZU5Jm\n", + "eZ4flhzzNyS1H9/n70r6t/M8/+aK6/0dnQGX/1vSmzor2PqbkvT42n9D0n+rs2KpgYrU399//Hs/\n", + "y7Kv2jP8hs4q4u9Kakj6d/4c19vIJyffD7r9t3Wmo/+RzuoBxpL+0xXX2+j2RpArrduPlwz/dZ2x\n", + "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\n", + "FLNDKhgqnuXwEMfS+Dx06A8//FCOgHNyiPlmDh4fH/Pdd98VT4BTRskWyPB3DC1z6hg13/Emd0Ip\n", + "NQr+rBTyv7Ixz05GTRoQ7JguSof8KR/DZHwOESUN64IHBFMC24hS9f6pQ172dmAnqQ/B+mPweZeP\n", + "hLKPzF45yZCGbAHCkHufdKvDr8zXcrksoA2vEqAH43lwcFBAlStR8j3+wN5gbCaTSdlnzLlP+5HM\n", + "BwgnTOky5svlMrPZrCTX393dZTAYZDqdlpu5fS0GLOJ6vS61fyaTSVkrG3fndlgudtW8fpeXl2X9\n", + "fcqF36PHAQUYNWQQZhemD6AL6+cCk+RNwMSyXrwHMIcXTz/ZYzCEDnOik5ElwvROCH16esrV1VXZ\n", + "G5YT7wdYOGSfvtEIj3D6hfkARMPS+fQN7DQ6HrtBCM3MInIOuwxYBGytVqtSa4s9CghbLpf5/vvv\n", + "W3k6zMn19XU6nU7r9ul+v5+PHz+W00Aw5AbzgCaYxufn59ze3ubgYHsIBSLBl9f+Ues4Fr5v+7Zv\n", + "+7Zv+7Zv+7brtvuqVfu2b/u2b/u2b/u2b2p7cLJv+7Zv+7Zv+7Zv31Tbg5N927d927d927d9+6ba\n", + "Hpzs277t277t277t2zfV9uBk3/Zt3/Zt3/Zt376ptgcn+7Zv+7Zv+7Zv+/ZNtT042bd927d927d9\n", + "27dvqu3Byb7t277t277t2759U20PTvZt3/Zt3/Zt3/btm2p7cLJv+7Zv+7Zv+7Zv31Tbg5N927d9\n", + "27d927d9+6baHpzs277t277t277t2zfV9uBk3/Zt3/Zt3/Zt376ptgcn+7Zv+7Zv+7Zv+/ZNtT04\n", + "2bd927d927d927dvqu3Byb7t277t277t2759U20PTvZt3/Zt3/Zt3/btm2p7cLJv+7Zv+7Zv+7Zv\n", + "31Tbg5N927d927d927d9+6baHpzs277t277t277t2zfV/i+IAQDEy/wsagAAAABJRU5ErkJggg==\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# helper show filter outputs\n", + "def show_filters(net):\n", + " net.forward()\n", + " plt.figure()\n", + " filt_min, filt_max = net.blobs['conv'].data.min(), net.blobs['conv'].data.max()\n", + " for i in range(3):\n", + " plt.subplot(1,4,i+2)\n", + " plt.title(\"filter #{} output\".format(i))\n", + " plt.imshow(net.blobs['conv'].data[0, i], vmin=filt_min, vmax=filt_max)\n", + " plt.tight_layout()\n", + " plt.axis('off')\n", + "\n", + "# filter the image with initial \n", + "show_filters(net)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Raising the bias of a filter will correspondingly raise its output:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pre-surgery output mean -0.02\n", + "post-surgery output mean 0.98\n" + ] + } + ], + "source": [ + "# 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 1\n", + "net.params['conv'][1].data[0] = 1.\n", + "net.forward()\n", + "print(\"post-surgery output mean {:.2f}\".format(conv0.mean()))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Altering the filter weights is more exciting since we can assign any kernel like Gaussian blur, the Sobel operator for edges, and so on. The following surgery turns the 0th filter into a Gaussian blur and the 1st and 2nd filters into the horizontal and vertical gradient parts of the Sobel operator.\n", + "\n", + "See how the 0th output is blurred, the 1st picks up horizontal edges, and the 2nd picks up vertical edges." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": [ + "iVBORw0KGgoAAAANSUhEUgAAAicAAACbCAYAAAC5xzv6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n", + "AAALEgAACxIB0t1+/AAAIABJREFUeJzsvWuMbNl13/c/9eh6V7/uvT1zHzNDzgw5HNIWNInpMCEi\n", + "2wkCwYElBFASBTLg2DCM2LATSAkSJ5GlWDJi5EMAA0ngL/EjkQPFcuIQgREEcCIbAkJD9JhDgdJ4\n", + "yOFjHnfuq2/fflV1VXc9Tj7U/e3+1+pTfe+MqOkmWQtodHfVOfvsvfbaa/3XY++T5XmuJS1pSUta\n", + "0pKWtKTLQqWL7sCSlrSkJS1pSUtaktMSnCxpSUta0pKWtKRLRUtwsqQlLWlJS1rSki4VLcHJkpa0\n", + "pCUtaUlLulS0BCdLWtKSlrSkJS3pUtESnCxpSUta0pKWtKRLRT804CTLsk9nWfa1LMsOsiz7C1mW\n", + "/fUsy37+8Xd/KMuy9y+6j0ta0kehpWwv6QeVlrL9w0s/NOBE0n8q6f/N87yb5/l/l+f5n83z/K8U\n", + "XZhl2TtZlv2R36uOZFn2lSzLXsqy7JNZlv2z8N1GlmX/R5Zlvcf9+Pd+j/rwX2VZ9iuXtb0lfSj6\n", + "fpHtP59l2etZlg2zLPtbv4d9WMr2Dw5detnOsmwly7K/8fj5B1mWvZFl2Y//HvXhh0a2f5jAyfOS\n", + "3nzKa3NJ2Ud5SPaYzvm+Kum5PM+/JelfkPTPwiX/g6ShpGuSfkbSX8+y7NWP0pcl/dDQ94tsfyDp\n", + "lyX9zY/y/CX9UNL3g2xXJL0n6V/N87wr6ecl/VqWZc9/lL4s6THlef4D/yPp1yWNJQ0kHUh6WdLf\n", + "lvTLj7//Q5Lef/z3r0iaSDqSdCjpP3n8+b8k6cuSdiV9TdKPWfv/WNJfkfT/Pb7vk+f05Ucl/frj\n", + "v/8bSX/WvmtJOpb0kn32P0n6qwvayjRbCO9Iuv/42m4ck13/jqR/TdKPP37OyeMxvmHj+KuSflPS\n", + "vqQvSVr/qO0tf5ayveC6X5b0t54wrqVs/5D/fD/Ktl3/W5L+raVs/y7m/6I78DEK+j+S9Kfs/78l\n", + "6ZeKJlDSdyX9Efv/hqSHkn788f//+uP/N0043pH0Gc2iUZWC5//7jxdI//FC2JU0erzoHmnmIfyo\n", + "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\n", + "AmRZhjAMbT4IJ1YyK8Dab1EU9j5YvgG+Z9qz7MFOhUE4/2+slXMZJScsukuD2aE3Gg30+31kWWaT\n", + "dFmmKYoCcRyj3W7bKO3u7s5q54vFAo3Gn8PMtra2EEURgO8SJ1dAMbOSZRmSJMFyucTR0RHKskQc\n", + "xzZ/jW0FU+gsD7y/v2OxWNiW5aPRCFEU4devPycEJ0mCwWCAy8tLALBSQL1eR7vdxnQ6xWq1Qq/X\n", + "w+npqa3E6ff7uL6+xnA4tH0mmPpvtVq4vb3FZDJBu90GANuwi/uZcE5LrVazn+H15qFvP4VbnvOz\n", + "cGUR2wTOdeA2/rwX+Bn5DLME4GYBWBbic+IGLNyXZz6f22ohzm1ie8jyEjtkZlYY1PF7LK8wU8Hs\n", + "DOdBuFkaljFZVuPnYhmZmbMgCGxSLU8qZtnIDeA4x6LX61l5lgNR7jDLVUYciLJcyu9z1Q8DRban\n", + "HARwPhcACwhZvmIWpt/v2yq0x8dHHBwc4P7+Hru7u7ZUmXufrNdrdDodO/n46enJBjd85jnp+PPz\n", + "E+Px2PaKeX193TgLrNFoWNvIoNTdb+m//PO3DlJERETkJ/z8YSQiIiIiDgUnIiIi4hUFJyIiIuIV\n", + "BSciIiLiFQUnIiIi4hUFJyIiIuIVBSciIiLiFQUnIiIi4hUFJyIiIuIVBSciIiLiFQUnIiIi4hUF\n", + "JyIiIuIVBSciIiLiFQUnIiIi4hUFJyIiIuIVBSciIiLiFQUnIiIi4hUFJyIiIuIVBSciIiLiFQUn\n", + "IiIi4pXfPRZNtgyLF3IAAAAASUVORK5CYII=\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ksize = net.params['conv'][0].data.shape[2:]\n", + "# make Gaussian blur\n", + "sigma = 1.\n", + "y, x = np.mgrid[-ksize[0]//2 + 1:ksize[0]//2 + 1, -ksize[1]//2 + 1:ksize[1]//2 + 1]\n", + "g = np.exp(-((x**2 + y**2)/(2.0*sigma**2)))\n", + "gaussian = (g / g.sum()).astype(np.float32)\n", + "net.params['conv'][0].data[0] = gaussian\n", + "# make Sobel operator for edge detection\n", + "net.params['conv'][0].data[1:] = 0.\n", + "sobel = np.array((-1, -2, -1, 0, 0, 0, 1, 2, 1), dtype=np.float32).reshape((3,3))\n", + "net.params['conv'][0].data[1, 0, 1:-1, 1:-1] = sobel # horizontal\n", + "net.params['conv'][0].data[2, 0, 1:-1, 1:-1] = sobel.T # vertical\n", + "show_filters(net)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "With net surgery, parameters can be transplanted across nets, regularized by custom per-parameter operations, and transformed according to your schemes." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Casting a Classifier into a Fully Convolutional Network\n", + "\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." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1,2c1\r\n", + "< # Fully convolutional network version of CaffeNet.\r\n", + "< name: \"CaffeNetConv\"\r\n", + "---\r\n", + "> name: \"CaffeNet\"\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", + "< shape: { dim: 1 dim: 3 dim: 451 dim: 451 }\r\n", + "< }\r\n", + "---\r\n", + "> input_param { shape: { dim: 10 dim: 3 dim: 227 dim: 227 } }\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,161c155,156\r\n", + "< top: \"fc6-conv\"\r\n", + "< convolution_param {\r\n", + "---\r\n", + "> top: \"fc6\"\r\n", + "> inner_product_param {\r\n", + "163d157\r\n", + "< kernel_size: 6\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,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,186c176,180\r\n", + "< name: \"fc7-conv\"\r\n", + "< type: \"Convolution\"\r\n", + "< bottom: \"fc6-conv\"\r\n", + "< top: \"fc7-conv\"\r\n", + "< convolution_param {\r\n", + "---\r\n", + "> name: \"fc7\"\r\n", + "> type: \"InnerProduct\"\r\n", + "> bottom: \"fc6\"\r\n", + "> top: \"fc7\"\r\n", + "> inner_product_param {\r\n", + "188d181\r\n", + "< kernel_size: 1\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,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,211c200,204\r\n", + "< name: \"fc8-conv\"\r\n", + "< type: \"Convolution\"\r\n", + "< bottom: \"fc7-conv\"\r\n", + "< top: \"fc8-conv\"\r\n", + "< convolution_param {\r\n", + "---\r\n", + "> name: \"fc8\"\r\n", + "> type: \"InnerProduct\"\r\n", + "> bottom: \"fc7\"\r\n", + "> top: \"fc8\"\r\n", + "> inner_product_param {\r\n", + "213d205\r\n", + "< kernel_size: 1\r\n", + "219c211\r\n", + "< bottom: \"fc8-conv\"\r\n", + "---\r\n", + "> bottom: \"fc8\"\r\n" + ] + } + ], + "source": [ + "!diff net_surgery/bvlc_caffenet_full_conv.prototxt ../models/bvlc_reference_caffenet/deploy.prototxt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The only differences needed in the architecture are to change the fully connected classifier inner product layers into convolutional layers with the right filter size -- 6 x 6, since the reference model classifiers take the 36 elements of `pool5` as input -- and stride 1 for dense classification. Note that the layers are renamed so that Caffe does not try to blindly load the old parameters when it maps layer names to the pretrained model." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fc6 weights are (4096, 9216) dimensional and biases are (4096,) dimensional\n", + "fc7 weights are (4096, 4096) dimensional and biases are (4096,) dimensional\n", + "fc8 weights are (1000, 4096) dimensional and biases are (1000,) dimensional\n" + ] + } + ], + "source": [ + "# 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", + " caffe.TEST)\n", + "params = ['fc6', 'fc7', 'fc8']\n", + "# fc_params = {name: (weights, biases)}\n", + "fc_params = {pr: (net.params[pr][0].data, net.params[pr][1].data) for pr in params}\n", + "\n", + "for fc in params:\n", + " print '{} weights are {} dimensional and biases are {} dimensional'.format(fc, fc_params[fc][0].shape, fc_params[fc][1].shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Consider the shapes of the inner product parameters. The weight dimensions are the output and input sizes while the bias dimension is the output size." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fc6-conv weights are (4096, 256, 6, 6) dimensional and biases are (4096,) dimensional\n", + "fc7-conv weights are (4096, 4096, 1, 1) dimensional and biases are (4096,) dimensional\n", + "fc8-conv weights are (1000, 4096, 1, 1) dimensional and biases are (1000,) dimensional\n" + ] + } + ], + "source": [ + "# Load the fully convolutional network to transplant the parameters.\n", + "net_full_conv = caffe.Net('net_surgery/bvlc_caffenet_full_conv.prototxt', \n", + " '../models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel',\n", + " caffe.TEST)\n", + "params_full_conv = ['fc6-conv', 'fc7-conv', 'fc8-conv']\n", + "# conv_params = {name: (weights, biases)}\n", + "conv_params = {pr: (net_full_conv.params[pr][0].data, net_full_conv.params[pr][1].data) for pr in params_full_conv}\n", + "\n", + "for conv in params_full_conv:\n", + " print '{} weights are {} dimensional and biases are {} dimensional'.format(conv, conv_params[conv][0].shape, conv_params[conv][1].shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The convolution weights are arranged in output $\\times$ input $\\times$ height $\\times$ width dimensions. To map the inner product weights to convolution filters, we could roll the flat inner product vectors into channel $\\times$ height $\\times$ width filter matrices, but actually these are identical in memory (as row major arrays) so we can assign them directly.\n", + "\n", + "The biases are identical to those of the inner product.\n", + "\n", + "Let's transplant!" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "for pr, pr_conv in zip(params, params_full_conv):\n", + " conv_params[pr_conv][0].flat = fc_params[pr][0].flat # flat unrolls the arrays\n", + " conv_params[pr_conv][1][...] = fc_params[pr][1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, save the new model weights." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "net_full_conv.save('net_surgery/bvlc_caffenet_full_conv.caffemodel')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To conclude, let's make a classification map from the example cat image and visualize the confidence of \"tiger cat\" as a probability heatmap. This gives an 8-by-8 prediction on overlapping regions of the 451 $\\times$ 451 input." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[282 282 281 281 281 281 277 282]\n", + " [281 283 283 281 281 281 281 282]\n", + " [283 283 283 283 283 283 287 282]\n", + " [283 283 283 281 283 283 283 259]\n", + " [283 283 283 283 283 283 283 259]\n", + " [283 283 283 283 283 283 259 259]\n", + " [283 283 283 283 259 259 259 277]\n", + " [335 335 283 259 263 263 263 277]]\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": [ + "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\n", + "A43ph1xlbAoPAAAAAElFTkSuQmCC\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "# load input and configure preprocessing\n", + "im = caffe.io.load_image('images/cat.jpg')\n", + "transformer = caffe.io.Transformer({'data': net_full_conv.blobs['data'].data.shape})\n", + "transformer.set_mean('data', np.load('../python/caffe/imagenet/ilsvrc_2012_mean.npy').mean(1).mean(1))\n", + "transformer.set_transpose('data', (2,0,1))\n", + "transformer.set_channel_swap('data', (2,1,0))\n", + "transformer.set_raw_scale('data', 255.0)\n", + "# make classification map by forward and print prediction indices at each location\n", + "out = net_full_conv.forward_all(data=np.asarray([transformer.preprocess('data', im)]))\n", + "print out['prob'][0].argmax(axis=0)\n", + "# show net input and confidence map (probability of the top prediction at each location)\n", + "plt.subplot(1, 2, 1)\n", + "plt.imshow(transformer.deprocess('data', net_full_conv.blobs['data'].data[0]))\n", + "plt.subplot(1, 2, 2)\n", + "plt.imshow(out['prob'][0,281])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The classifications include various cats -- 282 = tiger cat, 281 = tabby, 283 = persian -- and foxes and other mammals.\n", + "\n", + "In this way the fully connected layers can be extracted as dense features across an image (see `net_full_conv.blobs['fc6'].data` for instance), which is perhaps more useful than the classification map itself.\n", + "\n", + "Note that this model isn't totally appropriate for sliding-window detection since it was trained for whole-image classification. Nevertheless it can work just fine. Sliding-window training and finetuning can be done by defining a sliding-window ground truth and loss such that a loss map is made for every location and solving as usual. (This is an exercise for the reader.)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "*A thank you to Rowland Depp for first suggesting this trick.*" + ] + } + ], + "metadata": { + "description": "How to do net surgery and manually change model parameters for custom use.", + "example_name": "Editing model parameters", + "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": 5 + }, + "nbformat": 4, + "nbformat_minor": 0 +} + + +
    +
    + + diff --git a/gathered/examples/pascal-multilabel-with-datalayer.ipynb b/gathered/examples/pascal-multilabel-with-datalayer.ipynb new file mode 100644 index 00000000000..34aa94e334d --- /dev/null +++ b/gathered/examples/pascal-multilabel-with-datalayer.ipynb @@ -0,0 +1,541 @@ + + + + + + + + + Caffe | Multilabel Classification with Python Data Layer + + + + + + + + + + + + + +
    +
    +

    Caffe

    +

    + Deep learning framework by the BVLC +

    +

    + Created by +
    + Yangqing Jia +
    + Lead Developer +
    + Evan Shelhamer +

    +
    +
    + + { + "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": "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\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": "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\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 VOC using a Python data layer.", + "example_name": "Multilabel Classification with Python Data Layer", + "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" + }, + "priority": 5 + }, + "nbformat": 4, + "nbformat_minor": 0 +} + + +
    +
    + + diff --git a/gathered/examples/siamese.html b/gathered/examples/siamese.html new file mode 100644 index 00000000000..d28447d9e32 --- /dev/null +++ b/gathered/examples/siamese.html @@ -0,0 +1,258 @@ + + + + + + + + + Caffe | Siamese Network Tutorial + + + + + + + + + + + + + +
    +
    +

    Caffe

    +

    + Deep learning framework by the BVLC +

    +

    + Created by +
    + Yangqing Jia +
    + Lead Developer +
    + Evan Shelhamer +

    +
    +
    + +

    Siamese Network Training with Caffe

    +

    This example shows how you can use weight sharing and a contrastive loss +function to learn a model using a siamese network in Caffe.

    + +

    We will assume that you have caffe successfully compiled. If not, please refer +to the Installation page. This example builds on the +MNIST tutorial so it would be a good idea to read that before +continuing.

    + +

    The guide specifies all paths and assumes all commands are executed from the +root caffe directory

    + +

    Prepare Datasets

    + +

    You will first need to download and convert the data from the MNIST +website. To do this, simply run the following commands:

    + +
    ./data/mnist/get_mnist.sh
    +./examples/siamese/create_mnist_siamese.sh
    +
    +
    + +

    After running the script there should be two datasets, +./examples/siamese/mnist_siamese_train_leveldb, and +./examples/siamese/mnist_siamese_test_leveldb.

    + +

    The Model

    +

    First, we will define the model that we want to train using the siamese network. +We will use the convolutional net defined in +./examples/siamese/mnist_siamese.prototxt. This model is almost +exactly the same as the LeNet model, the only difference is that +we have replaced the top layers that produced probabilities over the 10 digit +classes with a linear “feature” layer that produces a 2 dimensional vector.

    + +
    layer {
    +  name: "feat"
    +  type: "InnerProduct"
    +  bottom: "ip2"
    +  top: "feat"
    +  param {
    +    name: "feat_w"
    +    lr_mult: 1
    +  }
    +  param {
    +    name: "feat_b"
    +    lr_mult: 2
    +  }
    +  inner_product_param {
    +    num_output: 2
    +  }
    +}
    +
    +
    + +

    Define the Siamese Network

    + +

    In this section we will define the siamese network used for training. The +resulting network is defined in +./examples/siamese/mnist_siamese_train_test.prototxt.

    + +

    Reading in the Pair Data

    + +

    We start with a data layer that reads from the LevelDB database we created +earlier. Each entry in this database contains the image data for a pair of +images (pair_data) and a binary label saying if they belong to the same class +or different classes (sim).

    + +
    layer {
    +  name: "pair_data"
    +  type: "Data"
    +  top: "pair_data"
    +  top: "sim"
    +  include { phase: TRAIN }
    +  transform_param {
    +    scale: 0.00390625
    +  }
    +  data_param {
    +    source: "examples/siamese/mnist_siamese_train_leveldb"
    +    batch_size: 64
    +  }
    +}
    +
    +
    + +

    In order to pack a pair of images into the same blob in the database we pack one +image per channel. We want to be able to work with these two images separately, +so we add a slice layer after the data layer. This takes the pair_data and +slices it along the channel dimension so that we have a single image in data +and its paired image in data_p.

    + +
    layer {
    +  name: "slice_pair"
    +  type: "Slice"
    +  bottom: "pair_data"
    +  top: "data"
    +  top: "data_p"
    +  slice_param {
    +    slice_dim: 1
    +    slice_point: 1
    +  }
    +}
    +
    +
    + +

    Building the First Side of the Siamese Net

    + +

    Now we can specify the first side of the siamese net. This side operates on +data and produces feat. Starting from the net in +./examples/siamese/mnist_siamese.prototxt we add default weight fillers. Then +we name the parameters of the convolutional and inner product layers. Naming the +parameters allows Caffe to share the parameters between layers on both sides of +the siamese net. In the definition this looks like:

    + +
    ...
    +param { name: "conv1_w" ...  }
    +param { name: "conv1_b" ...  }
    +...
    +param { name: "conv2_w" ...  }
    +param { name: "conv2_b" ...  }
    +...
    +param { name: "ip1_w" ...  }
    +param { name: "ip1_b" ...  }
    +...
    +param { name: "ip2_w" ...  }
    +param { name: "ip2_b" ...  }
    +...
    +
    +
    + +

    Building the Second Side of the Siamese Net

    + +

    Now we need to create the second path that operates on data_p and produces +feat_p. This path is exactly the same as the first. So we can just copy and +paste it. Then we change the name of each layer, input, and output by appending +_p to differentiate the “paired” layers from the originals.

    + +

    Adding the Contrastive Loss Function

    + +

    To train the network we will optimize a contrastive loss function proposed in: +Raia Hadsell, Sumit Chopra, and Yann LeCun “Dimensionality Reduction by Learning +an Invariant Mapping”. This loss function encourages matching pairs to be close +together in feature space while pushing non-matching pairs apart. This cost +function is implemented with the CONTRASTIVE_LOSS layer:

    + +
    layer {
    +    name: "loss"
    +    type: "ContrastiveLoss"
    +    contrastive_loss_param {
    +        margin: 1.0
    +    }
    +    bottom: "feat"
    +    bottom: "feat_p"
    +    bottom: "sim"
    +    top: "loss"
    +}
    +
    +
    + +

    Define the Solver

    + +

    Nothing special needs to be done to the solver besides pointing it at the +correct model file. The solver is defined in +./examples/siamese/mnist_siamese_solver.prototxt.

    + +

    Training and Testing the Model

    + +

    Training the model is simple after you have written the network definition +protobuf and solver protobuf files. Simply run +./examples/siamese/train_mnist_siamese.sh:

    + +
    ./examples/siamese/train_mnist_siamese.sh
    +
    +
    + +

    Plotting the results

    + +

    First, we can draw the model and siamese networks by running the following +commands that draw the DAGs defined in the .prototxt files:

    + +
    ./python/draw_net.py \
    +    ./examples/siamese/mnist_siamese.prototxt \
    +    ./examples/siamese/mnist_siamese.png
    +
    +./python/draw_net.py \
    +    ./examples/siamese/mnist_siamese_train_test.prototxt \
    +    ./examples/siamese/mnist_siamese_train_test.png
    +
    +
    + +

    Second, we can load the learned model and plot the features using the iPython +notebook:

    + +
    ipython notebook ./examples/siamese/mnist_siamese.ipynb
    +
    +
    + + + +
    +
    + + diff --git a/gathered/examples/siamese/mnist_siamese.ipynb b/gathered/examples/siamese/mnist_siamese.ipynb new file mode 100644 index 00000000000..ffeda21ade3 --- /dev/null +++ b/gathered/examples/siamese/mnist_siamese.ipynb @@ -0,0 +1,1971 @@ + + + + + + + + + Caffe | Siamese network embedding + + + + + + + + + + + + + +
    +
    +

    Caffe

    +

    + Deep learning framework by the BVLC +

    +

    + Created by +
    + Yangqing Jia +
    + Lead Developer +
    + Evan Shelhamer +

    +
    +
    + + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Setup\n", + "\n", + "Import Caffe and the usual modules." + ] + }, + { + "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", + "# Make sure that caffe is on the python path:\n", + "caffe_root = '../../' # this file is expected to be in {caffe_root}/examples/siamese\n", + "import sys\n", + "sys.path.insert(0, caffe_root + 'python')\n", + "\n", + "import caffe" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load the trained net\n", + "\n", + "Load the model definition and weights and set to CPU mode TEST phase computation with input scaling." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "MODEL_FILE = 'mnist_siamese.prototxt'\n", + "# decrease if you want to preview during training\n", + "PRETRAINED_FILE = 'mnist_siamese_iter_50000.caffemodel' \n", + "caffe.set_mode_cpu()\n", + "net = caffe.Net(MODEL_FILE, PRETRAINED_FILE, caffe.TEST)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load some MNIST test data" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "TEST_DATA_FILE = '../../data/mnist/t10k-images-idx3-ubyte'\n", + "TEST_LABEL_FILE = '../../data/mnist/t10k-labels-idx1-ubyte'\n", + "n = 10000\n", + "\n", + "with open(TEST_DATA_FILE, 'rb') as f:\n", + " f.read(16) # skip the header\n", + " raw_data = np.fromstring(f.read(n * 28*28), dtype=np.uint8)\n", + "\n", + "with open(TEST_LABEL_FILE, 'rb') as f:\n", + " f.read(8) # skip the header\n", + " labels = np.fromstring(f.read(n), dtype=np.uint8)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generate the Siamese features" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# reshape and preprocess\n", + "caffe_in = raw_data.reshape(n, 1, 28, 28) * 0.00390625 # manually scale data instead of using `caffe.io.Transformer`\n", + "out = net.forward_all(data=caffe_in)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Visualize the learned Siamese embedding" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": [ + "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\n", + "AABAVv1/lzHCzGUnjVoAAAAASUVORK5CYII=\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "feat = out['feat']\n", + "f = plt.figure(figsize=(16,9))\n", + "c = ['#ff0000', '#ffff00', '#00ff00', '#00ffff', '#0000ff', \n", + " '#ff00ff', '#990000', '#999900', '#009900', '#009999']\n", + "for i in range(10):\n", + " plt.plot(feat[labels==i,0].flatten(), feat[labels==i,1].flatten(), '.', c=c[i])\n", + "plt.legend(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'])\n", + "plt.grid()\n", + "plt.show()" + ] + } + ], + "metadata": { + "description": "Extracting features and plotting the Siamese network embedding.", + "example_name": "Siamese network embedding", + "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": 7 + }, + "nbformat": 4, + "nbformat_minor": 0 +} + + +
    +
    + + diff --git a/gathered/examples/web_demo.html b/gathered/examples/web_demo.html new file mode 100644 index 00000000000..fbec5daa457 --- /dev/null +++ b/gathered/examples/web_demo.html @@ -0,0 +1,99 @@ + + + + + + + + + Caffe | Web demo + + + + + + + + + + + + + +
    +
    +

    Caffe

    +

    + Deep learning framework by the BVLC +

    +

    + Created by +
    + Yangqing Jia +
    + Lead Developer +
    + Evan Shelhamer +

    +
    +
    + +

    Web Demo

    + +

    Requirements

    + +

    The demo server requires Python with some dependencies. +To make sure you have the dependencies, please run pip install -r examples/web_demo/requirements.txt, and also make sure that you’ve compiled the Python Caffe interface and that it is on your PYTHONPATH (see installation instructions).

    + +

    Make sure that you have obtained the Reference CaffeNet Model and the ImageNet Auxiliary Data:

    + +
    ./scripts/download_model_binary.py models/bvlc_reference_caffenet
    +./data/ilsvrc12/get_ilsvrc_aux.sh
    +
    +
    + +

    NOTE: if you run into trouble, try re-downloading the auxiliary files.

    + +

    Run

    + +

    Running python examples/web_demo/app.py will bring up the demo server, accessible at http://0.0.0.0:5000. +You can enable debug mode of the web server, or switch to a different port:

    + +
    % python examples/web_demo/app.py -h
    +Usage: app.py [options]
    +
    +Options:
    +  -h, --help            show this help message and exit
    +  -d, --debug           enable debug mode
    +  -p PORT, --port=PORT  which port to serve content on
    +
    +
    + +

    How are the “maximally accurate” results generated?

    + +

    In a nutshell: ImageNet predictions are made at the leaf nodes, but the organization of the project allows leaf nodes to be united via more general parent nodes, with ‘entity’ at the very top. +To give “maximally accurate” results, we “back off” from maximally specific predictions to maintain a high accuracy. +The bet_file that is loaded in the demo provides the graph structure and names of all relevant ImageNet nodes as well as measures of information gain between them. +Please see the “Hedging your bets” paper from CVPR 2012 for further information.

    + + +
    +
    + + diff --git a/images/GitHub-Mark-64px.png b/images/GitHub-Mark-64px.png new file mode 100644 index 0000000000000000000000000000000000000000..182a1a3f734fc1b7d712c68b04c29bad9460d6cd GIT binary patch literal 2625 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 + + + + + + + + Caffe | Deep Learning Framework + + + + + + + + + + + + + +
    +
    +

    Caffe

    +

    + Deep learning framework by the BVLC +

    +

    + Created by +
    + Yangqing Jia +
    + Lead Developer +
    + Evan Shelhamer +

    +
    +
    + +

    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) and by community contributors. +Yangqing Jia created the project during his PhD at UC Berkeley. +Caffe is released under the BSD 2-Clause license.

    + +

    Check out our web image classification demo!

    + +

    Why Caffe?

    + +

    Expressive architecture encourages application and innovation. +Models and optimization are defined by configuration without hard-coding. +Switch between CPU and GPU by setting a single flag to train on a GPU machine then deploy to commodity clusters or mobile devices.

    + +

    Extensible code fosters active development. +In Caffe’s first year, it has been forked by over 1,000 developers and had many significant changes contributed back. +Thanks to these contributors the framework tracks the state-of-the-art in both code and models.

    + +

    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.

    + +

    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 and Github.

    + +

    +* With the ILSVRC2012-winning SuperVision model and caching IO. +Consult performance details. +

    + +

    Documentation

    + + + +

    Examples

    + + + +

    Notebook Examples

    + + + +

    Citing Caffe

    + +

    Please cite Caffe in your publications if it helps your research:

    + +
    @article{jia2014caffe,
    +  Author = {Jia, Yangqing and Shelhamer, Evan and Donahue, Jeff and Karayev, Sergey and Long, Jonathan and Girshick, Ross and Guadarrama, Sergio and Darrell, Trevor},
    +  Journal = {arXiv preprint arXiv:1408.5093},
    +  Title = {Caffe: Convolutional Architecture for Fast Feature Embedding},
    +  Year = {2014}
    +}
    +
    +
    + +

    If you do publish a paper where Caffe helped your research, we encourage you to update the publications wiki. +Citations are also tracked automatically by Google Scholar.

    + +

    Contacting Us

    + +

    Join the caffe-users group to ask questions and discuss methods and models. This is where we talk about usage, installation, and applications.

    + +

    Framework development discussions and thorough bug reports are collected on Issues.

    + +

    Contact caffe-dev 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 instead.

    + +

    The core Caffe developers offer consulting services for appropriate projects.

    + +

    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 for guidance.

    + +

    The BVLC members who have contributed to Caffe are (alphabetical by first name): +Eric Tzeng, Evan Shelhamer, Jeff Donahue, Jon Long, Ross Girshick, Sergey Karayev, Sergio Guadarrama, and Yangqing Jia.

    + +

    The open-source community plays an important and growing role in Caffe’s development. +Check out the Github project pulse for recent activity and the contributors for the full list.

    + +

    We sincerely appreciate your interest and contributions! +If you’d like to contribute, please read the developing & contributing guide.

    + +

    Yangqing would like to give a personal thanks to the NVIDIA Academic program for providing GPUs, Oriol Vinyals for discussions along the journey, and BVLC PI Trevor Darrell for advice.

    + + +
    +
    + + diff --git a/install_apt.html b/install_apt.html new file mode 100644 index 00000000000..ed4601d1d74 --- /dev/null +++ b/install_apt.html @@ -0,0 +1,119 @@ + + + + + + + + + Caffe | Installation: Ubuntu + + + + + + + + + + + + + +
    +
    +

    Caffe

    +

    + Deep learning framework by the BVLC +

    +

    + Created by +
    + Yangqing Jia +
    + Lead Developer +
    + Evan Shelhamer +

    +
    +
    + +

    Ubuntu Installation

    + +

    General dependencies

    + +
    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 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.

    + +
    sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
    +
    +
    + +

    Remaining dependencies, 12.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
    +cd glog-0.3.3
    +./configure
    +make && make install
    +# gflags
    +wget https://github.com/schuhschuh/gflags/archive/master.zip
    +unzip master.zip
    +cd gflags-master
    +mkdir build && cd build
    +export CXXFLAGS="-fPIC" && cmake .. && make VERBOSE=1
    +make && make install
    +# lmdb
    +git clone https://github.com/LMDB/lmdb
    +cd lmdb/libraries/liblmdb
    +make && make install
    +
    +
    + +

    Note that glog does not compile with the most recent gflags version (2.1), so before that is resolved you will need to build with glog first.

    + +

    Continue with compilation.

    + + +
    +
    + + diff --git a/install_osx.html b/install_osx.html new file mode 100644 index 00000000000..063b1670dd0 --- /dev/null +++ b/install_osx.html @@ -0,0 +1,206 @@ + + + + + + + + + Caffe | Installation: OS X + + + + + + + + + + + + + +
    +
    +

    Caffe

    +

    + Deep learning framework by the BVLC +

    +

    + Created by +
    + Yangqing Jia +
    + Lead Developer +
    + Evan Shelhamer +

    +
    +
    + +

    OS X Installation

    + +

    We highly recommend using the Homebrew package manager. +Ideally you could start from a clean /usr/local to avoid conflicts. +In the following, we assume that you’re using Anaconda Python and Homebrew.

    + +

    CUDA: Install via the NVIDIA package that includes both CUDA and the bundled driver. CUDA 7 is strongly suggested. Older CUDA require libstdc++ while clang++ is the default compiler and libc++ the default standard library on OS X 10.9+. This disagreement makes it necessary to change the compilation settings for each of the dependencies. This is prone to error.

    + +

    Library Path: We find that everything compiles successfully if $LD_LIBRARY_PATH is not set at all, and $DYLD_FALLBACK_LIBRARY_PATH is set to provide CUDA, Python, and other relevant libraries (e.g. /usr/local/cuda/lib:$HOME/anaconda/lib:/usr/local/lib:/usr/lib). +In other ENV settings, things may not work as expected.

    + +

    General dependencies

    + +
    brew install -vd snappy leveldb gflags glog szip lmdb
    +# need the homebrew science source for OpenCV and hdf5
    +brew tap homebrew/science
    +brew install hdf5 opencv
    +
    +
    + +

    If using Anaconda Python, a modification to the OpenCV formula might be needed +Do brew edit opencv and change the lines that look like the two lines below to exactly the two lines below.

    + +
      -DPYTHON_LIBRARY=#{py_prefix}/lib/libpython2.7.dylib
    +  -DPYTHON_INCLUDE_DIR=#{py_prefix}/include/python2.7
    +
    +
    + +

    If using Anaconda Python, HDF5 is bundled and the hdf5 formula can be skipped.

    + +

    Remaining dependencies, with / without Python

    + +
    # with Python pycaffe needs dependencies built from source
    +brew install --build-from-source --with-python -vd protobuf
    +brew install --build-from-source -vd boost boost-python
    +# without Python the usual installation suffices
    +brew install protobuf boost
    +
    +
    + +

    BLAS: already installed as the Accelerate / vecLib Framework. OpenBLAS and MKL are alternatives for faster CPU computation.

    + +

    Python (optional): Anaconda is the preferred Python. +If you decide against it, please use Homebrew. +Check that Caffe and dependencies are linking against the same, desired Python.

    + +

    Continue with compilation.

    + +

    libstdc++ installation

    + +

    This route is not for the faint of heart. +For OS X 10.10 and 10.9 you should install CUDA 7 and follow the instructions above. +If that is not an option, take a deep breath and carry on.

    + +

    In OS X 10.9+, clang++ is the default C++ compiler and uses libc++ as the standard library. +However, NVIDIA CUDA (even version 6.0) currently links only with libstdc++. +This makes it necessary to change the compilation settings for each of the dependencies.

    + +

    We do this by modifying the Homebrew formulae before installing any packages. +Make sure that Homebrew doesn’t install any software dependencies in the background; all packages must be linked to libstdc++.

    + +

    The prerequisite Homebrew formulae are

    + +
    boost snappy leveldb protobuf gflags glog szip lmdb homebrew/science/opencv
    +
    +
    + +

    For each of these formulas, brew edit FORMULA, and add the ENV definitions as shown:

    + +
      def install
    +      # ADD THE FOLLOWING:
    +      ENV.append "CXXFLAGS", "-stdlib=libstdc++"
    +      ENV.append "CFLAGS", "-stdlib=libstdc++"
    +      ENV.append "LDFLAGS", "-stdlib=libstdc++ -lstdc++"
    +      # The following is necessary because libtool likes to strip LDFLAGS:
    +      ENV["CXX"] = "/usr/bin/clang++ -stdlib=libstdc++"
    +      ...
    +
    +
    + +

    To edit the formulae in turn, run

    + +
    for x in snappy leveldb protobuf gflags glog szip boost boost-python lmdb homebrew/science/opencv; do brew edit $x; done
    +
    +
    + +

    After this, run

    + +
    for x in snappy leveldb gflags glog szip lmdb homebrew/science/opencv; do brew uninstall $x; brew install --build-from-source -vd $x; done
    +brew uninstall protobuf; brew install --build-from-source --with-python -vd protobuf
    +brew install --build-from-source -vd boost boost-python
    +
    +
    + +

    If this is not done exactly right then linking errors will trouble you.

    + +

    Homebrew versioning that Homebrew maintains itself as a separate git repository and making the above brew edit FORMULA changes will change files in your local copy of homebrew’s master branch. By default, this will prevent you from updating Homebrew using brew update, as you will get an error message like the following:

    + +
    $ brew update
    +error: Your local changes to the following files would be overwritten by merge:
    +  Library/Formula/lmdb.rb
    +Please, commit your changes or stash them before you can merge.
    +Aborting
    +Error: Failure while executing: git pull -q origin refs/heads/master:refs/remotes/origin/master
    +
    +
    + +

    One solution is to commit your changes to a separate Homebrew branch, run brew update, and rebase your changes onto the updated master. You’ll have to do this both for the main Homebrew repository in /usr/local/ and the Homebrew science repository that contains OpenCV in /usr/local/Library/Taps/homebrew/homebrew-science, as follows:

    + +
    cd /usr/local
    +git checkout -b caffe
    +git add .
    +git commit -m "Update Caffe dependencies to use libstdc++"
    +cd /usr/local/Library/Taps/homebrew/homebrew-science
    +git checkout -b caffe
    +git add .
    +git commit -m "Update Caffe dependencies"
    +
    +
    + +

    Then, whenever you want to update homebrew, switch back to the master branches, do the update, rebase the caffe branches onto master and fix any conflicts:

    + +
    # Switch batch to homebrew master branches
    +cd /usr/local
    +git checkout master
    +cd /usr/local/Library/Taps/homebrew/homebrew-science
    +git checkout master
    +
    +# Update homebrew; hopefully this works without errors!
    +brew update
    +
    +# Switch back to the caffe branches with the formulae that you modified earlier
    +cd /usr/local
    +git rebase master caffe
    +# Fix any merge conflicts and commit to caffe branch
    +cd /usr/local/Library/Taps/homebrew/homebrew-science
    +git rebase master caffe
    +# Fix any merge conflicts and commit to caffe branch
    +
    +# Done!
    +
    +
    + +

    At this point, you should be running the latest Homebrew packages and your Caffe-related modifications will remain in place.

    + + +
    +
    + + diff --git a/install_yum.html b/install_yum.html new file mode 100644 index 00000000000..4abb76c8e8c --- /dev/null +++ b/install_yum.html @@ -0,0 +1,109 @@ + + + + + + + + + Caffe | Installation: RHEL / Fedora / CentOS + + + + + + + + + + + + + +
    +
    +

    Caffe

    +

    + Deep learning framework by the BVLC +

    +

    + Created by +
    + Yangqing Jia +
    + Lead Developer +
    + Evan Shelhamer +

    +
    +
    + +

    RHEL / Fedora / CentOS Installation

    + +

    General dependencies

    + +
    sudo yum install protobuf-devel leveldb-devel snappy-devel opencv-devel boost-devel hdf5-devel
    +
    +
    + +

    Remaining dependencies, recent OS

    + +
    sudo yum install gflags-devel glog-devel lmdb-devel
    +
    +
    + +

    Remaining dependencies, if not found

    + +
    # glog
    +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
    +make && make install
    +# gflags
    +wget https://github.com/schuhschuh/gflags/archive/master.zip
    +unzip master.zip
    +cd gflags-master
    +mkdir build && cd build
    +export CXXFLAGS="-fPIC" && cmake .. && make VERBOSE=1
    +make && make install
    +# lmdb
    +git clone https://github.com/LMDB/lmdb
    +cd lmdb/libraries/liblmdb
    +make && make install
    +
    +
    + +

    Note that glog does not compile with the most recent gflags version (2.1), so before that is resolved you will need to build with glog first.

    + +

    CUDA: Install via the NVIDIA package instead of yum 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. + + CentOS/RHEL/Fedora:

    + +

    BLAS: install ATLAS by sudo yum install atlas-devel or install OpenBLAS or MKL for better CPU performance. For the Makefile build, uncomment and set BLAS_LIB accordingly as ATLAS is usually installed under /usr/lib[64]/atlas).

    + +

    Python (optional): if you use the default Python you will need to sudo yum install the python-devel package to have the Python headers for building the pycaffe wrapper.

    + +

    Continue with compilation.

    + + +
    +
    + + diff --git a/installation.html b/installation.html new file mode 100644 index 00000000000..3758e3f4825 --- /dev/null +++ b/installation.html @@ -0,0 +1,232 @@ + + + + + + + + + Caffe | Installation + + + + + + + + + + + + + +
    +
    +

    Caffe

    +

    + Deep learning framework by the BVLC +

    +

    + Created by +
    + Yangqing Jia +
    + Lead Developer +
    + Evan Shelhamer +

    +
    +
    + +

    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 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.

    + +

    Step-by-step Instructions:

    + + + +

    Overview:

    + + + +

    When updating Caffe, it’s best to make clean before re-compiling.

    + +

    Prerequisites

    + +

    Caffe has several dependencies:

    + +
      +
    • CUDA is required for GPU mode. +
        +
      • 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 via ATLAS, MKL, or OpenBLAS.
    • +
    • Boost >= 1.55
    • +
    • protobuf, glog, gflags, hdf5
    • +
    + +

    Optional dependencies:

    + +
      +
    • OpenCV >= 2.4 including 3.0
    • +
    • IO libraries: lmdb, leveldb (note: leveldb requires snappy)
    • +
    • 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. 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.

    + +

    CUDA and BLAS

    + +

    Caffe requires the CUDA nvcc compiler to compile its GPU code and CUDA driver for GPU operation. +To install CUDA, go to the NVIDIA CUDA website and follow installation instructions there. Install the library and the latest standalone driver separately; the driver bundled with the library is usually out-of-date. Warning! The 331.* CUDA driver series has a critical performance issue: do not use it.

    + +

    For best performance, Caffe can be accelerated by NVIDIA cuDNN. Register for free at the cuDNN site, install it, then continue with these installation instructions. To compile with cuDNN set the USE_CUDNN := 1 flag set in your Makefile.config.

    + +

    Caffe requires BLAS as the backend of its matrix and vector computations. +There are several implementations of this library. The choice is yours:

    + +
      +
    • ATLAS: free, open source, and so the default for Caffe.
    • +
    • Intel MKL: commercial and optimized for Intel CPUs, with a free trial and student licenses. +
        +
      1. Install MKL.
      2. +
      3. Set up MKL environment (Details: Linux, OS X). Example: source /opt/intel/mkl/bin/mklvars.sh intel64
      4. +
      5. Set BLAS := mkl in Makefile.config
      6. +
      +
    • +
    • OpenBLAS: 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. +
      3. Set BLAS := open in Makefile.config
      4. +
      +
    • +
    + +

    Python and/or MATLAB Caffe (optional)

    + +

    Python

    + +

    The main requirements are numpy and boost.python (provided by boost). pandas is useful too and needed for some examples.

    + +

    You can install the dependencies with

    + +
    for req in $(cat requirements.txt); do pip install $req; done
    +
    +
    + +

    but we suggest first installing the Anaconda Python distribution, which provides most of the necessary packages, as well as the hdf5 library dependency.

    + +

    To import the caffe Python module after completing the installation, add the module directory to your $PYTHONPATH by export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH or the like. You should not import the module in the caffe/python/caffe directory!

    + +

    Caffe’s Python interface works with Python 2.7. Python 3.3+ should work out of the box without protobuf support. For protobuf support please install protobuf 3.0 alpha (https://developers.google.com/protocol-buffers/). Earlier Pythons are your own adventure.

    + +

    MATLAB

    + +

    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.

    + +

    Compilation

    + +

    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, or if cuDNN is desired)
    +make all
    +make test
    +make runtest
    +
    +
    + +
      +
    • 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. +Be sure to set your MATLAB and Python paths in Makefile.config first!

    + +

    Distribution: run make distribute to create a distribute directory with all the Caffe headers, compiled libraries, binaries, etc. needed for distribution to other machines.

    + +

    Speed: for a faster build, compile in parallel by doing make all -j8 where 8 is the number of parallel threads for compilation (a good choice for the number of threads is the number of cores in your machine).

    + +

    Now that you have installed Caffe, check out the MNIST tutorial and the reference ImageNet model tutorial.

    + +

    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:

    + +
    mkdir build
    +cd build
    +cmake ..
    +make all
    +make install
    +make runtest
    +
    +
    + +

    See PR #1667 for options and details.

    + +

    Hardware

    + +

    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 capability >= 3.0.

    + +

    Once installed, check your times against our reference performance numbers to make sure everything is configured properly.

    + +

    Ask hardware questions on the caffe-users group.

    + + +
    +
    + + diff --git a/model_zoo.html b/model_zoo.html new file mode 100644 index 00000000000..9bc145287df --- /dev/null +++ b/model_zoo.html @@ -0,0 +1,141 @@ + + + + + + + + + Caffe | Model Zoo + + + + + + + + + + + + + +
    +
    +

    Caffe

    +

    + Deep learning framework by the BVLC +

    +

    + Created by +
    + Yangqing Jia +
    + Lead Developer +
    + Evan Shelhamer +

    +
    +
    + +

    Caffe Model Zoo

    + +

    Lots of researchers and engineers have made Caffe models for different tasks with all kinds of architectures and data. +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:

    + +
      +
    • A standard format for packaging Caffe model info.
    • +
    • Tools to upload/download model info to/from Github Gists, and to download trained .caffemodel binaries.
    • +
    • A central wiki page for sharing model info Gists.
    • +
    + +

    Where to get trained models

    + +

    First of all, we bundle BVLC-trained models for unrestricted, out of the box use. +
    +See the BVLC model license for details. +Each one of these can be downloaded by running scripts/download_model_binary.py <dirname> where <dirname> 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 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 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 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 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. +These models are subject to conditions of their respective authors such as citation and license. +Thank you for sharing your models!

    + +

    Model info format

    + +

    A caffe model is distributed as a directory containing:

    + +
      +
    • Solver/model prototxt(s)
    • +
    • readme.md containing +
        +
      • YAML frontmatter +
          +
        • Caffe version used to train this model (tagged release or commit hash).
        • +
        • [optional] file URL and SHA1 of the trained .caffemodel.
        • +
        • [optional] github gist id.
        • +
        +
      • +
      • Information about what data the model was trained on, modeling choices, etc.
      • +
      • License information.
      • +
      +
    • +
    • [optional] Other helpful scripts.
    • +
    + +

    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.

    + +

    scripts/upload_model_to_gist.sh <dirname> uploads non-binary files in the model directory as a Github Gist and prints the Gist ID. If gist_id is already part of the <dirname>/readme.md frontmatter, then updates existing Gist.

    + +

    Try doing scripts/upload_model_to_gist.sh models/bvlc_alexnet to test the uploading (don’t forget to delete the uploaded gist afterward).

    + +

    Downloading model info is done just as easily with scripts/download_model_from_gist.sh <gist_id> <dirname>.

    + +

    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. +Dropbox also works fine (tip: make sure that ?dl=1 is appended to the end of the URL).

    + +

    scripts/download_model_binary.py <dirname> downloads the .caffemodel from the URL specified in the <dirname>/readme.md frontmatter and confirms SHA1.

    + +

    BVLC model license

    + +

    The Caffe models bundled by the BVLC are released for unrestricted use.

    + +

    These models are trained on data from the ImageNet project and training data includes internet photos that may be subject to copyright.

    + +

    Our present understanding as researchers is that there is no restriction placed on the open release of these learned model weights, since none of the original images are distributed in whole or in part. +To the extent that the interpretation arises that weights are derivative works of the original copyright holder and they assert such a copyright, UC Berkeley makes no representations as to what use is allowed other than to consider our present release in the spirit of fair use in the academic mission of the university to disseminate knowledge and tools as broadly as possible without restriction.

    + + +
    +
    + + diff --git a/multigpu.html b/multigpu.html new file mode 100644 index 00000000000..8dea5a3e466 --- /dev/null +++ b/multigpu.html @@ -0,0 +1,84 @@ + + + + + + + + + Caffe | Multi-GPU Usage, Hardware Configuration Assumptions, and Performance + + + + + + + + + + + + + +
    +
    +

    Caffe

    +

    + Deep learning framework by the BVLC +

    +

    + Created by +
    + Yangqing Jia +
    + Lead Developer +
    + Evan Shelhamer +

    +
    +
    + +

    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, 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.

    + +

    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, 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/performance_hardware.html b/performance_hardware.html new file mode 100644 index 00000000000..a9119d2d42e --- /dev/null +++ b/performance_hardware.html @@ -0,0 +1,142 @@ + + + + + + + + + Caffe | Performance and Hardware Configuration + + + + + + + + + + + + + +
    +
    +

    Caffe

    +

    + Deep learning framework by the BVLC +

    +

    + Created by +
    + Yangqing Jia +
    + Lead Developer +
    + Evan Shelhamer +

    +
    +
    + +

    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: BVLC 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:

    + +
      +
    • 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).

    + + +
    +
    + + diff --git a/stylesheets/pygment_trac.css b/stylesheets/pygment_trac.css new file mode 100644 index 00000000000..c6a6452d249 --- /dev/null +++ b/stylesheets/pygment_trac.css @@ -0,0 +1,69 @@ +.highlight { background: #ffffff; } +.highlight .c { color: #999988; font-style: italic } /* Comment */ +.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ +.highlight .k { font-weight: bold } /* Keyword */ +.highlight .o { font-weight: bold } /* Operator */ +.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */ +.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ +.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #aa0000 } /* Generic.Error */ +.highlight .gh { color: #999999 } /* Generic.Heading */ +.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ +.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #555555 } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold; } /* Generic.Subheading */ +.highlight .gt { color: #aa0000 } /* Generic.Traceback */ +.highlight .kc { font-weight: bold } /* Keyword.Constant */ +.highlight .kd { font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */ +.highlight .m { color: #009999 } /* Literal.Number */ +.highlight .s { color: #d14 } /* Literal.String */ +.highlight .na { color: #008080 } /* Name.Attribute */ +.highlight .nb { color: #0086B3 } /* Name.Builtin */ +.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */ +.highlight .no { color: #008080 } /* Name.Constant */ +.highlight .ni { color: #800080 } /* Name.Entity */ +.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */ +.highlight .nn { color: #555555 } /* Name.Namespace */ +.highlight .nt { color: #000080 } /* Name.Tag */ +.highlight .nv { color: #008080 } /* Name.Variable */ +.highlight .ow { font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mf { color: #009999 } /* Literal.Number.Float */ +.highlight .mh { color: #009999 } /* Literal.Number.Hex */ +.highlight .mi { color: #009999 } /* Literal.Number.Integer */ +.highlight .mo { color: #009999 } /* Literal.Number.Oct */ +.highlight .sb { color: #d14 } /* Literal.String.Backtick */ +.highlight .sc { color: #d14 } /* Literal.String.Char */ +.highlight .sd { color: #d14 } /* Literal.String.Doc */ +.highlight .s2 { color: #d14 } /* Literal.String.Double */ +.highlight .se { color: #d14 } /* Literal.String.Escape */ +.highlight .sh { color: #d14 } /* Literal.String.Heredoc */ +.highlight .si { color: #d14 } /* Literal.String.Interpol */ +.highlight .sx { color: #d14 } /* Literal.String.Other */ +.highlight .sr { color: #009926 } /* Literal.String.Regex */ +.highlight .s1 { color: #d14 } /* Literal.String.Single */ +.highlight .ss { color: #990073 } /* Literal.String.Symbol */ +.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #008080 } /* Name.Variable.Class */ +.highlight .vg { color: #008080 } /* Name.Variable.Global */ +.highlight .vi { color: #008080 } /* Name.Variable.Instance */ +.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */ + +.type-csharp .highlight .k { color: #0000FF } +.type-csharp .highlight .kt { color: #0000FF } +.type-csharp .highlight .nf { color: #000000; font-weight: normal } +.type-csharp .highlight .nc { color: #2B91AF } +.type-csharp .highlight .nn { color: #000000 } +.type-csharp .highlight .s { color: #A31515 } +.type-csharp .highlight .sc { color: #A31515 } diff --git a/stylesheets/reset.css b/stylesheets/reset.css new file mode 100644 index 00000000000..6020b26fb69 --- /dev/null +++ b/stylesheets/reset.css @@ -0,0 +1,21 @@ +/* MeyerWeb Reset */ + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; +} diff --git a/stylesheets/styles.css b/stylesheets/styles.css new file mode 100644 index 00000000000..2dbedb8a507 --- /dev/null +++ b/stylesheets/styles.css @@ -0,0 +1,348 @@ +@import url(http://fonts.googleapis.com/css?family=PT+Serif|Open+Sans:600,400); + +body { + padding:10px 50px 0 0; + font-family: 'Open Sans', sans-serif; + font-size: 14px; + color: #232323; + background-color: #FBFAF7; + margin: 0; + line-height: 1.5rem; + -webkit-font-smoothing: antialiased; +} + +h1, h2, h3, h4, h5, h6 { + color:#232323; + margin:36px 0 10px; +} + +p, ul, ol, table, dl { + margin:0 0 22px; +} + +h1, h2, h3 { + font-family: 'PT Serif', serif; + line-height:1.3; + font-weight: normal; + display: block; + border-bottom: 1px solid #ccc; + padding-bottom: 5px; +} + +h1 { + font-size: 30px; +} + +h2 { + font-size: 24px; +} + +h3 { + font-size: 18px; +} + +h4, h5, h6 { + font-family: 'PT Serif', serif; + font-weight: 700; +} + +a { + color:#C30000; + text-decoration:none; +} + +a:hover { + text-decoration: underline; +} + +a small { + font-size: 12px; +} + +em { + font-style: italic; +} + +strong { + font-weight:700; +} + +ul { + padding-left: 25px; +} + +ol { + list-style: decimal; + padding-left: 20px; +} + +blockquote { + margin: 0; + padding: 0 0 0 20px; + font-style: italic; +} + +dl, dt, dd, dl p { + font-color: #444; +} + +dl dt { + font-weight: bold; +} + +dl dd { + padding-left: 20px; + font-style: italic; +} + +dl p { + padding-left: 20px; + font-style: italic; +} + +hr { + border:0; + background:#ccc; + height:1px; + margin:0 0 24px; +} + +/* Images */ + +img { + position: relative; + margin: 0 auto; + max-width: 650px; + padding: 5px; + margin: 10px 0 32px 0; + border: 1px solid #ccc; +} + +p img { + display: inline; + margin: 0; + padding: 0; + vertical-align: middle; + text-align: center; + border: none; +} + +/* Code blocks */ +code, pre { + font-family: monospace; + color:#000; + font-size:12px; + line-height: 14px; +} + +pre { + padding: 6px 12px; + background: #FDFEFB; + border-radius:4px; + border:1px solid #D7D8C8; + overflow: auto; + white-space: pre-wrap; + margin-bottom: 16px; +} + + +/* Tables */ +table { + width:100%; +} + +table { + border: 1px solid #ccc; + margin-bottom: 32px; + text-align: left; + } + +th { + font-family: 'Open Sans', sans-serif; + font-size: 18px; + font-weight: normal; + padding: 10px; + background: #232323; + color: #FDFEFB; + } + +td { + padding: 10px; + background: #ccc; + } + + +/* Wrapper */ +.wrapper { + width:960px; +} + + +/* Header */ + +header { + width:170px; + float:left; + position:fixed; + padding: 12px 25px 22px 50px; + margin: 24px 25px 0 0; +} + +p.header { + font-size: 14px; +} + +h1.header { + font-size: 30px; + font-weight: 300; + line-height: 1.3em; + margin-top: 0; +} + +a.name { + white-space: nowrap; +} + +header ul { + list-style:none; + padding:0; +} + +header li { + list-style-type: none; + width:132px; + height:15px; + margin-bottom: 12px; + line-height: 1em; + padding: 6px 6px 6px 7px; + background: #c30000; + border-radius:4px; + border:1px solid #555; +} + +header li:hover { + background: #dd0000; +} + +a.buttons { + color: #fff; + text-decoration: none; + font-weight: normal; + padding: 2px 2px 2px 22px; + height: 30px; +} + +a.github { + background: url(/images/GitHub-Mark-64px.png) no-repeat center left; + background-size: 15%; +} + +/* Section - for main page content */ + +section { + width:650px; + float:right; + padding-bottom:50px; +} + +p.footnote { + font-size: 12px; +} + + +/* Footer */ + +footer { + width:170px; + float:left; + position:fixed; + bottom:10px; + padding-left: 50px; +} + +@media print, screen and (max-width: 960px) { + + div.wrapper { + width:auto; + margin:0; + } + + header, section, footer { + float:none; + position:static; + width:auto; + } + + footer { + border-top: 1px solid #ccc; + margin:0 84px 0 50px; + padding:0; + } + + header { + padding-right:320px; + } + + section { + padding:20px 84px 20px 50px; + margin:0 0 20px; + } + + header a small { + display:inline; + } + + header ul { + position:absolute; + right:130px; + top:84px; + } +} + +@media print, screen and (max-width: 720px) { + body { + word-wrap:break-word; + } + + header { + padding:10px 20px 0; + margin-right: 0; + } + + section { + padding:10px 0 10px 20px; + margin:0 0 30px; + } + + footer { + margin: 0 0 0 30px; + } + + header ul, header p.view { + position:static; + } +} + +@media print, screen and (max-width: 480px) { + + header ul li.download { + display:none; + } + + footer { + margin: 0 0 0 20px; + } + + footer a{ + display:block; + } + +} + +@media print { + body { + padding:0.4in; + font-size:12pt; + color:#444; + } +} diff --git a/tutorial/convolution.html b/tutorial/convolution.html new file mode 100644 index 00000000000..75abe25e561 --- /dev/null +++ b/tutorial/convolution.html @@ -0,0 +1,74 @@ + + + + + + + + + Caffe | Convolution + + + + + + + + + + + + + +
    +
    +

    Caffe

    +

    + Deep learning framework by the BVLC +

    +

    + Created by +
    + Yangqing Jia +
    + Lead Developer +
    + Evan Shelhamer +

    +
    +
    + +

    Caffeinated Convolution

    + +

    The Caffe strategy for convolution is to reduce the problem to matrix-matrix multiplication. +This linear algebra computation is highly-tuned in BLAS libraries and efficiently computed on GPU devices.

    + +

    For more details read Yangqing’s Convolution in Caffe: a memo.

    + +

    As it turns out, this same reduction was independently explored in the context of conv. nets by

    + +
    +

    K. Chellapilla, S. Puri, P. Simard, et al. High performance convolutional neural networks for document processing. In Tenth International Workshop on Frontiers in Handwriting Recognition, 2006.

    +
    + + +
    +
    + + diff --git a/tutorial/data.html b/tutorial/data.html new file mode 100644 index 00000000000..5fd01ba86d1 --- /dev/null +++ b/tutorial/data.html @@ -0,0 +1,141 @@ + + + + + + + + + Caffe | Data + + + + + + + + + + + + + +
    +
    +

    Caffe

    +

    + Deep learning framework by the BVLC +

    +

    + Created by +
    + Yangqing Jia +
    + Lead Developer +
    + Evan Shelhamer +

    +
    +
    + +

    Data: Ins and Outs

    + +

    Data flows through Caffe as Blobs. +Data layers load input and save output by converting to and from Blob to other formats. +Common transformations like mean-subtraction and feature-scaling are done by data layer configuration. +New input types are supported by developing a new data layer – the rest of the Net follows by the modularity of the Caffe layer catalogue.

    + +

    This data layer definition

    + +
    layer {
    +  name: "mnist"
    +  # Data layer loads leveldb or lmdb storage DBs for high-throughput.
    +  type: "Data"
    +  # the 1st top is the data itself: the name is only convention
    +  top: "data"
    +  # the 2nd top is the ground truth: the name is only convention
    +  top: "label"
    +  # the Data layer configuration
    +  data_param {
    +    # path to the DB
    +    source: "examples/mnist/mnist_train_lmdb"
    +    # type of DB: LEVELDB or LMDB (LMDB supports concurrent reads)
    +    backend: LMDB
    +    # batch processing improves efficiency.
    +    batch_size: 64
    +  }
    +  # common data transformations
    +  transform_param {
    +    # feature scaling coefficient: this maps the [0, 255] MNIST data to [0, 1]
    +    scale: 0.00390625
    +  }
    +}
    +
    +
    + +

    loads the MNIST digits.

    + +

    Tops and Bottoms: A data layer makes top blobs to output data to the model. +It does not have bottom blobs since it takes no input.

    + +

    Data and Label: a data layer has at least one top canonically named data. +For ground truth a second top can be defined that is canonically named label. +Both tops simply produce blobs and there is nothing inherently special about these names. +The (data, label) pairing is a convenience for classification models.

    + +

    Transformations: data preprocessing is parametrized by transformation messages within the data layer definition.

    + +
    layer {
    +  name: "data"
    +  type: "Data"
    +  [...]
    +  transform_param {
    +    scale: 0.1
    +    mean_file_size: mean.binaryproto
    +    # for images in particular horizontal mirroring and random cropping
    +    # can be done as simple data augmentations.
    +    mirror: 1  # 1 = on, 0 = off
    +    # crop a `crop_size` x `crop_size` patch:
    +    # - at random during training
    +    # - from the center during testing
    +    crop_size: 227
    +  }
    +}
    +
    +
    + +

    Prefetching: for throughput data layers fetch the next batch of data and prepare it in the background while the Net computes the current batch.

    + +

    Multiple Inputs: a Net can have multiple inputs of any number and type. Define as many data layers as needed giving each a unique name and top. Multiple inputs are useful for non-trivial ground truth: one data layer loads the actual data and the other data layer loads the ground truth in lock-step. In this arrangement both data and label can be any 4D array. Further applications of multiple inputs are found in multi-modal and sequence models. In these cases you may need to implement your own data preparation routines or a special data layer.

    + +

    Improvements to data processing to add formats, generality, or helper utilities are welcome!

    + +

    Formats

    + +

    Refer to the layer catalogue of data layers for close-ups on each type of data Caffe understands.

    + +

    Deployment Input

    + +

    For on-the-fly computation deployment Nets define their inputs by input fields: these Nets then accept direct assignment of data for online or interactive computation.

    + + +
    +
    + + diff --git a/tutorial/fig/backward.jpg b/tutorial/fig/backward.jpg new file mode 100644 index 0000000000000000000000000000000000000000..906b080c975881dbb5bd598b3f0824c7a63014aa GIT binary patch literal 105017 zcmeFZ2UJwevM9XCIcFqE4kAhhff11;B9aA!ksL;XWN=^<2}%?YP*6}oKoC%J9?3~W zat;HMB+VdUgkk1w{Lc5Cd(XLdt^3}3|N7VY|I@7AQ@gslc2#xn?yBzI5GDu<0OK_s zeI0;^hzNKJ{sDwV24#IME$B@XBOU$g+F$_yFo@gx_}nFC1OQJje_s>bD+0HytOY3M z07`%wU}0eah>kj~A?I2z#$lvD_UISrPUr<00#+|~hzhQDvdVtm84_Np&jhTrS0FWyK z041%xy{{_(&|d}d0)dXMARl@s5We8$Uq2KhxSKR&e&He^k_(vxo0%mDgK`qr2D)3^0AYF%Zuf(kp2~2_XDHN7>lFW+#y7y^ zRAylizvkkrbE+dqLqhB62SUI3lL$K6|9%!Hh?n`gK^S~4$t`Cu z^S{YM;^yOj<&@7UeW=gf-~AhulO)CYuI?#b5QOvm0!{y{+v)FXc8Uk>Ml$AMf9RtI=>I?*e_>;e|f7F!*Tz;1Z{;mN7R=_8Cl5&%3kX|Ca z4qh*VS(a3pROQcl0t|o3Nv=(Pm0XWphg{-M4B!Y#eHYBWfct-eGXTq+LG66OtJj}8 z{GA`!3fUmpBH1X}0@);B0et_>I?GLLsgBJ4w*8ij-6$PbM zAiYAW4$2S8PRdTo4M>y9gPLfPLO|UVKhEA1O&5lT?s&k+hKXkTjCi00JaPl3J24Bu%IA z-(=SLZ5`LYo@VmfqA*Yg_djVa6kk}sfcx|AFJ0|H%&7#YZ2S#C-aa9| z?yheB0-E3`>@1+~<#_&_fb4~f@&Ir;rk~OPz)$wyV>JcP!7}pjX(>~3G@Nq zfKgx?>>JC#27m?*fMakHqadOqVjWPxOp^+?T09ZBzzhLgsVW|9_? zR+F}q4wIrt(WH1XIx-$IDKb?ueX?6*u4F-E(PZgl`D9gO9pJmOOm;v{PR>p)My>?D zn^xo=`Cn9>|^Xl9K0Nw9L^k1I7&H&I1V|_a9-wg=8WYm;~eEY;u7G} z=7Mo0bJcLoa+7jPavO68ac6UPaBrSrJ#*=dz-6XRl2c(Fl z6s6pyUP%p}BRi*Z&gV}|2~(`Bb;PV3I<&MD5TF6u5RE^DspuBoo;ZV`gdPxI=g=LI@FwSbm`UpztB}L)gRqhzk)Z5qpm;AJs?lMm~sK ziqefLj;4?HjUJD=6qECq^s)QnuTSKjym*3-b&BncyAYQihl_WN?@hRv@H~N#=#uy~ zNiiw=Dfv^cr(?;G-1%|&Ck0*w3xy_y?eCS|zc1n`N-8EU4k%v#aQnlzlB*@PrP8Hu%Gk@| zJ^~*DKK}T0=hIlZL3wM1az$ySNaf2ama5olqUw-pbd6ihLakNpVBNL4*7{5JRSoAG z3L4KgW;L-jB{fqwM>Z3Xp~(HuKA$&RTw9h}p{>(xx7tS9joZI=7<6=Z>U6esX?7vI z)w>&eRD0@rm3wRY6#J^bD152vSLm<$s`#~fKxv@%o65KPLAAl=A;?h6@YUhY5&ehT8n z8GH*-ymq0jvMIfByfxh}A0DQjpN33^BeHuf){vGu7e2stbyZ(Q;5Kw@>cCb6B zo1q~f2^LTSq(t1H-}8s`8boLQf^~?*fm2Hm0mJ|h;|`oUNT(W}#xkb~^q+p;|M5%w zn)pu&5}ns1f5G2RNeR=SpGSO}h<;y*iAhMvNlCy&K}JSOPDw#Yd77!H>1e2^XsIbF zX&7i|>FB{kMZ?I%K+kjvpE5bE4%Q+kB_*e)qNF;d_}@!}&j1r8$#)VR5+Xr>n2Csl ziHOh+@PnF=fsPrNPQ^V_*&p#kAC^#haQDjtf%;P7qDXGuW(legF$b6fd_b$Jn z@O@EvMP*fWO>JF$Yg>CqXIFPm@6hnb=-Bwg

    Ug>HG4^>e~7b%6hKP?c1k7^CIAAQ;NHfH1OLwd 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 T`XAPH{`YzPyYtHYYvg|b$GsKX literal 0 HcmV?d00001 diff --git a/tutorial/fig/forward.jpg b/tutorial/fig/forward.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ab52810908e2e9e79321c126622b5117a0cc6ead GIT binary patch literal 71957 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�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 literal 0 HcmV?d00001 diff --git a/tutorial/fig/forward_backward.png b/tutorial/fig/forward_backward.png new file mode 100644 index 0000000000000000000000000000000000000000..d2f46c39bf4daf180758b7dc25c59d2960fcd91b GIT binary patch literal 57267 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 bE<_AsUoibVOZY7nybR**?Bi5-JoMtf%Yx(F literal 0 HcmV?d00001 diff --git a/tutorial/fig/layer.jpg b/tutorial/fig/layer.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5075381cdad4202802bbee21813d4a8127fcc591 GIT binary patch literal 54757 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%0A-F&$S4#3}iE2dsM3|~$>PoOQC9@QIr+VL8622db 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

      o)OA4NTp!w$>NGq<&$2IvO6)f6@UUREs@_FfjeW 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 literal 0 HcmV?d00001 diff --git a/tutorial/fig/logreg.jpg b/tutorial/fig/logreg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..480f519a826d96218b559faf632c0e1f5158bfa0 GIT binary patch literal 42966 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 G|4jfG2({$^ literal 0 HcmV?d00001 diff --git a/tutorial/forward_backward.html b/tutorial/forward_backward.html new file mode 100644 index 00000000000..38ae26dceca --- /dev/null +++ b/tutorial/forward_backward.html @@ -0,0 +1,98 @@ + + + + + + + + + Caffe | Forward and Backward for Inference and Learning + + + + + + + + + + + + + + + + diff --git a/tutorial/index.html b/tutorial/index.html new file mode 100644 index 00000000000..99b0cf4f319 --- /dev/null +++ b/tutorial/index.html @@ -0,0 +1,118 @@ + + + + + + + + + Caffe | Caffe Tutorial + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Caffe Tutorial

      + +

      Caffe is a deep learning framework and this tutorial explains its philosophy, architecture, and usage. +This is a practical guide and framework introduction, so the full frontier, context, and history of deep learning cannot be covered here. +While explanations will be given where possible, a background in machine learning and neural networks is helpful.

      + +

      Philosophy

      + +

      In one sip, Caffe is brewed for

      + +
        +
      • Expression: models and optimizations are defined as plaintext schemas instead of code.
      • +
      • Speed: for research and industry alike speed is crucial for state-of-the-art models and massive data.
      • +
      • Modularity: new tasks and settings require flexibility and extension.
      • +
      • Openness: scientific and applied progress call for common code, reference models, and reproducibility.
      • +
      • Community: academic research, startup prototypes, and industrial applications all share strength by joint discussion and development in a BSD-2 project.
      • +
      + +

      and these principles direct the project.

      + +

      Tour

      + +
        +
      • Nets, Layers, and Blobs: the anatomy of a Caffe model.
      • +
      • Forward / Backward: the essential computations of layered compositional models.
      • +
      • Loss: the task to be learned is defined by the loss.
      • +
      • Solver: the solver coordinates model optimization.
      • +
      • Layer Catalogue: the layer is the fundamental unit of modeling and computation – Caffe’s catalogue includes layers for state-of-the-art models.
      • +
      • Interfaces: command line, Python, and MATLAB Caffe.
      • +
      • Data: how to caffeinate data for model input.
      • +
      + +

      For a closer look at a few details:

      + + + +

      Deeper Learning

      + +

      There are helpful references freely online for deep learning that complement our hands-on tutorial. +These cover introductory and advanced material, background and history, and the latest advances.

      + +

      The Tutorial on Deep Learning for Vision from CVPR ‘14 is a good companion tutorial for researchers. +Once you have the framework and practice foundations from the Caffe tutorial, explore the fundamental ideas and advanced research directions in the CVPR ‘14 tutorial.

      + +

      A broad introduction is given in the free online draft of Neural Networks and Deep Learning by Michael Nielsen. In particular the chapters on using neural nets and how backpropagation works are helpful if you are new to the subject.

      + +

      These recent academic tutorials cover deep learning for researchers in machine learning and vision:

      + + + +

      For an exposition of neural networks in circuits and code, check out Understanding Neural Networks from a Programmer’s Perspective by Andrej Karpathy (Stanford).

      + + +
      +
      + + diff --git a/tutorial/interfaces.html b/tutorial/interfaces.html new file mode 100644 index 00000000000..49542d7bcfe --- /dev/null +++ b/tutorial/interfaces.html @@ -0,0 +1,423 @@ + + + + + + + + + Caffe | Interfaces + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Interfaces

      + +

      Caffe has command line, Python, and MATLAB interfaces for day-to-day usage, interfacing with research code, and rapid prototyping. While Caffe is a C++ library at heart and it exposes a modular interface for development, not every occasion calls for custom compilation. The cmdcaffe, pycaffe, and matcaffe interfaces are here for you.

      + +

      Command Line

      + +

      The command line interface – cmdcaffe – is the caffe tool for model training, scoring, and diagnostics. Run caffe without any arguments for help. This tool and others are found in caffe/build/tools. (The following example calls require completing the LeNet / MNIST example first.)

      + +

      Training: caffe train learns models from scratch, resumes learning from saved snapshots, and fine-tunes models to new data and tasks:

      + +
        +
      • All training requires a solver configuration through the -solver solver.prototxt argument.
      • +
      • Resuming requires the -snapshot model_iter_1000.solverstate argument to load the solver snapshot.
      • +
      • Fine-tuning requires the -weights model.caffemodel argument for the model initialization.
      • +
      + +

      For example, you can run:

      + +
      # train LeNet
      +caffe train -solver examples/mnist/lenet_solver.prototxt
      +# train on GPU 2
      +caffe train -solver examples/mnist/lenet_solver.prototxt -gpu 2
      +# resume training from the half-way point snapshot
      +caffe train -solver examples/mnist/lenet_solver.prototxt -snapshot examples/mnist/lenet_iter_5000.solverstate
      +
      +
      + +

      For a full example of fine-tuning, see examples/finetuning_on_flickr_style, but the training call alone is

      + +
      # fine-tune CaffeNet model weights for style recognition
      +caffe train -solver examples/finetuning_on_flickr_style/solver.prototxt -weights models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel
      +
      +
      + +

      Testing: caffe test scores models by running them in the test phase and reports the net output as its score. The net architecture must be properly defined to output an accuracy measure or loss as its output. The per-batch score is reported and then the grand average is reported last.

      + +
      # score the learned LeNet model on the validation set as defined in the
      +# model architeture lenet_train_test.prototxt
      +caffe test -model examples/mnist/lenet_train_test.prototxt -weights examples/mnist/lenet_iter_10000.caffemodel -gpu 0 -iterations 100
      +
      +
      + +

      Benchmarking: caffe time benchmarks model execution layer-by-layer through timing and synchronization. This is useful to check system performance and measure relative execution times for models.

      + +
      # (These example calls require you complete the LeNet / MNIST example first.)
      +# time LeNet training on CPU for 10 iterations
      +caffe time -model examples/mnist/lenet_train_test.prototxt -iterations 10
      +# time LeNet training on GPU for the default 50 iterations
      +caffe time -model examples/mnist/lenet_train_test.prototxt -gpu 0
      +# time a model architecture with the given weights on the first GPU for 10 iterations
      +caffe time -model examples/mnist/lenet_train_test.prototxt -weights examples/mnist/lenet_iter_10000.caffemodel -gpu 0 -iterations 10
      +
      +
      + +

      Diagnostics: caffe device_query reports GPU details for reference and checking device ordinals for running on a given device in multi-GPU machines.

      + +
      # query the first device
      +caffe device_query -gpu 0
      +
      +
      + +

      Parallelism: the -gpu flag to the caffe tool can take a comma separated list of IDs to run on multiple GPUs. A solver and net will be instantiated for each GPU so the batch size is effectively multiplied by the number of GPUs. To reproduce single GPU training, reduce the batch size in the network definition accordingly.

      + +
      # train on GPUs 0 & 1 (doubling the batch size)
      +caffe train -solver examples/mnist/lenet_solver.prototxt -gpu 0,1
      +# train on all GPUs (multiplying batch size by number of devices)
      +caffe train -solver examples/mnist/lenet_solver.prototxt -gpu all
      +
      +
      + +

      Python

      + +

      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.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.
      • +
      • Caffe blobs are exposed as numpy ndarrays for ease-of-use and efficiency.
      • +
      + +

      Tutorial IPython notebooks are found in caffe/examples: do ipython notebook caffe/examples to try them. For developer reference docstrings can be found throughout the code.

      + +

      Compile pycaffe by make pycaffe. +Add the module directory to your $PYTHONPATH by export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH or the like for import caffe.

      + +

      MATLAB

      + +

      The MATLAB interface – matcaffe – is the caffe package in caffe/matlab in which you can integrate Caffe in your Matlab code.

      + +

      In MatCaffe, you can

      + +
        +
      • Creating multiple Nets in Matlab
      • +
      • Do forward and backward computation
      • +
      • Access any layer within a network, and any parameter blob in a layer
      • +
      • Get and set data or diff to any blob within a network, not restricting to input blobs or output blobs
      • +
      • Save a network’s parameters to file, and load parameters from file
      • +
      • Reshape a blob and reshape a network
      • +
      • Edit network parameter and do network surgery
      • +
      • Create multiple Solvers in Matlab for training
      • +
      • Resume training from solver snapshots
      • +
      • Access train net and test nets in a solver
      • +
      • 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 to run it).

      + +

      Build MatCaffe

      + +

      Build MatCaffe with make all matcaffe. After that, you may test it using make mattest.

      + +

      Common issue: if you run into error messages like libstdc++.so.6:version 'GLIBCXX_3.4.15' not found during make mattest, then it usually means that your Matlab’s runtime libraries do not match your compile-time libraries. You may need to do the following before you start Matlab:

      + +
      export LD_LIBRARY_PATH=/opt/intel/mkl/lib/intel64:/usr/local/cuda/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 do make mattest again to see if the issue is fixed. Note: this issue is sometimes more complicated since during its startup Matlab may overwrite your LD_LIBRARY_PATH environment variable. You can run !ldd ./matlab/+caffe/private/caffe_.mexa64 (the mex extension may differ on your system) in Matlab to see its runtime libraries, and preload your compile-time libraries by exporting them to your LD_PRELOAD environment variable.

      + +

      After successful building and testing, add this package to Matlab search PATH by starting matlab from caffe root folder and running the following commands in Matlab command window.

      + +
      addpath ./matlab
      +
      +
      + +

      You can save your Matlab search PATH by running savepath so that you don’t have to run the command above again every time you use MatCaffe.

      + +

      Use MatCaffe

      + +

      MatCaffe is very similar to PyCaffe in usage.

      + +

      Examples below shows detailed usages and assumes you have downloaded BVLC CaffeNet from Model Zoo and started matlab from caffe root folder.

      + +
      model = './models/bvlc_reference_caffenet/deploy.prototxt';
      +weights = './models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel';
      +
      +
      + +

      Set mode and device

      + +

      Mode and device should always be set BEFORE you create a net or a solver.

      + +

      Use CPU:

      + +
      caffe.set_mode_cpu();
      +
      +
      + +

      Use GPU and specify its gpu_id:

      + +
      caffe.set_mode_gpu();
      +caffe.set_device(gpu_id);
      +
      +
      + +

      Create a network and access its layers and blobs

      + +

      Create a network:

      + +
      net = caffe.Net(model, weights, 'test'); % create net and load weights
      +
      +
      + +

      Or

      + +
      net = caffe.Net(model, 'test'); % create net but not load weights
      +net.copy_from(weights); % load weights
      +
      +
      + +

      which creates net object as

      + +
        Net with properties:
      +
      +           layer_vec: [1x23 caffe.Layer]
      +            blob_vec: [1x15 caffe.Blob]
      +              inputs: {'data'}
      +             outputs: {'prob'}
      +    name2layer_index: [23x1 containers.Map]
      +     name2blob_index: [15x1 containers.Map]
      +         layer_names: {23x1 cell}
      +          blob_names: {15x1 cell}
      +
      +
      + +

      The two containers.Map objects are useful to find the index of a layer or a blob by its name.

      + +

      You have access to every blob in this network. To fill blob ‘data’ with all ones:

      + +
      net.blobs('data').set_data(ones(net.blobs('data').shape));
      +
      +
      + +

      To multiply all values in blob ‘data’ by 10:

      + +
      net.blobs('data').set_data(net.blobs('data').get_data() * 10);
      +
      +
      + +

      Be aware that since Matlab is 1-indexed and column-major, the usual 4 blob dimensions in Matlab are [width, height, channels, num], and width is the fastest dimension. Also be aware that images are in BGR channels. Also, Caffe uses single-precision float data. If your data is not single, set_data will automatically convert it to single.

      + +

      You also have access to every layer, so you can do network surgery. For example, to multiply conv1 parameters by 10:

      + +
      net.params('conv1', 1).set_data(net.params('conv1', 1).get_data() * 10); % set weights
      +net.params('conv1', 2).set_data(net.params('conv1', 2).get_data() * 10); % set bias
      +
      +
      + +

      Alternatively, you can use

      + +
      net.layers('conv1').params(1).set_data(net.layers('conv1').params(1).get_data() * 10);
      +net.layers('conv1').params(2).set_data(net.layers('conv1').params(2).get_data() * 10);
      +
      +
      + +

      To save the network you just modified:

      + +
      net.save('my_net.caffemodel');
      +
      +
      + +

      To get a layer’s type (string):

      + +
      layer_type = net.layers('conv1').type;
      +
      +
      + +

      Forward and backward

      + +

      Forward pass can be done using net.forward or net.forward_prefilled. Function net.forward takes in a cell array of N-D arrays containing data of input blob(s) and outputs a cell array containing data from output blob(s). Function net.forward_prefilled uses existing data in input blob(s) during forward pass, takes no input and produces no output. After creating some data for input blobs like data = rand(net.blobs('data').shape); you can run

      + +
      res = net.forward({data});
      +prob = res{1};
      +
      +
      + +

      Or

      + +
      net.blobs('data').set_data(data);
      +net.forward_prefilled();
      +prob = net.blobs('prob').get_data();
      +
      +
      + +

      Backward is similar using net.backward or net.backward_prefilled and replacing get_data and set_data with get_diff and set_diff. After creating some gradients for output blobs like prob_diff = rand(net.blobs('prob').shape); you can run

      + +
      res = net.backward({prob_diff});
      +data_diff = res{1};
      +
      +
      + +

      Or

      + +
      net.blobs('prob').set_diff(prob_diff);
      +net.backward_prefilled();
      +data_diff = net.blobs('data').get_diff();
      +
      +
      + +

      However, the backward computation above doesn’t get correct results, because Caffe decides that the network does not need backward computation. To get correct backward results, you need to set 'force_backward: true' in your network prototxt.

      + +

      After performing forward or backward pass, you can also get the data or diff in internal blobs. For example, to extract pool5 features after forward pass:

      + +
      pool5_feat = net.blobs('pool5').get_data();
      +
      +
      + +

      Reshape

      + +

      Assume you want to run 1 image at a time instead of 10:

      + +
      net.blobs('data').reshape([227 227 3 1]); % reshape blob 'data'
      +net.reshape();
      +
      +
      + +

      Then the whole network is reshaped, and now net.blobs('prob').shape should be [1000 1];

      + +

      Training

      + +

      Assume you have created training and validation lmdbs following our ImageNET Tutorial, to create a solver and train on ILSVRC 2012 classification dataset:

      + +
      solver = caffe.Solver('./models/bvlc_reference_caffenet/solver.prototxt');
      +
      +
      + +

      which creates solver object as

      + +
        Solver with properties:
      +
      +          net: [1x1 caffe.Net]
      +    test_nets: [1x1 caffe.Net]
      +
      +
      + +

      To train:

      + +
      solver.solve();
      +
      +
      + +

      Or train for only 1000 iterations (so that you can do something to its net before training more iterations)

      + +
      solver.step(1000);
      +
      +
      + +

      To get iteration number:

      + +
      iter = solver.iter();
      +
      +
      + +

      To get its network:

      + +
      train_net = solver.net;
      +test_net = solver.test_nets(1);
      +
      +
      + +

      To resume from a snapshot “your_snapshot.solverstate”:

      + +
      solver.restore('your_snapshot.solverstate');
      +
      +
      + +

      Input and output

      + +

      caffe.io class provides basic input functions load_image and read_mean. For example, to read ILSVRC 2012 mean file (assume you have downloaded imagenet example auxiliary files by running ./data/ilsvrc12/get_ilsvrc_aux.sh):

      + +
      mean_data = caffe.io.read_mean('./data/ilsvrc12/imagenet_mean.binaryproto');
      +
      +
      + +

      To read Caffe’s example image and resize to [width, height] and suppose we want width = 256; height = 256;

      + +
      im_data = caffe.io.load_image('./examples/images/cat.jpg');
      +im_data = imresize(im_data, [width, height]); % resize using Matlab's imresize
      +
      +
      + +

      Keep in mind that width is the fastest dimension and channels are BGR, which is different from the usual way that Matlab stores an image. If you don’t want to use caffe.io.load_image and prefer to load an image by yourself, you can do

      + +
      im_data = imread('./examples/images/cat.jpg'); % read image
      +im_data = im_data(:, :, [3, 2, 1]); % convert from RGB to BGR
      +im_data = permute(im_data, [2, 1, 3]); % permute width and height
      +im_data = single(im_data); % convert to single precision
      +
      +
      + +

      Also, you may take a look at caffe/matlab/demo/classification_demo.m to see how to prepare input by taking crops from an image.

      + +

      We show in caffe/matlab/hdf5creation how to read and write HDF5 data with Matlab. We do not provide extra functions for data output as Matlab itself is already quite powerful in output.

      + +

      Clear nets and solvers

      + +

      Call caffe.reset_all() to clear all solvers and stand-alone nets you have created.

      + + +
      +
      + + diff --git a/tutorial/layers.html b/tutorial/layers.html new file mode 100644 index 00000000000..6e4caf2bf50 --- /dev/null +++ b/tutorial/layers.html @@ -0,0 +1,824 @@ + + + + + + + + + Caffe | Layer Catalogue + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      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.

      + +

      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 (), as in a grayscale image, or three color channels () 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 and width . +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 .

      + +

      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 th output group channels will be only connected to the 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)
          • +
          +
        • +
        +
      • +
      + +

      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 , where 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

      + +

      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

      + +
        +
      • Layer type: SoftmaxWithLoss
      • +
      + +

      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.

      + +

      Sum-of-Squares / Euclidean

      + +
        +
      • Layer type: EuclideanLoss
      • +
      + +

      The Euclidean loss layer computes the sum of squares of differences of its two inputs, .

      + +

      Hinge / Margin

      + +
        +
      • 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

        + +
        # L1 Norm
        +layer {
        +  name: "loss"
        +  type: "HingeLoss"
        +  bottom: "pred"
        +  bottom: "label"
        +}
        +
        +# L2 Norm
        +layer {
        +  name: "loss"
        +  type: "HingeLoss"
        +  bottom: "pred"
        +  bottom: "label"
        +  top: "loss"
        +  hinge_loss_param {
        +    norm: L2
        +  }
        +}
        +
        +
        +
      • +
      + +

      The hinge loss layer computes a one-vs-all hinge or squared hinge loss.

      + +

      Sigmoid Cross-Entropy

      + +

      SigmoidCrossEntropyLoss

      + +

      Infogain

      + +

      InfogainLoss

      + +

      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.

      + +

      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:

      + +
        +
      • Input +
          +
        • n * c * h * w
        • +
        +
      • +
      • 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 TransformationParameters.

      + +

      Database

      + +
        +
      • 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
          • +
          +
        • +
        +
      • +
      + +

      In-Memory

      + +
        +
      • Layer type: MemoryData
      • +
      • Parameters +
          +
        • Required +
            +
          • batch_size, channels, height, width: specify the size of input chunks to read from memory
          • +
          +
        • +
        +
      • +
      + +

      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.

      + +

      HDF5 Input

      + +
        +
      • Layer type: HDF5Data
      • +
      • Parameters +
          +
        • Required +
            +
          • source: the name of the file to read from
          • +
          • batch_size
          • +
          +
        • +
        +
      • +
      + +

      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

      + +

      Softmax

      + +

      Mean-Variance Normalization

      + +

      MVN

      + + +
      +
      + + diff --git a/tutorial/loss.html b/tutorial/loss.html new file mode 100644 index 00000000000..674171c6d9c --- /dev/null +++ b/tutorial/loss.html @@ -0,0 +1,116 @@ + + + + + + + + + Caffe | Loss + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Loss

      + +

      In Caffe, as in most of machine learning, learning is driven by a loss function (also known as an error, cost, or objective function). +A loss function specifies the goal of learning by mapping parameter settings (i.e., the current network weights) to a scalar value specifying the “badness” of these parameter settings. +Hence, the goal of learning is to find a setting of the weights that minimizes the loss function.

      + +

      The loss in Caffe is computed by the Forward pass of the network. +Each layer takes a set of input (bottom) blobs and produces a set of output (top) blobs. +Some of these layers’ outputs may be used in the loss function. +A typical choice of loss function for one-versus-all classification tasks is the SoftmaxWithLoss function, used in a network definition as follows, for example:

      + +
      layer {
      +  name: "loss"
      +  type: "SoftmaxWithLoss"
      +  bottom: "pred"
      +  bottom: "label"
      +  top: "loss"
      +}
      +
      +
      + +

      In a SoftmaxWithLoss function, the top blob is a scalar (empty shape) which averages the loss (computed from predicted labels pred and actuals labels label) over the entire mini-batch.

      + +

      Loss weights

      + +

      For nets with multiple layers producing a loss (e.g., a network that both classifies the input using a SoftmaxWithLoss layer and reconstructs it using a EuclideanLoss layer), loss weights can be used to specify their relative importance.

      + +

      By convention, Caffe layer types with the suffix Loss contribute to the loss function, but other layers are assumed to be purely used for intermediate computations. +However, any layer can be used as a loss by adding a field loss_weight: <float> to a layer definition for each top blob produced by the layer. +Layers with the suffix Loss have an implicit loss_weight: 1 for the first top blob (and loss_weight: 0 for any additional tops); other layers have an implicit loss_weight: 0 for all tops. +So, the above SoftmaxWithLoss layer could be equivalently written as:

      + +
      layer {
      +  name: "loss"
      +  type: "SoftmaxWithLoss"
      +  bottom: "pred"
      +  bottom: "label"
      +  top: "loss"
      +  loss_weight: 1
      +}
      +
      +
      + +

      However, any layer able to backpropagate may be given a non-zero loss_weight, allowing one to, for example, regularize the activations produced by some intermediate layer(s) of the network if desired. +For non-singleton outputs with an associated non-zero loss, the loss is computed simply by summing over all entries of the blob.

      + +

      The final loss in Caffe, then, is computed by summing the total weighted loss over the network, as in the following pseudo-code:

      + +
      loss := 0
      +for layer in layers:
      +  for top, loss_weight in layer.tops, layer.loss_weights:
      +    loss += loss_weight * sum(top)
      +
      +
      + + +
      +
      + + diff --git a/tutorial/net_layer_blob.html b/tutorial/net_layer_blob.html new file mode 100644 index 00000000000..0171d45d00e --- /dev/null +++ b/tutorial/net_layer_blob.html @@ -0,0 +1,239 @@ + + + + + + + + + Caffe | Blobs, Layers, and Nets + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Blobs, Layers, and Nets: anatomy of a Caffe model

      + +

      Deep networks are compositional models that are naturally represented as a collection of inter-connected layers that work on chunks of data. Caffe defines a net layer-by-layer in its own model schema. The network defines the entire model bottom-to-top from input data to loss. As data and derivatives flow through the network in the forward and backward passes Caffe stores, communicates, and manipulates the information as blobs: the blob is the standard array and unified memory interface for the framework. The layer comes next as the foundation of both model and computation. The net follows as the collection and connection of layers. The details of blob describe how information is stored and communicated in and across layers and nets.

      + +

      Solving is configured separately to decouple modeling and optimization.

      + +

      We will go over the details of these components in more detail.

      + +

      Blob storage and communication

      + +

      A Blob is a wrapper over the actual data being processed and passed along by Caffe, and also under the hood provides synchronization capability between the CPU and the GPU. Mathematically, a blob is an N-dimensional array stored in a C-contiguous fashion.

      + +

      Caffe stores and communicates data using blobs. Blobs provide a unified memory interface holding data; e.g., batches of images, model parameters, and derivatives for optimization.

      + +

      Blobs conceal the computational and mental overhead of mixed CPU/GPU operation by synchronizing from the CPU host to the GPU device as needed. Memory on the host and device is allocated on demand (lazily) for efficient memory usage.

      + +

      The conventional blob dimensions for batches of image data are number N x channel K x height H x width W. Blob memory is row-major in layout, so the last / rightmost dimension changes fastest. For example, in a 4D blob, the value at index (n, k, h, w) is physically located at index ((n * K + k) * H + h) * W + w.

      + +
        +
      • Number / N is the batch size of the data. Batch processing achieves better throughput for communication and device processing. For an ImageNet training batch of 256 images N = 256.
      • +
      • Channel / K is the feature dimension e.g. for RGB images K = 3.
      • +
      + +

      Note that although many blobs in Caffe examples are 4D with axes for image applications, it is totally valid to use blobs for non-image applications. For example, if you simply need fully-connected networks like the conventional multi-layer perceptron, use 2D blobs (shape (N, D)) and call the InnerProductLayer (which we will cover soon).

      + +

      Parameter blob dimensions vary according to the type and configuration of the layer. For a convolution layer with 96 filters of 11 x 11 spatial dimension and 3 inputs the blob is 96 x 3 x 11 x 11. For an inner product / fully-connected layer with 1000 output channels and 1024 input channels the parameter blob is 1000 x 1024.

      + +

      For custom data it may be necessary to hack your own input preparation tool or data layer. However once your data is in your job is done. The modularity of layers accomplishes the rest of the work for you.

      + +

      Implementation Details

      + +

      As we are often interested in the values as well as the gradients of the blob, a Blob stores two chunks of memories, data and diff. The former is the normal data that we pass along, and the latter is the gradient computed by the network.

      + +

      Further, as the actual values could be stored either on the CPU and on the GPU, there are two different ways to access them: the const way, which does not change the values, and the mutable way, which changes the values:

      + +
      const Dtype* cpu_data() const;
      +Dtype* mutable_cpu_data();
      +
      +
      + +

      (similarly for gpu and diff).

      + +

      The reason for such design is that, a Blob uses a SyncedMem class to synchronize values between the CPU and GPU in order to hide the synchronization details and to minimize data transfer. A rule of thumb is, always use the const call if you do not want to change the values, and never store the pointers in your own object. Every time you work on a blob, call the functions to get the pointers, as the SyncedMem will need this to figure out when to copy data.

      + +

      In practice when GPUs are present, one loads data from the disk to a blob in CPU code, calls a device kernel to do GPU computation, and ferries the blob off to the next layer, ignoring low-level details while maintaining a high level of performance. As long as all layers have GPU implementations, all the intermediate data and gradients will remain in the GPU.

      + +

      If you want to check out when a Blob will copy data, here is an illustrative example:

      + +
      // Assuming that data are on the CPU initially, and we have a blob.
      +const Dtype* foo;
      +Dtype* bar;
      +foo = blob.gpu_data(); // data copied cpu->gpu.
      +foo = blob.cpu_data(); // no data copied since both have up-to-date contents.
      +bar = blob.mutable_gpu_data(); // no data copied.
      +// ... some operations ...
      +bar = blob.mutable_gpu_data(); // no data copied when we are still on GPU.
      +foo = blob.cpu_data(); // data copied gpu->cpu, since the gpu side has modified the data
      +foo = blob.gpu_data(); // no data copied since both have up-to-date contents
      +bar = blob.mutable_cpu_data(); // still no data copied.
      +bar = blob.mutable_gpu_data(); // data copied cpu->gpu.
      +bar = blob.mutable_cpu_data(); // data copied gpu->cpu.
      +
      +
      + +

      Layer computation and connections

      + +

      The layer is the essence of a model and the fundamental unit of computation. Layers convolve filters, pool, take inner products, apply nonlinearities like rectified-linear and sigmoid and other elementwise transformations, normalize, load data, and compute losses like softmax and hinge. See the layer catalogue for all operations. Most of the types needed for state-of-the-art deep learning tasks are there.

      + +

      A layer with bottom and top blob.

      + +

      A layer takes input through bottom connections and makes output through top connections.

      + +

      Each layer type defines three critical computations: setup, forward, and backward.

      + +
        +
      • Setup: initialize the layer and its connections once at model initialization.
      • +
      • Forward: given input from bottom compute the output and send to the top.
      • +
      • Backward: given the gradient w.r.t. the top output compute the gradient w.r.t. to the input and send to the bottom. A layer with parameters computes the gradient w.r.t. to its parameters and stores it internally.
      • +
      + +

      More specifically, there will be two Forward and Backward functions implemented, one for CPU and one for GPU. If you do not implement a GPU version, the layer will fall back to the CPU functions as a backup option. This may come handy if you would like to do quick experiments, although it may come with additional data transfer cost (its inputs will be copied from GPU to CPU, and its outputs will be copied back from CPU to GPU).

      + +

      Layers have two key responsibilities for the operation of the network as a whole: a forward pass that takes the inputs and produces the outputs, and a backward pass that takes the gradient with respect to the output, and computes the gradients with respect to the parameters and to the inputs, which are in turn back-propagated to earlier layers. These passes are simply the composition of each layer’s forward and backward.

      + +

      Developing custom layers requires minimal effort by the compositionality of the network and modularity of the code. Define the setup, forward, and backward for the layer and it is ready for inclusion in a net.

      + +

      Net definition and operation

      + +

      The net jointly defines a function and its gradient by composition and auto-differentiation. The composition of every layer’s output computes the function to do a given task, and the composition of every layer’s backward computes the gradient from the loss to learn the task. Caffe models are end-to-end machine learning engines.

      + +

      The net is a set of layers connected in a computation graph – a directed acyclic graph (DAG) to be exact. Caffe does all the bookkeeping for any DAG of layers to ensure correctness of the forward and backward passes. A typical net begins with a data layer that loads from disk and ends with a loss layer that computes the objective for a task such as classification or reconstruction.

      + +

      The net is defined as a set of layers and their connections in a plaintext modeling language. +A simple logistic regression classifier

      + +

      Softmax Regression

      + +

      is defined by

      + +
      name: "LogReg"
      +layer {
      +  name: "mnist"
      +  type: "Data"
      +  top: "data"
      +  top: "label"
      +  data_param {
      +    source: "input_leveldb"
      +    batch_size: 64
      +  }
      +}
      +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"
      +}
      +
      +
      + +

      Model initialization is handled by Net::Init(). The initialization mainly does two things: scaffolding the overall DAG by creating the blobs and layers (for C++ geeks: the network will retain ownership of the blobs and layers during its lifetime), and calls the layers’ SetUp() function. It also does a set of other bookkeeping things, such as validating the correctness of the overall network architecture. Also, during initialization the Net explains its initialization by logging to INFO as it goes:

      + +
      I0902 22:52:17.931977 2079114000 net.cpp:39] Initializing net from parameters:
      +name: "LogReg"
      +[...model prototxt printout...]
      +# construct the network layer-by-layer
      +I0902 22:52:17.932152 2079114000 net.cpp:67] Creating Layer mnist
      +I0902 22:52:17.932165 2079114000 net.cpp:356] mnist -> data
      +I0902 22:52:17.932188 2079114000 net.cpp:356] mnist -> label
      +I0902 22:52:17.932200 2079114000 net.cpp:96] Setting up mnist
      +I0902 22:52:17.935807 2079114000 data_layer.cpp:135] Opening leveldb input_leveldb
      +I0902 22:52:17.937155 2079114000 data_layer.cpp:195] output data size: 64,1,28,28
      +I0902 22:52:17.938570 2079114000 net.cpp:103] Top shape: 64 1 28 28 (50176)
      +I0902 22:52:17.938593 2079114000 net.cpp:103] Top shape: 64 (64)
      +I0902 22:52:17.938611 2079114000 net.cpp:67] Creating Layer ip
      +I0902 22:52:17.938617 2079114000 net.cpp:394] ip <- data
      +I0902 22:52:17.939177 2079114000 net.cpp:356] ip -> ip
      +I0902 22:52:17.939196 2079114000 net.cpp:96] Setting up ip
      +I0902 22:52:17.940289 2079114000 net.cpp:103] Top shape: 64 2 (128)
      +I0902 22:52:17.941270 2079114000 net.cpp:67] Creating Layer loss
      +I0902 22:52:17.941305 2079114000 net.cpp:394] loss <- ip
      +I0902 22:52:17.941314 2079114000 net.cpp:394] loss <- label
      +I0902 22:52:17.941323 2079114000 net.cpp:356] loss -> loss
      +# set up the loss and configure the backward pass
      +I0902 22:52:17.941328 2079114000 net.cpp:96] Setting up loss
      +I0902 22:52:17.941328 2079114000 net.cpp:103] Top shape: (1)
      +I0902 22:52:17.941329 2079114000 net.cpp:109]     with loss weight 1
      +I0902 22:52:17.941779 2079114000 net.cpp:170] loss needs backward computation.
      +I0902 22:52:17.941787 2079114000 net.cpp:170] ip needs backward computation.
      +I0902 22:52:17.941794 2079114000 net.cpp:172] mnist does not need backward computation.
      +# determine outputs
      +I0902 22:52:17.941800 2079114000 net.cpp:208] This network produces output loss
      +# finish initialization and report memory usage
      +I0902 22:52:17.941810 2079114000 net.cpp:467] Collecting Learning Rate and Weight Decay.
      +I0902 22:52:17.941818 2079114000 net.cpp:219] Network initialization done.
      +I0902 22:52:17.941824 2079114000 net.cpp:220] Memory required for data: 201476
      +
      +
      + +

      Note that the construction of the network is device agnostic - recall our earlier explanation that blobs and layers hide implementation details from the model definition. After construction, the network is run on either CPU or GPU by setting a single switch defined in Caffe::mode() and set by Caffe::set_mode(). Layers come with corresponding CPU and GPU routines that produce identical results (up to numerical errors, and with tests to guard it). The CPU / GPU switch is seamless and independent of the model definition. For research and deployment alike it is best to divide model and implementation.

      + +

      Model format

      + +

      The models are defined in plaintext protocol buffer schema (prototxt) while the learned models are serialized as binary protocol buffer (binaryproto) .caffemodel files.

      + +

      The model format is defined by the protobuf schema in caffe.proto. The source file is mostly self-explanatory so one is encouraged to check it out.

      + +

      Caffe speaks Google Protocol Buffer for the following strengths: minimal-size binary strings when serialized, efficient serialization, a human-readable text format compatible with the binary version, and efficient interface implementations in multiple languages, most notably C++ and Python. This all contributes to the flexibility and extensibility of modeling in Caffe.

      + + +
      +
      + + diff --git a/tutorial/solver.html b/tutorial/solver.html new file mode 100644 index 00000000000..3aef87463d8 --- /dev/null +++ b/tutorial/solver.html @@ -0,0 +1,399 @@ + + + + + + + + + Caffe | Solver / Model Optimization + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Solver

      + +

      The solver orchestrates model optimization by coordinating the network’s forward inference and backward gradients to form parameter updates that attempt to improve the loss. +The responsibilities of learning are divided between the Solver for overseeing the optimization and generating parameter updates and the Net for yielding loss and gradients.

      + +

      The Caffe solvers are:

      + +
        +
      • 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

      + +
        +
      1. scaffolds the optimization bookkeeping and creates the training network for learning and test network(s) for evaluation.
      2. +
      3. iteratively optimizes by calling forward / backward and updating parameters
      4. +
      5. (periodically) evaluates the test networks
      6. +
      7. snapshots the model and solver state throughout the optimization
      8. +
      + +

      where each iteration

      + +
        +
      1. calls network forward to compute the output and loss
      2. +
      3. calls network backward to compute the gradients
      4. +
      5. incorporates the gradients into parameter updates according to the solver method
      6. +
      7. updates the solver state according to learning rate, history, and method
      8. +
      + +

      to take the weights all the way from initialization to learned model.

      + +

      Like Caffe models, Caffe solvers run in CPU / GPU modes.

      + +

      Methods

      + +

      The solver methods address the general optimization problem of loss minimization. +For dataset , the optimization objective is the average loss over all data instances throughout the dataset

      + + + +

      where is the loss on data instance and is a regularization term with weight . + can be very large, so in practice, in each solver iteration we use a stochastic approximation of this objective, drawing a mini-batch of instances:

      + + + +

      The model computes in the forward pass and the gradient in the backward pass.

      + +

      The parameter update is formed by the solver from the error gradient , the regularization gradient , and other particulars to each method.

      + +

      SGD

      + +

      Stochastic gradient descent (type: "SGD") updates the weights by a linear combination of the negative gradient and the previous weight update . +The learning rate is the weight of the negative gradient. +The momentum is the weight of the previous update.

      + +

      Formally, we have the following formulas to compute the update value and the updated weights at iteration , given the previous weight update and current weights :

      + + + + + +

      The learning “hyperparameters” ( and ) might require a bit of tuning for best results. +If you’re not sure where to start, take a look at the “Rules of thumb” below, and for further information you might refer to Leon Bottou’s Stochastic Gradient Descent Tricks [1].

      + +

      [1] L. Bottou. + Stochastic Gradient Descent Tricks. + Neural Networks: Tricks of the Trade: Springer, 2012.

      + +

      Rules of thumb for setting the learning rate and momentum

      + +

      A good strategy for deep learning with SGD is to initialize the learning rate to a value around , and dropping it by a constant factor (e.g., 10) throughout training when the loss begins to reach an apparent “plateau”, repeating this several times. +Generally, you probably want to use a momentum or similar value. +By smoothing the weight updates across iterations, momentum tends to make deep learning with SGD both stabler and faster.

      + +

      This was the strategy used by Krizhevsky et al. [1] in their famously winning CNN entry to the ILSVRC-2012 competition, and Caffe makes this strategy easy to implement in a SolverParameter, as in our reproduction of [1] at ./examples/imagenet/alexnet_solver.prototxt.

      + +

      To use a learning rate policy like this, you can put the following lines somewhere in your solver prototxt file:

      + +
      base_lr: 0.01     # begin training at a learning rate of 0.01 = 1e-2
      +
      +lr_policy: "step" # learning rate policy: drop the learning rate in "steps"
      +                  # by a factor of gamma every stepsize iterations
      +
      +gamma: 0.1        # drop the learning rate by a factor of 10
      +                  # (i.e., multiply it by a factor of gamma = 0.1)
      +
      +stepsize: 100000  # drop the learning rate every 100K iterations
      +
      +max_iter: 350000  # train for 350K iterations total
      +
      +momentum: 0.9
      +
      +
      + +

      Under the above settings, we’ll always use momentum . +We’ll begin training at a base_lr of for the first 100,000 iterations, then multiply the learning rate by gamma () and train at for iterations 100K-200K, then at for iterations 200K-300K, and finally train until iteration 350K (since we have max_iter: 350000) at .

      + +

      Note that the momentum setting effectively multiplies the size of your updates by a factor of after many iterations of training, so if you increase , it may be a good idea to decrease accordingly (and vice versa).

      + +

      For example, with , we have an effective update size multiplier of . +If we increased the momentum to , we’ve increased our update size multiplier to 100, so we should drop (base_lr) by a factor of 10.

      + +

      Note also that the above settings are merely guidelines, and they’re definitely not guaranteed to be optimal (or even work at all!) in every situation. +If learning diverges (e.g., you start to see very large or NaN or inf loss values or outputs), try dropping the base_lr (e.g., base_lr: 0.001) and re-training, repeating this until you find a base_lr value that works.

      + +

      [1] A. Krizhevsky, I. Sutskever, and G. Hinton. + ImageNet Classification with Deep Convolutional Neural Networks. + Advances in Neural Information Processing Systems, 2012.

      + +

      AdaDelta

      + +

      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

      + + + +

      and

      + + + +

      [1] M. Zeiler + ADADELTA: AN ADAPTIVE LEARNING RATE METHOD. + arXiv preprint, 2012.

      + +

      AdaGrad

      + +

      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 for , +the update formulas proposed by [1] are as follows, specified for each component of the weights :

      + + + +

      Note that in practice, for weights , AdaGrad implementations (including the one in Caffe) use only extra storage for the historical gradient information (rather than the storage that would be necessary to store each historical gradient individually).

      + +

      [1] J. Duchi, E. Hazan, and Y. Singer. + Adaptive Subgradient Methods for Online Learning and Stochastic Optimization. + The Journal of Machine Learning Research, 2011.

      + +

      Adam

      + +

      The Adam (type: "Adam"), proposed in Kingma et al. [1], is a gradient-based optimization method (like SGD). This includes an “adaptive moment estimation” () and can be regarded as a generalization of AdaGrad. The update formulas are

      + + + +

      and

      + + + +

      Kingma et al. [1] proposed to use as default values. Caffe uses the values of momemtum, momentum2, delta for , respectively.

      + +

      [1] D. Kingma, J. Ba. + Adam: A Method for Stochastic Optimization. + International Conference for Learning Representations, 2015.

      + +

      NAG

      + +

      Nesterov’s accelerated gradient (type: "Nesterov") was proposed by Nesterov [1] as an “optimal” method of convex optimization, achieving a convergence rate of rather than the . +Though the required assumptions to achieve the 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:

      + + + + + +

      What distinguishes the method from SGD is the weight setting on which we compute the error gradient – in NAG we take the gradient on weights with added momentum ; in SGD we simply take the gradient on the current weights themselves.

      + +

      [1] Y. Nesterov. + A Method of Solving a Convex Programming Problem with Convergence Rate . + Soviet Mathematics Doklady, 1983.

      + +

      [2] I. Sutskever, J. Martens, G. Dahl, and G. Hinton. + On the Importance of Initialization and Momentum in Deep Learning. + Proceedings of the 30th International Conference on Machine Learning, 2013.

      + +

      RMSprop

      + +

      The RMSprop (type: "RMSProp"), suggested by Tieleman in a Coursera course lecture, is a gradient-based optimization method (like SGD). The update formulas are

      + + + +

      The default value of (rms_decay) is set to .

      + +

      [1] T. Tieleman, and G. Hinton. + RMSProp: Divide the gradient by a running average of its recent magnitude. + COURSERA: Neural Networks for Machine Learning.Technical report, 2012.

      + +

      Scaffolding

      + +

      The solver scaffolding prepares the optimization method and initializes the model to be learned in Solver::Presolve().

      + +
      > caffe train -solver examples/mnist/lenet_solver.prototxt
      +I0902 13:35:56.474978 16020 caffe.cpp:90] Starting Optimization
      +I0902 13:35:56.475190 16020 solver.cpp:32] Initializing solver from parameters:
      +test_iter: 100
      +test_interval: 500
      +base_lr: 0.01
      +display: 100
      +max_iter: 10000
      +lr_policy: "inv"
      +gamma: 0.0001
      +power: 0.75
      +momentum: 0.9
      +weight_decay: 0.0005
      +snapshot: 5000
      +snapshot_prefix: "examples/mnist/lenet"
      +solver_mode: GPU
      +net: "examples/mnist/lenet_train_test.prototxt"
      +
      +
      + +

      Net initialization

      + +
      I0902 13:35:56.655681 16020 solver.cpp:72] Creating training net from net file: examples/mnist/lenet_train_test.prototxt
      +[...]
      +I0902 13:35:56.656740 16020 net.cpp:56] Memory required for data: 0
      +I0902 13:35:56.656791 16020 net.cpp:67] Creating Layer mnist
      +I0902 13:35:56.656811 16020 net.cpp:356] mnist -> data
      +I0902 13:35:56.656846 16020 net.cpp:356] mnist -> label
      +I0902 13:35:56.656874 16020 net.cpp:96] Setting up mnist
      +I0902 13:35:56.694052 16020 data_layer.cpp:135] Opening lmdb examples/mnist/mnist_train_lmdb
      +I0902 13:35:56.701062 16020 data_layer.cpp:195] output data size: 64,1,28,28
      +I0902 13:35:56.701146 16020 data_layer.cpp:236] Initializing prefetch
      +I0902 13:35:56.701196 16020 data_layer.cpp:238] Prefetch initialized.
      +I0902 13:35:56.701212 16020 net.cpp:103] Top shape: 64 1 28 28 (50176)
      +I0902 13:35:56.701230 16020 net.cpp:103] Top shape: 64 1 1 1 (64)
      +[...]
      +I0902 13:35:56.703737 16020 net.cpp:67] Creating Layer ip1
      +I0902 13:35:56.703753 16020 net.cpp:394] ip1 <- pool2
      +I0902 13:35:56.703778 16020 net.cpp:356] ip1 -> ip1
      +I0902 13:35:56.703797 16020 net.cpp:96] Setting up ip1
      +I0902 13:35:56.728127 16020 net.cpp:103] Top shape: 64 500 1 1 (32000)
      +I0902 13:35:56.728142 16020 net.cpp:113] Memory required for data: 5039360
      +I0902 13:35:56.728175 16020 net.cpp:67] Creating Layer relu1
      +I0902 13:35:56.728194 16020 net.cpp:394] relu1 <- ip1
      +I0902 13:35:56.728219 16020 net.cpp:345] relu1 -> ip1 (in-place)
      +I0902 13:35:56.728240 16020 net.cpp:96] Setting up relu1
      +I0902 13:35:56.728256 16020 net.cpp:103] Top shape: 64 500 1 1 (32000)
      +I0902 13:35:56.728270 16020 net.cpp:113] Memory required for data: 5167360
      +I0902 13:35:56.728287 16020 net.cpp:67] Creating Layer ip2
      +I0902 13:35:56.728304 16020 net.cpp:394] ip2 <- ip1
      +I0902 13:35:56.728333 16020 net.cpp:356] ip2 -> ip2
      +I0902 13:35:56.728356 16020 net.cpp:96] Setting up ip2
      +I0902 13:35:56.728690 16020 net.cpp:103] Top shape: 64 10 1 1 (640)
      +I0902 13:35:56.728705 16020 net.cpp:113] Memory required for data: 5169920
      +I0902 13:35:56.728734 16020 net.cpp:67] Creating Layer loss
      +I0902 13:35:56.728747 16020 net.cpp:394] loss <- ip2
      +I0902 13:35:56.728767 16020 net.cpp:394] loss <- label
      +I0902 13:35:56.728786 16020 net.cpp:356] loss -> loss
      +I0902 13:35:56.728811 16020 net.cpp:96] Setting up loss
      +I0902 13:35:56.728837 16020 net.cpp:103] Top shape: 1 1 1 1 (1)
      +I0902 13:35:56.728849 16020 net.cpp:109]     with loss weight 1
      +I0902 13:35:56.728878 16020 net.cpp:113] Memory required for data: 5169924
      +
      +
      + +

      Loss

      + +
      I0902 13:35:56.728893 16020 net.cpp:170] loss needs backward computation.
      +I0902 13:35:56.728909 16020 net.cpp:170] ip2 needs backward computation.
      +I0902 13:35:56.728924 16020 net.cpp:170] relu1 needs backward computation.
      +I0902 13:35:56.728938 16020 net.cpp:170] ip1 needs backward computation.
      +I0902 13:35:56.728953 16020 net.cpp:170] pool2 needs backward computation.
      +I0902 13:35:56.728970 16020 net.cpp:170] conv2 needs backward computation.
      +I0902 13:35:56.728984 16020 net.cpp:170] pool1 needs backward computation.
      +I0902 13:35:56.728998 16020 net.cpp:170] conv1 needs backward computation.
      +I0902 13:35:56.729014 16020 net.cpp:172] mnist does not need backward computation.
      +I0902 13:35:56.729027 16020 net.cpp:208] This network produces output loss
      +I0902 13:35:56.729053 16020 net.cpp:467] Collecting Learning Rate and Weight Decay.
      +I0902 13:35:56.729071 16020 net.cpp:219] Network initialization done.
      +I0902 13:35:56.729085 16020 net.cpp:220] Memory required for data: 5169924
      +I0902 13:35:56.729277 16020 solver.cpp:156] Creating test net (#0) specified by net file: examples/mnist/lenet_train_test.prototxt
      +
      +
      + +

      Completion

      + +
      I0902 13:35:56.806970 16020 solver.cpp:46] Solver scaffolding done.
      +I0902 13:35:56.806984 16020 solver.cpp:165] Solving LeNet
      +
      +
      + +

      Updating Parameters

      + +

      The actual weight update is made by the solver then applied to the net parameters in Solver::ComputeUpdateValue(). +The ComputeUpdateValue method incorporates any weight decay into the weight gradients (which currently just contain the error gradients) to get the final gradient with respect to each network weight. +Then these gradients are scaled by the learning rate and the update to subtract is stored in each parameter Blob’s diff field. +Finally, the Blob::Update method is called on each parameter blob, which performs the final update (subtracting the Blob’s diff from its data).

      + +

      Snapshotting and Resuming

      + +

      The solver snapshots the weights and its own state during training in Solver::Snapshot() and Solver::SnapshotSolverState(). +The weight snapshots export the learned model while the solver snapshots allow training to be resumed from a given point. +Training is resumed by Solver::Restore() and Solver::RestoreSolverState().

      + +

      Weights are saved without extension while solver states are saved with .solverstate extension. +Both files will have an _iter_N suffix for the snapshot iteration number.

      + +

      Snapshotting is configured by:

      + +
      # The snapshot interval in iterations.
      +snapshot: 5000
      +# File path prefix for snapshotting model weights and solver state.
      +# Note: this is relative to the invocation of the `caffe` utility, not the
      +# solver definition file.
      +snapshot_prefix: "/path/to/model"
      +# Snapshot the diff along with the weights. This can help debugging training
      +# but takes more storage.
      +snapshot_diff: false
      +# A final snapshot is saved at the end of training unless
      +# this flag is set to false. The default is true.
      +snapshot_after_train: true
      +
      +
      + +

      in the solver definition prototxt.

      + + +
      +
      + + From 21b277eaeaadba1a20632271f0f69e6b40a8092f Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Wed, 18 Jan 2017 12:10:03 -0800 Subject: [PATCH 2/4] 83143638 Merge pull request #5111 from CDLuminate/add-debian-install-guide --- doxygen/absval__layer_8hpp_source.html | 2 +- doxygen/accuracy__layer_8hpp_source.html | 2 +- doxygen/annotated.html | 2 +- doxygen/argmax__layer_8hpp_source.html | 2 +- doxygen/base__conv__layer_8hpp_source.html | 2 +- doxygen/base__data__layer_8hpp_source.html | 2 +- doxygen/batch__norm__layer_8hpp_source.html | 2 +- doxygen/batch__reindex__layer_8hpp_source.html | 2 +- doxygen/benchmark_8hpp_source.html | 2 +- doxygen/bias__layer_8hpp_source.html | 2 +- doxygen/blob_8hpp_source.html | 2 +- doxygen/blocking__queue_8hpp_source.html | 2 +- doxygen/bnll__layer_8hpp_source.html | 2 +- doxygen/caffe_8hpp_source.html | 2 +- doxygen/classcaffe_1_1AbsValLayer-members.html | 2 +- doxygen/classcaffe_1_1AbsValLayer.html | 2 +- doxygen/classcaffe_1_1AccuracyLayer-members.html | 2 +- doxygen/classcaffe_1_1AccuracyLayer.html | 2 +- doxygen/classcaffe_1_1AdaDeltaSolver-members.html | 2 +- doxygen/classcaffe_1_1AdaDeltaSolver.html | 2 +- doxygen/classcaffe_1_1AdaGradSolver-members.html | 2 +- doxygen/classcaffe_1_1AdaGradSolver.html | 2 +- doxygen/classcaffe_1_1AdamSolver-members.html | 2 +- doxygen/classcaffe_1_1AdamSolver.html | 2 +- doxygen/classcaffe_1_1ArgMaxLayer-members.html | 2 +- doxygen/classcaffe_1_1ArgMaxLayer.html | 2 +- doxygen/classcaffe_1_1BNLLLayer-members.html | 2 +- doxygen/classcaffe_1_1BNLLLayer.html | 2 +- ...classcaffe_1_1BaseConvolutionLayer-members.html | 2 +- doxygen/classcaffe_1_1BaseConvolutionLayer.html | 2 +- doxygen/classcaffe_1_1BaseDataLayer-members.html | 2 +- doxygen/classcaffe_1_1BaseDataLayer.html | 2 +- ...scaffe_1_1BasePrefetchingDataLayer-members.html | 2 +- .../classcaffe_1_1BasePrefetchingDataLayer.html | 2 +- doxygen/classcaffe_1_1Batch-members.html | 2 +- doxygen/classcaffe_1_1Batch.html | 2 +- doxygen/classcaffe_1_1BatchNormLayer-members.html | 2 +- doxygen/classcaffe_1_1BatchNormLayer.html | 2 +- .../classcaffe_1_1BatchReindexLayer-members.html | 2 +- doxygen/classcaffe_1_1BatchReindexLayer.html | 2 +- doxygen/classcaffe_1_1BiasLayer-members.html | 2 +- doxygen/classcaffe_1_1BiasLayer.html | 2 +- doxygen/classcaffe_1_1BilinearFiller-members.html | 2 +- doxygen/classcaffe_1_1BilinearFiller.html | 2 +- doxygen/classcaffe_1_1Blob-members.html | 2 +- doxygen/classcaffe_1_1Blob.html | 2 +- doxygen/classcaffe_1_1BlockingQueue-members.html | 2 +- doxygen/classcaffe_1_1BlockingQueue.html | 2 +- ...lasscaffe_1_1BlockingQueue_1_1sync-members.html | 2 +- doxygen/classcaffe_1_1BlockingQueue_1_1sync.html | 2 +- doxygen/classcaffe_1_1CPUTimer-members.html | 2 +- doxygen/classcaffe_1_1CPUTimer.html | 2 +- doxygen/classcaffe_1_1Caffe-members.html | 2 +- doxygen/classcaffe_1_1Caffe.html | 2 +- doxygen/classcaffe_1_1Caffe_1_1RNG-members.html | 2 +- doxygen/classcaffe_1_1Caffe_1_1RNG.html | 2 +- ...caffe_1_1Caffe_1_1RNG_1_1Generator-members.html | 2 +- .../classcaffe_1_1Caffe_1_1RNG_1_1Generator.html | 2 +- doxygen/classcaffe_1_1ConcatLayer-members.html | 2 +- doxygen/classcaffe_1_1ConcatLayer.html | 2 +- doxygen/classcaffe_1_1ConstantFiller-members.html | 2 +- doxygen/classcaffe_1_1ConstantFiller.html | 2 +- ...classcaffe_1_1ContrastiveLossLayer-members.html | 2 +- doxygen/classcaffe_1_1ContrastiveLossLayer.html | 2 +- .../classcaffe_1_1ConvolutionLayer-members.html | 2 +- doxygen/classcaffe_1_1ConvolutionLayer.html | 2 +- doxygen/classcaffe_1_1CropLayer-members.html | 2 +- doxygen/classcaffe_1_1CropLayer.html | 2 +- doxygen/classcaffe_1_1DataLayer-members.html | 2 +- doxygen/classcaffe_1_1DataLayer.html | 2 +- doxygen/classcaffe_1_1DataReader-members.html | 2 +- doxygen/classcaffe_1_1DataReader.html | 2 +- .../classcaffe_1_1DataReader_1_1Body-members.html | 2 +- doxygen/classcaffe_1_1DataReader_1_1Body.html | 2 +- ...sscaffe_1_1DataReader_1_1QueuePair-members.html | 2 +- doxygen/classcaffe_1_1DataReader_1_1QueuePair.html | 2 +- doxygen/classcaffe_1_1DataTransformer-members.html | 2 +- doxygen/classcaffe_1_1DataTransformer.html | 2 +- .../classcaffe_1_1DeconvolutionLayer-members.html | 2 +- doxygen/classcaffe_1_1DeconvolutionLayer.html | 2 +- doxygen/classcaffe_1_1DevicePair-members.html | 2 +- doxygen/classcaffe_1_1DevicePair.html | 2 +- doxygen/classcaffe_1_1DropoutLayer-members.html | 2 +- doxygen/classcaffe_1_1DropoutLayer.html | 2 +- doxygen/classcaffe_1_1DummyDataLayer-members.html | 2 +- doxygen/classcaffe_1_1DummyDataLayer.html | 2 +- doxygen/classcaffe_1_1ELULayer-members.html | 2 +- doxygen/classcaffe_1_1ELULayer.html | 2 +- doxygen/classcaffe_1_1EltwiseLayer-members.html | 2 +- doxygen/classcaffe_1_1EltwiseLayer.html | 2 +- doxygen/classcaffe_1_1EmbedLayer-members.html | 2 +- doxygen/classcaffe_1_1EmbedLayer.html | 2 +- .../classcaffe_1_1EuclideanLossLayer-members.html | 2 +- doxygen/classcaffe_1_1EuclideanLossLayer.html | 2 +- doxygen/classcaffe_1_1ExpLayer-members.html | 2 +- doxygen/classcaffe_1_1ExpLayer.html | 2 +- doxygen/classcaffe_1_1Filler-members.html | 2 +- doxygen/classcaffe_1_1Filler.html | 2 +- doxygen/classcaffe_1_1FilterLayer-members.html | 2 +- doxygen/classcaffe_1_1FilterLayer.html | 2 +- doxygen/classcaffe_1_1FlattenLayer-members.html | 2 +- doxygen/classcaffe_1_1FlattenLayer.html | 2 +- doxygen/classcaffe_1_1GPUParams-members.html | 2 +- doxygen/classcaffe_1_1GPUParams.html | 2 +- doxygen/classcaffe_1_1GaussianFiller-members.html | 2 +- doxygen/classcaffe_1_1GaussianFiller.html | 2 +- doxygen/classcaffe_1_1HDF5DataLayer-members.html | 2 +- doxygen/classcaffe_1_1HDF5DataLayer.html | 2 +- doxygen/classcaffe_1_1HDF5OutputLayer-members.html | 2 +- doxygen/classcaffe_1_1HDF5OutputLayer.html | 2 +- doxygen/classcaffe_1_1HingeLossLayer-members.html | 2 +- doxygen/classcaffe_1_1HingeLossLayer.html | 2 +- doxygen/classcaffe_1_1Im2colLayer-members.html | 2 +- doxygen/classcaffe_1_1Im2colLayer.html | 2 +- doxygen/classcaffe_1_1ImageDataLayer-members.html | 2 +- doxygen/classcaffe_1_1ImageDataLayer.html | 2 +- .../classcaffe_1_1InfogainLossLayer-members.html | 2 +- doxygen/classcaffe_1_1InfogainLossLayer.html | 2 +- .../classcaffe_1_1InnerProductLayer-members.html | 2 +- doxygen/classcaffe_1_1InnerProductLayer.html | 2 +- doxygen/classcaffe_1_1InputLayer-members.html | 2 +- doxygen/classcaffe_1_1InputLayer.html | 2 +- doxygen/classcaffe_1_1InternalThread-members.html | 2 +- doxygen/classcaffe_1_1InternalThread.html | 2 +- doxygen/classcaffe_1_1LRNLayer-members.html | 2 +- doxygen/classcaffe_1_1LRNLayer.html | 2 +- doxygen/classcaffe_1_1LSTMLayer-members.html | 2 +- doxygen/classcaffe_1_1LSTMLayer.html | 2 +- doxygen/classcaffe_1_1LSTMUnitLayer-members.html | 2 +- doxygen/classcaffe_1_1LSTMUnitLayer.html | 2 +- doxygen/classcaffe_1_1Layer-members.html | 2 +- doxygen/classcaffe_1_1Layer.html | 2 +- doxygen/classcaffe_1_1LayerRegisterer-members.html | 2 +- doxygen/classcaffe_1_1LayerRegisterer.html | 2 +- doxygen/classcaffe_1_1LayerRegistry-members.html | 2 +- doxygen/classcaffe_1_1LayerRegistry.html | 2 +- doxygen/classcaffe_1_1LogLayer-members.html | 2 +- doxygen/classcaffe_1_1LogLayer.html | 2 +- doxygen/classcaffe_1_1LossLayer-members.html | 2 +- doxygen/classcaffe_1_1LossLayer.html | 2 +- doxygen/classcaffe_1_1MSRAFiller-members.html | 2 +- doxygen/classcaffe_1_1MSRAFiller.html | 2 +- doxygen/classcaffe_1_1MVNLayer-members.html | 2 +- doxygen/classcaffe_1_1MVNLayer.html | 2 +- doxygen/classcaffe_1_1MemoryDataLayer-members.html | 2 +- doxygen/classcaffe_1_1MemoryDataLayer.html | 2 +- ...fe_1_1MultinomialLogisticLossLayer-members.html | 2 +- ...classcaffe_1_1MultinomialLogisticLossLayer.html | 2 +- doxygen/classcaffe_1_1NesterovSolver-members.html | 2 +- doxygen/classcaffe_1_1NesterovSolver.html | 2 +- doxygen/classcaffe_1_1Net-members.html | 2 +- doxygen/classcaffe_1_1Net.html | 2 +- doxygen/classcaffe_1_1NeuronLayer-members.html | 2 +- doxygen/classcaffe_1_1NeuronLayer.html | 2 +- doxygen/classcaffe_1_1P2PSync-members.html | 2 +- doxygen/classcaffe_1_1P2PSync.html | 2 +- doxygen/classcaffe_1_1PReLULayer-members.html | 2 +- doxygen/classcaffe_1_1PReLULayer.html | 2 +- doxygen/classcaffe_1_1ParameterLayer-members.html | 2 +- doxygen/classcaffe_1_1ParameterLayer.html | 2 +- doxygen/classcaffe_1_1Params-members.html | 2 +- doxygen/classcaffe_1_1Params.html | 2 +- doxygen/classcaffe_1_1PoolingLayer-members.html | 2 +- doxygen/classcaffe_1_1PoolingLayer.html | 2 +- ...asscaffe_1_1PositiveUnitballFiller-members.html | 2 +- doxygen/classcaffe_1_1PositiveUnitballFiller.html | 2 +- doxygen/classcaffe_1_1PowerLayer-members.html | 2 +- doxygen/classcaffe_1_1PowerLayer.html | 2 +- doxygen/classcaffe_1_1PythonLayer-members.html | 2 +- doxygen/classcaffe_1_1PythonLayer.html | 2 +- doxygen/classcaffe_1_1RMSPropSolver-members.html | 2 +- doxygen/classcaffe_1_1RMSPropSolver.html | 2 +- doxygen/classcaffe_1_1RNNLayer-members.html | 2 +- doxygen/classcaffe_1_1RNNLayer.html | 2 +- doxygen/classcaffe_1_1ReLULayer-members.html | 2 +- doxygen/classcaffe_1_1ReLULayer.html | 2 +- doxygen/classcaffe_1_1RecurrentLayer-members.html | 2 +- doxygen/classcaffe_1_1RecurrentLayer.html | 2 +- doxygen/classcaffe_1_1ReductionLayer-members.html | 2 +- doxygen/classcaffe_1_1ReductionLayer.html | 2 +- doxygen/classcaffe_1_1ReshapeLayer-members.html | 2 +- doxygen/classcaffe_1_1ReshapeLayer.html | 2 +- doxygen/classcaffe_1_1SGDSolver-members.html | 2 +- doxygen/classcaffe_1_1SGDSolver.html | 2 +- doxygen/classcaffe_1_1SPPLayer-members.html | 2 +- doxygen/classcaffe_1_1SPPLayer.html | 2 +- doxygen/classcaffe_1_1ScaleLayer-members.html | 2 +- doxygen/classcaffe_1_1ScaleLayer.html | 2 +- ...fe_1_1SigmoidCrossEntropyLossLayer-members.html | 2 +- ...classcaffe_1_1SigmoidCrossEntropyLossLayer.html | 2 +- doxygen/classcaffe_1_1SigmoidLayer-members.html | 2 +- doxygen/classcaffe_1_1SigmoidLayer.html | 2 +- doxygen/classcaffe_1_1SignalHandler-members.html | 2 +- doxygen/classcaffe_1_1SignalHandler.html | 2 +- doxygen/classcaffe_1_1SilenceLayer-members.html | 2 +- doxygen/classcaffe_1_1SilenceLayer.html | 2 +- doxygen/classcaffe_1_1SliceLayer-members.html | 2 +- doxygen/classcaffe_1_1SliceLayer.html | 2 +- doxygen/classcaffe_1_1SoftmaxLayer-members.html | 2 +- doxygen/classcaffe_1_1SoftmaxLayer.html | 2 +- ...classcaffe_1_1SoftmaxWithLossLayer-members.html | 2 +- doxygen/classcaffe_1_1SoftmaxWithLossLayer.html | 2 +- doxygen/classcaffe_1_1Solver-members.html | 2 +- doxygen/classcaffe_1_1Solver.html | 2 +- .../classcaffe_1_1SolverRegisterer-members.html | 2 +- doxygen/classcaffe_1_1SolverRegisterer.html | 2 +- doxygen/classcaffe_1_1SolverRegistry-members.html | 2 +- doxygen/classcaffe_1_1SolverRegistry.html | 2 +- .../classcaffe_1_1Solver_1_1Callback-members.html | 2 +- doxygen/classcaffe_1_1Solver_1_1Callback.html | 2 +- doxygen/classcaffe_1_1SplitLayer-members.html | 2 +- doxygen/classcaffe_1_1SplitLayer.html | 2 +- doxygen/classcaffe_1_1SyncedMemory-members.html | 2 +- doxygen/classcaffe_1_1SyncedMemory.html | 2 +- doxygen/classcaffe_1_1TanHLayer-members.html | 2 +- doxygen/classcaffe_1_1TanHLayer.html | 2 +- doxygen/classcaffe_1_1ThresholdLayer-members.html | 2 +- doxygen/classcaffe_1_1ThresholdLayer.html | 2 +- doxygen/classcaffe_1_1TileLayer-members.html | 2 +- doxygen/classcaffe_1_1TileLayer.html | 2 +- doxygen/classcaffe_1_1Timer-members.html | 2 +- doxygen/classcaffe_1_1Timer.html | 2 +- doxygen/classcaffe_1_1UniformFiller-members.html | 2 +- doxygen/classcaffe_1_1UniformFiller.html | 2 +- doxygen/classcaffe_1_1WindowDataLayer-members.html | 2 +- doxygen/classcaffe_1_1WindowDataLayer.html | 2 +- doxygen/classcaffe_1_1WorkerSolver-members.html | 2 +- doxygen/classcaffe_1_1WorkerSolver.html | 2 +- doxygen/classcaffe_1_1XavierFiller-members.html | 2 +- doxygen/classcaffe_1_1XavierFiller.html | 2 +- doxygen/classcaffe_1_1db_1_1Cursor-members.html | 2 +- doxygen/classcaffe_1_1db_1_1Cursor.html | 2 +- doxygen/classcaffe_1_1db_1_1DB-members.html | 2 +- doxygen/classcaffe_1_1db_1_1DB.html | 2 +- .../classcaffe_1_1db_1_1Transaction-members.html | 2 +- doxygen/classcaffe_1_1db_1_1Transaction.html | 2 +- doxygen/classes.html | 2 +- doxygen/common_8hpp_source.html | 2 +- doxygen/concat__layer_8hpp_source.html | 2 +- doxygen/contrastive__loss__layer_8hpp_source.html | 2 +- doxygen/conv__layer_8hpp_source.html | 2 +- doxygen/crop__layer_8hpp_source.html | 2 +- doxygen/cudnn_8hpp_source.html | 2 +- doxygen/cudnn__conv__layer_8hpp_source.html | 2 +- doxygen/cudnn__lcn__layer_8hpp_source.html | 2 +- doxygen/cudnn__lrn__layer_8hpp_source.html | 2 +- doxygen/cudnn__pooling__layer_8hpp_source.html | 2 +- doxygen/cudnn__relu__layer_8hpp_source.html | 2 +- doxygen/cudnn__sigmoid__layer_8hpp_source.html | 2 +- doxygen/cudnn__softmax__layer_8hpp_source.html | 2 +- doxygen/cudnn__tanh__layer_8hpp_source.html | 2 +- doxygen/data__layer_8hpp_source.html | 2 +- doxygen/data__reader_8hpp_source.html | 2 +- doxygen/data__transformer_8hpp_source.html | 2 +- doxygen/db_8hpp_source.html | 2 +- doxygen/db__leveldb_8hpp_source.html | 2 +- doxygen/db__lmdb_8hpp_source.html | 2 +- doxygen/deconv__layer_8hpp_source.html | 2 +- doxygen/device__alternate_8hpp_source.html | 2 +- doxygen/dir_4b7f3da7c7b4301d805dae0326fb91b7.html | 2 +- doxygen/dir_5c92236a0f5740f6a611cf0cbca860fd.html | 2 +- doxygen/dir_63b6f53f56ebc4a4e494d80608d10658.html | 2 +- doxygen/dir_68267d1309a1af8e8297ef4c3efbcdba.html | 2 +- doxygen/dir_750d2c266ff028c3ef5b86bdca6396e1.html | 2 +- doxygen/dir_b4c5ae27f152c386e8799324caa2412e.html | 2 +- doxygen/dir_b9606a76d4acbf8f90a06a4a51ec8b9e.html | 2 +- doxygen/dir_d44c64559bbebec7f509842c48db8b23.html | 2 +- doxygen/dir_feb0d617e78aec1d705c99fd9e400e0d.html | 2 +- doxygen/dropout__layer_8hpp_source.html | 2 +- doxygen/dummy__data__layer_8hpp_source.html | 2 +- doxygen/eltwise__layer_8hpp_source.html | 2 +- doxygen/elu__layer_8hpp_source.html | 2 +- doxygen/embed__layer_8hpp_source.html | 2 +- doxygen/euclidean__loss__layer_8hpp_source.html | 2 +- doxygen/exp__layer_8hpp_source.html | 2 +- doxygen/files.html | 2 +- doxygen/filler_8hpp_source.html | 2 +- doxygen/filter__layer_8hpp_source.html | 2 +- doxygen/flatten__layer_8hpp_source.html | 2 +- doxygen/format_8hpp_source.html | 2 +- doxygen/functions.html | 2 +- doxygen/functions_b.html | 2 +- doxygen/functions_c.html | 2 +- doxygen/functions_d.html | 2 +- doxygen/functions_e.html | 2 +- doxygen/functions_f.html | 2 +- doxygen/functions_func.html | 2 +- doxygen/functions_func_b.html | 2 +- doxygen/functions_func_c.html | 2 +- doxygen/functions_func_d.html | 2 +- doxygen/functions_func_e.html | 2 +- doxygen/functions_func_f.html | 2 +- doxygen/functions_func_g.html | 2 +- doxygen/functions_func_h.html | 2 +- doxygen/functions_func_i.html | 2 +- doxygen/functions_func_l.html | 2 +- doxygen/functions_func_m.html | 2 +- doxygen/functions_func_n.html | 2 +- doxygen/functions_func_o.html | 2 +- doxygen/functions_func_p.html | 2 +- doxygen/functions_func_r.html | 2 +- doxygen/functions_func_s.html | 2 +- doxygen/functions_func_t.html | 2 +- doxygen/functions_func_u.html | 2 +- doxygen/functions_func_w.html | 2 +- doxygen/functions_g.html | 2 +- doxygen/functions_h.html | 2 +- doxygen/functions_i.html | 2 +- doxygen/functions_k.html | 2 +- doxygen/functions_l.html | 2 +- doxygen/functions_m.html | 2 +- doxygen/functions_n.html | 2 +- doxygen/functions_o.html | 2 +- doxygen/functions_p.html | 2 +- doxygen/functions_r.html | 2 +- doxygen/functions_s.html | 2 +- doxygen/functions_t.html | 2 +- doxygen/functions_u.html | 2 +- doxygen/functions_vars.html | 2 +- doxygen/functions_w.html | 2 +- doxygen/hdf5_8hpp_source.html | 2 +- doxygen/hdf5__data__layer_8hpp_source.html | 2 +- doxygen/hdf5__output__layer_8hpp_source.html | 2 +- doxygen/hierarchy.html | 2 +- doxygen/hinge__loss__layer_8hpp_source.html | 2 +- doxygen/im2col_8hpp_source.html | 2 +- doxygen/im2col__layer_8hpp_source.html | 2 +- doxygen/image__data__layer_8hpp_source.html | 2 +- doxygen/index.html | 2 +- doxygen/infogain__loss__layer_8hpp_source.html | 2 +- doxygen/inner__product__layer_8hpp_source.html | 2 +- doxygen/input__layer_8hpp_source.html | 2 +- doxygen/insert__splits_8hpp_source.html | 2 +- doxygen/internal__thread_8hpp_source.html | 2 +- doxygen/io_8hpp_source.html | 2 +- doxygen/layer_8hpp_source.html | 2 +- doxygen/layer__factory_8hpp_source.html | 2 +- doxygen/log__layer_8hpp_source.html | 2 +- doxygen/loss__layer_8hpp_source.html | 2 +- doxygen/lrn__layer_8hpp_source.html | 2 +- doxygen/lstm__layer_8hpp_source.html | 2 +- doxygen/math__functions_8hpp_source.html | 2 +- doxygen/memory__data__layer_8hpp_source.html | 2 +- doxygen/mkl__alternate_8hpp_source.html | 2 +- ...inomial__logistic__loss__layer_8hpp_source.html | 2 +- doxygen/mvn__layer_8hpp_source.html | 2 +- doxygen/namespaceboost.html | 2 +- doxygen/namespacecaffe.html | 2 +- doxygen/namespacecaffe_1_1SolverAction.html | 2 +- doxygen/namespacemembers.html | 2 +- doxygen/namespacemembers_func.html | 2 +- doxygen/namespacemembers_type.html | 2 +- doxygen/namespaces.html | 2 +- doxygen/net_8hpp_source.html | 2 +- doxygen/neuron__layer_8hpp_source.html | 2 +- doxygen/parallel_8hpp_source.html | 2 +- doxygen/parameter__layer_8hpp_source.html | 2 +- doxygen/pooling__layer_8hpp_source.html | 2 +- doxygen/power__layer_8hpp_source.html | 2 +- doxygen/prelu__layer_8hpp_source.html | 2 +- doxygen/python__layer_8hpp_source.html | 2 +- doxygen/recurrent__layer_8hpp_source.html | 2 +- doxygen/reduction__layer_8hpp_source.html | 2 +- doxygen/relu__layer_8hpp_source.html | 2 +- doxygen/reshape__layer_8hpp_source.html | 2 +- doxygen/rng_8hpp_source.html | 2 +- doxygen/rnn__layer_8hpp_source.html | 2 +- doxygen/scale__layer_8hpp_source.html | 2 +- doxygen/sgd__solvers_8hpp_source.html | 2 +- ...d__cross__entropy__loss__layer_8hpp_source.html | 2 +- doxygen/sigmoid__layer_8hpp_source.html | 2 +- doxygen/signal__handler_8h_source.html | 2 +- doxygen/silence__layer_8hpp_source.html | 2 +- doxygen/slice__layer_8hpp_source.html | 2 +- doxygen/softmax__layer_8hpp_source.html | 2 +- doxygen/softmax__loss__layer_8hpp_source.html | 2 +- doxygen/solver_8hpp_source.html | 2 +- doxygen/solver__factory_8hpp_source.html | 2 +- doxygen/split__layer_8hpp_source.html | 2 +- doxygen/spp__layer_8hpp_source.html | 2 +- doxygen/syncedmem_8hpp_source.html | 2 +- doxygen/tanh__layer_8hpp_source.html | 2 +- doxygen/threshold__layer_8hpp_source.html | 2 +- doxygen/tile__layer_8hpp_source.html | 2 +- doxygen/upgrade__proto_8hpp_source.html | 2 +- doxygen/window__data__layer_8hpp_source.html | 2 +- gathered/examples/02-fine-tuning.ipynb | 4 +- install_apt_debian.html | 235 +++++++++++++++++++++ installation.html | 1 + 389 files changed, 624 insertions(+), 388 deletions(-) create mode 100644 install_apt_debian.html diff --git a/doxygen/absval__layer_8hpp_source.html b/doxygen/absval__layer_8hpp_source.html index a6647e2a4e6..13a339b4e2a 100644 --- a/doxygen/absval__layer_8hpp_source.html +++ b/doxygen/absval__layer_8hpp_source.html @@ -81,7 +81,7 @@ diff --git a/doxygen/accuracy__layer_8hpp_source.html b/doxygen/accuracy__layer_8hpp_source.html index f888cca62bc..82cac72da85 100644 --- a/doxygen/accuracy__layer_8hpp_source.html +++ b/doxygen/accuracy__layer_8hpp_source.html @@ -85,7 +85,7 @@ diff --git a/doxygen/annotated.html b/doxygen/annotated.html index dd193689b3b..794c4101662 100644 --- a/doxygen/annotated.html +++ b/doxygen/annotated.html @@ -182,7 +182,7 @@ diff --git a/doxygen/argmax__layer_8hpp_source.html b/doxygen/argmax__layer_8hpp_source.html index 1d916f0f8b0..7b05a8cc0dd 100644 --- a/doxygen/argmax__layer_8hpp_source.html +++ b/doxygen/argmax__layer_8hpp_source.html @@ -81,7 +81,7 @@ diff --git a/doxygen/base__conv__layer_8hpp_source.html b/doxygen/base__conv__layer_8hpp_source.html index 5c5102cbcdc..d55af6cb587 100644 --- a/doxygen/base__conv__layer_8hpp_source.html +++ b/doxygen/base__conv__layer_8hpp_source.html @@ -86,7 +86,7 @@ diff --git a/doxygen/base__data__layer_8hpp_source.html b/doxygen/base__data__layer_8hpp_source.html index 0d28d18fcf1..c781543d988 100644 --- a/doxygen/base__data__layer_8hpp_source.html +++ b/doxygen/base__data__layer_8hpp_source.html @@ -84,7 +84,7 @@ diff --git a/doxygen/batch__norm__layer_8hpp_source.html b/doxygen/batch__norm__layer_8hpp_source.html index 2c4dd90ffac..1003af3acd7 100644 --- a/doxygen/batch__norm__layer_8hpp_source.html +++ b/doxygen/batch__norm__layer_8hpp_source.html @@ -82,7 +82,7 @@ diff --git a/doxygen/batch__reindex__layer_8hpp_source.html b/doxygen/batch__reindex__layer_8hpp_source.html index 4d28d9eab10..b921514771b 100644 --- a/doxygen/batch__reindex__layer_8hpp_source.html +++ b/doxygen/batch__reindex__layer_8hpp_source.html @@ -81,7 +81,7 @@ diff --git a/doxygen/benchmark_8hpp_source.html b/doxygen/benchmark_8hpp_source.html index 2de6a49b05c..e32e304733a 100644 --- a/doxygen/benchmark_8hpp_source.html +++ b/doxygen/benchmark_8hpp_source.html @@ -72,7 +72,7 @@ diff --git a/doxygen/bias__layer_8hpp_source.html b/doxygen/bias__layer_8hpp_source.html index f2ad1438360..986f62aaf24 100644 --- a/doxygen/bias__layer_8hpp_source.html +++ b/doxygen/bias__layer_8hpp_source.html @@ -83,7 +83,7 @@ diff --git a/doxygen/blob_8hpp_source.html b/doxygen/blob_8hpp_source.html index ef092c79b22..e2e17292a84 100644 --- a/doxygen/blob_8hpp_source.html +++ b/doxygen/blob_8hpp_source.html @@ -89,7 +89,7 @@ diff --git a/doxygen/blocking__queue_8hpp_source.html b/doxygen/blocking__queue_8hpp_source.html index 93e7832ca7f..dcfc7710daa 100644 --- a/doxygen/blocking__queue_8hpp_source.html +++ b/doxygen/blocking__queue_8hpp_source.html @@ -72,7 +72,7 @@ diff --git a/doxygen/bnll__layer_8hpp_source.html b/doxygen/bnll__layer_8hpp_source.html index 6d93ce07278..d59b1c3829f 100644 --- a/doxygen/bnll__layer_8hpp_source.html +++ b/doxygen/bnll__layer_8hpp_source.html @@ -78,7 +78,7 @@ diff --git a/doxygen/caffe_8hpp_source.html b/doxygen/caffe_8hpp_source.html index 32806abee55..aea2d918840 100644 --- a/doxygen/caffe_8hpp_source.html +++ b/doxygen/caffe_8hpp_source.html @@ -69,7 +69,7 @@
      1 // caffe.hpp is the header file that you need to include in your code. It wraps
      2 // all the internal caffe header files into one for simpler inclusion.
      3 
      4 #ifndef CAFFE_CAFFE_HPP_
      5 #define CAFFE_CAFFE_HPP_
      6 
      7 #include "caffe/blob.hpp"
      8 #include "caffe/common.hpp"
      9 #include "caffe/filler.hpp"
      10 #include "caffe/layer.hpp"
      11 #include "caffe/layer_factory.hpp"
      12 #include "caffe/net.hpp"
      13 #include "caffe/parallel.hpp"
      14 #include "caffe/proto/caffe.pb.h"
      15 #include "caffe/solver.hpp"
      16 #include "caffe/solver_factory.hpp"
      17 #include "caffe/util/benchmark.hpp"
      18 #include "caffe/util/io.hpp"
      19 #include "caffe/util/upgrade_proto.hpp"
      20 
      21 #endif // CAFFE_CAFFE_HPP_
      diff --git a/doxygen/classcaffe_1_1AbsValLayer-members.html b/doxygen/classcaffe_1_1AbsValLayer-members.html index d76e78d6e5a..01e5b1349e2 100644 --- a/doxygen/classcaffe_1_1AbsValLayer-members.html +++ b/doxygen/classcaffe_1_1AbsValLayer-members.html @@ -112,7 +112,7 @@ diff --git a/doxygen/classcaffe_1_1AbsValLayer.html b/doxygen/classcaffe_1_1AbsValLayer.html index 2d013f0ce2d..46e18dbcea6 100644 --- a/doxygen/classcaffe_1_1AbsValLayer.html +++ b/doxygen/classcaffe_1_1AbsValLayer.html @@ -477,7 +477,7 @@

      diff --git a/doxygen/classcaffe_1_1AccuracyLayer-members.html b/doxygen/classcaffe_1_1AccuracyLayer-members.html index e8851027ab9..3d761e56a50 100644 --- a/doxygen/classcaffe_1_1AccuracyLayer-members.html +++ b/doxygen/classcaffe_1_1AccuracyLayer-members.html @@ -118,7 +118,7 @@ diff --git a/doxygen/classcaffe_1_1AccuracyLayer.html b/doxygen/classcaffe_1_1AccuracyLayer.html index 12e701dbc9d..e1d754a99f4 100644 --- a/doxygen/classcaffe_1_1AccuracyLayer.html +++ b/doxygen/classcaffe_1_1AccuracyLayer.html @@ -540,7 +540,7 @@

      diff --git a/doxygen/classcaffe_1_1AdaDeltaSolver-members.html b/doxygen/classcaffe_1_1AdaDeltaSolver-members.html index e9ada0d6f63..e04ce2b4f75 100644 --- a/doxygen/classcaffe_1_1AdaDeltaSolver-members.html +++ b/doxygen/classcaffe_1_1AdaDeltaSolver-members.html @@ -135,7 +135,7 @@ diff --git a/doxygen/classcaffe_1_1AdaDeltaSolver.html b/doxygen/classcaffe_1_1AdaDeltaSolver.html index b109f6dc2a3..af1f65438cd 100644 --- a/doxygen/classcaffe_1_1AdaDeltaSolver.html +++ b/doxygen/classcaffe_1_1AdaDeltaSolver.html @@ -290,7 +290,7 @@ diff --git a/doxygen/classcaffe_1_1AdaGradSolver-members.html b/doxygen/classcaffe_1_1AdaGradSolver-members.html index afa7975324d..d6ae79e1698 100644 --- a/doxygen/classcaffe_1_1AdaGradSolver-members.html +++ b/doxygen/classcaffe_1_1AdaGradSolver-members.html @@ -135,7 +135,7 @@ diff --git a/doxygen/classcaffe_1_1AdaGradSolver.html b/doxygen/classcaffe_1_1AdaGradSolver.html index 43887fba3c1..1e9adc74e40 100644 --- a/doxygen/classcaffe_1_1AdaGradSolver.html +++ b/doxygen/classcaffe_1_1AdaGradSolver.html @@ -290,7 +290,7 @@ diff --git a/doxygen/classcaffe_1_1AdamSolver-members.html b/doxygen/classcaffe_1_1AdamSolver-members.html index 878bd4033e8..d5b865c06af 100644 --- a/doxygen/classcaffe_1_1AdamSolver-members.html +++ b/doxygen/classcaffe_1_1AdamSolver-members.html @@ -135,7 +135,7 @@ diff --git a/doxygen/classcaffe_1_1AdamSolver.html b/doxygen/classcaffe_1_1AdamSolver.html index 1c11ba5a805..d2d9bd60f66 100644 --- a/doxygen/classcaffe_1_1AdamSolver.html +++ b/doxygen/classcaffe_1_1AdamSolver.html @@ -301,7 +301,7 @@ diff --git a/doxygen/classcaffe_1_1ArgMaxLayer-members.html b/doxygen/classcaffe_1_1ArgMaxLayer-members.html index 0c3996ee914..c252089b70b 100644 --- a/doxygen/classcaffe_1_1ArgMaxLayer-members.html +++ b/doxygen/classcaffe_1_1ArgMaxLayer-members.html @@ -115,7 +115,7 @@ diff --git a/doxygen/classcaffe_1_1ArgMaxLayer.html b/doxygen/classcaffe_1_1ArgMaxLayer.html index 104f40d9cca..6c30815d7c9 100644 --- a/doxygen/classcaffe_1_1ArgMaxLayer.html +++ b/doxygen/classcaffe_1_1ArgMaxLayer.html @@ -499,7 +499,7 @@

      diff --git a/doxygen/classcaffe_1_1BNLLLayer-members.html b/doxygen/classcaffe_1_1BNLLLayer-members.html index 0dbce272fbf..062096588c2 100644 --- a/doxygen/classcaffe_1_1BNLLLayer-members.html +++ b/doxygen/classcaffe_1_1BNLLLayer-members.html @@ -112,7 +112,7 @@ diff --git a/doxygen/classcaffe_1_1BNLLLayer.html b/doxygen/classcaffe_1_1BNLLLayer.html index 55d59576e6a..665931a395f 100644 --- a/doxygen/classcaffe_1_1BNLLLayer.html +++ b/doxygen/classcaffe_1_1BNLLLayer.html @@ -363,7 +363,7 @@

      diff --git a/doxygen/classcaffe_1_1BaseConvolutionLayer-members.html b/doxygen/classcaffe_1_1BaseConvolutionLayer-members.html index bd21b7e830d..ecc6e73f9ee 100644 --- a/doxygen/classcaffe_1_1BaseConvolutionLayer-members.html +++ b/doxygen/classcaffe_1_1BaseConvolutionLayer-members.html @@ -145,7 +145,7 @@ diff --git a/doxygen/classcaffe_1_1BaseConvolutionLayer.html b/doxygen/classcaffe_1_1BaseConvolutionLayer.html index fdf601fecc1..1a4d181689b 100644 --- a/doxygen/classcaffe_1_1BaseConvolutionLayer.html +++ b/doxygen/classcaffe_1_1BaseConvolutionLayer.html @@ -539,7 +539,7 @@

      diff --git a/doxygen/classcaffe_1_1BaseDataLayer-members.html b/doxygen/classcaffe_1_1BaseDataLayer-members.html index 6a3a93fb34d..4048d41c0c7 100644 --- a/doxygen/classcaffe_1_1BaseDataLayer-members.html +++ b/doxygen/classcaffe_1_1BaseDataLayer-members.html @@ -115,7 +115,7 @@ diff --git a/doxygen/classcaffe_1_1BaseDataLayer.html b/doxygen/classcaffe_1_1BaseDataLayer.html index 8ee134e4dbc..9bff00a49d1 100644 --- a/doxygen/classcaffe_1_1BaseDataLayer.html +++ b/doxygen/classcaffe_1_1BaseDataLayer.html @@ -350,7 +350,7 @@

      diff --git a/doxygen/classcaffe_1_1BasePrefetchingDataLayer-members.html b/doxygen/classcaffe_1_1BasePrefetchingDataLayer-members.html index 7f7f217d1c4..1b2a86c24eb 100644 --- a/doxygen/classcaffe_1_1BasePrefetchingDataLayer-members.html +++ b/doxygen/classcaffe_1_1BasePrefetchingDataLayer-members.html @@ -129,7 +129,7 @@ diff --git a/doxygen/classcaffe_1_1BasePrefetchingDataLayer.html b/doxygen/classcaffe_1_1BasePrefetchingDataLayer.html index c97f4f99395..5153d6c8d69 100644 --- a/doxygen/classcaffe_1_1BasePrefetchingDataLayer.html +++ b/doxygen/classcaffe_1_1BasePrefetchingDataLayer.html @@ -330,7 +330,7 @@

      diff --git a/doxygen/classcaffe_1_1Batch-members.html b/doxygen/classcaffe_1_1Batch-members.html index c21e71bbeb3..f1d17344c8d 100644 --- a/doxygen/classcaffe_1_1Batch-members.html +++ b/doxygen/classcaffe_1_1Batch-members.html @@ -74,7 +74,7 @@ diff --git a/doxygen/classcaffe_1_1Batch.html b/doxygen/classcaffe_1_1Batch.html index 42c6dc0794d..dad28b5ea5f 100644 --- a/doxygen/classcaffe_1_1Batch.html +++ b/doxygen/classcaffe_1_1Batch.html @@ -85,7 +85,7 @@ diff --git a/doxygen/classcaffe_1_1BatchNormLayer-members.html b/doxygen/classcaffe_1_1BatchNormLayer-members.html index 9cae174ddbc..6536bb2621f 100644 --- a/doxygen/classcaffe_1_1BatchNormLayer-members.html +++ b/doxygen/classcaffe_1_1BatchNormLayer-members.html @@ -122,7 +122,7 @@ diff --git a/doxygen/classcaffe_1_1BatchNormLayer.html b/doxygen/classcaffe_1_1BatchNormLayer.html index aa966ee08c7..ecabfcf7c30 100644 --- a/doxygen/classcaffe_1_1BatchNormLayer.html +++ b/doxygen/classcaffe_1_1BatchNormLayer.html @@ -434,7 +434,7 @@

      diff --git a/doxygen/classcaffe_1_1BatchReindexLayer-members.html b/doxygen/classcaffe_1_1BatchReindexLayer-members.html index f3b6f100e5b..2efa6dce1df 100644 --- a/doxygen/classcaffe_1_1BatchReindexLayer-members.html +++ b/doxygen/classcaffe_1_1BatchReindexLayer-members.html @@ -111,7 +111,7 @@ diff --git a/doxygen/classcaffe_1_1BatchReindexLayer.html b/doxygen/classcaffe_1_1BatchReindexLayer.html index 8624440334a..3097d772d15 100644 --- a/doxygen/classcaffe_1_1BatchReindexLayer.html +++ b/doxygen/classcaffe_1_1BatchReindexLayer.html @@ -460,7 +460,7 @@

      diff --git a/doxygen/classcaffe_1_1BiasLayer-members.html b/doxygen/classcaffe_1_1BiasLayer-members.html index fbf4826da0b..85b716c0350 100644 --- a/doxygen/classcaffe_1_1BiasLayer-members.html +++ b/doxygen/classcaffe_1_1BiasLayer-members.html @@ -111,7 +111,7 @@ diff --git a/doxygen/classcaffe_1_1BiasLayer.html b/doxygen/classcaffe_1_1BiasLayer.html index 6c5791a8a36..4465f961ebc 100644 --- a/doxygen/classcaffe_1_1BiasLayer.html +++ b/doxygen/classcaffe_1_1BiasLayer.html @@ -423,7 +423,7 @@

      diff --git a/doxygen/classcaffe_1_1BilinearFiller-members.html b/doxygen/classcaffe_1_1BilinearFiller-members.html index 49a57595949..5d83cb5a707 100644 --- a/doxygen/classcaffe_1_1BilinearFiller-members.html +++ b/doxygen/classcaffe_1_1BilinearFiller-members.html @@ -77,7 +77,7 @@ diff --git a/doxygen/classcaffe_1_1BilinearFiller.html b/doxygen/classcaffe_1_1BilinearFiller.html index 2a81ae83b92..6a415d4d2e8 100644 --- a/doxygen/classcaffe_1_1BilinearFiller.html +++ b/doxygen/classcaffe_1_1BilinearFiller.html @@ -115,7 +115,7 @@ diff --git a/doxygen/classcaffe_1_1Blob-members.html b/doxygen/classcaffe_1_1Blob-members.html index 552967187bd..23b48f315c7 100644 --- a/doxygen/classcaffe_1_1Blob-members.html +++ b/doxygen/classcaffe_1_1Blob-members.html @@ -146,7 +146,7 @@ diff --git a/doxygen/classcaffe_1_1Blob.html b/doxygen/classcaffe_1_1Blob.html index 67ed1a2de22..2512477225e 100644 --- a/doxygen/classcaffe_1_1Blob.html +++ b/doxygen/classcaffe_1_1Blob.html @@ -618,7 +618,7 @@

      diff --git a/doxygen/classcaffe_1_1BlockingQueue-members.html b/doxygen/classcaffe_1_1BlockingQueue-members.html index c46483480ae..72024939095 100644 --- a/doxygen/classcaffe_1_1BlockingQueue-members.html +++ b/doxygen/classcaffe_1_1BlockingQueue-members.html @@ -82,7 +82,7 @@ diff --git a/doxygen/classcaffe_1_1BlockingQueue.html b/doxygen/classcaffe_1_1BlockingQueue.html index a5c63229ee4..62efdd156b8 100644 --- a/doxygen/classcaffe_1_1BlockingQueue.html +++ b/doxygen/classcaffe_1_1BlockingQueue.html @@ -121,7 +121,7 @@ diff --git a/doxygen/classcaffe_1_1BlockingQueue_1_1sync-members.html b/doxygen/classcaffe_1_1BlockingQueue_1_1sync-members.html index 76bedc2b5a1..c334e1e3db0 100644 --- a/doxygen/classcaffe_1_1BlockingQueue_1_1sync-members.html +++ b/doxygen/classcaffe_1_1BlockingQueue_1_1sync-members.html @@ -74,7 +74,7 @@ diff --git a/doxygen/classcaffe_1_1BlockingQueue_1_1sync.html b/doxygen/classcaffe_1_1BlockingQueue_1_1sync.html index 9371a9d41f2..4f9542a1639 100644 --- a/doxygen/classcaffe_1_1BlockingQueue_1_1sync.html +++ b/doxygen/classcaffe_1_1BlockingQueue_1_1sync.html @@ -85,7 +85,7 @@ diff --git a/doxygen/classcaffe_1_1CPUTimer-members.html b/doxygen/classcaffe_1_1CPUTimer-members.html index 2aceb4d2932..d6a82576fc7 100644 --- a/doxygen/classcaffe_1_1CPUTimer-members.html +++ b/doxygen/classcaffe_1_1CPUTimer-members.html @@ -94,7 +94,7 @@ diff --git a/doxygen/classcaffe_1_1CPUTimer.html b/doxygen/classcaffe_1_1CPUTimer.html index a4f5a259633..ca1705dd218 100644 --- a/doxygen/classcaffe_1_1CPUTimer.html +++ b/doxygen/classcaffe_1_1CPUTimer.html @@ -149,7 +149,7 @@ diff --git a/doxygen/classcaffe_1_1Caffe-members.html b/doxygen/classcaffe_1_1Caffe-members.html index 876f8c635e1..54ad3bb0db2 100644 --- a/doxygen/classcaffe_1_1Caffe-members.html +++ b/doxygen/classcaffe_1_1Caffe-members.html @@ -97,7 +97,7 @@ diff --git a/doxygen/classcaffe_1_1Caffe.html b/doxygen/classcaffe_1_1Caffe.html index 646d0f15bd7..cbc9191239c 100644 --- a/doxygen/classcaffe_1_1Caffe.html +++ b/doxygen/classcaffe_1_1Caffe.html @@ -161,7 +161,7 @@ diff --git a/doxygen/classcaffe_1_1Caffe_1_1RNG-members.html b/doxygen/classcaffe_1_1Caffe_1_1RNG-members.html index b95b6cd6800..bfdbcb1d73a 100644 --- a/doxygen/classcaffe_1_1Caffe_1_1RNG-members.html +++ b/doxygen/classcaffe_1_1Caffe_1_1RNG-members.html @@ -77,7 +77,7 @@ diff --git a/doxygen/classcaffe_1_1Caffe_1_1RNG.html b/doxygen/classcaffe_1_1Caffe_1_1RNG.html index 79d36d90686..e3379347231 100644 --- a/doxygen/classcaffe_1_1Caffe_1_1RNG.html +++ b/doxygen/classcaffe_1_1Caffe_1_1RNG.html @@ -98,7 +98,7 @@ diff --git a/doxygen/classcaffe_1_1Caffe_1_1RNG_1_1Generator-members.html b/doxygen/classcaffe_1_1Caffe_1_1RNG_1_1Generator-members.html index 61ed8d06f6f..2226a94a6d5 100644 --- a/doxygen/classcaffe_1_1Caffe_1_1RNG_1_1Generator-members.html +++ b/doxygen/classcaffe_1_1Caffe_1_1RNG_1_1Generator-members.html @@ -75,7 +75,7 @@ diff --git a/doxygen/classcaffe_1_1Caffe_1_1RNG_1_1Generator.html b/doxygen/classcaffe_1_1Caffe_1_1RNG_1_1Generator.html index ad228175b1c..5650cf03c2f 100644 --- a/doxygen/classcaffe_1_1Caffe_1_1RNG_1_1Generator.html +++ b/doxygen/classcaffe_1_1Caffe_1_1RNG_1_1Generator.html @@ -85,7 +85,7 @@ diff --git a/doxygen/classcaffe_1_1ConcatLayer-members.html b/doxygen/classcaffe_1_1ConcatLayer-members.html index c346a6cb422..5dd5df6b679 100644 --- a/doxygen/classcaffe_1_1ConcatLayer-members.html +++ b/doxygen/classcaffe_1_1ConcatLayer-members.html @@ -115,7 +115,7 @@ diff --git a/doxygen/classcaffe_1_1ConcatLayer.html b/doxygen/classcaffe_1_1ConcatLayer.html index 5f17d6e7147..8fe487ab133 100644 --- a/doxygen/classcaffe_1_1ConcatLayer.html +++ b/doxygen/classcaffe_1_1ConcatLayer.html @@ -521,7 +521,7 @@

      diff --git a/doxygen/classcaffe_1_1ConstantFiller-members.html b/doxygen/classcaffe_1_1ConstantFiller-members.html index 77a58980d78..f051f2549b8 100644 --- a/doxygen/classcaffe_1_1ConstantFiller-members.html +++ b/doxygen/classcaffe_1_1ConstantFiller-members.html @@ -77,7 +77,7 @@ diff --git a/doxygen/classcaffe_1_1ConstantFiller.html b/doxygen/classcaffe_1_1ConstantFiller.html index a1b86123e4e..9fbe9fd81ef 100644 --- a/doxygen/classcaffe_1_1ConstantFiller.html +++ b/doxygen/classcaffe_1_1ConstantFiller.html @@ -115,7 +115,7 @@ diff --git a/doxygen/classcaffe_1_1ContrastiveLossLayer-members.html b/doxygen/classcaffe_1_1ContrastiveLossLayer-members.html index ed6b233cc5c..78ec4501803 100644 --- a/doxygen/classcaffe_1_1ContrastiveLossLayer-members.html +++ b/doxygen/classcaffe_1_1ContrastiveLossLayer-members.html @@ -116,7 +116,7 @@ diff --git a/doxygen/classcaffe_1_1ContrastiveLossLayer.html b/doxygen/classcaffe_1_1ContrastiveLossLayer.html index ab2b0a21f11..760d92f92c5 100644 --- a/doxygen/classcaffe_1_1ContrastiveLossLayer.html +++ b/doxygen/classcaffe_1_1ContrastiveLossLayer.html @@ -495,7 +495,7 @@

      diff --git a/doxygen/classcaffe_1_1ConvolutionLayer-members.html b/doxygen/classcaffe_1_1ConvolutionLayer-members.html index c289b36c501..3acccff6bc8 100644 --- a/doxygen/classcaffe_1_1ConvolutionLayer-members.html +++ b/doxygen/classcaffe_1_1ConvolutionLayer-members.html @@ -146,7 +146,7 @@ diff --git a/doxygen/classcaffe_1_1ConvolutionLayer.html b/doxygen/classcaffe_1_1ConvolutionLayer.html index 773f07480bd..27529c2dc57 100644 --- a/doxygen/classcaffe_1_1ConvolutionLayer.html +++ b/doxygen/classcaffe_1_1ConvolutionLayer.html @@ -392,7 +392,7 @@

      diff --git a/doxygen/classcaffe_1_1CropLayer-members.html b/doxygen/classcaffe_1_1CropLayer-members.html index 51e2588015b..fd77f313c69 100644 --- a/doxygen/classcaffe_1_1CropLayer-members.html +++ b/doxygen/classcaffe_1_1CropLayer-members.html @@ -112,7 +112,7 @@ diff --git a/doxygen/classcaffe_1_1CropLayer.html b/doxygen/classcaffe_1_1CropLayer.html index 9cb6689e354..83ed40599b5 100644 --- a/doxygen/classcaffe_1_1CropLayer.html +++ b/doxygen/classcaffe_1_1CropLayer.html @@ -399,7 +399,7 @@

      diff --git a/doxygen/classcaffe_1_1DataLayer-members.html b/doxygen/classcaffe_1_1DataLayer-members.html index f9995bce12e..720fb621fed 100644 --- a/doxygen/classcaffe_1_1DataLayer-members.html +++ b/doxygen/classcaffe_1_1DataLayer-members.html @@ -132,7 +132,7 @@ diff --git a/doxygen/classcaffe_1_1DataLayer.html b/doxygen/classcaffe_1_1DataLayer.html index 587aeaae42c..c014b3b411b 100644 --- a/doxygen/classcaffe_1_1DataLayer.html +++ b/doxygen/classcaffe_1_1DataLayer.html @@ -383,7 +383,7 @@

      diff --git a/doxygen/classcaffe_1_1DataReader-members.html b/doxygen/classcaffe_1_1DataReader-members.html index 1974aef66a5..1ef365d2361 100644 --- a/doxygen/classcaffe_1_1DataReader-members.html +++ b/doxygen/classcaffe_1_1DataReader-members.html @@ -81,7 +81,7 @@ diff --git a/doxygen/classcaffe_1_1DataReader.html b/doxygen/classcaffe_1_1DataReader.html index 131d431188f..29bc70e3690 100644 --- a/doxygen/classcaffe_1_1DataReader.html +++ b/doxygen/classcaffe_1_1DataReader.html @@ -135,7 +135,7 @@ diff --git a/doxygen/classcaffe_1_1DataReader_1_1Body-members.html b/doxygen/classcaffe_1_1DataReader_1_1Body-members.html index 602e293f2e0..22c397c6df1 100644 --- a/doxygen/classcaffe_1_1DataReader_1_1Body-members.html +++ b/doxygen/classcaffe_1_1DataReader_1_1Body-members.html @@ -86,7 +86,7 @@ diff --git a/doxygen/classcaffe_1_1DataReader_1_1Body.html b/doxygen/classcaffe_1_1DataReader_1_1Body.html index 906d22509ec..fb271c1a6d2 100644 --- a/doxygen/classcaffe_1_1DataReader_1_1Body.html +++ b/doxygen/classcaffe_1_1DataReader_1_1Body.html @@ -134,7 +134,7 @@ diff --git a/doxygen/classcaffe_1_1DataReader_1_1QueuePair-members.html b/doxygen/classcaffe_1_1DataReader_1_1QueuePair-members.html index b000fdf1073..0dc6ef18154 100644 --- a/doxygen/classcaffe_1_1DataReader_1_1QueuePair-members.html +++ b/doxygen/classcaffe_1_1DataReader_1_1QueuePair-members.html @@ -77,7 +77,7 @@ diff --git a/doxygen/classcaffe_1_1DataReader_1_1QueuePair.html b/doxygen/classcaffe_1_1DataReader_1_1QueuePair.html index c27c9a1f218..ed936eafbc3 100644 --- a/doxygen/classcaffe_1_1DataReader_1_1QueuePair.html +++ b/doxygen/classcaffe_1_1DataReader_1_1QueuePair.html @@ -96,7 +96,7 @@ diff --git a/doxygen/classcaffe_1_1DataTransformer-members.html b/doxygen/classcaffe_1_1DataTransformer-members.html index 7c20be89fef..84e526f3ed4 100644 --- a/doxygen/classcaffe_1_1DataTransformer-members.html +++ b/doxygen/classcaffe_1_1DataTransformer-members.html @@ -87,7 +87,7 @@ diff --git a/doxygen/classcaffe_1_1DataTransformer.html b/doxygen/classcaffe_1_1DataTransformer.html index abb31b65279..40636793806 100644 --- a/doxygen/classcaffe_1_1DataTransformer.html +++ b/doxygen/classcaffe_1_1DataTransformer.html @@ -353,7 +353,7 @@

      diff --git a/doxygen/classcaffe_1_1DeconvolutionLayer-members.html b/doxygen/classcaffe_1_1DeconvolutionLayer-members.html index 545f4400268..92243f63d46 100644 --- a/doxygen/classcaffe_1_1DeconvolutionLayer-members.html +++ b/doxygen/classcaffe_1_1DeconvolutionLayer-members.html @@ -146,7 +146,7 @@ diff --git a/doxygen/classcaffe_1_1DeconvolutionLayer.html b/doxygen/classcaffe_1_1DeconvolutionLayer.html index 852dfadf54d..aabbb7b5cf0 100644 --- a/doxygen/classcaffe_1_1DeconvolutionLayer.html +++ b/doxygen/classcaffe_1_1DeconvolutionLayer.html @@ -347,7 +347,7 @@ diff --git a/doxygen/classcaffe_1_1DevicePair-members.html b/doxygen/classcaffe_1_1DevicePair-members.html index 20cfe914bbe..20ccc9c5f37 100644 --- a/doxygen/classcaffe_1_1DevicePair-members.html +++ b/doxygen/classcaffe_1_1DevicePair-members.html @@ -78,7 +78,7 @@ diff --git a/doxygen/classcaffe_1_1DevicePair.html b/doxygen/classcaffe_1_1DevicePair.html index 713c58a0b68..88beb911be3 100644 --- a/doxygen/classcaffe_1_1DevicePair.html +++ b/doxygen/classcaffe_1_1DevicePair.html @@ -106,7 +106,7 @@ diff --git a/doxygen/classcaffe_1_1DropoutLayer-members.html b/doxygen/classcaffe_1_1DropoutLayer-members.html index f8c0e9150a6..fbb484e34ec 100644 --- a/doxygen/classcaffe_1_1DropoutLayer-members.html +++ b/doxygen/classcaffe_1_1DropoutLayer-members.html @@ -116,7 +116,7 @@ diff --git a/doxygen/classcaffe_1_1DropoutLayer.html b/doxygen/classcaffe_1_1DropoutLayer.html index 2589945e16b..5bee7c7bf21 100644 --- a/doxygen/classcaffe_1_1DropoutLayer.html +++ b/doxygen/classcaffe_1_1DropoutLayer.html @@ -452,7 +452,7 @@

      diff --git a/doxygen/classcaffe_1_1DummyDataLayer-members.html b/doxygen/classcaffe_1_1DummyDataLayer-members.html index 86fa527087a..9fafaf0791b 100644 --- a/doxygen/classcaffe_1_1DummyDataLayer-members.html +++ b/doxygen/classcaffe_1_1DummyDataLayer-members.html @@ -113,7 +113,7 @@ diff --git a/doxygen/classcaffe_1_1DummyDataLayer.html b/doxygen/classcaffe_1_1DummyDataLayer.html index a6bc7ae123f..aa34615054e 100644 --- a/doxygen/classcaffe_1_1DummyDataLayer.html +++ b/doxygen/classcaffe_1_1DummyDataLayer.html @@ -402,7 +402,7 @@

      diff --git a/doxygen/classcaffe_1_1ELULayer-members.html b/doxygen/classcaffe_1_1ELULayer-members.html index 6d7a451638f..f287637df94 100644 --- a/doxygen/classcaffe_1_1ELULayer-members.html +++ b/doxygen/classcaffe_1_1ELULayer-members.html @@ -112,7 +112,7 @@ diff --git a/doxygen/classcaffe_1_1ELULayer.html b/doxygen/classcaffe_1_1ELULayer.html index 78cf6e844a5..e7cafe56473 100644 --- a/doxygen/classcaffe_1_1ELULayer.html +++ b/doxygen/classcaffe_1_1ELULayer.html @@ -384,7 +384,7 @@

      diff --git a/doxygen/classcaffe_1_1EltwiseLayer-members.html b/doxygen/classcaffe_1_1EltwiseLayer-members.html index c7049d09379..07d8721f8aa 100644 --- a/doxygen/classcaffe_1_1EltwiseLayer-members.html +++ b/doxygen/classcaffe_1_1EltwiseLayer-members.html @@ -115,7 +115,7 @@ diff --git a/doxygen/classcaffe_1_1EltwiseLayer.html b/doxygen/classcaffe_1_1EltwiseLayer.html index d48810d2232..918ac931d2d 100644 --- a/doxygen/classcaffe_1_1EltwiseLayer.html +++ b/doxygen/classcaffe_1_1EltwiseLayer.html @@ -408,7 +408,7 @@

      diff --git a/doxygen/classcaffe_1_1EmbedLayer-members.html b/doxygen/classcaffe_1_1EmbedLayer-members.html index 8ff2ebd1894..3004c3b8a3e 100644 --- a/doxygen/classcaffe_1_1EmbedLayer-members.html +++ b/doxygen/classcaffe_1_1EmbedLayer-members.html @@ -116,7 +116,7 @@ diff --git a/doxygen/classcaffe_1_1EmbedLayer.html b/doxygen/classcaffe_1_1EmbedLayer.html index 22e7c7ee6b1..8bdd02d704a 100644 --- a/doxygen/classcaffe_1_1EmbedLayer.html +++ b/doxygen/classcaffe_1_1EmbedLayer.html @@ -411,7 +411,7 @@

      diff --git a/doxygen/classcaffe_1_1EuclideanLossLayer-members.html b/doxygen/classcaffe_1_1EuclideanLossLayer-members.html index 0511b230e6a..37762104910 100644 --- a/doxygen/classcaffe_1_1EuclideanLossLayer-members.html +++ b/doxygen/classcaffe_1_1EuclideanLossLayer-members.html @@ -113,7 +113,7 @@ diff --git a/doxygen/classcaffe_1_1EuclideanLossLayer.html b/doxygen/classcaffe_1_1EuclideanLossLayer.html index d8aab6be767..a91b6dda3a6 100644 --- a/doxygen/classcaffe_1_1EuclideanLossLayer.html +++ b/doxygen/classcaffe_1_1EuclideanLossLayer.html @@ -456,7 +456,7 @@

      diff --git a/doxygen/classcaffe_1_1ExpLayer-members.html b/doxygen/classcaffe_1_1ExpLayer-members.html index 183cd29d90e..3fc5b9b8e9e 100644 --- a/doxygen/classcaffe_1_1ExpLayer-members.html +++ b/doxygen/classcaffe_1_1ExpLayer-members.html @@ -114,7 +114,7 @@ diff --git a/doxygen/classcaffe_1_1ExpLayer.html b/doxygen/classcaffe_1_1ExpLayer.html index d2bd7294afd..2e57de9e2a1 100644 --- a/doxygen/classcaffe_1_1ExpLayer.html +++ b/doxygen/classcaffe_1_1ExpLayer.html @@ -443,7 +443,7 @@

      diff --git a/doxygen/classcaffe_1_1Filler-members.html b/doxygen/classcaffe_1_1Filler-members.html index 28f2d1e011f..afeff752215 100644 --- a/doxygen/classcaffe_1_1Filler-members.html +++ b/doxygen/classcaffe_1_1Filler-members.html @@ -76,7 +76,7 @@ diff --git a/doxygen/classcaffe_1_1Filler.html b/doxygen/classcaffe_1_1Filler.html index 1544e87c2ec..1450c5643e7 100644 --- a/doxygen/classcaffe_1_1Filler.html +++ b/doxygen/classcaffe_1_1Filler.html @@ -117,7 +117,7 @@ diff --git a/doxygen/classcaffe_1_1FilterLayer-members.html b/doxygen/classcaffe_1_1FilterLayer-members.html index c79fd100c92..e8c1cd1bc60 100644 --- a/doxygen/classcaffe_1_1FilterLayer-members.html +++ b/doxygen/classcaffe_1_1FilterLayer-members.html @@ -113,7 +113,7 @@ diff --git a/doxygen/classcaffe_1_1FilterLayer.html b/doxygen/classcaffe_1_1FilterLayer.html index 7dcb9d11569..aac2f38e3f6 100644 --- a/doxygen/classcaffe_1_1FilterLayer.html +++ b/doxygen/classcaffe_1_1FilterLayer.html @@ -510,7 +510,7 @@

      diff --git a/doxygen/classcaffe_1_1FlattenLayer-members.html b/doxygen/classcaffe_1_1FlattenLayer-members.html index b25108f95d9..a8e68119ac5 100644 --- a/doxygen/classcaffe_1_1FlattenLayer-members.html +++ b/doxygen/classcaffe_1_1FlattenLayer-members.html @@ -111,7 +111,7 @@ diff --git a/doxygen/classcaffe_1_1FlattenLayer.html b/doxygen/classcaffe_1_1FlattenLayer.html index 122c74d827e..7593d4527f7 100644 --- a/doxygen/classcaffe_1_1FlattenLayer.html +++ b/doxygen/classcaffe_1_1FlattenLayer.html @@ -451,7 +451,7 @@

      diff --git a/doxygen/classcaffe_1_1GPUParams-members.html b/doxygen/classcaffe_1_1GPUParams-members.html index aad49b1c853..a8bdcfb38c0 100644 --- a/doxygen/classcaffe_1_1GPUParams-members.html +++ b/doxygen/classcaffe_1_1GPUParams-members.html @@ -84,7 +84,7 @@ diff --git a/doxygen/classcaffe_1_1GPUParams.html b/doxygen/classcaffe_1_1GPUParams.html index 7ce2d11c57c..aed3f79efc6 100644 --- a/doxygen/classcaffe_1_1GPUParams.html +++ b/doxygen/classcaffe_1_1GPUParams.html @@ -126,7 +126,7 @@ diff --git a/doxygen/classcaffe_1_1GaussianFiller-members.html b/doxygen/classcaffe_1_1GaussianFiller-members.html index 4a0ff9c6f14..d5106b034b5 100644 --- a/doxygen/classcaffe_1_1GaussianFiller-members.html +++ b/doxygen/classcaffe_1_1GaussianFiller-members.html @@ -78,7 +78,7 @@ diff --git a/doxygen/classcaffe_1_1GaussianFiller.html b/doxygen/classcaffe_1_1GaussianFiller.html index 2b029ee10cc..5e2435fa2d3 100644 --- a/doxygen/classcaffe_1_1GaussianFiller.html +++ b/doxygen/classcaffe_1_1GaussianFiller.html @@ -119,7 +119,7 @@ diff --git a/doxygen/classcaffe_1_1HDF5DataLayer-members.html b/doxygen/classcaffe_1_1HDF5DataLayer-members.html index 2c6b13af16c..f67a3d744c6 100644 --- a/doxygen/classcaffe_1_1HDF5DataLayer-members.html +++ b/doxygen/classcaffe_1_1HDF5DataLayer-members.html @@ -120,7 +120,7 @@ diff --git a/doxygen/classcaffe_1_1HDF5DataLayer.html b/doxygen/classcaffe_1_1HDF5DataLayer.html index da740a21ceb..761f6f732e3 100644 --- a/doxygen/classcaffe_1_1HDF5DataLayer.html +++ b/doxygen/classcaffe_1_1HDF5DataLayer.html @@ -420,7 +420,7 @@

      diff --git a/doxygen/classcaffe_1_1HDF5OutputLayer-members.html b/doxygen/classcaffe_1_1HDF5OutputLayer-members.html index e374759c794..3d7ebf60278 100644 --- a/doxygen/classcaffe_1_1HDF5OutputLayer-members.html +++ b/doxygen/classcaffe_1_1HDF5OutputLayer-members.html @@ -119,7 +119,7 @@ diff --git a/doxygen/classcaffe_1_1HDF5OutputLayer.html b/doxygen/classcaffe_1_1HDF5OutputLayer.html index 46993185618..096592879b1 100644 --- a/doxygen/classcaffe_1_1HDF5OutputLayer.html +++ b/doxygen/classcaffe_1_1HDF5OutputLayer.html @@ -417,7 +417,7 @@

      diff --git a/doxygen/classcaffe_1_1HingeLossLayer-members.html b/doxygen/classcaffe_1_1HingeLossLayer-members.html index 619d5b9ec40..35cff4a6267 100644 --- a/doxygen/classcaffe_1_1HingeLossLayer-members.html +++ b/doxygen/classcaffe_1_1HingeLossLayer-members.html @@ -112,7 +112,7 @@ diff --git a/doxygen/classcaffe_1_1HingeLossLayer.html b/doxygen/classcaffe_1_1HingeLossLayer.html index 3fa9ba71a95..4c24523afda 100644 --- a/doxygen/classcaffe_1_1HingeLossLayer.html +++ b/doxygen/classcaffe_1_1HingeLossLayer.html @@ -369,7 +369,7 @@

      diff --git a/doxygen/classcaffe_1_1Im2colLayer-members.html b/doxygen/classcaffe_1_1Im2colLayer-members.html index 59c6bba1e48..ce3f8136aef 100644 --- a/doxygen/classcaffe_1_1Im2colLayer-members.html +++ b/doxygen/classcaffe_1_1Im2colLayer-members.html @@ -122,7 +122,7 @@ diff --git a/doxygen/classcaffe_1_1Im2colLayer.html b/doxygen/classcaffe_1_1Im2colLayer.html index 8e29a5c32da..13363851977 100644 --- a/doxygen/classcaffe_1_1Im2colLayer.html +++ b/doxygen/classcaffe_1_1Im2colLayer.html @@ -433,7 +433,7 @@

      diff --git a/doxygen/classcaffe_1_1ImageDataLayer-members.html b/doxygen/classcaffe_1_1ImageDataLayer-members.html index 71ddd35632f..6f332ab1eb1 100644 --- a/doxygen/classcaffe_1_1ImageDataLayer-members.html +++ b/doxygen/classcaffe_1_1ImageDataLayer-members.html @@ -135,7 +135,7 @@ diff --git a/doxygen/classcaffe_1_1ImageDataLayer.html b/doxygen/classcaffe_1_1ImageDataLayer.html index eac018894c5..134c191184a 100644 --- a/doxygen/classcaffe_1_1ImageDataLayer.html +++ b/doxygen/classcaffe_1_1ImageDataLayer.html @@ -370,7 +370,7 @@

      diff --git a/doxygen/classcaffe_1_1InfogainLossLayer-members.html b/doxygen/classcaffe_1_1InfogainLossLayer-members.html index 3ae81969e52..4fe6bace7e2 100644 --- a/doxygen/classcaffe_1_1InfogainLossLayer-members.html +++ b/doxygen/classcaffe_1_1InfogainLossLayer-members.html @@ -113,7 +113,7 @@ diff --git a/doxygen/classcaffe_1_1InfogainLossLayer.html b/doxygen/classcaffe_1_1InfogainLossLayer.html index c3f47a61d76..b2476f6cea4 100644 --- a/doxygen/classcaffe_1_1InfogainLossLayer.html +++ b/doxygen/classcaffe_1_1InfogainLossLayer.html @@ -572,7 +572,7 @@

      diff --git a/doxygen/classcaffe_1_1InnerProductLayer-members.html b/doxygen/classcaffe_1_1InnerProductLayer-members.html index 8c91ddc0021..a8bcf335684 100644 --- a/doxygen/classcaffe_1_1InnerProductLayer-members.html +++ b/doxygen/classcaffe_1_1InnerProductLayer-members.html @@ -117,7 +117,7 @@ diff --git a/doxygen/classcaffe_1_1InnerProductLayer.html b/doxygen/classcaffe_1_1InnerProductLayer.html index 73a989b88e7..b7e8f10fdc1 100644 --- a/doxygen/classcaffe_1_1InnerProductLayer.html +++ b/doxygen/classcaffe_1_1InnerProductLayer.html @@ -415,7 +415,7 @@

      diff --git a/doxygen/classcaffe_1_1InputLayer-members.html b/doxygen/classcaffe_1_1InputLayer-members.html index d100666d91b..f90134ff06f 100644 --- a/doxygen/classcaffe_1_1InputLayer-members.html +++ b/doxygen/classcaffe_1_1InputLayer-members.html @@ -111,7 +111,7 @@ diff --git a/doxygen/classcaffe_1_1InputLayer.html b/doxygen/classcaffe_1_1InputLayer.html index 45659ada915..d8481eb9cd6 100644 --- a/doxygen/classcaffe_1_1InputLayer.html +++ b/doxygen/classcaffe_1_1InputLayer.html @@ -395,7 +395,7 @@

      diff --git a/doxygen/classcaffe_1_1InternalThread-members.html b/doxygen/classcaffe_1_1InternalThread-members.html index 003b0f80de5..6954d69212f 100644 --- a/doxygen/classcaffe_1_1InternalThread-members.html +++ b/doxygen/classcaffe_1_1InternalThread-members.html @@ -79,7 +79,7 @@ diff --git a/doxygen/classcaffe_1_1InternalThread.html b/doxygen/classcaffe_1_1InternalThread.html index 5143248eb73..69b5b717b32 100644 --- a/doxygen/classcaffe_1_1InternalThread.html +++ b/doxygen/classcaffe_1_1InternalThread.html @@ -152,7 +152,7 @@

      diff --git a/doxygen/classcaffe_1_1LRNLayer-members.html b/doxygen/classcaffe_1_1LRNLayer-members.html index debb144d9c1..4cfe7dbecb8 100644 --- a/doxygen/classcaffe_1_1LRNLayer-members.html +++ b/doxygen/classcaffe_1_1LRNLayer-members.html @@ -143,7 +143,7 @@ diff --git a/doxygen/classcaffe_1_1LRNLayer.html b/doxygen/classcaffe_1_1LRNLayer.html index 647e9c798cb..30d67de6eb9 100644 --- a/doxygen/classcaffe_1_1LRNLayer.html +++ b/doxygen/classcaffe_1_1LRNLayer.html @@ -492,7 +492,7 @@

      diff --git a/doxygen/classcaffe_1_1LSTMLayer-members.html b/doxygen/classcaffe_1_1LSTMLayer-members.html index 399755fb207..dc3d84d3c8b 100644 --- a/doxygen/classcaffe_1_1LSTMLayer-members.html +++ b/doxygen/classcaffe_1_1LSTMLayer-members.html @@ -130,7 +130,7 @@ diff --git a/doxygen/classcaffe_1_1LSTMLayer.html b/doxygen/classcaffe_1_1LSTMLayer.html index ce4d47af03d..539c7504b83 100644 --- a/doxygen/classcaffe_1_1LSTMLayer.html +++ b/doxygen/classcaffe_1_1LSTMLayer.html @@ -304,7 +304,7 @@ diff --git a/doxygen/classcaffe_1_1LSTMUnitLayer-members.html b/doxygen/classcaffe_1_1LSTMUnitLayer-members.html index 76d2fb4abe5..1dbec9fb0cf 100644 --- a/doxygen/classcaffe_1_1LSTMUnitLayer-members.html +++ b/doxygen/classcaffe_1_1LSTMUnitLayer-members.html @@ -113,7 +113,7 @@ diff --git a/doxygen/classcaffe_1_1LSTMUnitLayer.html b/doxygen/classcaffe_1_1LSTMUnitLayer.html index 439474d1053..8b7d97cb858 100644 --- a/doxygen/classcaffe_1_1LSTMUnitLayer.html +++ b/doxygen/classcaffe_1_1LSTMUnitLayer.html @@ -503,7 +503,7 @@

      diff --git a/doxygen/classcaffe_1_1Layer-members.html b/doxygen/classcaffe_1_1Layer-members.html index 3592e5f4b16..0d172129326 100644 --- a/doxygen/classcaffe_1_1Layer-members.html +++ b/doxygen/classcaffe_1_1Layer-members.html @@ -110,7 +110,7 @@ diff --git a/doxygen/classcaffe_1_1Layer.html b/doxygen/classcaffe_1_1Layer.html index fce2b75557e..c7018a4448b 100644 --- a/doxygen/classcaffe_1_1Layer.html +++ b/doxygen/classcaffe_1_1Layer.html @@ -1060,7 +1060,7 @@

      diff --git a/doxygen/classcaffe_1_1LayerRegisterer-members.html b/doxygen/classcaffe_1_1LayerRegisterer-members.html index 14decc163f3..ae3a99cb19b 100644 --- a/doxygen/classcaffe_1_1LayerRegisterer-members.html +++ b/doxygen/classcaffe_1_1LayerRegisterer-members.html @@ -73,7 +73,7 @@ diff --git a/doxygen/classcaffe_1_1LayerRegisterer.html b/doxygen/classcaffe_1_1LayerRegisterer.html index 2b4c52a79c7..262fab43223 100644 --- a/doxygen/classcaffe_1_1LayerRegisterer.html +++ b/doxygen/classcaffe_1_1LayerRegisterer.html @@ -82,7 +82,7 @@ diff --git a/doxygen/classcaffe_1_1LayerRegistry-members.html b/doxygen/classcaffe_1_1LayerRegistry-members.html index ca276501386..a003fc56396 100644 --- a/doxygen/classcaffe_1_1LayerRegistry-members.html +++ b/doxygen/classcaffe_1_1LayerRegistry-members.html @@ -78,7 +78,7 @@ diff --git a/doxygen/classcaffe_1_1LayerRegistry.html b/doxygen/classcaffe_1_1LayerRegistry.html index 6427448b2f5..9a2b0986725 100644 --- a/doxygen/classcaffe_1_1LayerRegistry.html +++ b/doxygen/classcaffe_1_1LayerRegistry.html @@ -101,7 +101,7 @@ diff --git a/doxygen/classcaffe_1_1LogLayer-members.html b/doxygen/classcaffe_1_1LogLayer-members.html index f149fb3cd7b..bb70e5f81cc 100644 --- a/doxygen/classcaffe_1_1LogLayer-members.html +++ b/doxygen/classcaffe_1_1LogLayer-members.html @@ -116,7 +116,7 @@ diff --git a/doxygen/classcaffe_1_1LogLayer.html b/doxygen/classcaffe_1_1LogLayer.html index ab80557406a..d0c76337693 100644 --- a/doxygen/classcaffe_1_1LogLayer.html +++ b/doxygen/classcaffe_1_1LogLayer.html @@ -449,7 +449,7 @@

      diff --git a/doxygen/classcaffe_1_1LossLayer-members.html b/doxygen/classcaffe_1_1LossLayer-members.html index e31b2750faf..dcb35c810fe 100644 --- a/doxygen/classcaffe_1_1LossLayer-members.html +++ b/doxygen/classcaffe_1_1LossLayer-members.html @@ -111,7 +111,7 @@ diff --git a/doxygen/classcaffe_1_1LossLayer.html b/doxygen/classcaffe_1_1LossLayer.html index 1b9c0cc309e..85d4b4ea4cc 100644 --- a/doxygen/classcaffe_1_1LossLayer.html +++ b/doxygen/classcaffe_1_1LossLayer.html @@ -439,7 +439,7 @@

      diff --git a/doxygen/classcaffe_1_1MSRAFiller-members.html b/doxygen/classcaffe_1_1MSRAFiller-members.html index ba808441d6b..696baad8d2d 100644 --- a/doxygen/classcaffe_1_1MSRAFiller-members.html +++ b/doxygen/classcaffe_1_1MSRAFiller-members.html @@ -77,7 +77,7 @@ diff --git a/doxygen/classcaffe_1_1MSRAFiller.html b/doxygen/classcaffe_1_1MSRAFiller.html index 07c0c740588..fbcc3557ac2 100644 --- a/doxygen/classcaffe_1_1MSRAFiller.html +++ b/doxygen/classcaffe_1_1MSRAFiller.html @@ -118,7 +118,7 @@ diff --git a/doxygen/classcaffe_1_1MVNLayer-members.html b/doxygen/classcaffe_1_1MVNLayer-members.html index 4d091a0b289..de99122ecdd 100644 --- a/doxygen/classcaffe_1_1MVNLayer-members.html +++ b/doxygen/classcaffe_1_1MVNLayer-members.html @@ -116,7 +116,7 @@ diff --git a/doxygen/classcaffe_1_1MVNLayer.html b/doxygen/classcaffe_1_1MVNLayer.html index 282728d5837..665fc492385 100644 --- a/doxygen/classcaffe_1_1MVNLayer.html +++ b/doxygen/classcaffe_1_1MVNLayer.html @@ -362,7 +362,7 @@

      diff --git a/doxygen/classcaffe_1_1MemoryDataLayer-members.html b/doxygen/classcaffe_1_1MemoryDataLayer-members.html index 948f1806016..76aa9974526 100644 --- a/doxygen/classcaffe_1_1MemoryDataLayer-members.html +++ b/doxygen/classcaffe_1_1MemoryDataLayer-members.html @@ -135,7 +135,7 @@ diff --git a/doxygen/classcaffe_1_1MemoryDataLayer.html b/doxygen/classcaffe_1_1MemoryDataLayer.html index 6ad0189ab0a..4f6344a6870 100644 --- a/doxygen/classcaffe_1_1MemoryDataLayer.html +++ b/doxygen/classcaffe_1_1MemoryDataLayer.html @@ -371,7 +371,7 @@

      diff --git a/doxygen/classcaffe_1_1MultinomialLogisticLossLayer-members.html b/doxygen/classcaffe_1_1MultinomialLogisticLossLayer-members.html index 383f0fa3e9f..8dc07731990 100644 --- a/doxygen/classcaffe_1_1MultinomialLogisticLossLayer-members.html +++ b/doxygen/classcaffe_1_1MultinomialLogisticLossLayer-members.html @@ -112,7 +112,7 @@ diff --git a/doxygen/classcaffe_1_1MultinomialLogisticLossLayer.html b/doxygen/classcaffe_1_1MultinomialLogisticLossLayer.html index dc08724950a..4af1eea1ec6 100644 --- a/doxygen/classcaffe_1_1MultinomialLogisticLossLayer.html +++ b/doxygen/classcaffe_1_1MultinomialLogisticLossLayer.html @@ -419,7 +419,7 @@

      diff --git a/doxygen/classcaffe_1_1NesterovSolver-members.html b/doxygen/classcaffe_1_1NesterovSolver-members.html index 3e3d3df7c19..65eba5a5835 100644 --- a/doxygen/classcaffe_1_1NesterovSolver-members.html +++ b/doxygen/classcaffe_1_1NesterovSolver-members.html @@ -134,7 +134,7 @@ diff --git a/doxygen/classcaffe_1_1NesterovSolver.html b/doxygen/classcaffe_1_1NesterovSolver.html index 3cf9f680e6d..66eb23e9b39 100644 --- a/doxygen/classcaffe_1_1NesterovSolver.html +++ b/doxygen/classcaffe_1_1NesterovSolver.html @@ -287,7 +287,7 @@ diff --git a/doxygen/classcaffe_1_1Net-members.html b/doxygen/classcaffe_1_1Net-members.html index f684417d0c4..bcf07093c2a 100644 --- a/doxygen/classcaffe_1_1Net-members.html +++ b/doxygen/classcaffe_1_1Net-members.html @@ -175,7 +175,7 @@ diff --git a/doxygen/classcaffe_1_1Net.html b/doxygen/classcaffe_1_1Net.html index 62bfd95ef33..53de8146d57 100644 --- a/doxygen/classcaffe_1_1Net.html +++ b/doxygen/classcaffe_1_1Net.html @@ -620,7 +620,7 @@

      diff --git a/doxygen/classcaffe_1_1NeuronLayer-members.html b/doxygen/classcaffe_1_1NeuronLayer-members.html index e178cac0115..18c5e05e102 100644 --- a/doxygen/classcaffe_1_1NeuronLayer-members.html +++ b/doxygen/classcaffe_1_1NeuronLayer-members.html @@ -111,7 +111,7 @@ diff --git a/doxygen/classcaffe_1_1NeuronLayer.html b/doxygen/classcaffe_1_1NeuronLayer.html index 08b8e4977e5..c05a22fd42d 100644 --- a/doxygen/classcaffe_1_1NeuronLayer.html +++ b/doxygen/classcaffe_1_1NeuronLayer.html @@ -358,7 +358,7 @@

      diff --git a/doxygen/classcaffe_1_1P2PSync-members.html b/doxygen/classcaffe_1_1P2PSync-members.html index e49ec30f1ee..d22f29cbf89 100644 --- a/doxygen/classcaffe_1_1P2PSync-members.html +++ b/doxygen/classcaffe_1_1P2PSync-members.html @@ -105,7 +105,7 @@ diff --git a/doxygen/classcaffe_1_1P2PSync.html b/doxygen/classcaffe_1_1P2PSync.html index ebb212f150d..6e8594c4332 100644 --- a/doxygen/classcaffe_1_1P2PSync.html +++ b/doxygen/classcaffe_1_1P2PSync.html @@ -188,7 +188,7 @@ diff --git a/doxygen/classcaffe_1_1PReLULayer-members.html b/doxygen/classcaffe_1_1PReLULayer-members.html index d5a11404557..7365c443456 100644 --- a/doxygen/classcaffe_1_1PReLULayer-members.html +++ b/doxygen/classcaffe_1_1PReLULayer-members.html @@ -116,7 +116,7 @@ diff --git a/doxygen/classcaffe_1_1PReLULayer.html b/doxygen/classcaffe_1_1PReLULayer.html index 09226e444ea..ffc513636e7 100644 --- a/doxygen/classcaffe_1_1PReLULayer.html +++ b/doxygen/classcaffe_1_1PReLULayer.html @@ -498,7 +498,7 @@

      diff --git a/doxygen/classcaffe_1_1ParameterLayer-members.html b/doxygen/classcaffe_1_1ParameterLayer-members.html index 6894f8fce2f..c076efe3eed 100644 --- a/doxygen/classcaffe_1_1ParameterLayer-members.html +++ b/doxygen/classcaffe_1_1ParameterLayer-members.html @@ -111,7 +111,7 @@ diff --git a/doxygen/classcaffe_1_1ParameterLayer.html b/doxygen/classcaffe_1_1ParameterLayer.html index 585e06095f1..e0f47261421 100644 --- a/doxygen/classcaffe_1_1ParameterLayer.html +++ b/doxygen/classcaffe_1_1ParameterLayer.html @@ -383,7 +383,7 @@

      diff --git a/doxygen/classcaffe_1_1Params-members.html b/doxygen/classcaffe_1_1Params-members.html index a7bcd1410cc..367cf4f9c1b 100644 --- a/doxygen/classcaffe_1_1Params-members.html +++ b/doxygen/classcaffe_1_1Params-members.html @@ -81,7 +81,7 @@ diff --git a/doxygen/classcaffe_1_1Params.html b/doxygen/classcaffe_1_1Params.html index ae109b17611..e6adda148ea 100644 --- a/doxygen/classcaffe_1_1Params.html +++ b/doxygen/classcaffe_1_1Params.html @@ -122,7 +122,7 @@ diff --git a/doxygen/classcaffe_1_1PoolingLayer-members.html b/doxygen/classcaffe_1_1PoolingLayer-members.html index 8f182cc2295..7e34968fca8 100644 --- a/doxygen/classcaffe_1_1PoolingLayer-members.html +++ b/doxygen/classcaffe_1_1PoolingLayer-members.html @@ -125,7 +125,7 @@ diff --git a/doxygen/classcaffe_1_1PoolingLayer.html b/doxygen/classcaffe_1_1PoolingLayer.html index ff59a2048b1..db02a00c169 100644 --- a/doxygen/classcaffe_1_1PoolingLayer.html +++ b/doxygen/classcaffe_1_1PoolingLayer.html @@ -470,7 +470,7 @@

      diff --git a/doxygen/classcaffe_1_1PositiveUnitballFiller-members.html b/doxygen/classcaffe_1_1PositiveUnitballFiller-members.html index 60bafad5b6c..d0a9a37ec19 100644 --- a/doxygen/classcaffe_1_1PositiveUnitballFiller-members.html +++ b/doxygen/classcaffe_1_1PositiveUnitballFiller-members.html @@ -77,7 +77,7 @@ diff --git a/doxygen/classcaffe_1_1PositiveUnitballFiller.html b/doxygen/classcaffe_1_1PositiveUnitballFiller.html index 62b655acbde..daa1a83bd61 100644 --- a/doxygen/classcaffe_1_1PositiveUnitballFiller.html +++ b/doxygen/classcaffe_1_1PositiveUnitballFiller.html @@ -115,7 +115,7 @@ diff --git a/doxygen/classcaffe_1_1PowerLayer-members.html b/doxygen/classcaffe_1_1PowerLayer-members.html index e9b0db79d98..f314ad7ccd4 100644 --- a/doxygen/classcaffe_1_1PowerLayer-members.html +++ b/doxygen/classcaffe_1_1PowerLayer-members.html @@ -116,7 +116,7 @@ diff --git a/doxygen/classcaffe_1_1PowerLayer.html b/doxygen/classcaffe_1_1PowerLayer.html index df57df31e6c..61689b5971e 100644 --- a/doxygen/classcaffe_1_1PowerLayer.html +++ b/doxygen/classcaffe_1_1PowerLayer.html @@ -453,7 +453,7 @@

      diff --git a/doxygen/classcaffe_1_1PythonLayer-members.html b/doxygen/classcaffe_1_1PythonLayer-members.html index c89a3b9354a..2eb0dbb0be6 100644 --- a/doxygen/classcaffe_1_1PythonLayer-members.html +++ b/doxygen/classcaffe_1_1PythonLayer-members.html @@ -111,7 +111,7 @@ diff --git a/doxygen/classcaffe_1_1PythonLayer.html b/doxygen/classcaffe_1_1PythonLayer.html index 062c7dbb485..96c18a7c85a 100644 --- a/doxygen/classcaffe_1_1PythonLayer.html +++ b/doxygen/classcaffe_1_1PythonLayer.html @@ -319,7 +319,7 @@

      diff --git a/doxygen/classcaffe_1_1RMSPropSolver-members.html b/doxygen/classcaffe_1_1RMSPropSolver-members.html index d468c510d2c..bbf88d49ece 100644 --- a/doxygen/classcaffe_1_1RMSPropSolver-members.html +++ b/doxygen/classcaffe_1_1RMSPropSolver-members.html @@ -135,7 +135,7 @@ diff --git a/doxygen/classcaffe_1_1RMSPropSolver.html b/doxygen/classcaffe_1_1RMSPropSolver.html index c5e72e9033d..bcbb4d7d5bb 100644 --- a/doxygen/classcaffe_1_1RMSPropSolver.html +++ b/doxygen/classcaffe_1_1RMSPropSolver.html @@ -290,7 +290,7 @@ diff --git a/doxygen/classcaffe_1_1RNNLayer-members.html b/doxygen/classcaffe_1_1RNNLayer-members.html index 0d5862d9132..75111cfab3c 100644 --- a/doxygen/classcaffe_1_1RNNLayer-members.html +++ b/doxygen/classcaffe_1_1RNNLayer-members.html @@ -130,7 +130,7 @@ diff --git a/doxygen/classcaffe_1_1RNNLayer.html b/doxygen/classcaffe_1_1RNNLayer.html index 13a5aa32862..1db0d0ebeca 100644 --- a/doxygen/classcaffe_1_1RNNLayer.html +++ b/doxygen/classcaffe_1_1RNNLayer.html @@ -300,7 +300,7 @@ diff --git a/doxygen/classcaffe_1_1ReLULayer-members.html b/doxygen/classcaffe_1_1ReLULayer-members.html index 315a8060be8..e61fc7060f6 100644 --- a/doxygen/classcaffe_1_1ReLULayer-members.html +++ b/doxygen/classcaffe_1_1ReLULayer-members.html @@ -112,7 +112,7 @@ diff --git a/doxygen/classcaffe_1_1ReLULayer.html b/doxygen/classcaffe_1_1ReLULayer.html index 654776a9ff2..5ed4e3020f5 100644 --- a/doxygen/classcaffe_1_1ReLULayer.html +++ b/doxygen/classcaffe_1_1ReLULayer.html @@ -384,7 +384,7 @@

      diff --git a/doxygen/classcaffe_1_1RecurrentLayer-members.html b/doxygen/classcaffe_1_1RecurrentLayer-members.html index 00120a2e574..e45d6b30959 100644 --- a/doxygen/classcaffe_1_1RecurrentLayer-members.html +++ b/doxygen/classcaffe_1_1RecurrentLayer-members.html @@ -129,7 +129,7 @@ diff --git a/doxygen/classcaffe_1_1RecurrentLayer.html b/doxygen/classcaffe_1_1RecurrentLayer.html index c9e1454ff08..3a3d2b6e8b7 100644 --- a/doxygen/classcaffe_1_1RecurrentLayer.html +++ b/doxygen/classcaffe_1_1RecurrentLayer.html @@ -586,7 +586,7 @@

      diff --git a/doxygen/classcaffe_1_1ReductionLayer-members.html b/doxygen/classcaffe_1_1ReductionLayer-members.html index d57b7104632..d5b9855cbfc 100644 --- a/doxygen/classcaffe_1_1ReductionLayer-members.html +++ b/doxygen/classcaffe_1_1ReductionLayer-members.html @@ -117,7 +117,7 @@ diff --git a/doxygen/classcaffe_1_1ReductionLayer.html b/doxygen/classcaffe_1_1ReductionLayer.html index 446c7b29aa0..ea0e958062b 100644 --- a/doxygen/classcaffe_1_1ReductionLayer.html +++ b/doxygen/classcaffe_1_1ReductionLayer.html @@ -420,7 +420,7 @@

      diff --git a/doxygen/classcaffe_1_1ReshapeLayer-members.html b/doxygen/classcaffe_1_1ReshapeLayer-members.html index cddcd8a8bd8..4531dffdca5 100644 --- a/doxygen/classcaffe_1_1ReshapeLayer-members.html +++ b/doxygen/classcaffe_1_1ReshapeLayer-members.html @@ -114,7 +114,7 @@ diff --git a/doxygen/classcaffe_1_1ReshapeLayer.html b/doxygen/classcaffe_1_1ReshapeLayer.html index a099c4baf23..69461006c96 100644 --- a/doxygen/classcaffe_1_1ReshapeLayer.html +++ b/doxygen/classcaffe_1_1ReshapeLayer.html @@ -397,7 +397,7 @@

      diff --git a/doxygen/classcaffe_1_1SGDSolver-members.html b/doxygen/classcaffe_1_1SGDSolver-members.html index fdc9837a323..88415bbee9c 100644 --- a/doxygen/classcaffe_1_1SGDSolver-members.html +++ b/doxygen/classcaffe_1_1SGDSolver-members.html @@ -131,7 +131,7 @@ diff --git a/doxygen/classcaffe_1_1SGDSolver.html b/doxygen/classcaffe_1_1SGDSolver.html index ddce89e5eff..0e689a039af 100644 --- a/doxygen/classcaffe_1_1SGDSolver.html +++ b/doxygen/classcaffe_1_1SGDSolver.html @@ -290,7 +290,7 @@ diff --git a/doxygen/classcaffe_1_1SPPLayer-members.html b/doxygen/classcaffe_1_1SPPLayer-members.html index a37a9a1c8f5..85507262d39 100644 --- a/doxygen/classcaffe_1_1SPPLayer-members.html +++ b/doxygen/classcaffe_1_1SPPLayer-members.html @@ -133,7 +133,7 @@ diff --git a/doxygen/classcaffe_1_1SPPLayer.html b/doxygen/classcaffe_1_1SPPLayer.html index a47a9443141..58d06c977ce 100644 --- a/doxygen/classcaffe_1_1SPPLayer.html +++ b/doxygen/classcaffe_1_1SPPLayer.html @@ -472,7 +472,7 @@

      diff --git a/doxygen/classcaffe_1_1ScaleLayer-members.html b/doxygen/classcaffe_1_1ScaleLayer-members.html index 89c27d61778..5b52528d887 100644 --- a/doxygen/classcaffe_1_1ScaleLayer-members.html +++ b/doxygen/classcaffe_1_1ScaleLayer-members.html @@ -122,7 +122,7 @@ diff --git a/doxygen/classcaffe_1_1ScaleLayer.html b/doxygen/classcaffe_1_1ScaleLayer.html index af05d9212ee..f5804bf8134 100644 --- a/doxygen/classcaffe_1_1ScaleLayer.html +++ b/doxygen/classcaffe_1_1ScaleLayer.html @@ -514,7 +514,7 @@

      diff --git a/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer-members.html b/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer-members.html index dbd8e7adc77..38f2f63a9b3 100644 --- a/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer-members.html +++ b/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer-members.html @@ -123,7 +123,7 @@ diff --git a/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer.html b/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer.html index 4637913aa37..80793557b65 100644 --- a/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer.html +++ b/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer.html @@ -548,7 +548,7 @@

      diff --git a/doxygen/classcaffe_1_1SigmoidLayer-members.html b/doxygen/classcaffe_1_1SigmoidLayer-members.html index 965b99a9489..4abb3568054 100644 --- a/doxygen/classcaffe_1_1SigmoidLayer-members.html +++ b/doxygen/classcaffe_1_1SigmoidLayer-members.html @@ -112,7 +112,7 @@ diff --git a/doxygen/classcaffe_1_1SigmoidLayer.html b/doxygen/classcaffe_1_1SigmoidLayer.html index 0407e9273a4..b289024b399 100644 --- a/doxygen/classcaffe_1_1SigmoidLayer.html +++ b/doxygen/classcaffe_1_1SigmoidLayer.html @@ -348,7 +348,7 @@

      diff --git a/doxygen/classcaffe_1_1SignalHandler-members.html b/doxygen/classcaffe_1_1SignalHandler-members.html index 6c88d8d619c..a75223e7f0e 100644 --- a/doxygen/classcaffe_1_1SignalHandler-members.html +++ b/doxygen/classcaffe_1_1SignalHandler-members.html @@ -75,7 +75,7 @@ diff --git a/doxygen/classcaffe_1_1SignalHandler.html b/doxygen/classcaffe_1_1SignalHandler.html index ddb40c42d3b..917ee769954 100644 --- a/doxygen/classcaffe_1_1SignalHandler.html +++ b/doxygen/classcaffe_1_1SignalHandler.html @@ -86,7 +86,7 @@ diff --git a/doxygen/classcaffe_1_1SilenceLayer-members.html b/doxygen/classcaffe_1_1SilenceLayer-members.html index 625f33841a9..15d3f3e3383 100644 --- a/doxygen/classcaffe_1_1SilenceLayer-members.html +++ b/doxygen/classcaffe_1_1SilenceLayer-members.html @@ -111,7 +111,7 @@ diff --git a/doxygen/classcaffe_1_1SilenceLayer.html b/doxygen/classcaffe_1_1SilenceLayer.html index 25bd24c04e0..64f3d7e1d8c 100644 --- a/doxygen/classcaffe_1_1SilenceLayer.html +++ b/doxygen/classcaffe_1_1SilenceLayer.html @@ -344,7 +344,7 @@

      diff --git a/doxygen/classcaffe_1_1SliceLayer-members.html b/doxygen/classcaffe_1_1SliceLayer-members.html index 61cd784c2ff..b4470092c05 100644 --- a/doxygen/classcaffe_1_1SliceLayer-members.html +++ b/doxygen/classcaffe_1_1SliceLayer-members.html @@ -116,7 +116,7 @@ diff --git a/doxygen/classcaffe_1_1SliceLayer.html b/doxygen/classcaffe_1_1SliceLayer.html index a1114803edc..4508ce9ecec 100644 --- a/doxygen/classcaffe_1_1SliceLayer.html +++ b/doxygen/classcaffe_1_1SliceLayer.html @@ -411,7 +411,7 @@

      diff --git a/doxygen/classcaffe_1_1SoftmaxLayer-members.html b/doxygen/classcaffe_1_1SoftmaxLayer-members.html index 965a668edf9..bf58e83cdb1 100644 --- a/doxygen/classcaffe_1_1SoftmaxLayer-members.html +++ b/doxygen/classcaffe_1_1SoftmaxLayer-members.html @@ -116,7 +116,7 @@ diff --git a/doxygen/classcaffe_1_1SoftmaxLayer.html b/doxygen/classcaffe_1_1SoftmaxLayer.html index 571c8e07894..181c6a28d6f 100644 --- a/doxygen/classcaffe_1_1SoftmaxLayer.html +++ b/doxygen/classcaffe_1_1SoftmaxLayer.html @@ -363,7 +363,7 @@

      diff --git a/doxygen/classcaffe_1_1SoftmaxWithLossLayer-members.html b/doxygen/classcaffe_1_1SoftmaxWithLossLayer-members.html index 8fbe67121c1..8020eff679b 100644 --- a/doxygen/classcaffe_1_1SoftmaxWithLossLayer-members.html +++ b/doxygen/classcaffe_1_1SoftmaxWithLossLayer-members.html @@ -123,7 +123,7 @@ diff --git a/doxygen/classcaffe_1_1SoftmaxWithLossLayer.html b/doxygen/classcaffe_1_1SoftmaxWithLossLayer.html index 085a1d4d50e..9ad972eccd0 100644 --- a/doxygen/classcaffe_1_1SoftmaxWithLossLayer.html +++ b/doxygen/classcaffe_1_1SoftmaxWithLossLayer.html @@ -626,7 +626,7 @@

      diff --git a/doxygen/classcaffe_1_1Solver-members.html b/doxygen/classcaffe_1_1Solver-members.html index 513b906d09b..a6821dc0d5a 100644 --- a/doxygen/classcaffe_1_1Solver-members.html +++ b/doxygen/classcaffe_1_1Solver-members.html @@ -116,7 +116,7 @@ diff --git a/doxygen/classcaffe_1_1Solver.html b/doxygen/classcaffe_1_1Solver.html index a7393611986..06076398643 100644 --- a/doxygen/classcaffe_1_1Solver.html +++ b/doxygen/classcaffe_1_1Solver.html @@ -250,7 +250,7 @@ diff --git a/doxygen/classcaffe_1_1SolverRegisterer-members.html b/doxygen/classcaffe_1_1SolverRegisterer-members.html index 04a36ab85a0..c7cc17d9ae9 100644 --- a/doxygen/classcaffe_1_1SolverRegisterer-members.html +++ b/doxygen/classcaffe_1_1SolverRegisterer-members.html @@ -73,7 +73,7 @@ diff --git a/doxygen/classcaffe_1_1SolverRegisterer.html b/doxygen/classcaffe_1_1SolverRegisterer.html index 2f5d4d46311..1c61077ca72 100644 --- a/doxygen/classcaffe_1_1SolverRegisterer.html +++ b/doxygen/classcaffe_1_1SolverRegisterer.html @@ -82,7 +82,7 @@ diff --git a/doxygen/classcaffe_1_1SolverRegistry-members.html b/doxygen/classcaffe_1_1SolverRegistry-members.html index 827a9e4c5d5..45c490d2a7b 100644 --- a/doxygen/classcaffe_1_1SolverRegistry-members.html +++ b/doxygen/classcaffe_1_1SolverRegistry-members.html @@ -78,7 +78,7 @@ diff --git a/doxygen/classcaffe_1_1SolverRegistry.html b/doxygen/classcaffe_1_1SolverRegistry.html index e568c375c01..2840b58d8f3 100644 --- a/doxygen/classcaffe_1_1SolverRegistry.html +++ b/doxygen/classcaffe_1_1SolverRegistry.html @@ -101,7 +101,7 @@ diff --git a/doxygen/classcaffe_1_1Solver_1_1Callback-members.html b/doxygen/classcaffe_1_1Solver_1_1Callback-members.html index 557f1e74dda..bd251161e6e 100644 --- a/doxygen/classcaffe_1_1Solver_1_1Callback-members.html +++ b/doxygen/classcaffe_1_1Solver_1_1Callback-members.html @@ -75,7 +75,7 @@ diff --git a/doxygen/classcaffe_1_1Solver_1_1Callback.html b/doxygen/classcaffe_1_1Solver_1_1Callback.html index 74a5e695da9..27cdfe89b2c 100644 --- a/doxygen/classcaffe_1_1Solver_1_1Callback.html +++ b/doxygen/classcaffe_1_1Solver_1_1Callback.html @@ -102,7 +102,7 @@ diff --git a/doxygen/classcaffe_1_1SplitLayer-members.html b/doxygen/classcaffe_1_1SplitLayer-members.html index 0b7d223133a..b0147741b1b 100644 --- a/doxygen/classcaffe_1_1SplitLayer-members.html +++ b/doxygen/classcaffe_1_1SplitLayer-members.html @@ -112,7 +112,7 @@ diff --git a/doxygen/classcaffe_1_1SplitLayer.html b/doxygen/classcaffe_1_1SplitLayer.html index 538ff63f59d..634eb913fc7 100644 --- a/doxygen/classcaffe_1_1SplitLayer.html +++ b/doxygen/classcaffe_1_1SplitLayer.html @@ -349,7 +349,7 @@

      diff --git a/doxygen/classcaffe_1_1SyncedMemory-members.html b/doxygen/classcaffe_1_1SyncedMemory-members.html index d0b733d7dc7..dbf31df3e4c 100644 --- a/doxygen/classcaffe_1_1SyncedMemory-members.html +++ b/doxygen/classcaffe_1_1SyncedMemory-members.html @@ -89,7 +89,7 @@ diff --git a/doxygen/classcaffe_1_1SyncedMemory.html b/doxygen/classcaffe_1_1SyncedMemory.html index 00f8ae2eb19..82ffd42fa5a 100644 --- a/doxygen/classcaffe_1_1SyncedMemory.html +++ b/doxygen/classcaffe_1_1SyncedMemory.html @@ -128,7 +128,7 @@ diff --git a/doxygen/classcaffe_1_1TanHLayer-members.html b/doxygen/classcaffe_1_1TanHLayer-members.html index dd48f82e215..23dffa655ba 100644 --- a/doxygen/classcaffe_1_1TanHLayer-members.html +++ b/doxygen/classcaffe_1_1TanHLayer-members.html @@ -112,7 +112,7 @@ diff --git a/doxygen/classcaffe_1_1TanHLayer.html b/doxygen/classcaffe_1_1TanHLayer.html index a3a4b8529d3..ccde8a68dd3 100644 --- a/doxygen/classcaffe_1_1TanHLayer.html +++ b/doxygen/classcaffe_1_1TanHLayer.html @@ -348,7 +348,7 @@

      diff --git a/doxygen/classcaffe_1_1ThresholdLayer-members.html b/doxygen/classcaffe_1_1ThresholdLayer-members.html index a3e8868f2d3..fb513e8a7c8 100644 --- a/doxygen/classcaffe_1_1ThresholdLayer-members.html +++ b/doxygen/classcaffe_1_1ThresholdLayer-members.html @@ -113,7 +113,7 @@ diff --git a/doxygen/classcaffe_1_1ThresholdLayer.html b/doxygen/classcaffe_1_1ThresholdLayer.html index 1be34f69206..d74a45bb036 100644 --- a/doxygen/classcaffe_1_1ThresholdLayer.html +++ b/doxygen/classcaffe_1_1ThresholdLayer.html @@ -377,7 +377,7 @@

      diff --git a/doxygen/classcaffe_1_1TileLayer-members.html b/doxygen/classcaffe_1_1TileLayer-members.html index b9334473c5a..f7f291b440a 100644 --- a/doxygen/classcaffe_1_1TileLayer-members.html +++ b/doxygen/classcaffe_1_1TileLayer-members.html @@ -115,7 +115,7 @@ diff --git a/doxygen/classcaffe_1_1TileLayer.html b/doxygen/classcaffe_1_1TileLayer.html index 17a42c71de1..d6036535acb 100644 --- a/doxygen/classcaffe_1_1TileLayer.html +++ b/doxygen/classcaffe_1_1TileLayer.html @@ -357,7 +357,7 @@

      diff --git a/doxygen/classcaffe_1_1Timer-members.html b/doxygen/classcaffe_1_1Timer-members.html index 66208fda338..253226c6aaa 100644 --- a/doxygen/classcaffe_1_1Timer-members.html +++ b/doxygen/classcaffe_1_1Timer-members.html @@ -92,7 +92,7 @@ diff --git a/doxygen/classcaffe_1_1Timer.html b/doxygen/classcaffe_1_1Timer.html index f9399777433..32f9bd5b5fa 100644 --- a/doxygen/classcaffe_1_1Timer.html +++ b/doxygen/classcaffe_1_1Timer.html @@ -151,7 +151,7 @@ diff --git a/doxygen/classcaffe_1_1UniformFiller-members.html b/doxygen/classcaffe_1_1UniformFiller-members.html index 5d66707ceaa..3c7e45ff410 100644 --- a/doxygen/classcaffe_1_1UniformFiller-members.html +++ b/doxygen/classcaffe_1_1UniformFiller-members.html @@ -77,7 +77,7 @@ diff --git a/doxygen/classcaffe_1_1UniformFiller.html b/doxygen/classcaffe_1_1UniformFiller.html index 954789d1db5..f765a556587 100644 --- a/doxygen/classcaffe_1_1UniformFiller.html +++ b/doxygen/classcaffe_1_1UniformFiller.html @@ -115,7 +115,7 @@ diff --git a/doxygen/classcaffe_1_1WindowDataLayer-members.html b/doxygen/classcaffe_1_1WindowDataLayer-members.html index 4edbbe2cee0..cacb565e151 100644 --- a/doxygen/classcaffe_1_1WindowDataLayer-members.html +++ b/doxygen/classcaffe_1_1WindowDataLayer-members.html @@ -151,7 +151,7 @@ diff --git a/doxygen/classcaffe_1_1WindowDataLayer.html b/doxygen/classcaffe_1_1WindowDataLayer.html index 4f166e93c3f..0b12acc8345 100644 --- a/doxygen/classcaffe_1_1WindowDataLayer.html +++ b/doxygen/classcaffe_1_1WindowDataLayer.html @@ -408,7 +408,7 @@

      diff --git a/doxygen/classcaffe_1_1WorkerSolver-members.html b/doxygen/classcaffe_1_1WorkerSolver-members.html index 96c118fdc66..41356eb3bf1 100644 --- a/doxygen/classcaffe_1_1WorkerSolver-members.html +++ b/doxygen/classcaffe_1_1WorkerSolver-members.html @@ -117,7 +117,7 @@ diff --git a/doxygen/classcaffe_1_1WorkerSolver.html b/doxygen/classcaffe_1_1WorkerSolver.html index 82f9eb96a15..e3889b7faed 100644 --- a/doxygen/classcaffe_1_1WorkerSolver.html +++ b/doxygen/classcaffe_1_1WorkerSolver.html @@ -241,7 +241,7 @@ diff --git a/doxygen/classcaffe_1_1XavierFiller-members.html b/doxygen/classcaffe_1_1XavierFiller-members.html index e5ff492d1da..9929cc8fda8 100644 --- a/doxygen/classcaffe_1_1XavierFiller-members.html +++ b/doxygen/classcaffe_1_1XavierFiller-members.html @@ -77,7 +77,7 @@ diff --git a/doxygen/classcaffe_1_1XavierFiller.html b/doxygen/classcaffe_1_1XavierFiller.html index b65b5ef9741..4052486ee52 100644 --- a/doxygen/classcaffe_1_1XavierFiller.html +++ b/doxygen/classcaffe_1_1XavierFiller.html @@ -118,7 +118,7 @@ diff --git a/doxygen/classcaffe_1_1db_1_1Cursor-members.html b/doxygen/classcaffe_1_1db_1_1Cursor-members.html index cdce9e2a480..acb864c1bd7 100644 --- a/doxygen/classcaffe_1_1db_1_1Cursor-members.html +++ b/doxygen/classcaffe_1_1db_1_1Cursor-members.html @@ -80,7 +80,7 @@ diff --git a/doxygen/classcaffe_1_1db_1_1Cursor.html b/doxygen/classcaffe_1_1db_1_1Cursor.html index faacde6dc82..27946a6ec69 100644 --- a/doxygen/classcaffe_1_1db_1_1Cursor.html +++ b/doxygen/classcaffe_1_1db_1_1Cursor.html @@ -97,7 +97,7 @@ diff --git a/doxygen/classcaffe_1_1db_1_1DB-members.html b/doxygen/classcaffe_1_1db_1_1DB-members.html index a332a3d237b..76fa1263de9 100644 --- a/doxygen/classcaffe_1_1db_1_1DB-members.html +++ b/doxygen/classcaffe_1_1db_1_1DB-members.html @@ -79,7 +79,7 @@ diff --git a/doxygen/classcaffe_1_1db_1_1DB.html b/doxygen/classcaffe_1_1db_1_1DB.html index fd4be229be1..23a81d1d90d 100644 --- a/doxygen/classcaffe_1_1db_1_1DB.html +++ b/doxygen/classcaffe_1_1db_1_1DB.html @@ -94,7 +94,7 @@ diff --git a/doxygen/classcaffe_1_1db_1_1Transaction-members.html b/doxygen/classcaffe_1_1db_1_1Transaction-members.html index 54940573df9..cc728c412b2 100644 --- a/doxygen/classcaffe_1_1db_1_1Transaction-members.html +++ b/doxygen/classcaffe_1_1db_1_1Transaction-members.html @@ -77,7 +77,7 @@ diff --git a/doxygen/classcaffe_1_1db_1_1Transaction.html b/doxygen/classcaffe_1_1db_1_1Transaction.html index 10d3288afdc..eb0305c2c2e 100644 --- a/doxygen/classcaffe_1_1db_1_1Transaction.html +++ b/doxygen/classcaffe_1_1db_1_1Transaction.html @@ -88,7 +88,7 @@ diff --git a/doxygen/classes.html b/doxygen/classes.html index 94d0cfc2d5c..f71f47fa179 100644 --- a/doxygen/classes.html +++ b/doxygen/classes.html @@ -122,7 +122,7 @@ diff --git a/doxygen/common_8hpp_source.html b/doxygen/common_8hpp_source.html index ff41c098c0c..23624ef53c5 100644 --- a/doxygen/common_8hpp_source.html +++ b/doxygen/common_8hpp_source.html @@ -74,7 +74,7 @@ diff --git a/doxygen/concat__layer_8hpp_source.html b/doxygen/concat__layer_8hpp_source.html index 304ab001279..385fd852c2e 100644 --- a/doxygen/concat__layer_8hpp_source.html +++ b/doxygen/concat__layer_8hpp_source.html @@ -82,7 +82,7 @@ diff --git a/doxygen/contrastive__loss__layer_8hpp_source.html b/doxygen/contrastive__loss__layer_8hpp_source.html index 7e4026c96f0..2c94c26d2b0 100644 --- a/doxygen/contrastive__loss__layer_8hpp_source.html +++ b/doxygen/contrastive__loss__layer_8hpp_source.html @@ -81,7 +81,7 @@ diff --git a/doxygen/conv__layer_8hpp_source.html b/doxygen/conv__layer_8hpp_source.html index b7856149b01..2517e2ce46a 100644 --- a/doxygen/conv__layer_8hpp_source.html +++ b/doxygen/conv__layer_8hpp_source.html @@ -79,7 +79,7 @@ diff --git a/doxygen/crop__layer_8hpp_source.html b/doxygen/crop__layer_8hpp_source.html index 24ec76381a8..035b8b215f5 100644 --- a/doxygen/crop__layer_8hpp_source.html +++ b/doxygen/crop__layer_8hpp_source.html @@ -82,7 +82,7 @@ diff --git a/doxygen/cudnn_8hpp_source.html b/doxygen/cudnn_8hpp_source.html index 5e59602490a..d446399073d 100644 --- a/doxygen/cudnn_8hpp_source.html +++ b/doxygen/cudnn_8hpp_source.html @@ -70,7 +70,7 @@ diff --git a/doxygen/cudnn__conv__layer_8hpp_source.html b/doxygen/cudnn__conv__layer_8hpp_source.html index c74a3f57ca8..69ee6203a28 100644 --- a/doxygen/cudnn__conv__layer_8hpp_source.html +++ b/doxygen/cudnn__conv__layer_8hpp_source.html @@ -70,7 +70,7 @@ diff --git a/doxygen/cudnn__lcn__layer_8hpp_source.html b/doxygen/cudnn__lcn__layer_8hpp_source.html index 1979015737a..51faadf7d00 100644 --- a/doxygen/cudnn__lcn__layer_8hpp_source.html +++ b/doxygen/cudnn__lcn__layer_8hpp_source.html @@ -70,7 +70,7 @@ diff --git a/doxygen/cudnn__lrn__layer_8hpp_source.html b/doxygen/cudnn__lrn__layer_8hpp_source.html index 7429338d678..944dc7c62a4 100644 --- a/doxygen/cudnn__lrn__layer_8hpp_source.html +++ b/doxygen/cudnn__lrn__layer_8hpp_source.html @@ -70,7 +70,7 @@ diff --git a/doxygen/cudnn__pooling__layer_8hpp_source.html b/doxygen/cudnn__pooling__layer_8hpp_source.html index f0e0be00f23..a32ab3cf9e4 100644 --- a/doxygen/cudnn__pooling__layer_8hpp_source.html +++ b/doxygen/cudnn__pooling__layer_8hpp_source.html @@ -70,7 +70,7 @@ diff --git a/doxygen/cudnn__relu__layer_8hpp_source.html b/doxygen/cudnn__relu__layer_8hpp_source.html index d051a49116c..38258ddec0c 100644 --- a/doxygen/cudnn__relu__layer_8hpp_source.html +++ b/doxygen/cudnn__relu__layer_8hpp_source.html @@ -70,7 +70,7 @@ diff --git a/doxygen/cudnn__sigmoid__layer_8hpp_source.html b/doxygen/cudnn__sigmoid__layer_8hpp_source.html index 7c4993c930d..79319ebcff3 100644 --- a/doxygen/cudnn__sigmoid__layer_8hpp_source.html +++ b/doxygen/cudnn__sigmoid__layer_8hpp_source.html @@ -70,7 +70,7 @@ diff --git a/doxygen/cudnn__softmax__layer_8hpp_source.html b/doxygen/cudnn__softmax__layer_8hpp_source.html index 2e9156eaeea..94a20732d1a 100644 --- a/doxygen/cudnn__softmax__layer_8hpp_source.html +++ b/doxygen/cudnn__softmax__layer_8hpp_source.html @@ -70,7 +70,7 @@ diff --git a/doxygen/cudnn__tanh__layer_8hpp_source.html b/doxygen/cudnn__tanh__layer_8hpp_source.html index 583a2157408..426ecf0d067 100644 --- a/doxygen/cudnn__tanh__layer_8hpp_source.html +++ b/doxygen/cudnn__tanh__layer_8hpp_source.html @@ -70,7 +70,7 @@ diff --git a/doxygen/data__layer_8hpp_source.html b/doxygen/data__layer_8hpp_source.html index ef5cce2c697..c1b1f4154a8 100644 --- a/doxygen/data__layer_8hpp_source.html +++ b/doxygen/data__layer_8hpp_source.html @@ -80,7 +80,7 @@ diff --git a/doxygen/data__reader_8hpp_source.html b/doxygen/data__reader_8hpp_source.html index 3f7708f5d00..21be006d561 100644 --- a/doxygen/data__reader_8hpp_source.html +++ b/doxygen/data__reader_8hpp_source.html @@ -76,7 +76,7 @@ diff --git a/doxygen/data__transformer_8hpp_source.html b/doxygen/data__transformer_8hpp_source.html index d4c44c5e820..b88d453feca 100644 --- a/doxygen/data__transformer_8hpp_source.html +++ b/doxygen/data__transformer_8hpp_source.html @@ -76,7 +76,7 @@ diff --git a/doxygen/db_8hpp_source.html b/doxygen/db_8hpp_source.html index 3b740057f87..91c11a6b018 100644 --- a/doxygen/db_8hpp_source.html +++ b/doxygen/db_8hpp_source.html @@ -73,7 +73,7 @@ diff --git a/doxygen/db__leveldb_8hpp_source.html b/doxygen/db__leveldb_8hpp_source.html index 188ad073382..4866e62c10e 100644 --- a/doxygen/db__leveldb_8hpp_source.html +++ b/doxygen/db__leveldb_8hpp_source.html @@ -70,7 +70,7 @@ diff --git a/doxygen/db__lmdb_8hpp_source.html b/doxygen/db__lmdb_8hpp_source.html index 588d4dec474..6c595170131 100644 --- a/doxygen/db__lmdb_8hpp_source.html +++ b/doxygen/db__lmdb_8hpp_source.html @@ -70,7 +70,7 @@ diff --git a/doxygen/deconv__layer_8hpp_source.html b/doxygen/deconv__layer_8hpp_source.html index 6286bd2f33f..f1b66f36360 100644 --- a/doxygen/deconv__layer_8hpp_source.html +++ b/doxygen/deconv__layer_8hpp_source.html @@ -78,7 +78,7 @@ diff --git a/doxygen/device__alternate_8hpp_source.html b/doxygen/device__alternate_8hpp_source.html index 76e8f985886..10875f76d22 100644 --- a/doxygen/device__alternate_8hpp_source.html +++ b/doxygen/device__alternate_8hpp_source.html @@ -70,7 +70,7 @@ diff --git a/doxygen/dir_4b7f3da7c7b4301d805dae0326fb91b7.html b/doxygen/dir_4b7f3da7c7b4301d805dae0326fb91b7.html index bc99fd43fed..3a08a79ec83 100644 --- a/doxygen/dir_4b7f3da7c7b4301d805dae0326fb91b7.html +++ b/doxygen/dir_4b7f3da7c7b4301d805dae0326fb91b7.html @@ -73,7 +73,7 @@ diff --git a/doxygen/dir_5c92236a0f5740f6a611cf0cbca860fd.html b/doxygen/dir_5c92236a0f5740f6a611cf0cbca860fd.html index 1dece0c9b5d..96c07cc4ad6 100644 --- a/doxygen/dir_5c92236a0f5740f6a611cf0cbca860fd.html +++ b/doxygen/dir_5c92236a0f5740f6a611cf0cbca860fd.html @@ -73,7 +73,7 @@ diff --git a/doxygen/dir_63b6f53f56ebc4a4e494d80608d10658.html b/doxygen/dir_63b6f53f56ebc4a4e494d80608d10658.html index 2e85864c87e..ada2a27db1f 100644 --- a/doxygen/dir_63b6f53f56ebc4a4e494d80608d10658.html +++ b/doxygen/dir_63b6f53f56ebc4a4e494d80608d10658.html @@ -69,7 +69,7 @@ diff --git a/doxygen/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/doxygen/dir_68267d1309a1af8e8297ef4c3efbcdba.html index 1ab881cdc50..ee4f0298685 100644 --- a/doxygen/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/doxygen/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -73,7 +73,7 @@ diff --git a/doxygen/dir_750d2c266ff028c3ef5b86bdca6396e1.html b/doxygen/dir_750d2c266ff028c3ef5b86bdca6396e1.html index 237c286afee..0e96084fecf 100644 --- a/doxygen/dir_750d2c266ff028c3ef5b86bdca6396e1.html +++ b/doxygen/dir_750d2c266ff028c3ef5b86bdca6396e1.html @@ -69,7 +69,7 @@ diff --git a/doxygen/dir_b4c5ae27f152c386e8799324caa2412e.html b/doxygen/dir_b4c5ae27f152c386e8799324caa2412e.html index fe908cae3ae..0c5c3c6701b 100644 --- a/doxygen/dir_b4c5ae27f152c386e8799324caa2412e.html +++ b/doxygen/dir_b4c5ae27f152c386e8799324caa2412e.html @@ -69,7 +69,7 @@ diff --git a/doxygen/dir_b9606a76d4acbf8f90a06a4a51ec8b9e.html b/doxygen/dir_b9606a76d4acbf8f90a06a4a51ec8b9e.html index a0f7c4d8d2f..8e579aca320 100644 --- a/doxygen/dir_b9606a76d4acbf8f90a06a4a51ec8b9e.html +++ b/doxygen/dir_b9606a76d4acbf8f90a06a4a51ec8b9e.html @@ -69,7 +69,7 @@ diff --git a/doxygen/dir_d44c64559bbebec7f509842c48db8b23.html b/doxygen/dir_d44c64559bbebec7f509842c48db8b23.html index 3f083e2c350..7f570374244 100644 --- a/doxygen/dir_d44c64559bbebec7f509842c48db8b23.html +++ b/doxygen/dir_d44c64559bbebec7f509842c48db8b23.html @@ -73,7 +73,7 @@ diff --git a/doxygen/dir_feb0d617e78aec1d705c99fd9e400e0d.html b/doxygen/dir_feb0d617e78aec1d705c99fd9e400e0d.html index 68556c6e9bb..2d7e50d15bd 100644 --- a/doxygen/dir_feb0d617e78aec1d705c99fd9e400e0d.html +++ b/doxygen/dir_feb0d617e78aec1d705c99fd9e400e0d.html @@ -69,7 +69,7 @@ diff --git a/doxygen/dropout__layer_8hpp_source.html b/doxygen/dropout__layer_8hpp_source.html index 1e033e9edec..b2fe45c4f1e 100644 --- a/doxygen/dropout__layer_8hpp_source.html +++ b/doxygen/dropout__layer_8hpp_source.html @@ -84,7 +84,7 @@ diff --git a/doxygen/dummy__data__layer_8hpp_source.html b/doxygen/dummy__data__layer_8hpp_source.html index 98d80cf59f4..30948f276ca 100644 --- a/doxygen/dummy__data__layer_8hpp_source.html +++ b/doxygen/dummy__data__layer_8hpp_source.html @@ -82,7 +82,7 @@ diff --git a/doxygen/eltwise__layer_8hpp_source.html b/doxygen/eltwise__layer_8hpp_source.html index 41ac0c3fdae..3fe5843e70d 100644 --- a/doxygen/eltwise__layer_8hpp_source.html +++ b/doxygen/eltwise__layer_8hpp_source.html @@ -82,7 +82,7 @@ diff --git a/doxygen/elu__layer_8hpp_source.html b/doxygen/elu__layer_8hpp_source.html index 7f68dd6aa30..79cd0269531 100644 --- a/doxygen/elu__layer_8hpp_source.html +++ b/doxygen/elu__layer_8hpp_source.html @@ -79,7 +79,7 @@ diff --git a/doxygen/embed__layer_8hpp_source.html b/doxygen/embed__layer_8hpp_source.html index f64c218da1d..fd129a91fc5 100644 --- a/doxygen/embed__layer_8hpp_source.html +++ b/doxygen/embed__layer_8hpp_source.html @@ -82,7 +82,7 @@ diff --git a/doxygen/euclidean__loss__layer_8hpp_source.html b/doxygen/euclidean__loss__layer_8hpp_source.html index d05a64fe7d6..1f912e853d0 100644 --- a/doxygen/euclidean__loss__layer_8hpp_source.html +++ b/doxygen/euclidean__loss__layer_8hpp_source.html @@ -80,7 +80,7 @@ diff --git a/doxygen/exp__layer_8hpp_source.html b/doxygen/exp__layer_8hpp_source.html index 2c0da9c7b4c..adff2d85be5 100644 --- a/doxygen/exp__layer_8hpp_source.html +++ b/doxygen/exp__layer_8hpp_source.html @@ -80,7 +80,7 @@ diff --git a/doxygen/files.html b/doxygen/files.html index 518a4118956..0fb5460d206 100644 --- a/doxygen/files.html +++ b/doxygen/files.html @@ -176,7 +176,7 @@ diff --git a/doxygen/filler_8hpp_source.html b/doxygen/filler_8hpp_source.html index d983532a825..9d255f166b2 100644 --- a/doxygen/filler_8hpp_source.html +++ b/doxygen/filler_8hpp_source.html @@ -85,7 +85,7 @@ diff --git a/doxygen/filter__layer_8hpp_source.html b/doxygen/filter__layer_8hpp_source.html index d5c5eda1b0c..f6d7103b0f3 100644 --- a/doxygen/filter__layer_8hpp_source.html +++ b/doxygen/filter__layer_8hpp_source.html @@ -82,7 +82,7 @@ diff --git a/doxygen/flatten__layer_8hpp_source.html b/doxygen/flatten__layer_8hpp_source.html index bb318d1932a..fb66f72ffd5 100644 --- a/doxygen/flatten__layer_8hpp_source.html +++ b/doxygen/flatten__layer_8hpp_source.html @@ -79,7 +79,7 @@ diff --git a/doxygen/format_8hpp_source.html b/doxygen/format_8hpp_source.html index d613a3ca792..03e97cc8260 100644 --- a/doxygen/format_8hpp_source.html +++ b/doxygen/format_8hpp_source.html @@ -70,7 +70,7 @@ diff --git a/doxygen/functions.html b/doxygen/functions.html index 93599772827..265ff2083f9 100644 --- a/doxygen/functions.html +++ b/doxygen/functions.html @@ -101,7 +101,7 @@ diff --git a/doxygen/functions_b.html b/doxygen/functions_b.html index 8ccb11fb4c3..a70519bcd4d 100644 --- a/doxygen/functions_b.html +++ b/doxygen/functions_b.html @@ -202,7 +202,7 @@ diff --git a/doxygen/functions_c.html b/doxygen/functions_c.html index 48d8c92253b..9a8a4a62ab0 100644 --- a/doxygen/functions_c.html +++ b/doxygen/functions_c.html @@ -110,7 +110,7 @@ diff --git a/doxygen/functions_d.html b/doxygen/functions_d.html index 3f31d9f59d7..ef0835dd4a4 100644 --- a/doxygen/functions_d.html +++ b/doxygen/functions_d.html @@ -81,7 +81,7 @@ diff --git a/doxygen/functions_e.html b/doxygen/functions_e.html index 2a10062603a..162b4154f71 100644 --- a/doxygen/functions_e.html +++ b/doxygen/functions_e.html @@ -149,7 +149,7 @@ diff --git a/doxygen/functions_f.html b/doxygen/functions_f.html index a2142837139..834809d889d 100644 --- a/doxygen/functions_f.html +++ b/doxygen/functions_f.html @@ -201,7 +201,7 @@ diff --git a/doxygen/functions_func.html b/doxygen/functions_func.html index 51f409bc07d..3bdd7c22b71 100644 --- a/doxygen/functions_func.html +++ b/doxygen/functions_func.html @@ -98,7 +98,7 @@ diff --git a/doxygen/functions_func_b.html b/doxygen/functions_func_b.html index df044623125..5410f112b48 100644 --- a/doxygen/functions_func_b.html +++ b/doxygen/functions_func_b.html @@ -192,7 +192,7 @@ diff --git a/doxygen/functions_func_c.html b/doxygen/functions_func_c.html index d775111207f..cab2c5efa1d 100644 --- a/doxygen/functions_func_c.html +++ b/doxygen/functions_func_c.html @@ -89,7 +89,7 @@ diff --git a/doxygen/functions_func_d.html b/doxygen/functions_func_d.html index 13abe750c80..4279f0b2444 100644 --- a/doxygen/functions_func_d.html +++ b/doxygen/functions_func_d.html @@ -68,7 +68,7 @@ diff --git a/doxygen/functions_func_e.html b/doxygen/functions_func_e.html index f3ce2f22ec5..3254d8b83a1 100644 --- a/doxygen/functions_func_e.html +++ b/doxygen/functions_func_e.html @@ -146,7 +146,7 @@ diff --git a/doxygen/functions_func_f.html b/doxygen/functions_func_f.html index 274ffc1ab5b..8254fae9ca1 100644 --- a/doxygen/functions_func_f.html +++ b/doxygen/functions_func_f.html @@ -192,7 +192,7 @@ diff --git a/doxygen/functions_func_g.html b/doxygen/functions_func_g.html index 760642b5269..12163d86d4d 100644 --- a/doxygen/functions_func_g.html +++ b/doxygen/functions_func_g.html @@ -69,7 +69,7 @@ diff --git a/doxygen/functions_func_h.html b/doxygen/functions_func_h.html index 3d56d82342f..368db4b46b3 100644 --- a/doxygen/functions_func_h.html +++ b/doxygen/functions_func_h.html @@ -68,7 +68,7 @@ diff --git a/doxygen/functions_func_i.html b/doxygen/functions_func_i.html index 46ab32a36e6..d4be7038237 100644 --- a/doxygen/functions_func_i.html +++ b/doxygen/functions_func_i.html @@ -80,7 +80,7 @@ diff --git a/doxygen/functions_func_l.html b/doxygen/functions_func_l.html index 9546fccf01a..96fdceee961 100644 --- a/doxygen/functions_func_l.html +++ b/doxygen/functions_func_l.html @@ -126,7 +126,7 @@ diff --git a/doxygen/functions_func_m.html b/doxygen/functions_func_m.html index e7193131587..425adf7329e 100644 --- a/doxygen/functions_func_m.html +++ b/doxygen/functions_func_m.html @@ -105,7 +105,7 @@ diff --git a/doxygen/functions_func_n.html b/doxygen/functions_func_n.html index e79ce2252e2..095ae25b47b 100644 --- a/doxygen/functions_func_n.html +++ b/doxygen/functions_func_n.html @@ -74,7 +74,7 @@ diff --git a/doxygen/functions_func_o.html b/doxygen/functions_func_o.html index 68b0cfa00b6..4100d3cbddd 100644 --- a/doxygen/functions_func_o.html +++ b/doxygen/functions_func_o.html @@ -70,7 +70,7 @@ diff --git a/doxygen/functions_func_p.html b/doxygen/functions_func_p.html index 07043a7b5df..61d7c237494 100644 --- a/doxygen/functions_func_p.html +++ b/doxygen/functions_func_p.html @@ -86,7 +86,7 @@ diff --git a/doxygen/functions_func_r.html b/doxygen/functions_func_r.html index d3e16ce328e..cdc027c8eb8 100644 --- a/doxygen/functions_func_r.html +++ b/doxygen/functions_func_r.html @@ -135,7 +135,7 @@ diff --git a/doxygen/functions_func_s.html b/doxygen/functions_func_s.html index 2ad5a6f9a90..1b388363d89 100644 --- a/doxygen/functions_func_s.html +++ b/doxygen/functions_func_s.html @@ -129,7 +129,7 @@ diff --git a/doxygen/functions_func_t.html b/doxygen/functions_func_t.html index df27736b761..976fd423de4 100644 --- a/doxygen/functions_func_t.html +++ b/doxygen/functions_func_t.html @@ -154,7 +154,7 @@ diff --git a/doxygen/functions_func_u.html b/doxygen/functions_func_u.html index 80ceb4fb6a7..a300cc6c87b 100644 --- a/doxygen/functions_func_u.html +++ b/doxygen/functions_func_u.html @@ -71,7 +71,7 @@ diff --git a/doxygen/functions_func_w.html b/doxygen/functions_func_w.html index 3987a7f037b..bfc0a821709 100644 --- a/doxygen/functions_func_w.html +++ b/doxygen/functions_func_w.html @@ -68,7 +68,7 @@ diff --git a/doxygen/functions_g.html b/doxygen/functions_g.html index 0535d2fb36b..fcdbc45c4da 100644 --- a/doxygen/functions_g.html +++ b/doxygen/functions_g.html @@ -69,7 +69,7 @@ diff --git a/doxygen/functions_h.html b/doxygen/functions_h.html index 98c307c8bdd..1a5b92036d8 100644 --- a/doxygen/functions_h.html +++ b/doxygen/functions_h.html @@ -76,7 +76,7 @@ diff --git a/doxygen/functions_i.html b/doxygen/functions_i.html index 7ec29587197..9b7506b901b 100644 --- a/doxygen/functions_i.html +++ b/doxygen/functions_i.html @@ -88,7 +88,7 @@ diff --git a/doxygen/functions_k.html b/doxygen/functions_k.html index 21fc13f6622..736bab50c15 100644 --- a/doxygen/functions_k.html +++ b/doxygen/functions_k.html @@ -69,7 +69,7 @@ diff --git a/doxygen/functions_l.html b/doxygen/functions_l.html index 28d1ea38b45..c19fa841579 100644 --- a/doxygen/functions_l.html +++ b/doxygen/functions_l.html @@ -141,7 +141,7 @@ diff --git a/doxygen/functions_m.html b/doxygen/functions_m.html index e368a38cf53..37b15276c55 100644 --- a/doxygen/functions_m.html +++ b/doxygen/functions_m.html @@ -108,7 +108,7 @@ diff --git a/doxygen/functions_n.html b/doxygen/functions_n.html index 56b3991db39..90e0fd35dda 100644 --- a/doxygen/functions_n.html +++ b/doxygen/functions_n.html @@ -93,7 +93,7 @@ diff --git a/doxygen/functions_o.html b/doxygen/functions_o.html index 775eb3f9b9a..c899a52e5cf 100644 --- a/doxygen/functions_o.html +++ b/doxygen/functions_o.html @@ -76,7 +76,7 @@ diff --git a/doxygen/functions_p.html b/doxygen/functions_p.html index b05f5655ef2..ae561a3bd6a 100644 --- a/doxygen/functions_p.html +++ b/doxygen/functions_p.html @@ -124,7 +124,7 @@ diff --git a/doxygen/functions_r.html b/doxygen/functions_r.html index 7b263d42a17..80be6c014f9 100644 --- a/doxygen/functions_r.html +++ b/doxygen/functions_r.html @@ -141,7 +141,7 @@ diff --git a/doxygen/functions_s.html b/doxygen/functions_s.html index 48b75e30704..a78979029d8 100644 --- a/doxygen/functions_s.html +++ b/doxygen/functions_s.html @@ -176,7 +176,7 @@ diff --git a/doxygen/functions_t.html b/doxygen/functions_t.html index 5008cac6a82..5c17501e7c5 100644 --- a/doxygen/functions_t.html +++ b/doxygen/functions_t.html @@ -166,7 +166,7 @@ diff --git a/doxygen/functions_u.html b/doxygen/functions_u.html index d214833fba6..1c2adda29b4 100644 --- a/doxygen/functions_u.html +++ b/doxygen/functions_u.html @@ -74,7 +74,7 @@ diff --git a/doxygen/functions_vars.html b/doxygen/functions_vars.html index bcced0c2869..1f066391f9c 100644 --- a/doxygen/functions_vars.html +++ b/doxygen/functions_vars.html @@ -361,7 +361,7 @@ diff --git a/doxygen/functions_w.html b/doxygen/functions_w.html index 929656ea7fa..6b994b0f16c 100644 --- a/doxygen/functions_w.html +++ b/doxygen/functions_w.html @@ -68,7 +68,7 @@ diff --git a/doxygen/hdf5_8hpp_source.html b/doxygen/hdf5_8hpp_source.html index af57cd9ba7f..198da978529 100644 --- a/doxygen/hdf5_8hpp_source.html +++ b/doxygen/hdf5_8hpp_source.html @@ -70,7 +70,7 @@ diff --git a/doxygen/hdf5__data__layer_8hpp_source.html b/doxygen/hdf5__data__layer_8hpp_source.html index c90d37d3763..bbb9d77aea9 100644 --- a/doxygen/hdf5__data__layer_8hpp_source.html +++ b/doxygen/hdf5__data__layer_8hpp_source.html @@ -83,7 +83,7 @@ diff --git a/doxygen/hdf5__output__layer_8hpp_source.html b/doxygen/hdf5__output__layer_8hpp_source.html index 25ae0fe233a..d9d7a84f7e0 100644 --- a/doxygen/hdf5__output__layer_8hpp_source.html +++ b/doxygen/hdf5__output__layer_8hpp_source.html @@ -83,7 +83,7 @@ diff --git a/doxygen/hierarchy.html b/doxygen/hierarchy.html index 160299fd293..685ef18bb5c 100644 --- a/doxygen/hierarchy.html +++ b/doxygen/hierarchy.html @@ -189,7 +189,7 @@ diff --git a/doxygen/hinge__loss__layer_8hpp_source.html b/doxygen/hinge__loss__layer_8hpp_source.html index 8ce898cdd26..3c6f5a4119d 100644 --- a/doxygen/hinge__loss__layer_8hpp_source.html +++ b/doxygen/hinge__loss__layer_8hpp_source.html @@ -76,7 +76,7 @@ diff --git a/doxygen/im2col_8hpp_source.html b/doxygen/im2col_8hpp_source.html index 5c25d899b5e..2cc3a3f2410 100644 --- a/doxygen/im2col_8hpp_source.html +++ b/doxygen/im2col_8hpp_source.html @@ -70,7 +70,7 @@ diff --git a/doxygen/im2col__layer_8hpp_source.html b/doxygen/im2col__layer_8hpp_source.html index 2f317af955f..6cb6cb12d97 100644 --- a/doxygen/im2col__layer_8hpp_source.html +++ b/doxygen/im2col__layer_8hpp_source.html @@ -86,7 +86,7 @@ diff --git a/doxygen/image__data__layer_8hpp_source.html b/doxygen/image__data__layer_8hpp_source.html index 395fb30fa5b..dfe57e4648f 100644 --- a/doxygen/image__data__layer_8hpp_source.html +++ b/doxygen/image__data__layer_8hpp_source.html @@ -77,7 +77,7 @@ diff --git a/doxygen/index.html b/doxygen/index.html index 828fa90932d..d13b35e4976 100644 --- a/doxygen/index.html +++ b/doxygen/index.html @@ -65,7 +65,7 @@ diff --git a/doxygen/infogain__loss__layer_8hpp_source.html b/doxygen/infogain__loss__layer_8hpp_source.html index 15efbc887ed..9ae3a7b271c 100644 --- a/doxygen/infogain__loss__layer_8hpp_source.html +++ b/doxygen/infogain__loss__layer_8hpp_source.html @@ -81,7 +81,7 @@ diff --git a/doxygen/inner__product__layer_8hpp_source.html b/doxygen/inner__product__layer_8hpp_source.html index 94913238876..cfbcf491f96 100644 --- a/doxygen/inner__product__layer_8hpp_source.html +++ b/doxygen/inner__product__layer_8hpp_source.html @@ -83,7 +83,7 @@ diff --git a/doxygen/input__layer_8hpp_source.html b/doxygen/input__layer_8hpp_source.html index c709dacf3a7..5a9a97bbc1a 100644 --- a/doxygen/input__layer_8hpp_source.html +++ b/doxygen/input__layer_8hpp_source.html @@ -81,7 +81,7 @@ diff --git a/doxygen/insert__splits_8hpp_source.html b/doxygen/insert__splits_8hpp_source.html index fbdaa672d6d..6246c0f7701 100644 --- a/doxygen/insert__splits_8hpp_source.html +++ b/doxygen/insert__splits_8hpp_source.html @@ -70,7 +70,7 @@ diff --git a/doxygen/internal__thread_8hpp_source.html b/doxygen/internal__thread_8hpp_source.html index 7424a280348..67c148988b6 100644 --- a/doxygen/internal__thread_8hpp_source.html +++ b/doxygen/internal__thread_8hpp_source.html @@ -72,7 +72,7 @@ diff --git a/doxygen/io_8hpp_source.html b/doxygen/io_8hpp_source.html index 2852419fff1..df30769ff1c 100644 --- a/doxygen/io_8hpp_source.html +++ b/doxygen/io_8hpp_source.html @@ -70,7 +70,7 @@ diff --git a/doxygen/layer_8hpp_source.html b/doxygen/layer_8hpp_source.html index 65a5f01a51a..3a308d2856e 100644 --- a/doxygen/layer_8hpp_source.html +++ b/doxygen/layer_8hpp_source.html @@ -105,7 +105,7 @@ diff --git a/doxygen/layer__factory_8hpp_source.html b/doxygen/layer__factory_8hpp_source.html index 7dda3d93a3e..2cf7edf052c 100644 --- a/doxygen/layer__factory_8hpp_source.html +++ b/doxygen/layer__factory_8hpp_source.html @@ -73,7 +73,7 @@ diff --git a/doxygen/log__layer_8hpp_source.html b/doxygen/log__layer_8hpp_source.html index b504f684a03..7c312791090 100644 --- a/doxygen/log__layer_8hpp_source.html +++ b/doxygen/log__layer_8hpp_source.html @@ -80,7 +80,7 @@ diff --git a/doxygen/loss__layer_8hpp_source.html b/doxygen/loss__layer_8hpp_source.html index b949ec7eddb..caac12394c0 100644 --- a/doxygen/loss__layer_8hpp_source.html +++ b/doxygen/loss__layer_8hpp_source.html @@ -79,7 +79,7 @@ diff --git a/doxygen/lrn__layer_8hpp_source.html b/doxygen/lrn__layer_8hpp_source.html index 4d742d0e6e3..8bdafc1ad30 100644 --- a/doxygen/lrn__layer_8hpp_source.html +++ b/doxygen/lrn__layer_8hpp_source.html @@ -82,7 +82,7 @@ diff --git a/doxygen/lstm__layer_8hpp_source.html b/doxygen/lstm__layer_8hpp_source.html index 3830807f85e..8d92a4f73f4 100644 --- a/doxygen/lstm__layer_8hpp_source.html +++ b/doxygen/lstm__layer_8hpp_source.html @@ -91,7 +91,7 @@ diff --git a/doxygen/math__functions_8hpp_source.html b/doxygen/math__functions_8hpp_source.html index 3de1e659ad6..36302b2fbf1 100644 --- a/doxygen/math__functions_8hpp_source.html +++ b/doxygen/math__functions_8hpp_source.html @@ -70,7 +70,7 @@ diff --git a/doxygen/memory__data__layer_8hpp_source.html b/doxygen/memory__data__layer_8hpp_source.html index 2138456a3cb..1f130649e1c 100644 --- a/doxygen/memory__data__layer_8hpp_source.html +++ b/doxygen/memory__data__layer_8hpp_source.html @@ -77,7 +77,7 @@ diff --git a/doxygen/mkl__alternate_8hpp_source.html b/doxygen/mkl__alternate_8hpp_source.html index 90194be7732..1dbbc6964af 100644 --- a/doxygen/mkl__alternate_8hpp_source.html +++ b/doxygen/mkl__alternate_8hpp_source.html @@ -69,7 +69,7 @@
      1 #ifndef CAFFE_UTIL_MKL_ALTERNATE_H_
      2 #define CAFFE_UTIL_MKL_ALTERNATE_H_
      3 
      4 #ifdef USE_MKL
      5 
      6 #include <mkl.h>
      7 
      8 #else // If use MKL, simply include the MKL header
      9 
      10 #ifdef USE_ACCELERATE
      11 #include <Accelerate/Accelerate.h>
      12 #else
      13 extern "C" {
      14 #include <cblas.h>
      15 }
      16 #endif // USE_ACCELERATE
      17 
      18 #include <math.h>
      19 
      20 // Functions that caffe uses but are not present if MKL is not linked.
      21 
      22 // A simple way to define the vsl unary functions. The operation should
      23 // be in the form e.g. y[i] = sqrt(a[i])
      24 #define DEFINE_VSL_UNARY_FUNC(name, operation) \
      25  template<typename Dtype> \
      26  void v##name(const int n, const Dtype* a, Dtype* y) { \
      27  CHECK_GT(n, 0); CHECK(a); CHECK(y); \
      28  for (int i = 0; i < n; ++i) { operation; } \
      29  } \
      30  inline void vs##name( \
      31  const int n, const float* a, float* y) { \
      32  v##name<float>(n, a, y); \
      33  } \
      34  inline void vd##name( \
      35  const int n, const double* a, double* y) { \
      36  v##name<double>(n, a, y); \
      37  }
      38 
      39 DEFINE_VSL_UNARY_FUNC(Sqr, y[i] = a[i] * a[i]);
      40 DEFINE_VSL_UNARY_FUNC(Exp, y[i] = exp(a[i]));
      41 DEFINE_VSL_UNARY_FUNC(Ln, y[i] = log(a[i]));
      42 DEFINE_VSL_UNARY_FUNC(Abs, y[i] = fabs(a[i]));
      43 
      44 // A simple way to define the vsl unary functions with singular parameter b.
      45 // The operation should be in the form e.g. y[i] = pow(a[i], b)
      46 #define DEFINE_VSL_UNARY_FUNC_WITH_PARAM(name, operation) \
      47  template<typename Dtype> \
      48  void v##name(const int n, const Dtype* a, const Dtype b, Dtype* y) { \
      49  CHECK_GT(n, 0); CHECK(a); CHECK(y); \
      50  for (int i = 0; i < n; ++i) { operation; } \
      51  } \
      52  inline void vs##name( \
      53  const int n, const float* a, const float b, float* y) { \
      54  v##name<float>(n, a, b, y); \
      55  } \
      56  inline void vd##name( \
      57  const int n, const double* a, const float b, double* y) { \
      58  v##name<double>(n, a, b, y); \
      59  }
      60 
      61 DEFINE_VSL_UNARY_FUNC_WITH_PARAM(Powx, y[i] = pow(a[i], b));
      62 
      63 // A simple way to define the vsl binary functions. The operation should
      64 // be in the form e.g. y[i] = a[i] + b[i]
      65 #define DEFINE_VSL_BINARY_FUNC(name, operation) \
      66  template<typename Dtype> \
      67  void v##name(const int n, const Dtype* a, const Dtype* b, Dtype* y) { \
      68  CHECK_GT(n, 0); CHECK(a); CHECK(b); CHECK(y); \
      69  for (int i = 0; i < n; ++i) { operation; } \
      70  } \
      71  inline void vs##name( \
      72  const int n, const float* a, const float* b, float* y) { \
      73  v##name<float>(n, a, b, y); \
      74  } \
      75  inline void vd##name( \
      76  const int n, const double* a, const double* b, double* y) { \
      77  v##name<double>(n, a, b, y); \
      78  }
      79 
      80 DEFINE_VSL_BINARY_FUNC(Add, y[i] = a[i] + b[i]);
      81 DEFINE_VSL_BINARY_FUNC(Sub, y[i] = a[i] - b[i]);
      82 DEFINE_VSL_BINARY_FUNC(Mul, y[i] = a[i] * b[i]);
      83 DEFINE_VSL_BINARY_FUNC(Div, y[i] = a[i] / b[i]);
      84 
      85 // In addition, MKL comes with an additional function axpby that is not present
      86 // in standard blas. We will simply use a two-step (inefficient, of course) way
      87 // to mimic that.
      88 inline void cblas_saxpby(const int N, const float alpha, const float* X,
      89  const int incX, const float beta, float* Y,
      90  const int incY) {
      91  cblas_sscal(N, beta, Y, incY);
      92  cblas_saxpy(N, alpha, X, incX, Y, incY);
      93 }
      94 inline void cblas_daxpby(const int N, const double alpha, const double* X,
      95  const int incX, const double beta, double* Y,
      96  const int incY) {
      97  cblas_dscal(N, beta, Y, incY);
      98  cblas_daxpy(N, alpha, X, incX, Y, incY);
      99 }
      100 
      101 #endif // USE_MKL
      102 #endif // CAFFE_UTIL_MKL_ALTERNATE_H_
      diff --git a/doxygen/multinomial__logistic__loss__layer_8hpp_source.html b/doxygen/multinomial__logistic__loss__layer_8hpp_source.html index 02524e1bc26..7f7be474b22 100644 --- a/doxygen/multinomial__logistic__loss__layer_8hpp_source.html +++ b/doxygen/multinomial__logistic__loss__layer_8hpp_source.html @@ -77,7 +77,7 @@ diff --git a/doxygen/mvn__layer_8hpp_source.html b/doxygen/mvn__layer_8hpp_source.html index bbed39c44a3..8dd61afebfa 100644 --- a/doxygen/mvn__layer_8hpp_source.html +++ b/doxygen/mvn__layer_8hpp_source.html @@ -82,7 +82,7 @@ diff --git a/doxygen/namespaceboost.html b/doxygen/namespaceboost.html index bf6b4dd4579..5f7a63794bc 100644 --- a/doxygen/namespaceboost.html +++ b/doxygen/namespaceboost.html @@ -67,7 +67,7 @@ diff --git a/doxygen/namespacecaffe.html b/doxygen/namespacecaffe.html index c9fa050a416..6c078a326f1 100644 --- a/doxygen/namespacecaffe.html +++ b/doxygen/namespacecaffe.html @@ -1658,7 +1658,7 @@

      diff --git a/doxygen/namespacecaffe_1_1SolverAction.html b/doxygen/namespacecaffe_1_1SolverAction.html index 992ec98eaa0..a8ba25691e4 100644 --- a/doxygen/namespacecaffe_1_1SolverAction.html +++ b/doxygen/namespacecaffe_1_1SolverAction.html @@ -85,7 +85,7 @@ diff --git a/doxygen/namespacemembers.html b/doxygen/namespacemembers.html index 5926044ba80..cd314f7c1d4 100644 --- a/doxygen/namespacemembers.html +++ b/doxygen/namespacemembers.html @@ -69,7 +69,7 @@ diff --git a/doxygen/namespacemembers_func.html b/doxygen/namespacemembers_func.html index 237733ea5d0..bd0636985d0 100644 --- a/doxygen/namespacemembers_func.html +++ b/doxygen/namespacemembers_func.html @@ -66,7 +66,7 @@ diff --git a/doxygen/namespacemembers_type.html b/doxygen/namespacemembers_type.html index 3820b419a99..28231f5b086 100644 --- a/doxygen/namespacemembers_type.html +++ b/doxygen/namespacemembers_type.html @@ -66,7 +66,7 @@ diff --git a/doxygen/namespaces.html b/doxygen/namespaces.html index 8ff81fae45c..96308574c05 100644 --- a/doxygen/namespaces.html +++ b/doxygen/namespaces.html @@ -72,7 +72,7 @@ diff --git a/doxygen/net_8hpp_source.html b/doxygen/net_8hpp_source.html index 618cc8479ea..5d6c05c9aa4 100644 --- a/doxygen/net_8hpp_source.html +++ b/doxygen/net_8hpp_source.html @@ -122,7 +122,7 @@ diff --git a/doxygen/neuron__layer_8hpp_source.html b/doxygen/neuron__layer_8hpp_source.html index fe276f33377..8ac829b0806 100644 --- a/doxygen/neuron__layer_8hpp_source.html +++ b/doxygen/neuron__layer_8hpp_source.html @@ -76,7 +76,7 @@ diff --git a/doxygen/parallel_8hpp_source.html b/doxygen/parallel_8hpp_source.html index 684e8d0fe2b..9074304fb7b 100644 --- a/doxygen/parallel_8hpp_source.html +++ b/doxygen/parallel_8hpp_source.html @@ -77,7 +77,7 @@ diff --git a/doxygen/parameter__layer_8hpp_source.html b/doxygen/parameter__layer_8hpp_source.html index 4148684bb81..54d97916f72 100644 --- a/doxygen/parameter__layer_8hpp_source.html +++ b/doxygen/parameter__layer_8hpp_source.html @@ -82,7 +82,7 @@ diff --git a/doxygen/pooling__layer_8hpp_source.html b/doxygen/pooling__layer_8hpp_source.html index 96baf126806..a2a625be2be 100644 --- a/doxygen/pooling__layer_8hpp_source.html +++ b/doxygen/pooling__layer_8hpp_source.html @@ -84,7 +84,7 @@ diff --git a/doxygen/power__layer_8hpp_source.html b/doxygen/power__layer_8hpp_source.html index 20522248440..8746e1ec361 100644 --- a/doxygen/power__layer_8hpp_source.html +++ b/doxygen/power__layer_8hpp_source.html @@ -84,7 +84,7 @@ diff --git a/doxygen/prelu__layer_8hpp_source.html b/doxygen/prelu__layer_8hpp_source.html index 21fbd6efc46..9cff1c9ed0c 100644 --- a/doxygen/prelu__layer_8hpp_source.html +++ b/doxygen/prelu__layer_8hpp_source.html @@ -81,7 +81,7 @@ diff --git a/doxygen/python__layer_8hpp_source.html b/doxygen/python__layer_8hpp_source.html index f511d8cf130..24b888b6ab6 100644 --- a/doxygen/python__layer_8hpp_source.html +++ b/doxygen/python__layer_8hpp_source.html @@ -81,7 +81,7 @@ diff --git a/doxygen/recurrent__layer_8hpp_source.html b/doxygen/recurrent__layer_8hpp_source.html index 28f2e45fe71..30ce2f9bc50 100644 --- a/doxygen/recurrent__layer_8hpp_source.html +++ b/doxygen/recurrent__layer_8hpp_source.html @@ -94,7 +94,7 @@ diff --git a/doxygen/reduction__layer_8hpp_source.html b/doxygen/reduction__layer_8hpp_source.html index 1d9b927346a..03700ceb902 100644 --- a/doxygen/reduction__layer_8hpp_source.html +++ b/doxygen/reduction__layer_8hpp_source.html @@ -88,7 +88,7 @@ diff --git a/doxygen/relu__layer_8hpp_source.html b/doxygen/relu__layer_8hpp_source.html index 637722a2590..6f89ca38e5d 100644 --- a/doxygen/relu__layer_8hpp_source.html +++ b/doxygen/relu__layer_8hpp_source.html @@ -79,7 +79,7 @@ diff --git a/doxygen/reshape__layer_8hpp_source.html b/doxygen/reshape__layer_8hpp_source.html index 911d553f0d6..4992d6b796f 100644 --- a/doxygen/reshape__layer_8hpp_source.html +++ b/doxygen/reshape__layer_8hpp_source.html @@ -85,7 +85,7 @@ diff --git a/doxygen/rng_8hpp_source.html b/doxygen/rng_8hpp_source.html index 9339f7f68eb..c1c0e9cd6cb 100644 --- a/doxygen/rng_8hpp_source.html +++ b/doxygen/rng_8hpp_source.html @@ -70,7 +70,7 @@ diff --git a/doxygen/rnn__layer_8hpp_source.html b/doxygen/rnn__layer_8hpp_source.html index 4ebd705a733..35a2808c91c 100644 --- a/doxygen/rnn__layer_8hpp_source.html +++ b/doxygen/rnn__layer_8hpp_source.html @@ -78,7 +78,7 @@ diff --git a/doxygen/scale__layer_8hpp_source.html b/doxygen/scale__layer_8hpp_source.html index 4127a24345f..1c613d7893f 100644 --- a/doxygen/scale__layer_8hpp_source.html +++ b/doxygen/scale__layer_8hpp_source.html @@ -83,7 +83,7 @@ diff --git a/doxygen/sgd__solvers_8hpp_source.html b/doxygen/sgd__solvers_8hpp_source.html index e5f1c6c56a4..d5d13914836 100644 --- a/doxygen/sgd__solvers_8hpp_source.html +++ b/doxygen/sgd__solvers_8hpp_source.html @@ -83,7 +83,7 @@ diff --git a/doxygen/sigmoid__cross__entropy__loss__layer_8hpp_source.html b/doxygen/sigmoid__cross__entropy__loss__layer_8hpp_source.html index e7f2ef8165f..20904b5ba76 100644 --- a/doxygen/sigmoid__cross__entropy__loss__layer_8hpp_source.html +++ b/doxygen/sigmoid__cross__entropy__loss__layer_8hpp_source.html @@ -89,7 +89,7 @@ diff --git a/doxygen/sigmoid__layer_8hpp_source.html b/doxygen/sigmoid__layer_8hpp_source.html index a38f856c5a2..9a0f6cd6274 100644 --- a/doxygen/sigmoid__layer_8hpp_source.html +++ b/doxygen/sigmoid__layer_8hpp_source.html @@ -78,7 +78,7 @@ diff --git a/doxygen/signal__handler_8h_source.html b/doxygen/signal__handler_8h_source.html index 60078ff3608..4c3c36612c1 100644 --- a/doxygen/signal__handler_8h_source.html +++ b/doxygen/signal__handler_8h_source.html @@ -72,7 +72,7 @@ diff --git a/doxygen/silence__layer_8hpp_source.html b/doxygen/silence__layer_8hpp_source.html index 8a1d4773fd4..9428fbc9897 100644 --- a/doxygen/silence__layer_8hpp_source.html +++ b/doxygen/silence__layer_8hpp_source.html @@ -81,7 +81,7 @@ diff --git a/doxygen/slice__layer_8hpp_source.html b/doxygen/slice__layer_8hpp_source.html index 407f0aa74f9..0f8525a44a3 100644 --- a/doxygen/slice__layer_8hpp_source.html +++ b/doxygen/slice__layer_8hpp_source.html @@ -82,7 +82,7 @@ diff --git a/doxygen/softmax__layer_8hpp_source.html b/doxygen/softmax__layer_8hpp_source.html index 9359b027304..694f23f737d 100644 --- a/doxygen/softmax__layer_8hpp_source.html +++ b/doxygen/softmax__layer_8hpp_source.html @@ -83,7 +83,7 @@ diff --git a/doxygen/softmax__loss__layer_8hpp_source.html b/doxygen/softmax__loss__layer_8hpp_source.html index 00e7c640429..759de727cc0 100644 --- a/doxygen/softmax__loss__layer_8hpp_source.html +++ b/doxygen/softmax__loss__layer_8hpp_source.html @@ -92,7 +92,7 @@ diff --git a/doxygen/solver_8hpp_source.html b/doxygen/solver_8hpp_source.html index d562fada51a..585d71ae25f 100644 --- a/doxygen/solver_8hpp_source.html +++ b/doxygen/solver_8hpp_source.html @@ -75,7 +75,7 @@ diff --git a/doxygen/solver__factory_8hpp_source.html b/doxygen/solver__factory_8hpp_source.html index c269fe78f7f..4cb734c8c43 100644 --- a/doxygen/solver__factory_8hpp_source.html +++ b/doxygen/solver__factory_8hpp_source.html @@ -73,7 +73,7 @@ diff --git a/doxygen/split__layer_8hpp_source.html b/doxygen/split__layer_8hpp_source.html index cc224c744b7..eb54aed0437 100644 --- a/doxygen/split__layer_8hpp_source.html +++ b/doxygen/split__layer_8hpp_source.html @@ -81,7 +81,7 @@ diff --git a/doxygen/spp__layer_8hpp_source.html b/doxygen/spp__layer_8hpp_source.html index 68a4207abd9..c18383fdc78 100644 --- a/doxygen/spp__layer_8hpp_source.html +++ b/doxygen/spp__layer_8hpp_source.html @@ -91,7 +91,7 @@ diff --git a/doxygen/syncedmem_8hpp_source.html b/doxygen/syncedmem_8hpp_source.html index 4f960c08da2..8f85e892c20 100644 --- a/doxygen/syncedmem_8hpp_source.html +++ b/doxygen/syncedmem_8hpp_source.html @@ -71,7 +71,7 @@ diff --git a/doxygen/tanh__layer_8hpp_source.html b/doxygen/tanh__layer_8hpp_source.html index 6a2c3e3a18b..0db2ab76873 100644 --- a/doxygen/tanh__layer_8hpp_source.html +++ b/doxygen/tanh__layer_8hpp_source.html @@ -78,7 +78,7 @@ diff --git a/doxygen/threshold__layer_8hpp_source.html b/doxygen/threshold__layer_8hpp_source.html index 2a87602d118..aeabdb84b70 100644 --- a/doxygen/threshold__layer_8hpp_source.html +++ b/doxygen/threshold__layer_8hpp_source.html @@ -79,7 +79,7 @@ diff --git a/doxygen/tile__layer_8hpp_source.html b/doxygen/tile__layer_8hpp_source.html index fa21e51803c..d413565a9fb 100644 --- a/doxygen/tile__layer_8hpp_source.html +++ b/doxygen/tile__layer_8hpp_source.html @@ -81,7 +81,7 @@ diff --git a/doxygen/upgrade__proto_8hpp_source.html b/doxygen/upgrade__proto_8hpp_source.html index d963fc31598..f285659a85f 100644 --- a/doxygen/upgrade__proto_8hpp_source.html +++ b/doxygen/upgrade__proto_8hpp_source.html @@ -70,7 +70,7 @@ diff --git a/doxygen/window__data__layer_8hpp_source.html b/doxygen/window__data__layer_8hpp_source.html index 915a7062295..d46a1e0ae4e 100644 --- a/doxygen/window__data__layer_8hpp_source.html +++ b/doxygen/window__data__layer_8hpp_source.html @@ -77,7 +77,7 @@ diff --git a/gathered/examples/02-fine-tuning.ipynb b/gathered/examples/02-fine-tuning.ipynb index e3654d675cf..beed35a5a9e 100644 --- a/gathered/examples/02-fine-tuning.ipynb +++ b/gathered/examples/02-fine-tuning.ipynb @@ -126,7 +126,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.)" ] @@ -1197,7 +1197,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/install_apt_debian.html b/install_apt_debian.html new file mode 100644 index 00000000000..b0f7319d283 --- /dev/null +++ b/install_apt_debian.html @@ -0,0 +1,235 @@ + + + + + + + + + Caffe | Installation: Debian + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Debian Installation

      + +

      Caffe packages are available for several Debian versions, as shown in the +following chart

      + +
      Your Distro     |  CPU_ONLY  |  CUDA  |     Alias
      +----------------+------------+--------+-------------------
      +Debian/stable   |     ✘      |   ✘    | Debian Jessie
      +Debian/testing  |     ✔      |   ☐    | Debian Stretch/Sid
      +Debian/unstable |     ✔      |   ✔    | Debian Sid
      +
      +
      + +
        +
      • +

        You should take a look at Ubuntu installation instruction.

        +
      • +
      • +

        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

      + +

      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://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. 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: + +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 ... ] +$ 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 +$ sudo debi # optional, install the generated 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. +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 +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. + +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 +academic research.

        +
      • +
      • +

        If you are installing caffe-cuda, APT will automatically pull some of the +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 APT may fail.

        +
      • +
      • +

        Additionally, a manpage (man caffe) and a bash complementation script +(caffe <TAB><TAB>, caffe train <TAB><TAB>) 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.

        +
      • +
      • +

        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?
      • +
      + +

      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 are the examples, the models and other documentation stuff?
      • +
      + +
      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)

      + + +
      +
      + + diff --git a/installation.html b/installation.html index 3758e3f4825..dd5d3f24573 100644 --- a/installation.html +++ b/installation.html @@ -65,6 +65,7 @@

      Installation

      -

      ReLU / Rectified-Linear and Leaky-ReLU

      +

      Layers:

        -
      • 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"
        -}
        -
        -
        -
      • +
      • ReLU / Rectified-Linear and Leaky-ReLU - ReLU and Leaky-ReLU rectification.
      • +
      • PReLU - parametric ReLU.
      • +
      • ELU - exponential linear rectification.
      • +
      • Sigmoid
      • +
      • TanH
      • +
      • Absolute Value
      • +
      • Power - f(x) = (shift + scale * x) ^ power.
      • +
      • Exp - f(x) = base ^ (shift + scale * x).
      • +
      • Log - f(x) = log(x).
      • +
      • BNLL - f(x) = log(1 + exp(x)).
      • +
      • Threshold - performs step function at user defined threshold.
      • +
      • Bias - adds a bias to a blob that can either be learned or fixed.
      • +
      • Scale - scales a blob by an amount that can either be learned or fixed.
      -

      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.

      +

      Utility Layers

      -

      Sigmoid

      +

      Layers:

        -
      • Layer type: Sigmoid
      • -
      • CPU implementation: ./src/caffe/layers/sigmoid_layer.cpp
      • -
      • CUDA GPU implementation: ./src/caffe/layers/sigmoid_layer.cu
      • +
      • Flatten
      • +
      • Reshape
      • -

        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
      • +

        Batch Reindex

        + +
      • Split
      • +
      • Concat
      • +
      • Slicing
      • +
      • Eltwise - element-wise operations such as product or sum between two blobs.
      • +
      • Filter / Mask - mask or select output using last blob.
      • +
      • Parameter - enable parameters to be shared between layers.
      • +
      • Reduction - reduce input blob to scalar blob using operations such as sum or mean.
      • -

        Sample

        - -
        layer {
        -  name: "layer"
        -  bottom: "in"
        -  top: "out"
        -  type: "TanH"
        -}
        -
        -
        +

        Silence - prevent top-level blobs from being printed during training.

      • -
      - -

      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
      • +
      • ArgMax
      • -

        Sample

        - -
        layer {
        -  name: "layer"
        -  bottom: "in"
        -  top: "out"
        -  type: "AbsVal"
        -}
        -
        -
        +

        Softmax

      • +
      • Python - allows custom Python layers.
      -

      The AbsVal layer computes the output as abs(x) for each input element x.

      - -

      Power

      +

      Loss Layers

      -
        -
      • 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 TransformationParameters.

      - -

      Database

      - -
        -
      • 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
          • -
          -
        • -
        -
      • -
      - -

      In-Memory

      - -
        -
      • Layer type: MemoryData
      • -
      • Parameters -
          -
        • Required -
            -
          • batch_size, channels, height, width: specify the size of input chunks to read from memory
          • -
          -
        • -
        -
      • -
      - -

      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.

      - -

      HDF5 Input

      - -
        -
      • Layer type: HDF5Data
      • -
      • Parameters -
          -
        • Required -
            -
          • source: the name of the file to read from
          • -
          • batch_size
          • -
          -
        • -
        -
      • -
      - -

      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

      +

      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.

      -

      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.

      +

      Layers:

        -
      • -

        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
        -  }
        -}
        -
        -
        -
      • +
      • Multinomial Logistic Loss
      • +
      • Infogain Loss - a generalization of MultinomialLogisticLossLayer.
      • +
      • Softmax with Loss - 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 - computes the sum of squares of differences of its two inputs, .
      • +
      • Hinge / Margin - The hinge loss layer computes a one-vs-all hinge (L1) or squared hinge loss (L2).
      • +
      • Sigmoid Cross-Entropy Loss - computes the cross-entropy (logistic) loss, often used for predicting targets interpreted as probabilities.
      • +
      • Accuracy / Top-k layer - scores the output as an accuracy with respect to target – it is not actually a loss and has no backward step.
      • +
      • Contrastive Loss
      -

      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

      - -

      Softmax

      - -

      Mean-Variance Normalization

      - -

      MVN

      diff --git a/tutorial/layers/absval.html b/tutorial/layers/absval.html new file mode 100644 index 00000000000..563074c3cfa --- /dev/null +++ b/tutorial/layers/absval.html @@ -0,0 +1,87 @@ + + + + + + + + + Caffe | Absolute Value Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Absolute Value Layer

      + + + +

      The AbsVal layer computes the output as abs(x) for each input element x.

      + + +
      +
      + + diff --git a/tutorial/layers/accuracy.html b/tutorial/layers/accuracy.html new file mode 100644 index 00000000000..bf45619e352 --- /dev/null +++ b/tutorial/layers/accuracy.html @@ -0,0 +1,96 @@ + + + + + + + + + Caffe | Accuracy and Top-k + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      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.

      + + + +

      Parameters

      + + +
      message AccuracyParameter {
      +  // When computing accuracy, count as correct by comparing the true label to
      +  // the top k scoring classes.  By default, only compare to the top scoring
      +  // class (i.e. argmax).
      +  optional uint32 top_k = 1 [default = 1];
      +
      +  // The "label" axis of the prediction blob, whose argmax corresponds to the
      +  // predicted label -- may be negative to index from the end (e.g., -1 for the
      +  // last axis).  For example, if axis == 1 and the predictions are
      +  // (N x C x H x W), the label blob is expected to contain N*H*W ground truth
      +  // labels with integer values in {0, 1, ..., C-1}.
      +  optional int32 axis = 2 [default = 1];
      +
      +  // If specified, ignore instances with the given label.
      +  optional int32 ignore_label = 3;
      +}
      + + +
      +
      + + diff --git a/tutorial/layers/argmax.html b/tutorial/layers/argmax.html new file mode 100644 index 00000000000..57cc8b0ea6b --- /dev/null +++ b/tutorial/layers/argmax.html @@ -0,0 +1,88 @@ + + + + + + + + + Caffe | ArgMax Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      ArgMax Layer

      + + + +

      Parameters

      + + +
      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;
      +}
      + + +
      +
      + + diff --git a/tutorial/layers/batchnorm.html b/tutorial/layers/batchnorm.html new file mode 100644 index 00000000000..e09a24f9bc7 --- /dev/null +++ b/tutorial/layers/batchnorm.html @@ -0,0 +1,91 @@ + + + + + + + + + Caffe | Batch Norm Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Batch Norm Layer

      + + + +

      Parameters

      + + + +
      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];
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/batchreindex.html b/tutorial/layers/batchreindex.html new file mode 100644 index 00000000000..4d549719e6a --- /dev/null +++ b/tutorial/layers/batchreindex.html @@ -0,0 +1,75 @@ + + + + + + + + + Caffe | Batch Reindex Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Batch Reindex Layer

      + + + +

      Parameters

      + +

      No parameters.

      + + +
      +
      + + diff --git a/tutorial/layers/bias.html b/tutorial/layers/bias.html new file mode 100644 index 00000000000..cdb5fc1a9b3 --- /dev/null +++ b/tutorial/layers/bias.html @@ -0,0 +1,110 @@ + + + + + + + + + Caffe | Bias Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Bias Layer

      + + + +

      Parameters

      + + +
      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];
      +
      +  // (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;
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/bnll.html b/tutorial/layers/bnll.html new file mode 100644 index 00000000000..505ce3837a5 --- /dev/null +++ b/tutorial/layers/bnll.html @@ -0,0 +1,87 @@ + + + + + + + + + Caffe | BNLL Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      BNLL Layer

      + + + +

      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/tutorial/layers/concat.html b/tutorial/layers/concat.html new file mode 100644 index 00000000000..7c52c655312 --- /dev/null +++ b/tutorial/layers/concat.html @@ -0,0 +1,126 @@ + + + + + + + + + Caffe | Concat Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Concat Layer

      + + + +

      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):
      • +
      + +
      message ConcatParameter {
      +  // The axis along which to concatenate -- may be negative to index from the
      +  // end (e.g., -1 for the last axis).  Other axes must have the
      +  // same dimension for all the bottom blobs.
      +  // By default, ConcatLayer concatenates blobs along the "channels" axis (1).
      +  optional int32 axis = 2 [default = 1];
      +
      +  // DEPRECATED: alias for "axis" -- does not support negative indexing.
      +  optional uint32 concat_dim = 1 [default = 1];
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/contrastiveloss.html b/tutorial/layers/contrastiveloss.html new file mode 100644 index 00000000000..59876042856 --- /dev/null +++ b/tutorial/layers/contrastiveloss.html @@ -0,0 +1,91 @@ + + + + + + + + + Caffe | Contrastive Loss Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Contrastive Loss Layer

      + + + +

      Parameters

      + + + +
      message ContrastiveLossParameter {
      +  // margin for dissimilar pair
      +  optional float margin = 1 [default = 1.0];
      +  // The first implementation of this cost did not exactly match the cost of
      +  // Hadsell et al 2006 -- using (margin - d^2) instead of (margin - d)^2.
      +  // legacy_version = false (the default) uses (margin - d)^2 as proposed in the
      +  // Hadsell paper. New models should probably use this version.
      +  // legacy_version = true uses (margin - d^2). This is kept to support /
      +  // reproduce existing models and results
      +  optional bool legacy_version = 2 [default = false];
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/convolution.html b/tutorial/layers/convolution.html new file mode 100644 index 00000000000..a1dafe34ada --- /dev/null +++ b/tutorial/layers/convolution.html @@ -0,0 +1,195 @@ + + + + + + + + + Caffe | Convolution Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Convolution Layer

      + + + +

      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):

      + +
        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 th output group channels will be only connected to the th input group channels.
          • +
          +
        • +
        +
      • +
      • From ./src/caffe/proto/caffe.proto):
      • +
      + +
      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 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
      +  // 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
      +  // 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 FillerParameter weight_filler = 7; // The filler for the weight
      +  optional FillerParameter bias_filler = 8; // The filler for the bias
      +  enum Engine {
      +    DEFAULT = 0;
      +    CAFFE = 1;
      +    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];
      +
      +  // 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];
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/crop.html b/tutorial/layers/crop.html new file mode 100644 index 00000000000..360d83bc3b3 --- /dev/null +++ b/tutorial/layers/crop.html @@ -0,0 +1,97 @@ + + + + + + + + + Caffe | Crop Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Crop Layer

      + + + +

      Parameters

      + + + +
      message CropParameter {
      +  // 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,
      +  // 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/tutorial/layers/data.html b/tutorial/layers/data.html new file mode 100644 index 00000000000..ab851d8799c --- /dev/null +++ b/tutorial/layers/data.html @@ -0,0 +1,131 @@ + + + + + + + + + Caffe | Database Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Database Layer

      + + + +

      Parameters

      + + + +
      message DataParameter {
      +  enum DB {
      +    LEVELDB = 0;
      +    LMDB = 1;
      +  }
      +  // Specify the data source.
      +  optional string source = 1;
      +  // Specify the batch size.
      +  optional uint32 batch_size = 4;
      +  // The rand_skip variable is for the data layer to skip a few data points
      +  // to avoid all asynchronous sgd clients to start at the same point. The skip
      +  // point would be set as rand_skip * rand(0,1). Note that rand_skip should not
      +  // be larger than the number of keys in the database.
      +  // DEPRECATED. Each solver accesses a different subset of the database.
      +  optional uint32 rand_skip = 7 [default = 0];
      +  optional DB backend = 8 [default = LEVELDB];
      +  // DEPRECATED. See TransformationParameter. For data pre-processing, we can do
      +  // simple scaling and subtracting the data mean, if provided. Note that the
      +  // mean subtraction is always carried out before scaling.
      +  optional float scale = 2 [default = 1];
      +  optional string mean_file = 3;
      +  // DEPRECATED. See TransformationParameter. Specify if we would like to randomly
      +  // crop an image.
      +  optional uint32 crop_size = 5 [default = 0];
      +  // DEPRECATED. See TransformationParameter. Specify if we want to randomly mirror
      +  // data.
      +  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 (Increase if data feeding bandwidth varies, within the
      +  // limit of device memory for GPU training)
      +  optional uint32 prefetch = 10 [default = 4];
      +}
      + +
        +
      • 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/tutorial/layers/deconvolution.html b/tutorial/layers/deconvolution.html new file mode 100644 index 00000000000..94cc26ebd4f --- /dev/null +++ b/tutorial/layers/deconvolution.html @@ -0,0 +1,134 @@ + + + + + + + + + Caffe | Deconvolution Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Deconvolution Layer

      + + + +

      Parameters

      + +

      Uses the same parameters as the Convolution layer.

      + + + +
      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 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
      +  // 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
      +  // 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 FillerParameter weight_filler = 7; // The filler for the weight
      +  optional FillerParameter bias_filler = 8; // The filler for the bias
      +  enum Engine {
      +    DEFAULT = 0;
      +    CAFFE = 1;
      +    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];
      +
      +  // 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];
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/dropout.html b/tutorial/layers/dropout.html new file mode 100644 index 00000000000..8118ed725fb --- /dev/null +++ b/tutorial/layers/dropout.html @@ -0,0 +1,83 @@ + + + + + + + + + Caffe | Dropout Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Dropout Layer

      + + + +

      Parameters

      + + + +
      message DropoutParameter {
      +  optional float dropout_ratio = 1 [default = 0.5]; // dropout ratio
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/dummydata.html b/tutorial/layers/dummydata.html new file mode 100644 index 00000000000..28ff17d0ef3 --- /dev/null +++ b/tutorial/layers/dummydata.html @@ -0,0 +1,97 @@ + + + + + + + + + Caffe | Dummy Data Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Dummy Data Layer

      + + + +

      Parameters

      + + + +
      // DummyDataLayer fills any number of arbitrarily shaped blobs with random
      +// (or constant) data generated by "Fillers" (see "message FillerParameter").
      +message DummyDataParameter {
      +  // This layer produces N >= 1 top blobs.  DummyDataParameter must specify 1 or N
      +  // shape fields, and 0, 1 or N data_fillers.
      +  //
      +  // If 0 data_fillers are specified, ConstantFiller with a value of 0 is used.
      +  // If 1 data_filler is specified, it is applied to all top blobs.  If N are
      +  // specified, the ith is applied to the ith top blob.
      +  repeated FillerParameter data_filler = 1;
      +  repeated BlobShape shape = 6;
      +
      +  // 4D dimensions -- deprecated.  Use "shape" instead.
      +  repeated uint32 num = 2;
      +  repeated uint32 channels = 3;
      +  repeated uint32 height = 4;
      +  repeated uint32 width = 5;
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/eltwise.html b/tutorial/layers/eltwise.html new file mode 100644 index 00000000000..9a3572eb36e --- /dev/null +++ b/tutorial/layers/eltwise.html @@ -0,0 +1,93 @@ + + + + + + + + + Caffe | Eltwise Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Eltwise Layer

      + + + +

      Parameters

      + + + +
      message EltwiseParameter {
      +  enum EltwiseOp {
      +    PROD = 0;
      +    SUM = 1;
      +    MAX = 2;
      +  }
      +  optional EltwiseOp operation = 1 [default = SUM]; // element-wise operation
      +  repeated float coeff = 2; // blob-wise coefficient for SUM operation
      +
      +  // Whether to use an asymptotically slower (for >2 inputs) but stabler method
      +  // of computing the gradient for the PROD operation. (No effect for SUM op.)
      +  optional bool stable_prod_grad = 3 [default = true];
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/elu.html b/tutorial/layers/elu.html new file mode 100644 index 00000000000..7553469bc34 --- /dev/null +++ b/tutorial/layers/elu.html @@ -0,0 +1,94 @@ + + + + + + + + + Caffe | ELU Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      ELU Layer

      + + + +

      References

      + +
        +
      • Clevert, Djork-Arne, Thomas Unterthiner, and Sepp Hochreiter. +“Fast and Accurate Deep Network Learning by Exponential Linear Units (ELUs)” arXiv:1511.07289. (2015).
      • +
      + +

      Parameters

      + + + +
      // 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];
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/embed.html b/tutorial/layers/embed.html new file mode 100644 index 00000000000..9d99ac2441a --- /dev/null +++ b/tutorial/layers/embed.html @@ -0,0 +1,93 @@ + + + + + + + + + Caffe | Embed Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Embed Layer

      + + + +

      Parameters

      + + + +
      // Message that stores parameters used by EmbedLayer
      +message EmbedParameter {
      +  optional uint32 num_output = 1; // The number of outputs for the layer
      +  // The input is given as integers to be interpreted as one-hot
      +  // vector indices with dimension num_input.  Hence num_input should be
      +  // 1 greater than the maximum possible input value.
      +  optional uint32 input_dim = 2;
      +
      +  optional bool bias_term = 3 [default = true]; // Whether to use a bias term
      +  optional FillerParameter weight_filler = 4; // The filler for the weight
      +  optional FillerParameter bias_filler = 5; // The filler for the bias
      +
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/euclideanloss.html b/tutorial/layers/euclideanloss.html new file mode 100644 index 00000000000..16a8981522a --- /dev/null +++ b/tutorial/layers/euclideanloss.html @@ -0,0 +1,77 @@ + + + + + + + + + Caffe | Euclidean Loss Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Sum-of-Squares / Euclidean Loss Layer

      + + + +

      The Euclidean loss layer computes the sum of squares of differences of its two inputs, .

      + +

      Parameters

      + +

      Does not take any parameters.

      + + +
      +
      + + diff --git a/tutorial/layers/exp.html b/tutorial/layers/exp.html new file mode 100644 index 00000000000..b60d0f1e0e9 --- /dev/null +++ b/tutorial/layers/exp.html @@ -0,0 +1,94 @@ + + + + + + + + + Caffe | Exponential Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Exponential Layer

      + + + +

      Parameters

      + + + +
      // Message that stores parameters used by ExpLayer
      +message ExpParameter {
      +  // ExpLayer computes outputs y = base ^ (shift + scale * x), for base > 0.
      +  // Or if base is set to the default (-1), base is set to e,
      +  // so y = exp(shift + scale * x).
      +  optional float base = 1 [default = -1.0];
      +  optional float scale = 2 [default = 1.0];
      +  optional float shift = 3 [default = 0.0];
      +}
      + +

      See also

      + + + + +
      +
      + + diff --git a/tutorial/layers/filter.html b/tutorial/layers/filter.html new file mode 100644 index 00000000000..580e874d9e1 --- /dev/null +++ b/tutorial/layers/filter.html @@ -0,0 +1,75 @@ + + + + + + + + + Caffe | Filter Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Filter Layer

      + + + +

      Parameters

      + +

      Does not take any parameters.

      + + +
      +
      + + diff --git a/tutorial/layers/flatten.html b/tutorial/layers/flatten.html new file mode 100644 index 00000000000..4433e131134 --- /dev/null +++ b/tutorial/layers/flatten.html @@ -0,0 +1,92 @@ + + + + + + + + + Caffe | Flatten Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Flatten Layer

      + + + +

      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

      + + + +
      /// Message that stores parameters used by FlattenLayer
      +message FlattenParameter {
      +  // The first axis to flatten: 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 = 1 [default = 1];
      +
      +  // The last axis to flatten: all following axes are retained in the output.
      +  // May be negative to index from the end (e.g., the default -1 for the last
      +  // axis).
      +  optional int32 end_axis = 2 [default = -1];
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/hdf5data.html b/tutorial/layers/hdf5data.html new file mode 100644 index 00000000000..1f94f1cb372 --- /dev/null +++ b/tutorial/layers/hdf5data.html @@ -0,0 +1,94 @@ + + + + + + + + + Caffe | HDF5 Data Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      HDF5 Data Layer

      + + + +

      Parameters

      + + + +
      // Message that stores parameters used by HDF5DataLayer
      +message HDF5DataParameter {
      +  // Specify the data source.
      +  optional string source = 1;
      +  // Specify the batch size.
      +  optional uint32 batch_size = 2;
      +
      +  // Specify whether to shuffle the data.
      +  // If shuffle == true, the ordering of the HDF5 files is shuffled,
      +  // and the ordering of data within any given HDF5 file is shuffled,
      +  // but data between different files are not interleaved; all of a file's
      +  // data are output (in a random order) before moving onto another file.
      +  optional bool shuffle = 3 [default = false];
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/hdf5output.html b/tutorial/layers/hdf5output.html new file mode 100644 index 00000000000..26ab5e2e9ad --- /dev/null +++ b/tutorial/layers/hdf5output.html @@ -0,0 +1,93 @@ + + + + + + + + + Caffe | HDF5 Output Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      HDF5 Output Layer

      + + + +

      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:
      • +
      + +
      message HDF5OutputParameter {
      +  optional string file_name = 1;
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/hingeloss.html b/tutorial/layers/hingeloss.html new file mode 100644 index 00000000000..614af426659 --- /dev/null +++ b/tutorial/layers/hingeloss.html @@ -0,0 +1,87 @@ + + + + + + + + + Caffe | Hinge Loss Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Hinge (L1, L2) Loss Layer

      + + + +

      Parameters

      + + + +
      message HingeLossParameter {
      +  enum Norm {
      +    L1 = 1;
      +    L2 = 2;
      +  }
      +  // Specify the Norm to use L1 or L2
      +  optional Norm norm = 1 [default = L1];
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/im2col.html b/tutorial/layers/im2col.html new file mode 100644 index 00000000000..64bc2aa4ee0 --- /dev/null +++ b/tutorial/layers/im2col.html @@ -0,0 +1,75 @@ + + + + + + + + + Caffe | Im2col Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      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.

      + + + +
      +
      + + diff --git a/tutorial/layers/imagedata.html b/tutorial/layers/imagedata.html new file mode 100644 index 00000000000..2cfe013d255 --- /dev/null +++ b/tutorial/layers/imagedata.html @@ -0,0 +1,125 @@ + + + + + + + + + Caffe | ImageData Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      ImageData Layer

      + + + +

      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:
      • +
      + +
      message ImageDataParameter {
      +  // Specify the data source.
      +  optional string source = 1;
      +  // Specify the batch size.
      +  optional uint32 batch_size = 4 [default = 1];
      +  // The rand_skip variable is for the data layer to skip a few data points
      +  // to avoid all asynchronous sgd clients to start at the same point. The skip
      +  // point would be set as rand_skip * rand(0,1). Note that rand_skip should not
      +  // be larger than the number of keys in the database.
      +  optional uint32 rand_skip = 7 [default = 0];
      +  // Whether or not ImageLayer should shuffle the list of files at every epoch.
      +  optional bool shuffle = 8 [default = false];
      +  // It will also resize images if new_height or new_width are not zero.
      +  optional uint32 new_height = 9 [default = 0];
      +  optional uint32 new_width = 10 [default = 0];
      +  // Specify if the images are color or gray
      +  optional bool is_color = 11 [default = true];
      +  // DEPRECATED. See TransformationParameter. For data pre-processing, we can do
      +  // simple scaling and subtracting the data mean, if provided. Note that the
      +  // mean subtraction is always carried out before scaling.
      +  optional float scale = 2 [default = 1];
      +  optional string mean_file = 3;
      +  // DEPRECATED. See TransformationParameter. Specify if we would like to randomly
      +  // crop an image.
      +  optional uint32 crop_size = 5 [default = 0];
      +  // DEPRECATED. See TransformationParameter. Specify if we want to randomly mirror
      +  // data.
      +  optional bool mirror = 6 [default = false];
      +  optional string root_folder = 12 [default = ""];
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/infogainloss.html b/tutorial/layers/infogainloss.html new file mode 100644 index 00000000000..3d243dd4968 --- /dev/null +++ b/tutorial/layers/infogainloss.html @@ -0,0 +1,88 @@ + + + + + + + + + Caffe | Infogain Loss Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Infogain Loss Layer

      + + + +

      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.

      + +

      Parameters

      + + + +
      message InfogainLossParameter {
      +  // Specify the infogain matrix source.
      +  optional string source = 1;
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/innerproduct.html b/tutorial/layers/innerproduct.html new file mode 100644 index 00000000000..764326e545d --- /dev/null +++ b/tutorial/layers/innerproduct.html @@ -0,0 +1,156 @@ + + + + + + + + + Caffe | Inner Product / Fully Connected Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Inner Product / Fully Connected Layer

      + +
        +
      • Layer type: InnerProduct
      • +
      • Doxygen Documentation
      • +
      • Header: ./include/caffe/layers/inner_product_layer.hpp
      • +
      • CPU implementation: ./src/caffe/layers/inner_product_layer.cpp
      • +
      • +

        CUDA GPU implementation: ./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:
      • +
      + +
      message InnerProductParameter {
      +  optional uint32 num_output = 1; // The number of outputs for the layer
      +  optional bool bias_term = 2 [default = true]; // whether to have bias terms
      +  optional FillerParameter weight_filler = 3; // The filler for the weight
      +  optional FillerParameter bias_filler = 4; // The filler for the bias
      +
      +  // The first axis to be lumped into a single inner product computation;
      +  // 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];
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/input.html b/tutorial/layers/input.html new file mode 100644 index 00000000000..73f3501046b --- /dev/null +++ b/tutorial/layers/input.html @@ -0,0 +1,86 @@ + + + + + + + + + Caffe | Input Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Input Layer

      + + + +

      Parameters

      + + + +
      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;
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/log.html b/tutorial/layers/log.html new file mode 100644 index 00000000000..07d3e1ac041 --- /dev/null +++ b/tutorial/layers/log.html @@ -0,0 +1,89 @@ + + + + + + + + + Caffe | Log Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Log Layer

      + + + +

      Parameters

      + + + +
      // Message that stores parameters used by LogLayer
      +message LogParameter {
      +  // LogLayer computes outputs y = log_base(shift + scale * x), for base > 0.
      +  // Or if base is set to the default (-1), base is set to e,
      +  // so y = ln(shift + scale * x) = log_e(shift + scale * x)
      +  optional float base = 1 [default = -1.0];
      +  optional float scale = 2 [default = 1.0];
      +  optional float shift = 3 [default = 0.0];
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/lrn.html b/tutorial/layers/lrn.html new file mode 100644 index 00000000000..5a70fc56b30 --- /dev/null +++ b/tutorial/layers/lrn.html @@ -0,0 +1,105 @@ + + + + + + + + + Caffe | Local Response Normalization (LRN) + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Local Response Normalization (LRN)

      + +
        +
      • Layer type: LRN
      • +
      • Doxygen Documentation
      • +
      • Header: ./include/caffe/layers/lrn_layer.hpp
      • +
      • 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)
          • +
          +
        • +
        +
      • +
      + +

      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 , where 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

      + + + +
      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];
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/lstm.html b/tutorial/layers/lstm.html new file mode 100644 index 00000000000..18cb0bbca95 --- /dev/null +++ b/tutorial/layers/lstm.html @@ -0,0 +1,99 @@ + + + + + + + + + Caffe | LSTM Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      LSTM Layer

      + + + +

      Parameters

      + + + +
      // 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];
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/memorydata.html b/tutorial/layers/memorydata.html new file mode 100644 index 00000000000..75360f8a158 --- /dev/null +++ b/tutorial/layers/memorydata.html @@ -0,0 +1,98 @@ + + + + + + + + + Caffe | Memory Data Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Memory Data Layer

      + + + +

      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

      + + + +
      message MemoryDataParameter {
      +  optional uint32 batch_size = 1;
      +  optional uint32 channels = 2;
      +  optional uint32 height = 3;
      +  optional uint32 width = 4;
      +}
      + +
        +
      • Parameters +
          +
        • Required +
            +
          • batch_size, channels, height, width: specify the size of input chunks to read from memory
          • +
          +
        • +
        +
      • +
      + + +
      +
      + + diff --git a/tutorial/layers/multinomiallogisticloss.html b/tutorial/layers/multinomiallogisticloss.html new file mode 100644 index 00000000000..3d3acedda80 --- /dev/null +++ b/tutorial/layers/multinomiallogisticloss.html @@ -0,0 +1,107 @@ + + + + + + + + + Caffe | Multinomial Logistic Loss Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Multinomial Logistic Loss Layer

      + + + +

      Parameters

      + + + +
      // Message that stores parameters shared by loss layers
      +message LossParameter {
      +  // If specified, ignore instances with the given label.
      +  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 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
      +    // 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;
      +  }
      +  // 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
      +  // normalization = BATCH_SIZE to be consistent with previous behavior.
      +  optional bool normalize = 2;
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/mvn.html b/tutorial/layers/mvn.html new file mode 100644 index 00000000000..5aa125a33a1 --- /dev/null +++ b/tutorial/layers/mvn.html @@ -0,0 +1,90 @@ + + + + + + + + + Caffe | Mean-Variance Normalization (MVN) Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Mean-Variance Normalization (MVN) Layer

      + + + +

      Parameters

      + + + +
      message MVNParameter {
      +  // This parameter can be set to false to normalize mean only
      +  optional bool normalize_variance = 1 [default = true];
      +
      +  // This parameter can be set to true to perform DNN-like MVN
      +  optional bool across_channels = 2 [default = false];
      +
      +  // Epsilon for not dividing by zero while normalizing variance
      +  optional float eps = 3 [default = 1e-9];
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/parameter.html b/tutorial/layers/parameter.html new file mode 100644 index 00000000000..8da63b86525 --- /dev/null +++ b/tutorial/layers/parameter.html @@ -0,0 +1,84 @@ + + + + + + + + + Caffe | Parameter Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Parameter Layer

      + + + +

      See https://github.com/BVLC/caffe/pull/2079.

      + +

      Parameters

      + + + +
      message ParameterParameter {
      +  optional BlobShape shape = 1;
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/pooling.html b/tutorial/layers/pooling.html new file mode 100644 index 00000000000..07e6ff0d9b3 --- /dev/null +++ b/tutorial/layers/pooling.html @@ -0,0 +1,155 @@ + + + + + + + + + Caffe | Pooling Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Pooling

      + + + +

      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:
      • +
      + +
      message PoolingParameter {
      +  enum PoolMethod {
      +    MAX = 0;
      +    AVE = 1;
      +    STOCHASTIC = 2;
      +  }
      +  optional PoolMethod pool = 1 [default = MAX]; // The pooling method
      +  // 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 = 4 [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 = 2; // The kernel size (square)
      +  optional uint32 kernel_h = 5; // The kernel height
      +  optional uint32 kernel_w = 6; // The kernel width
      +  optional uint32 stride = 3 [default = 1]; // The stride (equal in Y, X)
      +  optional uint32 stride_h = 7; // The stride height
      +  optional uint32 stride_w = 8; // The stride width
      +  enum Engine {
      +    DEFAULT = 0;
      +    CAFFE = 1;
      +    CUDNN = 2;
      +  }
      +  optional Engine engine = 11 [default = DEFAULT];
      +  // If global_pooling then it will pool over the size of the bottom by doing
      +  // kernel_h = bottom->height and kernel_w = bottom->width
      +  optional bool global_pooling = 12 [default = false];
      +}
      + +

      Sample

      +
        +
      • +

        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
        +  }
        +}
        +
        +
        +
      • +
      + + +
      +
      + + diff --git a/tutorial/layers/power.html b/tutorial/layers/power.html new file mode 100644 index 00000000000..11f59141c19 --- /dev/null +++ b/tutorial/layers/power.html @@ -0,0 +1,118 @@ + + + + + + + + + Caffe | Power Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Power Layer

      + + + +

      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:
      • +
      + +
      message PowerParameter {
      +  // PowerLayer computes outputs y = (shift + scale * x) ^ power.
      +  optional float power = 1 [default = 1.0];
      +  optional float scale = 2 [default = 1.0];
      +  optional float shift = 3 [default = 0.0];
      +}
      + +

      Sample

      + +
        layer {
      +    name: "layer"
      +    bottom: "in"
      +    top: "out"
      +    type: "Power"
      +    power_param {
      +      power: 1
      +      scale: 1
      +      shift: 0
      +    }
      +  }
      +
      +
      + +

      See also

      + + + + +
      +
      + + diff --git a/tutorial/layers/prelu.html b/tutorial/layers/prelu.html new file mode 100644 index 00000000000..0afe36d323e --- /dev/null +++ b/tutorial/layers/prelu.html @@ -0,0 +1,89 @@ + + + + + + + + + Caffe | PReLU Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      PReLU Layer

      + + + +

      Parameters

      + + + +
      message PReLUParameter {
      +  // Parametric ReLU described in K. He et al, Delving Deep into Rectifiers:
      +  // Surpassing Human-Level Performance on ImageNet Classification, 2015.
      +
      +  // Initial value of a_i. Default is a_i=0.25 for all i.
      +  optional FillerParameter filler = 1;
      +  // Whether or not slope parameters are shared across channels.
      +  optional bool channel_shared = 2 [default = false];
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/python.html b/tutorial/layers/python.html new file mode 100644 index 00000000000..162c1cafe8c --- /dev/null +++ b/tutorial/layers/python.html @@ -0,0 +1,101 @@ + + + + + + + + + Caffe | Python Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Python Layer

      + + + +

      The Python layer allows users to add customized layers without modifying the Caffe core code.

      + +

      Parameters

      + + + +
      message PythonParameter {
      +  optional string module = 1;
      +  optional string layer = 2;
      +  // This value is set to the attribute `param_str` of the `PythonLayer` object
      +  // in Python before calling the `setup()` method. This could be a number,
      +  // 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.
      +  optional bool share_in_parallel = 4 [default = false];
      +}
      + +

      Examples and tutorials

      + + + + +
      +
      + + diff --git a/tutorial/layers/recurrent.html b/tutorial/layers/recurrent.html new file mode 100644 index 00000000000..c81774e95bc --- /dev/null +++ b/tutorial/layers/recurrent.html @@ -0,0 +1,98 @@ + + + + + + + + + Caffe | Recurrent Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Recurrent Layer

      + + + +

      Parameters

      + + + +
      // 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];
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/reduction.html b/tutorial/layers/reduction.html new file mode 100644 index 00000000000..ead0f1fff7a --- /dev/null +++ b/tutorial/layers/reduction.html @@ -0,0 +1,108 @@ + + + + + + + + + Caffe | Reduction Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Reduction Layer

      + + + +

      Parameters

      + + + +
      // Message that stores parameters used by ReductionLayer
      +message ReductionParameter {
      +  enum ReductionOp {
      +    SUM = 1;
      +    ASUM = 2;
      +    SUMSQ = 3;
      +    MEAN = 4;
      +  }
      +
      +  optional ReductionOp operation = 1 [default = SUM]; // reduction operation
      +
      +  // The first axis to reduce to a scalar -- may be negative to index from the
      +  // end (e.g., -1 for the last axis).
      +  // (Currently, only reduction along ALL "tail" axes is supported; reduction
      +  // of axis M through N, where N < num_axes - 1, is unsupported.)
      +  // Suppose we have an n-axis bottom Blob with shape:
      +  //     (d0, d1, d2, ..., d(m-1), dm, d(m+1), ..., d(n-1)).
      +  // If axis == m, the output Blob will have shape
      +  //     (d0, d1, d2, ..., d(m-1)),
      +  // and the ReductionOp operation is performed (d0 * d1 * d2 * ... * d(m-1))
      +  // times, each including (dm * d(m+1) * ... * d(n-1)) individual data.
      +  // If axis == 0 (the default), the output Blob always has the empty shape
      +  // (count 1), performing reduction across the entire input --
      +  // often useful for creating new loss functions.
      +  optional int32 axis = 2 [default = 0];
      +
      +  optional float coeff = 3 [default = 1.0]; // coefficient for output
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/relu.html b/tutorial/layers/relu.html new file mode 100644 index 00000000000..1fdbfbbed78 --- /dev/null +++ b/tutorial/layers/relu.html @@ -0,0 +1,117 @@ + + + + + + + + + Caffe | ReLU / Rectified-Linear and Leaky-ReLU Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      ReLU / Rectified-Linear and Leaky-ReLU Layer

      + + + +

      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:
      • +
      + +
      // Message that stores parameters used by ReLULayer
      +message ReLUParameter {
      +  // Allow non-zero slope for negative inputs to speed up optimization
      +  // Described in:
      +  // Maas, A. L., Hannun, A. Y., & Ng, A. Y. (2013). Rectifier nonlinearities
      +  // improve neural network acoustic models. In ICML Workshop on Deep Learning
      +  // for Audio, Speech, and Language Processing.
      +  optional float negative_slope = 1 [default = 0];
      +  enum Engine {
      +    DEFAULT = 0;
      +    CAFFE = 1;
      +    CUDNN = 2;
      +  }
      +  optional Engine engine = 2 [default = DEFAULT];
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/reshape.html b/tutorial/layers/reshape.html new file mode 100644 index 00000000000..90bee0588fc --- /dev/null +++ b/tutorial/layers/reshape.html @@ -0,0 +1,192 @@ + + + + + + + + + Caffe | Reshape Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Reshape Layer

      +
        +
      • Layer type: Reshape
      • +
      • Doxygen Documentation
      • +
      • Header: ./include/caffe/layers/reshape_layer.hpp
      • +
      • +

        Implementation: ./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:
      • +
      + +
      message ReshapeParameter {
      +  // Specify the output dimensions. If some of the dimensions are set to 0,
      +  // the corresponding dimension from the bottom layer is used (unchanged).
      +  // Exactly one dimension may be set to -1, in which case its value is
      +  // inferred from the count of the bottom blob and the remaining dimensions.
      +  // For example, suppose we want to reshape a 2D blob "input" with shape 2 x 8:
      +  //
      +  //   layer {
      +  //     type: "Reshape" bottom: "input" top: "output"
      +  //     reshape_param { ... }
      +  //   }
      +  //
      +  // If "input" is 2D with shape 2 x 8, then the following reshape_param
      +  // specifications are all equivalent, producing a 3D blob "output" with shape
      +  // 2 x 2 x 4:
      +  //
      +  //   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:  0  dim:-1  dim:  4 } }
      +  //
      +  optional BlobShape shape = 1;
      +
      +  // axis and num_axes control the portion of the bottom blob's shape that are
      +  // replaced by (included in) the reshape. By default (axis == 0 and
      +  // num_axes == -1), the entire bottom blob shape is included in the reshape,
      +  // and hence the shape field must specify the entire output shape.
      +  //
      +  // axis may be non-zero to retain some portion of the beginning of the input
      +  // shape (and may be negative to index from the end; e.g., -1 to begin the
      +  // reshape after the last axis, including nothing in the reshape,
      +  // -2 to include only the last axis, etc.).
      +  //
      +  // For example, suppose "input" is a 2D blob with shape 2 x 8.
      +  // Then the following ReshapeLayer specifications are all equivalent,
      +  // producing a blob "output" with shape 2 x 2 x 4:
      +  //
      +  //   reshape_param { shape { dim: 2  dim: 2  dim: 4 } }
      +  //   reshape_param { shape { dim: 2  dim: 4 } axis:  1 }
      +  //   reshape_param { shape { dim: 2  dim: 4 } axis: -3 }
      +  //
      +  // num_axes specifies the extent of the reshape.
      +  // If num_axes >= 0 (and axis >= 0), the reshape will be performed only on
      +  // input axes in the range [axis, axis+num_axes].
      +  // num_axes may also be -1, the default, to include all remaining axes
      +  // (starting from axis).
      +  //
      +  // For example, suppose "input" is a 2D blob with shape 2 x 8.
      +  // Then the following ReshapeLayer specifications are equivalent,
      +  // producing a blob "output" with shape 1 x 2 x 8.
      +  //
      +  //   reshape_param { shape { dim:  1  dim: 2  dim:  8 } }
      +  //   reshape_param { shape { dim:  1  dim: 2  }  num_axes: 1 }
      +  //   reshape_param { shape { dim:  1  }  num_axes: 0 }
      +  //
      +  // On the other hand, these would produce output blob shape 2 x 1 x 8:
      +  //
      +  //   reshape_param { shape { dim: 2  dim: 1  dim: 8  }  }
      +  //   reshape_param { shape { dim: 1 }  axis: 1  num_axes: 0 }
      +  //
      +  optional int32 axis = 2 [default = 0];
      +  optional int32 num_axes = 3 [default = -1];
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/rnn.html b/tutorial/layers/rnn.html new file mode 100644 index 00000000000..1e82e0870ae --- /dev/null +++ b/tutorial/layers/rnn.html @@ -0,0 +1,97 @@ + + + + + + + + + Caffe | RNN Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      RNN Layer

      + + + +

      Parameters

      + + + +
      // 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];
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/scale.html b/tutorial/layers/scale.html new file mode 100644 index 00000000000..9ab2970015f --- /dev/null +++ b/tutorial/layers/scale.html @@ -0,0 +1,116 @@ + + + + + + + + + Caffe | Scale Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Scale Layer

      + + + +

      Parameters

      + + + +
      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;
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/sigmoid.html b/tutorial/layers/sigmoid.html new file mode 100644 index 00000000000..995f8662221 --- /dev/null +++ b/tutorial/layers/sigmoid.html @@ -0,0 +1,88 @@ + + + + + + + + + Caffe | Sigmoid Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Sigmoid Layer

      + + + +

      Parameters

      + + + +
      message SigmoidParameter {
      +  enum Engine {
      +    DEFAULT = 0;
      +    CAFFE = 1;
      +    CUDNN = 2;
      +  }
      +  optional Engine engine = 1 [default = DEFAULT];
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/sigmoidcrossentropyloss.html b/tutorial/layers/sigmoidcrossentropyloss.html new file mode 100644 index 00000000000..feed41fb1f1 --- /dev/null +++ b/tutorial/layers/sigmoidcrossentropyloss.html @@ -0,0 +1,73 @@ + + + + + + + + + Caffe | Sigmoid Cross-Entropy Loss Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Sigmoid Cross-Entropy Loss Layer

      + + + +

      To-do.

      + + +
      +
      + + diff --git a/tutorial/layers/silence.html b/tutorial/layers/silence.html new file mode 100644 index 00000000000..b109c64b424 --- /dev/null +++ b/tutorial/layers/silence.html @@ -0,0 +1,93 @@ + + + + + + + + + Caffe | Silence Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Silence Layer

      + + + +

      Silences a blob, so that it is not printed.

      + +

      Parameters

      + + + +
      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];
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/slice.html b/tutorial/layers/slice.html new file mode 100644 index 00000000000..d9f2ceab083 --- /dev/null +++ b/tutorial/layers/slice.html @@ -0,0 +1,117 @@ + + + + + + + + + Caffe | Slice Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Slice Layer

      + + + +

      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

      + + + +
      message SliceParameter {
      +  // The axis along which to slice -- may be negative to index from the end
      +  // (e.g., -1 for the last axis).
      +  // By default, SliceLayer concatenates blobs along the "channels" axis (1).
      +  optional int32 axis = 3 [default = 1];
      +  repeated uint32 slice_point = 2;
      +
      +  // DEPRECATED: alias for "axis" -- does not support negative indexing.
      +  optional uint32 slice_dim = 1 [default = 1];
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/softmax.html b/tutorial/layers/softmax.html new file mode 100644 index 00000000000..8f78f711eb5 --- /dev/null +++ b/tutorial/layers/softmax.html @@ -0,0 +1,99 @@ + + + + + + + + + Caffe | Softmax Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Softmax Layer

      + + + +

      Parameters

      + + + +
      // Message that stores parameters used by SoftmaxLayer, SoftmaxWithLossLayer
      +message SoftmaxParameter {
      +  enum Engine {
      +    DEFAULT = 0;
      +    CAFFE = 1;
      +    CUDNN = 2;
      +  }
      +  optional Engine engine = 1 [default = DEFAULT];
      +
      +  // The axis along which to perform the softmax -- may be negative to index
      +  // from the end (e.g., -1 for the last axis).
      +  // Any other axes will be evaluated as independent softmaxes.
      +  optional int32 axis = 2 [default = 1];
      +}
      + +

      See also

      + + + + +
      +
      + + diff --git a/tutorial/layers/softmaxwithloss.html b/tutorial/layers/softmaxwithloss.html new file mode 100644 index 00000000000..5bee89450de --- /dev/null +++ b/tutorial/layers/softmaxwithloss.html @@ -0,0 +1,135 @@ + + + + + + + + + Caffe | Softmax with Loss Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Softmax with Loss Layer

      + + + +

      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

      + + + +
      // Message that stores parameters used by SoftmaxLayer, SoftmaxWithLossLayer
      +message SoftmaxParameter {
      +  enum Engine {
      +    DEFAULT = 0;
      +    CAFFE = 1;
      +    CUDNN = 2;
      +  }
      +  optional Engine engine = 1 [default = DEFAULT];
      +
      +  // The axis along which to perform the softmax -- may be negative to index
      +  // from the end (e.g., -1 for the last axis).
      +  // Any other axes will be evaluated as independent softmaxes.
      +  optional int32 axis = 2 [default = 1];
      +}
      + + + +
      // Message that stores parameters shared by loss layers
      +message LossParameter {
      +  // If specified, ignore instances with the given label.
      +  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 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
      +    // 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;
      +  }
      +  // 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
      +  // normalization = BATCH_SIZE to be consistent with previous behavior.
      +  optional bool normalize = 2;
      +}
      + +

      See also

      + + + + +
      +
      + + diff --git a/tutorial/layers/split.html b/tutorial/layers/split.html new file mode 100644 index 00000000000..0d2ba9c0adb --- /dev/null +++ b/tutorial/layers/split.html @@ -0,0 +1,77 @@ + + + + + + + + + Caffe | Split Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Split Layer

      + + + +

      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/tutorial/layers/spp.html b/tutorial/layers/spp.html new file mode 100644 index 00000000000..f46cbd87c6f --- /dev/null +++ b/tutorial/layers/spp.html @@ -0,0 +1,94 @@ + + + + + + + + + Caffe | Spatial Pyramid Pooling Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Spatial Pyramid Pooling Layer

      + + + +

      Parameters

      + + + +
      message SPPParameter {
      +  enum PoolMethod {
      +    MAX = 0;
      +    AVE = 1;
      +    STOCHASTIC = 2;
      +  }
      +  optional uint32 pyramid_height = 1;
      +  optional PoolMethod pool = 2 [default = MAX]; // The pooling method
      +  enum Engine {
      +    DEFAULT = 0;
      +    CAFFE = 1;
      +    CUDNN = 2;
      +  }
      +  optional Engine engine = 6 [default = DEFAULT];
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/tanh.html b/tutorial/layers/tanh.html new file mode 100644 index 00000000000..442331700d3 --- /dev/null +++ b/tutorial/layers/tanh.html @@ -0,0 +1,86 @@ + + + + + + + + + Caffe | TanH Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      TanH Layer

      + + + +

      Parameters

      + + + +
      message TanHParameter {
      +  enum Engine {
      +    DEFAULT = 0;
      +    CAFFE = 1;
      +    CUDNN = 2;
      +  }
      +  optional Engine engine = 1 [default = DEFAULT];
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/threshold.html b/tutorial/layers/threshold.html new file mode 100644 index 00000000000..00c91c9b7a2 --- /dev/null +++ b/tutorial/layers/threshold.html @@ -0,0 +1,82 @@ + + + + + + + + + Caffe | Threshold Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Threshold Layer

      + + + +

      Parameters

      + + + +
      // Message that stores parameters used by ThresholdLayer
      +message ThresholdParameter {
      +  optional float threshold = 1 [default = 0]; // Strictly positive values
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/tile.html b/tutorial/layers/tile.html new file mode 100644 index 00000000000..da508757d34 --- /dev/null +++ b/tutorial/layers/tile.html @@ -0,0 +1,88 @@ + + + + + + + + + Caffe | Tile Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Tile Layer

      + + + +

      Parameters

      + + + +
      // Message that stores parameters used by TileLayer
      +message TileParameter {
      +  // The index of the axis to tile.
      +  optional int32 axis = 1 [default = 1];
      +
      +  // The number of copies (tiles) of the blob to output.
      +  optional int32 tiles = 2;
      +}
      + + + +
      +
      + + diff --git a/tutorial/layers/windowdata.html b/tutorial/layers/windowdata.html new file mode 100644 index 00000000000..6967e82f899 --- /dev/null +++ b/tutorial/layers/windowdata.html @@ -0,0 +1,111 @@ + + + + + + + + + Caffe | WindowData Layer + + + + + + + + + + + + + +
      +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      WindowData Layer

      + + + +

      Parameters

      + + + +
      message WindowDataParameter {
      +  // Specify the data source.
      +  optional string source = 1;
      +  // For data pre-processing, we can do simple scaling and subtracting the
      +  // data mean, if provided. Note that the mean subtraction is always carried
      +  // out before scaling.
      +  optional float scale = 2 [default = 1];
      +  optional string mean_file = 3;
      +  // Specify the batch size.
      +  optional uint32 batch_size = 4;
      +  // Specify if we would like to randomly crop an image.
      +  optional uint32 crop_size = 5 [default = 0];
      +  // Specify if we want to randomly mirror data.
      +  optional bool mirror = 6 [default = false];
      +  // Foreground (object) overlap threshold
      +  optional float fg_threshold = 7 [default = 0.5];
      +  // Background (non-object) overlap threshold
      +  optional float bg_threshold = 8 [default = 0.5];
      +  // Fraction of batch that should be foreground objects
      +  optional float fg_fraction = 9 [default = 0.25];
      +  // Amount of contextual padding to add around a window
      +  // (used only by the window_data_layer)
      +  optional uint32 context_pad = 10 [default = 0];
      +  // Mode for cropping out a detection window
      +  // warp: cropped window is warped to a fixed size and aspect ratio
      +  // square: the tightest square around the window is cropped
      +  optional string crop_mode = 11 [default = "warp"];
      +  // cache_images: will load all images in memory for faster access
      +  optional bool cache_images = 12 [default = false];
      +  // append root_folder to locate images
      +  optional string root_folder = 13 [default = ""];
      +}
      + + + +
      +
      + + From d219d6ec94492446cdd5d8787414786a30e56db3 Mon Sep 17 00:00:00 2001 From: Evan Shelhamer Date: Fri, 14 Apr 2017 17:13:04 -0700 Subject: [PATCH 4/4] 69cf20ad Merge pull request #5539 from shelhamer/caffe-1.0 --- development.html | 8 +- doxygen/absval__layer_8hpp_source.html | 8 +- doxygen/accuracy__layer_8hpp_source.html | 8 +- doxygen/annotated.html | 52 +- doxygen/argmax__layer_8hpp_source.html | 8 +- doxygen/arrowdown.png | Bin 246 -> 0 bytes doxygen/arrowright.png | Bin 229 -> 0 bytes doxygen/base__conv__layer_8hpp_source.html | 10 +- doxygen/base__data__layer_8hpp_source.html | 18 +- doxygen/batch__norm__layer_8hpp_source.html | 8 +- doxygen/batch__reindex__layer_8hpp_source.html | 8 +- doxygen/benchmark_8hpp_source.html | 8 +- doxygen/bias__layer_8hpp_source.html | 8 +- doxygen/blob_8hpp_source.html | 8 +- doxygen/blocking__queue_8hpp_source.html | 8 +- doxygen/bnll__layer_8hpp_source.html | 8 +- doxygen/caffe_8hpp_source.html | 8 +- doxygen/classcaffe_1_1AbsValLayer-members.html | 8 +- doxygen/classcaffe_1_1AbsValLayer.html | 40 +- doxygen/classcaffe_1_1AccuracyLayer-members.html | 8 +- doxygen/classcaffe_1_1AccuracyLayer.html | 32 +- doxygen/classcaffe_1_1AdaDeltaSolver-members.html | 8 +- doxygen/classcaffe_1_1AdaDeltaSolver.html | 10 +- doxygen/classcaffe_1_1AdaGradSolver-members.html | 8 +- doxygen/classcaffe_1_1AdaGradSolver.html | 10 +- doxygen/classcaffe_1_1AdamSolver-members.html | 8 +- doxygen/classcaffe_1_1AdamSolver.html | 10 +- doxygen/classcaffe_1_1ArgMaxLayer-members.html | 8 +- doxygen/classcaffe_1_1ArgMaxLayer.html | 32 +- doxygen/classcaffe_1_1BNLLLayer-members.html | 8 +- doxygen/classcaffe_1_1BNLLLayer.html | 34 +- ...classcaffe_1_1BaseConvolutionLayer-members.html | 8 +- doxygen/classcaffe_1_1BaseConvolutionLayer.html | 20 +- doxygen/classcaffe_1_1BaseDataLayer-members.html | 17 +- doxygen/classcaffe_1_1BaseDataLayer.html | 17 +- ...scaffe_1_1BasePrefetchingDataLayer-members.html | 25 +- .../classcaffe_1_1BasePrefetchingDataLayer.html | 15 +- doxygen/classcaffe_1_1Batch-members.html | 8 +- doxygen/classcaffe_1_1Batch.html | 8 +- doxygen/classcaffe_1_1BatchNormLayer-members.html | 8 +- doxygen/classcaffe_1_1BatchNormLayer.html | 18 +- .../classcaffe_1_1BatchReindexLayer-members.html | 8 +- doxygen/classcaffe_1_1BatchReindexLayer.html | 30 +- doxygen/classcaffe_1_1BiasLayer-members.html | 8 +- doxygen/classcaffe_1_1BiasLayer.html | 20 +- doxygen/classcaffe_1_1BilinearFiller-members.html | 8 +- doxygen/classcaffe_1_1BilinearFiller.html | 10 +- doxygen/classcaffe_1_1Blob-members.html | 8 +- doxygen/classcaffe_1_1Blob.html | 24 +- doxygen/classcaffe_1_1BlockingQueue-members.html | 8 +- doxygen/classcaffe_1_1BlockingQueue.html | 8 +- ...lasscaffe_1_1BlockingQueue_1_1sync-members.html | 8 +- doxygen/classcaffe_1_1BlockingQueue_1_1sync.html | 8 +- doxygen/classcaffe_1_1CPUTimer-members.html | 8 +- doxygen/classcaffe_1_1CPUTimer.html | 8 +- doxygen/classcaffe_1_1Caffe-members.html | 8 +- doxygen/classcaffe_1_1Caffe.html | 8 +- doxygen/classcaffe_1_1Caffe_1_1RNG-members.html | 8 +- doxygen/classcaffe_1_1Caffe_1_1RNG.html | 8 +- ...caffe_1_1Caffe_1_1RNG_1_1Generator-members.html | 8 +- .../classcaffe_1_1Caffe_1_1RNG_1_1Generator.html | 8 +- doxygen/classcaffe_1_1ConcatLayer-members.html | 8 +- doxygen/classcaffe_1_1ConcatLayer.html | 34 +- doxygen/classcaffe_1_1ConstantFiller-members.html | 8 +- doxygen/classcaffe_1_1ConstantFiller.html | 14 +- ...classcaffe_1_1ContrastiveLossLayer-members.html | 8 +- doxygen/classcaffe_1_1ContrastiveLossLayer.html | 50 +- .../classcaffe_1_1ConvolutionLayer-members.html | 8 +- doxygen/classcaffe_1_1ConvolutionLayer.html | 14 +- doxygen/classcaffe_1_1CropLayer-members.html | 8 +- doxygen/classcaffe_1_1CropLayer.html | 18 +- doxygen/classcaffe_1_1DataLayer-members.html | 29 +- doxygen/classcaffe_1_1DataLayer.html | 19 +- doxygen/classcaffe_1_1DataReader-members.html | 89 --- doxygen/classcaffe_1_1DataReader.html | 143 ---- .../classcaffe_1_1DataReader_1_1Body-members.html | 94 --- doxygen/classcaffe_1_1DataReader_1_1Body.html | 142 ---- doxygen/classcaffe_1_1DataReader_1_1Body.png | Bin 664 -> 0 bytes ...sscaffe_1_1DataReader_1_1QueuePair-members.html | 85 --- doxygen/classcaffe_1_1DataReader_1_1QueuePair.html | 104 --- doxygen/classcaffe_1_1DataTransformer-members.html | 8 +- doxygen/classcaffe_1_1DataTransformer.html | 20 +- .../classcaffe_1_1DeconvolutionLayer-members.html | 8 +- doxygen/classcaffe_1_1DeconvolutionLayer.html | 10 +- doxygen/classcaffe_1_1DevicePair-members.html | 86 --- doxygen/classcaffe_1_1DevicePair.html | 114 --- doxygen/classcaffe_1_1DropoutLayer-members.html | 8 +- doxygen/classcaffe_1_1DropoutLayer.html | 38 +- doxygen/classcaffe_1_1DummyDataLayer-members.html | 15 +- doxygen/classcaffe_1_1DummyDataLayer.html | 21 +- doxygen/classcaffe_1_1ELULayer-members.html | 8 +- doxygen/classcaffe_1_1ELULayer.html | 30 +- doxygen/classcaffe_1_1EltwiseLayer-members.html | 8 +- doxygen/classcaffe_1_1EltwiseLayer.html | 18 +- doxygen/classcaffe_1_1EmbedLayer-members.html | 8 +- doxygen/classcaffe_1_1EmbedLayer.html | 18 +- .../classcaffe_1_1EuclideanLossLayer-members.html | 8 +- doxygen/classcaffe_1_1EuclideanLossLayer.html | 44 +- doxygen/classcaffe_1_1ExpLayer-members.html | 8 +- doxygen/classcaffe_1_1ExpLayer.html | 36 +- doxygen/classcaffe_1_1Filler-members.html | 8 +- doxygen/classcaffe_1_1Filler.html | 10 +- doxygen/classcaffe_1_1FilterLayer-members.html | 8 +- doxygen/classcaffe_1_1FilterLayer.html | 30 +- doxygen/classcaffe_1_1FlattenLayer-members.html | 8 +- doxygen/classcaffe_1_1FlattenLayer.html | 24 +- doxygen/classcaffe_1_1GPUParams-members.html | 92 --- doxygen/classcaffe_1_1GPUParams.html | 134 ---- doxygen/classcaffe_1_1GPUParams.png | Bin 1066 -> 0 bytes doxygen/classcaffe_1_1GaussianFiller-members.html | 8 +- doxygen/classcaffe_1_1GaussianFiller.html | 14 +- doxygen/classcaffe_1_1HDF5DataLayer-members.html | 19 +- doxygen/classcaffe_1_1HDF5DataLayer.html | 21 +- doxygen/classcaffe_1_1HDF5OutputLayer-members.html | 17 +- doxygen/classcaffe_1_1HDF5OutputLayer.html | 21 +- doxygen/classcaffe_1_1HingeLossLayer-members.html | 8 +- doxygen/classcaffe_1_1HingeLossLayer.html | 36 +- doxygen/classcaffe_1_1Im2colLayer-members.html | 8 +- doxygen/classcaffe_1_1Im2colLayer.html | 18 +- doxygen/classcaffe_1_1ImageDataLayer-members.html | 29 +- doxygen/classcaffe_1_1ImageDataLayer.html | 17 +- .../classcaffe_1_1InfogainLossLayer-members.html | 58 +- doxygen/classcaffe_1_1InfogainLossLayer.html | 250 ++++++- .../classcaffe_1_1InnerProductLayer-members.html | 8 +- doxygen/classcaffe_1_1InnerProductLayer.html | 18 +- doxygen/classcaffe_1_1InputLayer-members.html | 15 +- doxygen/classcaffe_1_1InputLayer.html | 21 +- doxygen/classcaffe_1_1InternalThread-members.html | 8 +- doxygen/classcaffe_1_1InternalThread.html | 12 +- doxygen/classcaffe_1_1LRNLayer-members.html | 8 +- doxygen/classcaffe_1_1LRNLayer.html | 18 +- doxygen/classcaffe_1_1LSTMLayer-members.html | 8 +- doxygen/classcaffe_1_1LSTMLayer.html | 10 +- doxygen/classcaffe_1_1LSTMUnitLayer-members.html | 8 +- doxygen/classcaffe_1_1LSTMUnitLayer.html | 44 +- doxygen/classcaffe_1_1Layer-members.html | 8 +- doxygen/classcaffe_1_1Layer.html | 66 +- doxygen/classcaffe_1_1LayerRegisterer-members.html | 8 +- doxygen/classcaffe_1_1LayerRegisterer.html | 8 +- doxygen/classcaffe_1_1LayerRegistry-members.html | 8 +- doxygen/classcaffe_1_1LayerRegistry.html | 8 +- doxygen/classcaffe_1_1LogLayer-members.html | 8 +- doxygen/classcaffe_1_1LogLayer.html | 36 +- doxygen/classcaffe_1_1LossLayer-members.html | 8 +- doxygen/classcaffe_1_1LossLayer.html | 22 +- doxygen/classcaffe_1_1MSRAFiller-members.html | 8 +- doxygen/classcaffe_1_1MSRAFiller.html | 14 +- doxygen/classcaffe_1_1MVNLayer-members.html | 8 +- doxygen/classcaffe_1_1MVNLayer.html | 16 +- doxygen/classcaffe_1_1MemoryDataLayer-members.html | 23 +- doxygen/classcaffe_1_1MemoryDataLayer.html | 17 +- ...fe_1_1MultinomialLogisticLossLayer-members.html | 8 +- ...classcaffe_1_1MultinomialLogisticLossLayer.html | 34 +- doxygen/classcaffe_1_1NesterovSolver-members.html | 8 +- doxygen/classcaffe_1_1NesterovSolver.html | 10 +- doxygen/classcaffe_1_1Net-members.html | 8 +- doxygen/classcaffe_1_1Net.html | 22 +- doxygen/classcaffe_1_1Net_1_1Callback-members.html | 8 +- doxygen/classcaffe_1_1Net_1_1Callback.html | 8 +- doxygen/classcaffe_1_1NeuronLayer-members.html | 8 +- doxygen/classcaffe_1_1NeuronLayer.html | 20 +- doxygen/classcaffe_1_1P2PSync-members.html | 113 --- doxygen/classcaffe_1_1P2PSync.html | 196 ------ doxygen/classcaffe_1_1P2PSync.png | Bin 2025 -> 0 bytes doxygen/classcaffe_1_1PReLULayer-members.html | 8 +- doxygen/classcaffe_1_1PReLULayer.html | 32 +- doxygen/classcaffe_1_1ParameterLayer-members.html | 8 +- doxygen/classcaffe_1_1ParameterLayer.html | 18 +- doxygen/classcaffe_1_1Params-members.html | 89 --- doxygen/classcaffe_1_1Params.html | 130 ---- doxygen/classcaffe_1_1Params.png | Bin 1072 -> 0 bytes doxygen/classcaffe_1_1PoolingLayer-members.html | 8 +- doxygen/classcaffe_1_1PoolingLayer.html | 20 +- ...asscaffe_1_1PositiveUnitballFiller-members.html | 8 +- doxygen/classcaffe_1_1PositiveUnitballFiller.html | 14 +- doxygen/classcaffe_1_1PowerLayer-members.html | 8 +- doxygen/classcaffe_1_1PowerLayer.html | 44 +- doxygen/classcaffe_1_1PythonLayer-members.html | 15 +- doxygen/classcaffe_1_1PythonLayer.html | 17 +- doxygen/classcaffe_1_1RMSPropSolver-members.html | 8 +- doxygen/classcaffe_1_1RMSPropSolver.html | 10 +- doxygen/classcaffe_1_1RNNLayer-members.html | 8 +- doxygen/classcaffe_1_1RNNLayer.html | 12 +- doxygen/classcaffe_1_1ReLULayer-members.html | 8 +- doxygen/classcaffe_1_1ReLULayer.html | 30 +- doxygen/classcaffe_1_1RecurrentLayer-members.html | 8 +- doxygen/classcaffe_1_1RecurrentLayer.html | 32 +- doxygen/classcaffe_1_1ReductionLayer-members.html | 8 +- doxygen/classcaffe_1_1ReductionLayer.html | 18 +- doxygen/classcaffe_1_1ReshapeLayer-members.html | 8 +- doxygen/classcaffe_1_1ReshapeLayer.html | 18 +- doxygen/classcaffe_1_1SGDSolver-members.html | 8 +- doxygen/classcaffe_1_1SGDSolver.html | 10 +- doxygen/classcaffe_1_1SPPLayer-members.html | 8 +- doxygen/classcaffe_1_1SPPLayer.html | 18 +- doxygen/classcaffe_1_1ScaleLayer-members.html | 8 +- doxygen/classcaffe_1_1ScaleLayer.html | 30 +- ...fe_1_1SigmoidCrossEntropyLossLayer-members.html | 8 +- ...classcaffe_1_1SigmoidCrossEntropyLossLayer.html | 46 +- doxygen/classcaffe_1_1SigmoidLayer-members.html | 8 +- doxygen/classcaffe_1_1SigmoidLayer.html | 26 +- doxygen/classcaffe_1_1SignalHandler-members.html | 8 +- doxygen/classcaffe_1_1SignalHandler.html | 8 +- doxygen/classcaffe_1_1SilenceLayer-members.html | 8 +- doxygen/classcaffe_1_1SilenceLayer.html | 16 +- doxygen/classcaffe_1_1SliceLayer-members.html | 8 +- doxygen/classcaffe_1_1SliceLayer.html | 18 +- doxygen/classcaffe_1_1SoftmaxLayer-members.html | 8 +- doxygen/classcaffe_1_1SoftmaxLayer.html | 16 +- ...classcaffe_1_1SoftmaxWithLossLayer-members.html | 8 +- doxygen/classcaffe_1_1SoftmaxWithLossLayer.html | 38 +- doxygen/classcaffe_1_1Solver-members.html | 8 +- doxygen/classcaffe_1_1Solver.html | 10 +- .../classcaffe_1_1SolverRegisterer-members.html | 8 +- doxygen/classcaffe_1_1SolverRegisterer.html | 8 +- doxygen/classcaffe_1_1SolverRegistry-members.html | 8 +- doxygen/classcaffe_1_1SolverRegistry.html | 8 +- .../classcaffe_1_1Solver_1_1Callback-members.html | 8 +- doxygen/classcaffe_1_1Solver_1_1Callback.html | 8 +- doxygen/classcaffe_1_1Solver_1_1Callback.png | Bin 792 -> 0 bytes doxygen/classcaffe_1_1SplitLayer-members.html | 8 +- doxygen/classcaffe_1_1SplitLayer.html | 16 +- doxygen/classcaffe_1_1SyncedMemory-members.html | 8 +- doxygen/classcaffe_1_1SyncedMemory.html | 8 +- doxygen/classcaffe_1_1TanHLayer-members.html | 8 +- doxygen/classcaffe_1_1TanHLayer.html | 26 +- doxygen/classcaffe_1_1ThresholdLayer-members.html | 8 +- doxygen/classcaffe_1_1ThresholdLayer.html | 22 +- doxygen/classcaffe_1_1TileLayer-members.html | 8 +- doxygen/classcaffe_1_1TileLayer.html | 16 +- doxygen/classcaffe_1_1Timer-members.html | 8 +- doxygen/classcaffe_1_1Timer.html | 8 +- doxygen/classcaffe_1_1UniformFiller-members.html | 8 +- doxygen/classcaffe_1_1UniformFiller.html | 14 +- doxygen/classcaffe_1_1WindowDataLayer-members.html | 39 +- doxygen/classcaffe_1_1WindowDataLayer.html | 17 +- doxygen/classcaffe_1_1WorkerSolver-members.html | 125 ---- doxygen/classcaffe_1_1WorkerSolver.html | 249 ------- doxygen/classcaffe_1_1WorkerSolver.png | Bin 750 -> 0 bytes doxygen/classcaffe_1_1XavierFiller-members.html | 8 +- doxygen/classcaffe_1_1XavierFiller.html | 14 +- doxygen/classcaffe_1_1db_1_1Cursor-members.html | 8 +- doxygen/classcaffe_1_1db_1_1Cursor.html | 8 +- doxygen/classcaffe_1_1db_1_1Cursor.png | Bin 877 -> 0 bytes doxygen/classcaffe_1_1db_1_1DB-members.html | 8 +- doxygen/classcaffe_1_1db_1_1DB.html | 8 +- doxygen/classcaffe_1_1db_1_1DB.png | Bin 686 -> 0 bytes doxygen/classcaffe_1_1db_1_1LMDB-members.html | 114 --- doxygen/classcaffe_1_1db_1_1LMDB.html | 138 ---- doxygen/classcaffe_1_1db_1_1LMDB.png | Bin 488 -> 0 bytes .../classcaffe_1_1db_1_1LMDBCursor-members.html | 115 --- doxygen/classcaffe_1_1db_1_1LMDBCursor.html | 143 ---- doxygen/classcaffe_1_1db_1_1LMDBCursor.png | Bin 623 -> 0 bytes ...lasscaffe_1_1db_1_1LMDBTransaction-members.html | 111 --- doxygen/classcaffe_1_1db_1_1LMDBTransaction.html | 135 ---- doxygen/classcaffe_1_1db_1_1LMDBTransaction.png | Bin 678 -> 0 bytes doxygen/classcaffe_1_1db_1_1LevelDB-members.html | 114 --- doxygen/classcaffe_1_1db_1_1LevelDB.html | 138 ---- doxygen/classcaffe_1_1db_1_1LevelDB.png | Bin 507 -> 0 bytes .../classcaffe_1_1db_1_1LevelDBCursor-members.html | 115 --- doxygen/classcaffe_1_1db_1_1LevelDBCursor.html | 143 ---- doxygen/classcaffe_1_1db_1_1LevelDBCursor.png | Bin 644 -> 0 bytes ...scaffe_1_1db_1_1LevelDBTransaction-members.html | 111 --- .../classcaffe_1_1db_1_1LevelDBTransaction.html | 134 ---- doxygen/classcaffe_1_1db_1_1LevelDBTransaction.png | Bin 698 -> 0 bytes .../classcaffe_1_1db_1_1Transaction-members.html | 8 +- doxygen/classcaffe_1_1db_1_1Transaction.html | 8 +- doxygen/classcaffe_1_1db_1_1Transaction.png | Bin 955 -> 0 bytes doxygen/classes.html | 8 +- doxygen/common_8hpp_source.html | 8 +- doxygen/common__layers_8hpp_source.html | 776 --------------------- doxygen/concat__layer_8hpp_source.html | 8 +- doxygen/contrastive__loss__layer_8hpp_source.html | 8 +- doxygen/conv__layer_8hpp_source.html | 8 +- doxygen/crop__layer_8hpp_source.html | 12 +- doxygen/cudnn_8hpp_source.html | 10 +- doxygen/cudnn__conv__layer_8hpp_source.html | 8 +- doxygen/cudnn__lcn__layer_8hpp_source.html | 8 +- doxygen/cudnn__lrn__layer_8hpp_source.html | 8 +- doxygen/cudnn__pooling__layer_8hpp_source.html | 8 +- doxygen/cudnn__relu__layer_8hpp_source.html | 8 +- doxygen/cudnn__sigmoid__layer_8hpp_source.html | 8 +- doxygen/cudnn__softmax__layer_8hpp_source.html | 8 +- doxygen/cudnn__tanh__layer_8hpp_source.html | 8 +- doxygen/data__layer_8hpp_source.html | 20 +- doxygen/data__layers_8hpp_source.html | 475 ------------- doxygen/data__reader_8hpp_source.html | 84 --- doxygen/data__transformer_8hpp_source.html | 8 +- doxygen/db_8hpp_source.html | 8 +- doxygen/db__leveldb_8hpp_source.html | 10 +- doxygen/db__lmdb_8hpp_source.html | 8 +- doxygen/deconv__layer_8hpp_source.html | 8 +- doxygen/device__alternate_8hpp_source.html | 8 +- doxygen/dir_4b7f3da7c7b4301d805dae0326fb91b7.html | 8 +- doxygen/dir_5c92236a0f5740f6a611cf0cbca860fd.html | 8 +- doxygen/dir_63b6f53f56ebc4a4e494d80608d10658.html | 8 +- doxygen/dir_68267d1309a1af8e8297ef4c3efbcdba.html | 8 +- doxygen/dir_750d2c266ff028c3ef5b86bdca6396e1.html | 8 +- doxygen/dir_b4c5ae27f152c386e8799324caa2412e.html | 8 +- doxygen/dir_b9606a76d4acbf8f90a06a4a51ec8b9e.html | 8 +- doxygen/dir_d44c64559bbebec7f509842c48db8b23.html | 8 +- doxygen/dir_feb0d617e78aec1d705c99fd9e400e0d.html | 8 +- doxygen/doxygen.css | 90 ++- doxygen/dropout__layer_8hpp_source.html | 8 +- doxygen/dummy__data__layer_8hpp_source.html | 22 +- doxygen/eltwise__layer_8hpp_source.html | 12 +- doxygen/elu__layer_8hpp_source.html | 8 +- doxygen/embed__layer_8hpp_source.html | 8 +- doxygen/euclidean__loss__layer_8hpp_source.html | 8 +- doxygen/exp__layer_8hpp_source.html | 8 +- doxygen/files.html | 8 +- doxygen/filler_8hpp_source.html | 8 +- doxygen/filter__layer_8hpp_source.html | 8 +- doxygen/flatten__layer_8hpp_source.html | 8 +- doxygen/form_0.png | Bin 232 -> 269 bytes doxygen/form_1.png | Bin 466 -> 431 bytes doxygen/form_10.png | Bin 242 -> 546 bytes doxygen/form_100.png | Bin 206 -> 300 bytes doxygen/form_101.png | Bin 474 -> 228 bytes doxygen/form_102.png | Bin 481 -> 265 bytes doxygen/form_103.png | Bin 563 -> 249 bytes doxygen/form_104.png | Bin 607 -> 576 bytes doxygen/form_105.png | Bin 654 -> 490 bytes doxygen/form_106.png | Bin 217 -> 218 bytes doxygen/form_107.png | Bin 1013 -> 265 bytes doxygen/form_108.png | Bin 428 -> 1538 bytes doxygen/form_109.png | Bin 623 -> 263 bytes doxygen/form_11.png | Bin 584 -> 209 bytes doxygen/form_110.png | Bin 428 -> 224 bytes doxygen/form_111.png | Bin 376 -> 218 bytes doxygen/form_112.png | Bin 371 -> 314 bytes doxygen/form_113.png | Bin 874 -> 568 bytes doxygen/form_114.png | Bin 1069 -> 442 bytes doxygen/form_115.png | Bin 243 -> 247 bytes doxygen/form_116.png | Bin 206 -> 470 bytes doxygen/form_117.png | Bin 744 -> 459 bytes doxygen/form_118.png | Bin 947 -> 352 bytes doxygen/form_119.png | Bin 1122 -> 231 bytes doxygen/form_12.png | Bin 579 -> 315 bytes doxygen/form_120.png | Bin 630 -> 217 bytes doxygen/form_121.png | Bin 1468 -> 236 bytes doxygen/form_122.png | Bin 637 -> 308 bytes doxygen/form_123.png | Bin 234 -> 314 bytes doxygen/form_124.png | Bin 478 -> 595 bytes doxygen/form_125.png | Bin 234 -> 407 bytes doxygen/form_126.png | Bin 790 -> 783 bytes doxygen/form_127.png | Bin 435 -> 482 bytes doxygen/form_128.png | Bin 203 -> 1076 bytes doxygen/form_129.png | Bin 1218 -> 243 bytes doxygen/form_13.png | Bin 477 -> 216 bytes doxygen/form_130.png | Bin 1206 -> 792 bytes doxygen/form_131.png | Bin 542 -> 439 bytes doxygen/form_132.png | Bin 559 -> 203 bytes doxygen/form_133.png | Bin 565 -> 1212 bytes doxygen/form_134.png | Bin 353 -> 1194 bytes doxygen/form_135.png | Bin 295 -> 427 bytes doxygen/form_136.png | Bin 366 -> 218 bytes doxygen/form_137.png | Bin 383 -> 226 bytes doxygen/form_138.png | Bin 1298 -> 436 bytes doxygen/form_139.png | Bin 438 -> 372 bytes doxygen/form_14.png | Bin 312 -> 665 bytes doxygen/form_140.png | Bin 429 -> 210 bytes doxygen/form_141.png | Bin 437 -> 325 bytes doxygen/form_142.png | Bin 1338 -> 210 bytes doxygen/form_143.png | Bin 1056 -> 263 bytes doxygen/form_144.png | Bin 908 -> 299 bytes doxygen/form_145.png | Bin 203 -> 307 bytes doxygen/form_146.png | Bin 619 -> 238 bytes doxygen/form_147.png | Bin 444 -> 298 bytes doxygen/form_148.png | Bin 297 -> 480 bytes doxygen/form_149.png | Bin 442 -> 460 bytes doxygen/form_15.png | Bin 215 -> 215 bytes doxygen/form_150.png | Bin 247 -> 222 bytes doxygen/form_151.png | Bin 470 -> 479 bytes doxygen/form_152.png | Bin 459 -> 207 bytes doxygen/form_153.png | Bin 352 -> 742 bytes doxygen/form_154.png | Bin 231 -> 952 bytes doxygen/form_155.png | Bin 217 -> 1136 bytes doxygen/form_156.png | Bin 236 -> 223 bytes doxygen/form_157.png | Bin 308 -> 898 bytes doxygen/form_158.png | Bin 314 -> 653 bytes doxygen/form_159.png | Bin 595 -> 203 bytes doxygen/form_16.png | Bin 821 -> 278 bytes doxygen/form_160.png | Bin 407 -> 614 bytes doxygen/form_161.png | Bin 427 -> 448 bytes doxygen/form_162.png | Bin 218 -> 297 bytes doxygen/form_163.png | Bin 226 -> 1188 bytes doxygen/form_164.png | Bin 436 -> 438 bytes doxygen/form_165.png | Bin 372 -> 553 bytes doxygen/form_166.png | Bin 210 -> 270 bytes doxygen/form_167.png | Bin 325 -> 364 bytes doxygen/form_168.png | Bin 210 -> 773 bytes doxygen/form_169.png | Bin 263 -> 567 bytes doxygen/form_17.png | Bin 583 -> 364 bytes doxygen/form_170.png | Bin 299 -> 627 bytes doxygen/form_171.png | Bin 307 -> 923 bytes doxygen/form_172.png | Bin 238 -> 616 bytes doxygen/form_173.png | Bin 298 -> 1480 bytes doxygen/form_174.png | Bin 480 -> 638 bytes doxygen/form_175.png | Bin 460 -> 0 bytes doxygen/form_176.png | Bin 222 -> 0 bytes doxygen/form_177.png | Bin 223 -> 0 bytes doxygen/form_178.png | Bin 898 -> 0 bytes doxygen/form_179.png | Bin 653 -> 0 bytes doxygen/form_18.png | Bin 271 -> 402 bytes doxygen/form_19.png | Bin 429 -> 231 bytes doxygen/form_2.png | Bin 550 -> 263 bytes doxygen/form_20.png | Bin 261 -> 234 bytes doxygen/form_21.png | Bin 345 -> 555 bytes doxygen/form_22.png | Bin 475 -> 428 bytes doxygen/form_23.png | Bin 474 -> 195 bytes doxygen/form_24.png | Bin 207 -> 563 bytes doxygen/form_25.png | Bin 1261 -> 232 bytes doxygen/form_26.png | Bin 490 -> 391 bytes doxygen/form_27.png | Bin 476 -> 679 bytes doxygen/form_28.png | Bin 433 -> 1138 bytes doxygen/form_29.png | Bin 448 -> 459 bytes doxygen/form_3.png | Bin 210 -> 345 bytes doxygen/form_30.png | Bin 427 -> 423 bytes doxygen/form_31.png | Bin 343 -> 436 bytes doxygen/form_32.png | Bin 388 -> 555 bytes doxygen/form_33.png | Bin 774 -> 552 bytes doxygen/form_34.png | Bin 460 -> 272 bytes doxygen/form_35.png | Bin 455 -> 355 bytes doxygen/form_36.png | Bin 768 -> 223 bytes doxygen/form_37.png | Bin 204 -> 301 bytes doxygen/form_38.png | Bin 363 -> 229 bytes doxygen/form_39.png | Bin 408 -> 366 bytes doxygen/form_4.png | Bin 487 -> 469 bytes doxygen/form_40.png | Bin 323 -> 384 bytes doxygen/form_41.png | Bin 427 -> 689 bytes doxygen/form_42.png | Bin 435 -> 276 bytes doxygen/form_43.png | Bin 200 -> 613 bytes doxygen/form_44.png | Bin 555 -> 1581 bytes doxygen/form_45.png | Bin 1242 -> 302 bytes doxygen/form_46.png | Bin 237 -> 245 bytes doxygen/form_47.png | Bin 263 -> 585 bytes doxygen/form_48.png | Bin 1148 -> 571 bytes doxygen/form_49.png | Bin 405 -> 480 bytes doxygen/form_5.png | Bin 492 -> 477 bytes doxygen/form_50.png | Bin 215 -> 832 bytes doxygen/form_51.png | Bin 228 -> 1352 bytes doxygen/form_52.png | Bin 265 -> 445 bytes doxygen/form_53.png | Bin 249 -> 480 bytes doxygen/form_54.png | Bin 569 -> 431 bytes doxygen/form_55.png | Bin 492 -> 452 bytes doxygen/form_56.png | Bin 228 -> 344 bytes doxygen/form_57.png | Bin 271 -> 211 bytes doxygen/form_58.png | Bin 1571 -> 228 bytes doxygen/form_59.png | Bin 267 -> 704 bytes doxygen/form_6.png | Bin 553 -> 209 bytes doxygen/form_60.png | Bin 225 -> 403 bytes doxygen/form_61.png | Bin 228 -> 209 bytes doxygen/form_62.png | Bin 781 -> 211 bytes doxygen/form_63.png | Bin 1175 -> 234 bytes doxygen/form_64.png | Bin 439 -> 209 bytes doxygen/form_65.png | Bin 550 -> 217 bytes doxygen/form_66.png | Bin 267 -> 1017 bytes doxygen/form_67.png | Bin 362 -> 428 bytes doxygen/form_68.png | Bin 928 -> 631 bytes doxygen/form_69.png | Bin 215 -> 428 bytes doxygen/form_7.png | Bin 273 -> 475 bytes doxygen/form_70.png | Bin 279 -> 378 bytes doxygen/form_71.png | Bin 233 -> 1050 bytes doxygen/form_72.png | Bin 237 -> 213 bytes doxygen/form_73.png | Bin 562 -> 900 bytes doxygen/form_74.png | Bin 686 -> 783 bytes doxygen/form_75.png | Bin 1136 -> 460 bytes doxygen/form_76.png | Bin 211 -> 452 bytes doxygen/form_77.png | Bin 228 -> 775 bytes doxygen/form_78.png | Bin 705 -> 225 bytes doxygen/form_79.png | Bin 402 -> 796 bytes doxygen/form_8.png | Bin 222 -> 235 bytes doxygen/form_80.png | Bin 207 -> 216 bytes doxygen/form_81.png | Bin 211 -> 791 bytes doxygen/form_82.png | Bin 225 -> 379 bytes doxygen/form_83.png | Bin 789 -> 226 bytes doxygen/form_84.png | Bin 215 -> 207 bytes doxygen/form_85.png | Bin 782 -> 375 bytes doxygen/form_86.png | Bin 204 -> 874 bytes doxygen/form_87.png | Bin 302 -> 540 bytes doxygen/form_88.png | Bin 310 -> 576 bytes doxygen/form_89.png | Bin 210 -> 202 bytes doxygen/form_9.png | Bin 230 -> 303 bytes doxygen/form_90.png | Bin 759 -> 323 bytes doxygen/form_91.png | Bin 302 -> 420 bytes doxygen/form_92.png | Bin 300 -> 432 bytes doxygen/form_93.png | Bin 685 -> 1246 bytes doxygen/form_94.png | Bin 279 -> 238 bytes doxygen/form_95.png | Bin 617 -> 260 bytes doxygen/form_96.png | Bin 1574 -> 1153 bytes doxygen/form_97.png | Bin 380 -> 404 bytes doxygen/form_98.png | Bin 213 -> 215 bytes doxygen/form_99.png | Bin 228 -> 202 bytes doxygen/format_8hpp_source.html | 8 +- doxygen/formula.repository | 355 +++++----- doxygen/functions.html | 8 +- doxygen/functions_b.html | 8 +- doxygen/functions_c.html | 8 +- doxygen/functions_d.html | 8 +- doxygen/functions_e.html | 9 +- doxygen/functions_f.html | 8 +- doxygen/functions_func.html | 8 +- doxygen/functions_func_b.html | 8 +- doxygen/functions_func_c.html | 8 +- doxygen/functions_func_d.html | 8 +- doxygen/functions_func_e.html | 9 +- doxygen/functions_func_f.html | 8 +- doxygen/functions_func_g.html | 11 +- doxygen/functions_func_h.html | 8 +- doxygen/functions_func_i.html | 8 +- doxygen/functions_func_l.html | 8 +- doxygen/functions_func_m.html | 10 +- doxygen/functions_func_n.html | 8 +- doxygen/functions_func_o.html | 8 +- doxygen/functions_func_p.html | 8 +- doxygen/functions_func_r.html | 8 +- doxygen/functions_func_s.html | 11 +- doxygen/functions_func_t.html | 8 +- doxygen/functions_func_u.html | 8 +- doxygen/functions_func_w.html | 8 +- doxygen/functions_g.html | 11 +- doxygen/functions_h.html | 9 +- doxygen/functions_i.html | 9 +- doxygen/functions_k.html | 8 +- doxygen/functions_l.html | 8 +- doxygen/functions_m.html | 10 +- doxygen/functions_n.html | 11 +- doxygen/functions_o.html | 8 +- doxygen/functions_p.html | 11 +- doxygen/functions_r.html | 8 +- doxygen/functions_s.html | 20 +- doxygen/functions_t.html | 8 +- doxygen/functions_u.html | 8 +- doxygen/functions_vars.html | 25 +- doxygen/functions_w.html | 8 +- doxygen/hdf5_8hpp_source.html | 10 +- doxygen/hdf5__data__layer_8hpp_source.html | 26 +- doxygen/hdf5__output__layer_8hpp_source.html | 18 +- doxygen/hierarchy.html | 52 +- doxygen/hinge__loss__layer_8hpp_source.html | 8 +- doxygen/im2col_8hpp_source.html | 8 +- doxygen/im2col__layer_8hpp_source.html | 8 +- doxygen/image__data__layer_8hpp_source.html | 12 +- doxygen/index.html | 8 +- doxygen/infogain__loss__layer_8hpp_source.html | 38 +- doxygen/inner__product__layer_8hpp_source.html | 8 +- doxygen/input__layer_8hpp_source.html | 22 +- doxygen/insert__splits_8hpp_source.html | 8 +- doxygen/internal__thread_8hpp_source.html | 8 +- doxygen/io_8hpp_source.html | 8 +- doxygen/layer_8hpp_source.html | 8 +- doxygen/layer__factory_8hpp_source.html | 8 +- doxygen/log__layer_8hpp_source.html | 8 +- doxygen/loss__layer_8hpp_source.html | 8 +- doxygen/loss__layers_8hpp_source.html | 456 ------------ doxygen/lrn__layer_8hpp_source.html | 8 +- doxygen/lstm__layer_8hpp_source.html | 8 +- doxygen/math__functions_8hpp_source.html | 10 +- doxygen/memory__data__layer_8hpp_source.html | 8 +- doxygen/menudata.js | 148 ++-- doxygen/mkl__alternate_8hpp_source.html | 10 +- ...inomial__logistic__loss__layer_8hpp_source.html | 8 +- doxygen/mvn__layer_8hpp_source.html | 8 +- doxygen/namespaceboost.html | 8 +- doxygen/namespacecaffe.html | 119 ++-- doxygen/namespacecaffe_1_1SolverAction.html | 8 +- doxygen/namespacemembers.html | 8 +- doxygen/namespacemembers_func.html | 8 +- doxygen/namespacemembers_type.html | 8 +- doxygen/namespaces.html | 8 +- doxygen/nccl_8hpp_source.html | 8 +- doxygen/net_8hpp_source.html | 48 +- doxygen/neuron__layer_8hpp_source.html | 8 +- doxygen/neuron__layers_8hpp_source.html | 569 --------------- doxygen/parallel_8hpp_source.html | 8 +- doxygen/parameter__layer_8hpp_source.html | 8 +- doxygen/pooling__layer_8hpp_source.html | 8 +- doxygen/power__layer_8hpp_source.html | 8 +- doxygen/prelu__layer_8hpp_source.html | 8 +- doxygen/python__layer_8hpp_source.html | 16 +- doxygen/recurrent__layer_8hpp_source.html | 8 +- doxygen/reduction__layer_8hpp_source.html | 8 +- doxygen/relu__layer_8hpp_source.html | 8 +- doxygen/reshape__layer_8hpp_source.html | 8 +- doxygen/rng_8hpp_source.html | 8 +- doxygen/rnn__layer_8hpp_source.html | 8 +- doxygen/scale__layer_8hpp_source.html | 8 +- doxygen/search/all_0.html | 2 +- doxygen/search/all_0.js | 6 +- doxygen/search/all_1.html | 2 +- doxygen/search/all_1.js | 3 +- doxygen/search/all_10.html | 2 +- doxygen/search/all_10.js | 10 +- doxygen/search/all_11.html | 2 +- doxygen/search/all_11.js | 3 +- doxygen/search/all_12.html | 2 +- doxygen/search/all_13.html | 2 +- doxygen/search/all_14.html | 2 +- doxygen/search/all_15.html | 26 - doxygen/search/all_15.js | 4 - doxygen/search/all_2.html | 2 +- doxygen/search/all_2.js | 9 +- doxygen/search/all_3.html | 2 +- doxygen/search/all_3.js | 3 +- doxygen/search/all_4.html | 2 +- doxygen/search/all_4.js | 8 +- doxygen/search/all_5.html | 2 +- doxygen/search/all_6.html | 2 +- doxygen/search/all_6.js | 2 +- doxygen/search/all_7.html | 2 +- doxygen/search/all_7.js | 2 +- doxygen/search/all_8.html | 2 +- doxygen/search/all_8.js | 2 +- doxygen/search/all_9.html | 2 +- doxygen/search/all_a.html | 2 +- doxygen/search/all_a.js | 6 +- doxygen/search/all_b.html | 2 +- doxygen/search/all_b.js | 4 +- doxygen/search/all_c.html | 2 +- doxygen/search/all_c.js | 2 +- doxygen/search/all_d.html | 2 +- doxygen/search/all_e.html | 2 +- doxygen/search/all_e.js | 8 +- doxygen/search/all_f.html | 2 +- doxygen/search/all_f.js | 3 +- doxygen/search/classes_0.html | 2 +- doxygen/search/classes_1.html | 2 +- doxygen/search/classes_10.html | 2 +- doxygen/search/classes_11.html | 2 +- doxygen/search/classes_12.html | 2 +- doxygen/search/classes_13.html | 26 - doxygen/search/classes_13.js | 4 - doxygen/search/classes_2.html | 2 +- doxygen/search/classes_2.js | 3 +- doxygen/search/classes_3.html | 2 +- doxygen/search/classes_4.html | 2 +- doxygen/search/classes_5.html | 2 +- doxygen/search/classes_6.html | 2 +- doxygen/search/classes_7.html | 2 +- doxygen/search/classes_8.html | 2 +- doxygen/search/classes_9.html | 2 +- doxygen/search/classes_a.html | 2 +- doxygen/search/classes_b.html | 2 +- doxygen/search/classes_c.html | 2 +- doxygen/search/classes_d.html | 2 +- doxygen/search/classes_e.html | 2 +- doxygen/search/classes_f.html | 2 +- doxygen/search/functions_0.html | 2 +- doxygen/search/functions_1.html | 2 +- doxygen/search/functions_10.html | 2 +- doxygen/search/functions_11.html | 2 +- doxygen/search/functions_12.html | 2 +- doxygen/search/functions_2.html | 2 +- doxygen/search/functions_3.html | 2 +- doxygen/search/functions_4.html | 2 +- doxygen/search/functions_4.js | 2 +- doxygen/search/functions_5.html | 2 +- doxygen/search/functions_6.html | 2 +- doxygen/search/functions_6.js | 2 +- doxygen/search/functions_7.html | 2 +- doxygen/search/functions_8.html | 2 +- doxygen/search/functions_9.html | 2 +- doxygen/search/functions_a.html | 2 +- doxygen/search/functions_a.js | 4 +- doxygen/search/functions_b.html | 2 +- doxygen/search/functions_c.html | 2 +- doxygen/search/functions_d.html | 2 +- doxygen/search/functions_e.html | 2 +- doxygen/search/functions_f.html | 2 +- doxygen/search/functions_f.js | 1 + doxygen/search/namespaces_0.html | 2 +- doxygen/search/namespaces_1.html | 2 +- doxygen/search/typedefs_0.html | 2 +- doxygen/search/variables_0.html | 2 +- doxygen/search/variables_1.html | 2 +- doxygen/search/variables_10.html | 2 +- doxygen/search/variables_11.html | 2 +- doxygen/search/variables_2.html | 2 +- doxygen/search/variables_3.html | 2 +- doxygen/search/variables_4.html | 2 +- doxygen/search/variables_5.html | 2 +- doxygen/search/variables_6.html | 2 +- doxygen/search/variables_6.js | 2 +- doxygen/search/variables_7.html | 2 +- doxygen/search/variables_7.js | 2 +- doxygen/search/variables_8.html | 2 +- doxygen/search/variables_9.html | 2 +- doxygen/search/variables_a.html | 2 +- doxygen/search/variables_b.html | 2 +- doxygen/search/variables_b.js | 2 +- doxygen/search/variables_c.html | 2 +- doxygen/search/variables_d.html | 2 +- doxygen/search/variables_d.js | 2 +- doxygen/search/variables_e.html | 2 +- doxygen/search/variables_f.html | 2 +- doxygen/search/variables_f.js | 6 +- doxygen/sgd__solvers_8hpp_source.html | 8 +- ...d__cross__entropy__loss__layer_8hpp_source.html | 8 +- doxygen/sigmoid__layer_8hpp_source.html | 8 +- doxygen/signal__handler_8h_source.html | 8 +- doxygen/silence__layer_8hpp_source.html | 8 +- doxygen/slice__layer_8hpp_source.html | 8 +- doxygen/softmax__layer_8hpp_source.html | 8 +- doxygen/softmax__loss__layer_8hpp_source.html | 8 +- doxygen/solver_8hpp_source.html | 8 +- doxygen/solver__factory_8hpp_source.html | 8 +- doxygen/split__layer_8hpp_source.html | 8 +- doxygen/spp__layer_8hpp_source.html | 8 +- doxygen/syncedmem_8hpp_source.html | 8 +- doxygen/tanh__layer_8hpp_source.html | 8 +- doxygen/threshold__layer_8hpp_source.html | 8 +- doxygen/tile__layer_8hpp_source.html | 8 +- doxygen/upgrade__proto_8hpp_source.html | 8 +- doxygen/vision__layers_8hpp_source.html | 737 ------------------- doxygen/window__data__layer_8hpp_source.html | 12 +- gathered/examples/00-classification.ipynb | 2 +- gathered/examples/01-learning-lenet.ipynb | 2 +- gathered/examples/02-fine-tuning.ipynb | 4 +- gathered/examples/brewing-logreg.ipynb | 2 +- gathered/examples/cifar10.html | 2 +- gathered/examples/cpp_classification.html | 38 +- gathered/examples/detection.ipynb | 2 +- gathered/examples/feature_extraction.html | 2 +- gathered/examples/finetune_flickr_style.html | 4 +- gathered/examples/imagenet.html | 2 +- gathered/examples/mnist.html | 2 +- gathered/examples/net_surgery.ipynb | 2 +- .../pascal-multilabel-with-datalayer.ipynb | 2 +- gathered/examples/siamese.html | 2 +- gathered/examples/siamese/mnist_siamese.ipynb | 2 +- gathered/examples/web_demo.html | 2 +- index.html | 71 +- install_apt.html | 8 +- install_apt_debian.html | 123 ++-- install_osx.html | 2 +- install_yum.html | 2 +- installation.html | 8 +- model_zoo.html | 26 +- multigpu.html | 2 +- performance_hardware.html | 142 ---- tutorial/convolution.html | 2 +- tutorial/data.html | 2 +- tutorial/forward_backward.html | 2 +- tutorial/index.html | 2 +- tutorial/interfaces.html | 6 +- tutorial/layers.html | 4 +- tutorial/layers/absval.html | 2 +- tutorial/layers/accuracy.html | 32 +- tutorial/layers/argmax.html | 24 +- tutorial/layers/batchnorm.html | 34 +- tutorial/layers/batchreindex.html | 2 +- tutorial/layers/bias.html | 60 +- tutorial/layers/bnll.html | 2 +- tutorial/layers/concat.html | 20 +- tutorial/layers/contrastiveloss.html | 24 +- tutorial/layers/convolution.html | 106 +-- tutorial/layers/crop.html | 36 +- tutorial/layers/data.html | 68 +- tutorial/layers/deconvolution.html | 106 +-- tutorial/layers/dropout.html | 8 +- tutorial/layers/dummydata.html | 34 +- tutorial/layers/eltwise.html | 28 +- tutorial/layers/elu.html | 16 +- tutorial/layers/embed.html | 26 +- tutorial/layers/euclideanloss.html | 2 +- tutorial/layers/exp.html | 20 +- tutorial/layers/filter.html | 2 +- tutorial/layers/flatten.html | 22 +- tutorial/layers/hdf5data.html | 28 +- tutorial/layers/hdf5output.html | 8 +- tutorial/layers/hingeloss.html | 18 +- tutorial/layers/im2col.html | 2 +- tutorial/layers/imagedata.html | 62 +- tutorial/layers/infogainloss.html | 16 +- tutorial/layers/innerproduct.html | 34 +- tutorial/layers/input.html | 16 +- tutorial/layers/log.html | 20 +- tutorial/layers/lrn.html | 33 +- tutorial/layers/lstm.html | 34 +- tutorial/layers/memorydata.html | 16 +- tutorial/layers/multinomiallogisticloss.html | 60 +- tutorial/layers/mvn.html | 18 +- tutorial/layers/parameter.html | 8 +- tutorial/layers/pooling.html | 58 +- tutorial/layers/power.html | 14 +- tutorial/layers/prelu.html | 20 +- tutorial/layers/python.html | 26 +- tutorial/layers/recurrent.html | 34 +- tutorial/layers/reduction.html | 54 +- tutorial/layers/relu.html | 32 +- tutorial/layers/reshape.html | 128 ++-- tutorial/layers/rnn.html | 34 +- tutorial/layers/scale.html | 68 +- tutorial/layers/sigmoid.html | 32 +- tutorial/layers/sigmoidcrossentropyloss.html | 2 +- tutorial/layers/silence.html | 20 +- tutorial/layers/slice.html | 20 +- tutorial/layers/softmax.html | 28 +- tutorial/layers/softmaxwithloss.html | 86 +-- tutorial/layers/split.html | 2 +- tutorial/layers/spp.html | 32 +- tutorial/layers/tanh.html | 18 +- tutorial/layers/threshold.html | 10 +- tutorial/layers/tile.html | 16 +- tutorial/layers/windowdata.html | 66 +- tutorial/loss.html | 2 +- tutorial/net_layer_blob.html | 2 +- tutorial/solver.html | 4 +- 809 files changed, 4209 insertions(+), 10712 deletions(-) delete mode 100644 doxygen/arrowdown.png delete mode 100644 doxygen/arrowright.png delete mode 100644 doxygen/classcaffe_1_1DataReader-members.html delete mode 100644 doxygen/classcaffe_1_1DataReader.html delete mode 100644 doxygen/classcaffe_1_1DataReader_1_1Body-members.html delete mode 100644 doxygen/classcaffe_1_1DataReader_1_1Body.html delete mode 100644 doxygen/classcaffe_1_1DataReader_1_1Body.png delete mode 100644 doxygen/classcaffe_1_1DataReader_1_1QueuePair-members.html delete mode 100644 doxygen/classcaffe_1_1DataReader_1_1QueuePair.html delete mode 100644 doxygen/classcaffe_1_1DevicePair-members.html delete mode 100644 doxygen/classcaffe_1_1DevicePair.html delete mode 100644 doxygen/classcaffe_1_1GPUParams-members.html delete mode 100644 doxygen/classcaffe_1_1GPUParams.html delete mode 100644 doxygen/classcaffe_1_1GPUParams.png delete mode 100644 doxygen/classcaffe_1_1P2PSync-members.html delete mode 100644 doxygen/classcaffe_1_1P2PSync.html delete mode 100644 doxygen/classcaffe_1_1P2PSync.png delete mode 100644 doxygen/classcaffe_1_1Params-members.html delete mode 100644 doxygen/classcaffe_1_1Params.html delete mode 100644 doxygen/classcaffe_1_1Params.png delete mode 100644 doxygen/classcaffe_1_1Solver_1_1Callback.png delete mode 100644 doxygen/classcaffe_1_1WorkerSolver-members.html delete mode 100644 doxygen/classcaffe_1_1WorkerSolver.html delete mode 100644 doxygen/classcaffe_1_1WorkerSolver.png delete mode 100644 doxygen/classcaffe_1_1db_1_1Cursor.png delete mode 100644 doxygen/classcaffe_1_1db_1_1DB.png delete mode 100644 doxygen/classcaffe_1_1db_1_1LMDB-members.html delete mode 100644 doxygen/classcaffe_1_1db_1_1LMDB.html delete mode 100644 doxygen/classcaffe_1_1db_1_1LMDB.png delete mode 100644 doxygen/classcaffe_1_1db_1_1LMDBCursor-members.html delete mode 100644 doxygen/classcaffe_1_1db_1_1LMDBCursor.html delete mode 100644 doxygen/classcaffe_1_1db_1_1LMDBCursor.png delete mode 100644 doxygen/classcaffe_1_1db_1_1LMDBTransaction-members.html delete mode 100644 doxygen/classcaffe_1_1db_1_1LMDBTransaction.html delete mode 100644 doxygen/classcaffe_1_1db_1_1LMDBTransaction.png delete mode 100644 doxygen/classcaffe_1_1db_1_1LevelDB-members.html delete mode 100644 doxygen/classcaffe_1_1db_1_1LevelDB.html delete mode 100644 doxygen/classcaffe_1_1db_1_1LevelDB.png delete mode 100644 doxygen/classcaffe_1_1db_1_1LevelDBCursor-members.html delete mode 100644 doxygen/classcaffe_1_1db_1_1LevelDBCursor.html delete mode 100644 doxygen/classcaffe_1_1db_1_1LevelDBCursor.png delete mode 100644 doxygen/classcaffe_1_1db_1_1LevelDBTransaction-members.html delete mode 100644 doxygen/classcaffe_1_1db_1_1LevelDBTransaction.html delete mode 100644 doxygen/classcaffe_1_1db_1_1LevelDBTransaction.png delete mode 100644 doxygen/classcaffe_1_1db_1_1Transaction.png delete mode 100644 doxygen/common__layers_8hpp_source.html delete mode 100644 doxygen/data__layers_8hpp_source.html delete mode 100644 doxygen/data__reader_8hpp_source.html delete mode 100644 doxygen/form_175.png delete mode 100644 doxygen/form_176.png delete mode 100644 doxygen/form_177.png delete mode 100644 doxygen/form_178.png delete mode 100644 doxygen/form_179.png delete mode 100644 doxygen/loss__layers_8hpp_source.html delete mode 100644 doxygen/neuron__layers_8hpp_source.html delete mode 100644 doxygen/search/all_15.html delete mode 100644 doxygen/search/all_15.js delete mode 100644 doxygen/search/classes_13.html delete mode 100644 doxygen/search/classes_13.js delete mode 100644 doxygen/vision__layers_8hpp_source.html delete mode 100644 performance_hardware.html diff --git a/development.html b/development.html index 89eb2249b35..d0bd7a71526 100644 --- a/development.html +++ b/development.html @@ -36,7 +36,7 @@

      Caffe

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

      Created by @@ -57,7 +57,7 @@

      Caffe

      Development and Contributing

      Caffe is developed with active participation of the community.
      -The BVLC brewers welcome all contributions!

      +The BAIR/BVLC brewers welcome all contributions!

      The exact details of contributions are recorded by versioning and cited in our acknowledgements. This method is impartial and always up-to-date.

      @@ -90,7 +90,7 @@

      Versioning

      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 are catalogued online.

      +BAIR maintainers will periodically make releases by marking stable checkpoints as tags and maintenance branches. Past releases are catalogued online.

      Issues & Pull Request Protocol

      @@ -117,7 +117,7 @@

      Issues & Pull Request Protocol

      The following is a poetic presentation of the protocol in code form.

      -

      Shelhamer’s “life of a branch in four acts”

      +

      Shelhamer’s “life of a branch in four acts”

      Make the feature branch off of the latest bvlc/master

      diff --git a/doxygen/absval__layer_8hpp_source.html b/doxygen/absval__layer_8hpp_source.html index 700dd5cb9a3..236a9fe6454 100644 --- a/doxygen/absval__layer_8hpp_source.html +++ b/doxygen/absval__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/absval_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -81,9 +81,9 @@ diff --git a/doxygen/accuracy__layer_8hpp_source.html b/doxygen/accuracy__layer_8hpp_source.html index 0cb16a293ea..57d5746571c 100644 --- a/doxygen/accuracy__layer_8hpp_source.html +++ b/doxygen/accuracy__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/accuracy_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -85,9 +85,9 @@ diff --git a/doxygen/annotated.html b/doxygen/annotated.html index ccab8d355cd..94b51cc8e47 100644 --- a/doxygen/annotated.html +++ b/doxygen/annotated.html @@ -3,7 +3,7 @@ - + Caffe: Class List @@ -29,7 +29,7 @@ - + @@ -69,12 +69,12 @@  CCursor  CDB  CTransaction - CAbsValLayerComputes $ y = |x| $ + CAbsValLayerComputes $ y = |x| $  CAccuracyLayerComputes the classification accuracy for a one-of-many classification task  CAdaDeltaSolver  CAdaGradSolver  CAdamSolverAdamSolver, an algorithm for first-order gradient-based optimization of stochastic objective functions, based on adaptive estimates of lower-order moments. Described in [1] - CArgMaxLayerCompute the index of the $ K $ max values for each datum across all dimensions $ (C \times H \times W) $ + CArgMaxLayerCompute the index of the $ K $ max values for each datum across all dimensions $ (C \times H \times W) $  CBaseConvolutionLayerAbstract base class that factors out the BLAS code common to ConvolutionLayer and DeconvolutionLayer  CBaseDataLayerProvides base for data layers that feed blobs to the Net  CBasePrefetchingDataLayer @@ -86,30 +86,30 @@  CBlobA wrapper around SyncedMemory holders serving as the basic computational unit through which Layers, Nets, and Solvers interact  CBlockingQueue  Csync - CBNLLLayerComputes $ y = x + \log(1 + \exp(-x)) $ if $ x > 0 $; $ y = \log(1 + \exp(x)) $ otherwise + CBNLLLayerComputes $ y = x + \log(1 + \exp(-x)) $ if $ x > 0 $; $ y = \log(1 + \exp(x)) $ otherwise  CCaffe  CRNG  CGenerator  CConcatLayerTakes at least two Blobs and concatenates them along either the num or channel dimension, outputting the result - CConstantFillerFills a Blob with constant values $ x = 0 $ - CContrastiveLossLayerComputes the contrastive loss $ 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 $ where $ d = \left| \left| a_n - b_n \right| \right|_2 $. This can be used to train siamese networks + CConstantFillerFills a Blob with constant values $ x = 0 $ + CContrastiveLossLayerComputes the contrastive loss $ 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 $ where $ d = \left| \left| a_n - b_n \right| \right|_2 $. This can be used to train siamese networks  CConvolutionLayerConvolves the input image with a bank of learned filters, and (optionally) adds biases  CCPUTimer  CCropLayerTakes a Blob and crop it, to the shape specified by the second input Blob, across all dimensions after the specified axis  CDataLayer  CDataTransformerApplies common transformations to the input data, such as scaling, mirroring, substracting the image mean..  CDeconvolutionLayerConvolve the input with a bank of learned filters, and (optionally) add biases, treating filters and convolution parameters in the opposite sense as ConvolutionLayer - CDropoutLayerDuring training only, sets a random portion of $x$ to 0, adjusting the rest of the vector magnitude accordingly + CDropoutLayerDuring training only, sets a random portion of $x$ to 0, adjusting the rest of the vector magnitude accordingly  CDummyDataLayerProvides data to the Net generated by a Filler  CEltwiseLayerCompute elementwise operations, such as product and sum, along multiple input Blobs - CELULayerExponential Linear Unit non-linearity $ y = \left\{ \begin{array}{lr} x & \mathrm{if} \; x > 0 \\ \alpha (\exp(x)-1) & \mathrm{if} \; x \le 0 \end{array} \right. $ + CELULayerExponential Linear Unit non-linearity $ y = \left\{ \begin{array}{lr} x & \mathrm{if} \; x > 0 \\ \alpha (\exp(x)-1) & \mathrm{if} \; x \le 0 \end{array} \right. $  CEmbedLayerA 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 - CEuclideanLossLayerComputes the Euclidean (L2) loss $ E = \frac{1}{2N} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $ for real-valued regression tasks - CExpLayerComputes $ y = \gamma ^ {\alpha x + \beta} $, as specified by the scale $ \alpha $, shift $ \beta $, and base $ \gamma $ + CEuclideanLossLayerComputes the Euclidean (L2) loss $ E = \frac{1}{2N} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $ for real-valued regression tasks + CExpLayerComputes $ y = \gamma ^ {\alpha x + \beta} $, as specified by the scale $ \alpha $, shift $ \beta $, and base $ \gamma $  CFillerFills a Blob with constant or randomly-generated data  CFilterLayerTakes 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)  CFlattenLayerReshapes the input Blob into flat vectors - CGaussianFillerFills a Blob with Gaussian-distributed values $ x = a $ + CGaussianFillerFills a Blob with Gaussian-distributed values $ x = a $  CHDF5DataLayerProvides data to the Net from HDF5 files  CHDF5OutputLayerWrite blobs to disk as HDF5 files  CHingeLossLayerComputes the hinge loss for a one-of-many classification task @@ -122,35 +122,35 @@  CLayerAn interface for the units of computation which can be composed into a Net  CLayerRegisterer  CLayerRegistry - CLogLayerComputes $ y = log_{\gamma}(\alpha x + \beta) $, as specified by the scale $ \alpha $, shift $ \beta $, and base $ \gamma $ + CLogLayerComputes $ y = log_{\gamma}(\alpha x + \beta) $, as specified by the scale $ \alpha $, shift $ \beta $, and base $ \gamma $  CLossLayerAn interface for Layers that take two Blobs as input – usually (1) predictions and (2) ground-truth labels – and output a singleton Blob representing the loss  CLRNLayerNormalize the input in a local region across or within feature maps  CLSTMLayerProcesses sequential inputs using a "Long Short-Term Memory" (LSTM) [1] style recurrent neural network (RNN). Implemented by unrolling the LSTM computation through time  CLSTMUnitLayerA helper for LSTMLayer: computes a single timestep of the non-linearity of the LSTM, producing the updated cell and hidden states  CMemoryDataLayerProvides data to the Net from memory - CMSRAFillerFills a Blob with values $ x \sim N(0, \sigma^2) $ where $ \sigma^2 $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average + CMSRAFillerFills a Blob with values $ x \sim N(0, \sigma^2) $ where $ \sigma^2 $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average  CMultinomialLogisticLossLayerComputes the multinomial logistic loss for a one-of-many classification task, directly taking a predicted probability distribution as input  CMVNLayerNormalizes the input to have 0-mean and/or unit (1) variance  CNesterovSolver  CNetConnects Layers together into a directed acyclic graph (DAG) specified by a NetParameter  CCallback - CNeuronLayerAn interface for layers that take one blob as input ( $ x $) and produce one equally-sized blob as output ( $ y $), where each element of the output depends only on the corresponding input element + CNeuronLayerAn interface for layers that take one blob as input ( $ x $) and produce one equally-sized blob as output ( $ y $), where each element of the output depends only on the corresponding input element  CParameterLayer  CPoolingLayerPools the input image by taking the max, average, etc. within regions - CPositiveUnitballFillerFills a Blob with values $ x \in [0, 1] $ such that $ \forall i \sum_j x_{ij} = 1 $ - CPowerLayerComputes $ y = (\alpha x + \beta) ^ \gamma $, as specified by the scale $ \alpha $, shift $ \beta $, and power $ \gamma $ - CPReLULayerParameterized Rectified Linear Unit non-linearity $ y_i = \max(0, x_i) + a_i \min(0, x_i) $. 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 + CPositiveUnitballFillerFills a Blob with values $ x \in [0, 1] $ such that $ \forall i \sum_j x_{ij} = 1 $ + CPowerLayerComputes $ y = (\alpha x + \beta) ^ \gamma $, as specified by the scale $ \alpha $, shift $ \beta $, and power $ \gamma $ + CPReLULayerParameterized Rectified Linear Unit non-linearity $ y_i = \max(0, x_i) + a_i \min(0, x_i) $. 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  CPythonLayer  CRecurrentLayerAn 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  CReductionLayerCompute "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 - CReLULayerRectified Linear Unit non-linearity $ y = \max(0, x) $. The simple max is fast to compute, and the function does not saturate + CReLULayerRectified Linear Unit non-linearity $ y = \max(0, x) $. The simple max is fast to compute, and the function does not saturate  CReshapeLayer  CRMSPropSolver  CRNNLayerProcesses time-varying inputs using a simple recurrent neural network (RNN). Implemented as a network unrolling the RNN computation in time  CScaleLayerComputes 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. Note: for efficiency and convenience, this layer can additionally perform a "broadcast" sum too when bias_term: true is set  CSGDSolverOptimizes the parameters of a Net using stochastic gradient descent (SGD) with momentum - CSigmoidCrossEntropyLossLayerComputes the cross-entropy (logistic) loss $ 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] $, often used for predicting targets interpreted as probabilities - CSigmoidLayerSigmoid function non-linearity $ y = (1 + \exp(-x))^{-1} $, a classic choice in neural networks + CSigmoidCrossEntropyLossLayerComputes the cross-entropy (logistic) loss $ 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] $, often used for predicting targets interpreted as probabilities + CSigmoidLayerSigmoid function non-linearity $ y = (1 + \exp(-x))^{-1} $, a classic choice in neural networks  CSignalHandler  CSilenceLayerIgnores bottom blobs while producing no top blobs. (This is useful to suppress outputs during testing.)  CSliceLayerTakes a Blob and slices it along either the num or channel dimension, outputting multiple sliced Blob results @@ -163,21 +163,21 @@  CSplitLayerCreates a "split" path in the network by copying the bottom Blob into multiple top Blobs to be used by multiple consuming layers  CSPPLayerDoes 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  CSyncedMemoryManages memory allocation and synchronization between the host (CPU) and device (GPU) - CTanHLayerTanH hyperbolic tangent non-linearity $ y = \frac{\exp(2x) - 1}{\exp(2x) + 1} $, popular in auto-encoders + CTanHLayerTanH hyperbolic tangent non-linearity $ y = \frac{\exp(2x) - 1}{\exp(2x) + 1} $, popular in auto-encoders  CThresholdLayerTests whether the input exceeds a threshold: outputs 1 for inputs above threshold; 0 otherwise  CTileLayerCopy a Blob along specified dimensions  CTimer - CUniformFillerFills a Blob with uniformly distributed values $ x\sim U(a, b) $ + CUniformFillerFills a Blob with uniformly distributed values $ x\sim U(a, b) $  CWindowDataLayerProvides data to the Net from windows of images files, specified by a window data file - CXavierFillerFills a Blob with values $ x \sim U(-a, +a) $ where $ a $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average + CXavierFillerFills a Blob with values $ x \sim U(-a, +a) $ where $ a $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average diff --git a/doxygen/argmax__layer_8hpp_source.html b/doxygen/argmax__layer_8hpp_source.html index 06669360595..63d59facc58 100644 --- a/doxygen/argmax__layer_8hpp_source.html +++ b/doxygen/argmax__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/argmax_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -81,9 +81,9 @@ diff --git a/doxygen/arrowdown.png b/doxygen/arrowdown.png deleted file mode 100644 index 0b63f6d38c4b9ec907b820192ebe9724ed6eca22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246 zcmVkw!R34#Lv2LOS^S2tZA31X++9RY}n zChwn@Z)Wz*WWHH{)HDtJnq&A2hk$b-y(>?@z0iHr41EKCGp#T5?07*qoM6N<$f(V3Pvj6}9 diff --git a/doxygen/arrowright.png b/doxygen/arrowright.png deleted file mode 100644 index c6ee22f937a07d1dbfc27c669d11f8ed13e2f152..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 229 zcmV^P)R?RzRoKvklcaQ%HF6%rK2&ZgO(-ihJ_C zzrKgp4jgO( fd_(yg|3PpEQb#9`a?Pz_00000NkvXXu0mjftR`5K diff --git a/doxygen/base__conv__layer_8hpp_source.html b/doxygen/base__conv__layer_8hpp_source.html index 92e3cea3125..c1d57cf8c96 100644 --- a/doxygen/base__conv__layer_8hpp_source.html +++ b/doxygen/base__conv__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/base_conv_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -78,7 +78,7 @@
      virtual int MinTopBlobs() const
      Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
      Definition: base_conv_layer.hpp:28
      vector< int > col_buffer_shape_
      The spatial dimensions of the col_buffer.
      Definition: base_conv_layer.hpp:76
      vector< int > output_shape_
      The spatial dimensions of the output.
      Definition: base_conv_layer.hpp:78
      -
      virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
      Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
      Definition: base_conv_layer.cpp:186
      +
      virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
      Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
      Definition: base_conv_layer.cpp:185
      Blob< int > conv_input_shape_
      The spatial dimensions of the convolution input.
      Definition: base_conv_layer.hpp:74
      Blob< int > stride_
      The spatial dimensions of the stride.
      Definition: base_conv_layer.hpp:68
      A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
      Definition: blob.hpp:24
      @@ -86,9 +86,9 @@ diff --git a/doxygen/base__data__layer_8hpp_source.html b/doxygen/base__data__layer_8hpp_source.html index 2bc2784907c..73785aad8a5 100644 --- a/doxygen/base__data__layer_8hpp_source.html +++ b/doxygen/base__data__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/base_data_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -66,26 +66,26 @@
      base_data_layer.hpp
      -
      1 #ifndef CAFFE_DATA_LAYERS_HPP_
      2 #define CAFFE_DATA_LAYERS_HPP_
      3 
      4 #include <vector>
      5 
      6 #include "caffe/blob.hpp"
      7 #include "caffe/data_transformer.hpp"
      8 #include "caffe/internal_thread.hpp"
      9 #include "caffe/layer.hpp"
      10 #include "caffe/proto/caffe.pb.h"
      11 #include "caffe/util/blocking_queue.hpp"
      12 
      13 namespace caffe {
      14 
      20 template <typename Dtype>
      21 class BaseDataLayer : public Layer<Dtype> {
      22  public:
      23  explicit BaseDataLayer(const LayerParameter& param);
      24  // LayerSetUp: implements common data layer setup functionality, and calls
      25  // DataLayerSetUp to do special data layer setup for individual layer types.
      26  // This method may not be overridden except by the BasePrefetchingDataLayer.
      27  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
      28  const vector<Blob<Dtype>*>& top);
      29  // Data layers should be shared by multiple solvers in parallel
      30  virtual inline bool ShareInParallel() const { return true; }
      31  virtual void DataLayerSetUp(const vector<Blob<Dtype>*>& bottom,
      32  const vector<Blob<Dtype>*>& top) {}
      33  // Data layers have no bottoms, so reshaping is trivial.
      34  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
      35  const vector<Blob<Dtype>*>& top) {}
      36 
      37  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
      38  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
      39  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
      40  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
      41 
      42  protected:
      43  TransformationParameter transform_param_;
      44  shared_ptr<DataTransformer<Dtype> > data_transformer_;
      45  bool output_labels_;
      46 };
      47 
      48 template <typename Dtype>
      49 class Batch {
      50  public:
      51  Blob<Dtype> data_, label_;
      52 };
      53 
      54 template <typename Dtype>
      56  public BaseDataLayer<Dtype>, public InternalThread {
      57  public:
      58  explicit BasePrefetchingDataLayer(const LayerParameter& param);
      59  // LayerSetUp: implements common data layer setup functionality, and calls
      60  // DataLayerSetUp to do special data layer setup for individual layer types.
      61  // This method may not be overridden.
      62  void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
      63  const vector<Blob<Dtype>*>& top);
      64 
      65  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
      66  const vector<Blob<Dtype>*>& top);
      67  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
      68  const vector<Blob<Dtype>*>& top);
      69 
      70  protected:
      71  virtual void InternalThreadEntry();
      72  virtual void load_batch(Batch<Dtype>* batch) = 0;
      73 
      74  vector<shared_ptr<Batch<Dtype> > > prefetch_;
      75  BlockingQueue<Batch<Dtype>*> prefetch_free_;
      76  BlockingQueue<Batch<Dtype>*> prefetch_full_;
      77  Batch<Dtype>* prefetch_current_;
      78 
      79  Blob<Dtype> transformed_data_;
      80 };
      81 
      82 } // namespace caffe
      83 
      84 #endif // CAFFE_DATA_LAYERS_HPP_
      Definition: base_data_layer.hpp:49
      -
      Definition: base_data_layer.hpp:55
      +
      1 #ifndef CAFFE_DATA_LAYERS_HPP_
      2 #define CAFFE_DATA_LAYERS_HPP_
      3 
      4 #include <vector>
      5 
      6 #include "caffe/blob.hpp"
      7 #include "caffe/data_transformer.hpp"
      8 #include "caffe/internal_thread.hpp"
      9 #include "caffe/layer.hpp"
      10 #include "caffe/proto/caffe.pb.h"
      11 #include "caffe/util/blocking_queue.hpp"
      12 
      13 namespace caffe {
      14 
      20 template <typename Dtype>
      21 class BaseDataLayer : public Layer<Dtype> {
      22  public:
      23  explicit BaseDataLayer(const LayerParameter& param);
      24  // LayerSetUp: implements common data layer setup functionality, and calls
      25  // DataLayerSetUp to do special data layer setup for individual layer types.
      26  // This method may not be overridden except by the BasePrefetchingDataLayer.
      27  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
      28  const vector<Blob<Dtype>*>& top);
      29  virtual void DataLayerSetUp(const vector<Blob<Dtype>*>& bottom,
      30  const vector<Blob<Dtype>*>& top) {}
      31  // Data layers have no bottoms, so reshaping is trivial.
      32  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
      33  const vector<Blob<Dtype>*>& top) {}
      34 
      35  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
      36  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
      37  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
      38  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
      39 
      40  protected:
      41  TransformationParameter transform_param_;
      42  shared_ptr<DataTransformer<Dtype> > data_transformer_;
      43  bool output_labels_;
      44 };
      45 
      46 template <typename Dtype>
      47 class Batch {
      48  public:
      49  Blob<Dtype> data_, label_;
      50 };
      51 
      52 template <typename Dtype>
      54  public BaseDataLayer<Dtype>, public InternalThread {
      55  public:
      56  explicit BasePrefetchingDataLayer(const LayerParameter& param);
      57  // LayerSetUp: implements common data layer setup functionality, and calls
      58  // DataLayerSetUp to do special data layer setup for individual layer types.
      59  // This method may not be overridden.
      60  void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
      61  const vector<Blob<Dtype>*>& top);
      62 
      63  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
      64  const vector<Blob<Dtype>*>& top);
      65  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
      66  const vector<Blob<Dtype>*>& top);
      67 
      68  protected:
      69  virtual void InternalThreadEntry();
      70  virtual void load_batch(Batch<Dtype>* batch) = 0;
      71 
      72  vector<shared_ptr<Batch<Dtype> > > prefetch_;
      73  BlockingQueue<Batch<Dtype>*> prefetch_free_;
      74  BlockingQueue<Batch<Dtype>*> prefetch_full_;
      75  Batch<Dtype>* prefetch_current_;
      76 
      77  Blob<Dtype> transformed_data_;
      78 };
      79 
      80 } // namespace caffe
      81 
      82 #endif // CAFFE_DATA_LAYERS_HPP_
      Definition: base_data_layer.hpp:47
      +
      Definition: base_data_layer.hpp:53
      virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
      Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
      Definition: layer.hpp:316
      An interface for the units of computation which can be composed into a Net.
      Definition: layer.hpp:33
      A layer factory that allows one to register layers. During runtime, registered layers can be called b...
      Definition: blob.hpp:14
      -
      virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
      Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
      Definition: base_data_layer.hpp:34
      -
      virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
      Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
      Definition: base_data_layer.hpp:37
      +
      virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
      Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
      Definition: base_data_layer.hpp:32
      +
      virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
      Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
      Definition: base_data_layer.hpp:35
      Provides base for data layers that feed blobs to the Net.
      Definition: base_data_layer.hpp:21
      virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)=0
      Using the CPU device, compute the layer output.
      Definition: internal_thread.hpp:19
      -
      virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
      Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
      Definition: base_data_layer.hpp:39
      +
      virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
      Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
      Definition: base_data_layer.hpp:37
      Definition: blocking_queue.hpp:10
      A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
      Definition: blob.hpp:24
      virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
      Does layer-specific setup: your layer should implement this function as well as Reshape.
      Definition: base_data_layer.cpp:21
      diff --git a/doxygen/batch__norm__layer_8hpp_source.html b/doxygen/batch__norm__layer_8hpp_source.html index cebdf12dd6c..2b1f1f380c6 100644 --- a/doxygen/batch__norm__layer_8hpp_source.html +++ b/doxygen/batch__norm__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/batch_norm_layer.hpp Source File @@ -29,7 +29,7 @@
      - + @@ -82,9 +82,9 @@ diff --git a/doxygen/batch__reindex__layer_8hpp_source.html b/doxygen/batch__reindex__layer_8hpp_source.html index efe1a324240..d8c979a8bf7 100644 --- a/doxygen/batch__reindex__layer_8hpp_source.html +++ b/doxygen/batch__reindex__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/batch_reindex_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -81,9 +81,9 @@ diff --git a/doxygen/benchmark_8hpp_source.html b/doxygen/benchmark_8hpp_source.html index dbb3b5492d2..3e007c0808f 100644 --- a/doxygen/benchmark_8hpp_source.html +++ b/doxygen/benchmark_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/util/benchmark.hpp Source File @@ -29,7 +29,7 @@ - + @@ -72,9 +72,9 @@ diff --git a/doxygen/bias__layer_8hpp_source.html b/doxygen/bias__layer_8hpp_source.html index bfd94f4554b..f7dd3d2e16a 100644 --- a/doxygen/bias__layer_8hpp_source.html +++ b/doxygen/bias__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/bias_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -83,9 +83,9 @@ diff --git a/doxygen/blob_8hpp_source.html b/doxygen/blob_8hpp_source.html index 9acb2e55a7c..5cb5f991cb2 100644 --- a/doxygen/blob_8hpp_source.html +++ b/doxygen/blob_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/blob.hpp Source File @@ -29,7 +29,7 @@ - + @@ -89,9 +89,9 @@ diff --git a/doxygen/blocking__queue_8hpp_source.html b/doxygen/blocking__queue_8hpp_source.html index aed8f44d1d1..4a3f03e0e01 100644 --- a/doxygen/blocking__queue_8hpp_source.html +++ b/doxygen/blocking__queue_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/util/blocking_queue.hpp Source File @@ -29,7 +29,7 @@ - + @@ -72,9 +72,9 @@ diff --git a/doxygen/bnll__layer_8hpp_source.html b/doxygen/bnll__layer_8hpp_source.html index fdc94493ed5..40fc6446f1a 100644 --- a/doxygen/bnll__layer_8hpp_source.html +++ b/doxygen/bnll__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/bnll_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -78,9 +78,9 @@ diff --git a/doxygen/caffe_8hpp_source.html b/doxygen/caffe_8hpp_source.html index c47c0b8e2b5..209e4f39b6f 100644 --- a/doxygen/caffe_8hpp_source.html +++ b/doxygen/caffe_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/caffe.hpp Source File @@ -29,7 +29,7 @@ - + @@ -69,9 +69,9 @@
      1 // caffe.hpp is the header file that you need to include in your code. It wraps
      2 // all the internal caffe header files into one for simpler inclusion.
      3 
      4 #ifndef CAFFE_CAFFE_HPP_
      5 #define CAFFE_CAFFE_HPP_
      6 
      7 #include "caffe/blob.hpp"
      8 #include "caffe/common.hpp"
      9 #include "caffe/filler.hpp"
      10 #include "caffe/layer.hpp"
      11 #include "caffe/layer_factory.hpp"
      12 #include "caffe/net.hpp"
      13 #include "caffe/parallel.hpp"
      14 #include "caffe/proto/caffe.pb.h"
      15 #include "caffe/solver.hpp"
      16 #include "caffe/solver_factory.hpp"
      17 #include "caffe/util/benchmark.hpp"
      18 #include "caffe/util/io.hpp"
      19 #include "caffe/util/upgrade_proto.hpp"
      20 
      21 #endif // CAFFE_CAFFE_HPP_
      diff --git a/doxygen/classcaffe_1_1AbsValLayer-members.html b/doxygen/classcaffe_1_1AbsValLayer-members.html index 79ba1790f9a..d28649c2940 100644 --- a/doxygen/classcaffe_1_1AbsValLayer-members.html +++ b/doxygen/classcaffe_1_1AbsValLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@ - + @@ -109,9 +109,9 @@ diff --git a/doxygen/classcaffe_1_1AbsValLayer.html b/doxygen/classcaffe_1_1AbsValLayer.html index 514d204bfa4..3314aa7c2cf 100644 --- a/doxygen/classcaffe_1_1AbsValLayer.html +++ b/doxygen/classcaffe_1_1AbsValLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::AbsValLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@ - + @@ -71,7 +71,7 @@
      -

      Computes $ y = |x| $. +

      Computes $ y = |x| $. More...

      #include <absval_layer.hpp>

      @@ -80,7 +80,7 @@
      - + caffe::NeuronLayer< Dtype > caffe::Layer< Dtype > @@ -175,7 +175,7 @@

      Protected Member Functions

      virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top) - Computes $ y = |x| $. More...
      + Computes $ y = |x| $. More...
        virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top) @@ -212,15 +212,15 @@

      template<typename Dtype>
      class caffe::AbsValLayer< Dtype >

      -

      Computes $ y = |x| $.

      +

      Computes $ y = |x| $.

      Parameters
      bottominput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the inputs $ x $
      2. +
      3. $ (N \times C \times H \times W) $ the inputs $ x $
      topoutput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the computed outputs $ y = |x| $
      2. +
      3. $ (N \times C \times H \times W) $ the computed outputs $ y = |x| $
      @@ -228,7 +228,7 @@

      Member Function Documentation

      -

      § Backward_cpu()

      +

      ◆ Backward_cpu()

      @@ -273,12 +273,12 @@

      Parameters
      topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
        -
      1. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
      2. +
      3. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
      propagate_downsee Layer::Backward.
      bottominput Blob vector (length 2)
        -
      1. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \frac{\partial E}{\partial x} = \mathrm{sign}(x) \frac{\partial E}{\partial y} $ if propagate_down[0]
      2. +
      3. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \frac{\partial E}{\partial x} = \mathrm{sign}(x) \frac{\partial E}{\partial y} $ if propagate_down[0]
      @@ -290,7 +290,7 @@

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -322,7 +322,7 @@

      -

      § ExactNumTopBlobs()

      +

      ◆ ExactNumTopBlobs()

      @@ -354,7 +354,7 @@

      -

      § Forward_cpu()

      +

      ◆ Forward_cpu()

      @@ -389,15 +389,15 @@

      -

      Computes $ y = |x| $.

      +

      Computes $ y = |x| $.

      Parameters
      bottominput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the inputs $ x $
      2. +
      3. $ (N \times C \times H \times W) $ the inputs $ x $
      topoutput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the computed outputs $ y = |x| $
      2. +
      3. $ (N \times C \times H \times W) $ the computed outputs $ y = |x| $
      @@ -409,7 +409,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -465,9 +465,9 @@

      diff --git a/doxygen/classcaffe_1_1AccuracyLayer-members.html b/doxygen/classcaffe_1_1AccuracyLayer-members.html index 5062a0ea0f7..353f9432acc 100644 --- a/doxygen/classcaffe_1_1AccuracyLayer-members.html +++ b/doxygen/classcaffe_1_1AccuracyLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -115,9 +115,9 @@
      diff --git a/doxygen/classcaffe_1_1AccuracyLayer.html b/doxygen/classcaffe_1_1AccuracyLayer.html index 3447a6ef42d..81d4eae96a7 100644 --- a/doxygen/classcaffe_1_1AccuracyLayer.html +++ b/doxygen/classcaffe_1_1AccuracyLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::AccuracyLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -81,7 +81,7 @@
      - + caffe::Layer< Dtype >
      @@ -234,7 +234,7 @@

      Computes the classification accuracy for a one-of-many classification task.

      Constructor & Destructor Documentation

      -

      § AccuracyLayer()

      +

      ◆ AccuracyLayer()

      @@ -261,7 +261,7 @@

      Parameters
      paramprovides AccuracyParameter accuracy_param, with AccuracyLayer options:
        -
      • top_k (optional, default 1). Sets the maximum rank $ k $ at which a prediction is considered correct. For example, if $ k = 5 $, a prediction is counted correct if the correct label is among the top 5 predicted labels.
      • +
      • top_k (optional, default 1). Sets the maximum rank $ k $ at which a prediction is considered correct. For example, if $ k = 5 $, a prediction is counted correct if the correct label is among the top 5 predicted labels.
      @@ -272,7 +272,7 @@

      Member Function Documentation

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -304,7 +304,7 @@

      -

      § Forward_cpu()

      +

      ◆ Forward_cpu()

      @@ -341,12 +341,12 @@

      Parameters
      bottominput Blob vector (length 2)
        -
      1. $ (N \times C \times H \times W) $ the predictions $ x $, a Blob with values in $ [-\infty, +\infty] $ indicating the predicted score for each of the $ K = CHW $ classes. Each $ x_n $ is mapped to a predicted label $ \hat{l}_n $ given by its maximal index: $ \hat{l}_n = \arg\max\limits_k x_{nk} $
      2. -
      3. $ (N \times 1 \times 1 \times 1) $ the labels $ l $, an integer-valued Blob with values $ l_n \in [0, 1, 2, ..., K - 1] $ indicating the correct class label among the $ K $ classes
      4. +
      5. $ (N \times C \times H \times W) $ the predictions $ x $, a Blob with values in $ [-\infty, +\infty] $ indicating the predicted score for each of the $ K = CHW $ classes. Each $ x_n $ is mapped to a predicted label $ \hat{l}_n $ given by its maximal index: $ \hat{l}_n = \arg\max\limits_k x_{nk} $
      6. +
      7. $ (N \times 1 \times 1 \times 1) $ the labels $ l $, an integer-valued Blob with values $ l_n \in [0, 1, 2, ..., K - 1] $ indicating the correct class label among the $ K $ classes
      topoutput Blob vector (length 1)
        -
      1. $ (1 \times 1 \times 1 \times 1) $ the computed accuracy: $ \frac{1}{N} \sum\limits_{n=1}^N \delta\{ \hat{l}_n = l_n \} $, where $ \delta\{\mathrm{condition}\} = \left\{ \begin{array}{lr} 1 & \mbox{if condition} \\ 0 & \mbox{otherwise} \end{array} \right. $
      2. +
      3. $ (1 \times 1 \times 1 \times 1) $ the computed accuracy: $ \frac{1}{N} \sum\limits_{n=1}^N \delta\{ \hat{l}_n = l_n \} $, where $ \delta\{\mathrm{condition}\} = \left\{ \begin{array}{lr} 1 & \mbox{if condition} \\ 0 & \mbox{otherwise} \end{array} \right. $
      @@ -358,7 +358,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -408,7 +408,7 @@

      -

      § MaxTopBlobs()

      +

      ◆ MaxTopBlobs()

      @@ -440,7 +440,7 @@

      -

      § MinTopBlobs()

      +

      ◆ MinTopBlobs()

      @@ -472,7 +472,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -528,9 +528,9 @@

      diff --git a/doxygen/classcaffe_1_1AdaDeltaSolver-members.html b/doxygen/classcaffe_1_1AdaDeltaSolver-members.html index fdc79869d1f..de6dd6ca19c 100644 --- a/doxygen/classcaffe_1_1AdaDeltaSolver-members.html +++ b/doxygen/classcaffe_1_1AdaDeltaSolver-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -136,9 +136,9 @@
      diff --git a/doxygen/classcaffe_1_1AdaDeltaSolver.html b/doxygen/classcaffe_1_1AdaDeltaSolver.html index 6f54b039f73..590ba6ffd45 100644 --- a/doxygen/classcaffe_1_1AdaDeltaSolver.html +++ b/doxygen/classcaffe_1_1AdaDeltaSolver.html @@ -3,7 +3,7 @@ - + Caffe: caffe::AdaDeltaSolver< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -75,7 +75,7 @@
      - + caffe::SGDSolver< Dtype > caffe::Solver< Dtype > @@ -293,9 +293,9 @@
      diff --git a/doxygen/classcaffe_1_1AdaGradSolver-members.html b/doxygen/classcaffe_1_1AdaGradSolver-members.html index 6d5d5e39e29..d78389bddef 100644 --- a/doxygen/classcaffe_1_1AdaGradSolver-members.html +++ b/doxygen/classcaffe_1_1AdaGradSolver-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@
      - + @@ -136,9 +136,9 @@
      diff --git a/doxygen/classcaffe_1_1AdaGradSolver.html b/doxygen/classcaffe_1_1AdaGradSolver.html index 427a779041e..9e0ff2287ee 100644 --- a/doxygen/classcaffe_1_1AdaGradSolver.html +++ b/doxygen/classcaffe_1_1AdaGradSolver.html @@ -3,7 +3,7 @@ - + Caffe: caffe::AdaGradSolver< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -75,7 +75,7 @@
      - + caffe::SGDSolver< Dtype > caffe::Solver< Dtype > @@ -293,9 +293,9 @@
      diff --git a/doxygen/classcaffe_1_1AdamSolver-members.html b/doxygen/classcaffe_1_1AdamSolver-members.html index 4a06760e345..526065e3cc4 100644 --- a/doxygen/classcaffe_1_1AdamSolver-members.html +++ b/doxygen/classcaffe_1_1AdamSolver-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@
      - + @@ -136,9 +136,9 @@
      diff --git a/doxygen/classcaffe_1_1AdamSolver.html b/doxygen/classcaffe_1_1AdamSolver.html index 05360ae8fdd..d52804ce408 100644 --- a/doxygen/classcaffe_1_1AdamSolver.html +++ b/doxygen/classcaffe_1_1AdamSolver.html @@ -3,7 +3,7 @@ - + Caffe: caffe::AdamSolver< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -80,7 +80,7 @@
      - + caffe::SGDSolver< Dtype > caffe::Solver< Dtype > @@ -304,9 +304,9 @@
      diff --git a/doxygen/classcaffe_1_1ArgMaxLayer-members.html b/doxygen/classcaffe_1_1ArgMaxLayer-members.html index a0282d84197..d045c350c11 100644 --- a/doxygen/classcaffe_1_1ArgMaxLayer-members.html +++ b/doxygen/classcaffe_1_1ArgMaxLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@
      - + @@ -112,9 +112,9 @@
      diff --git a/doxygen/classcaffe_1_1ArgMaxLayer.html b/doxygen/classcaffe_1_1ArgMaxLayer.html index d54a4762d7a..9ee3ace29b3 100644 --- a/doxygen/classcaffe_1_1ArgMaxLayer.html +++ b/doxygen/classcaffe_1_1ArgMaxLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::ArgMaxLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -72,7 +72,7 @@
      -

      Compute the index of the $ K $ max values for each datum across all dimensions $ (C \times H \times W) $. +

      Compute the index of the $ K $ max values for each datum across all dimensions $ (C \times H \times W) $. More...

      #include <argmax_layer.hpp>

      @@ -81,7 +81,7 @@
      - + caffe::Layer< Dtype >
      @@ -219,12 +219,12 @@

      template<typename Dtype>
      class caffe::ArgMaxLayer< Dtype >

      -

      Compute the index of the $ K $ max values for each datum across all dimensions $ (C \times H \times W) $.

      +

      Compute the index of the $ K $ max values for each datum across all dimensions $ (C \times H \times W) $.

      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.

      Constructor & Destructor Documentation

      -

      § ArgMaxLayer()

      +

      ◆ ArgMaxLayer()

      @@ -251,7 +251,7 @@

      Parameters
      paramprovides ArgMaxParameter argmax_param, with ArgMaxLayer options:
        -
      • top_k (optional uint, default 1). the number $ K $ of maximal items to output.
      • +
      • top_k (optional uint, default 1). the number $ K $ of maximal items to output.
      • out_max_val (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 (optional int). if set, maximise along the specified axis else maximise the flattened trailing dimensions for each index of the first / num dimension.
      @@ -264,7 +264,7 @@

      Member Function Documentation

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -296,7 +296,7 @@

      -

      § ExactNumTopBlobs()

      +

      ◆ ExactNumTopBlobs()

      @@ -328,7 +328,7 @@

      -

      § Forward_cpu()

      +

      ◆ Forward_cpu()

      @@ -365,11 +365,11 @@

      Parameters
      bottominput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the inputs $ x $
      2. +
      3. $ (N \times C \times H \times W) $ the inputs $ x $
      topoutput Blob vector (length 1)
        -
      1. $ (N \times 1 \times K) $ or, if out_max_val $ (N \times 2 \times K) $ unless axis set than e.g. $ (N \times K \times H \times W) $ if axis == 1 the computed outputs $ y_n = \arg\max\limits_i x_{ni} $ (for $ K = 1 $).
      2. +
      3. $ (N \times 1 \times K) $ or, if out_max_val $ (N \times 2 \times K) $ unless axis set than e.g. $ (N \times K \times H \times W) $ if axis == 1 the computed outputs $ y_n = \arg\max\limits_i x_{ni} $ (for $ K = 1 $).
      @@ -381,7 +381,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -431,7 +431,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -487,9 +487,9 @@

      diff --git a/doxygen/classcaffe_1_1BNLLLayer-members.html b/doxygen/classcaffe_1_1BNLLLayer-members.html index b05c49225b5..9a6c28dd47a 100644 --- a/doxygen/classcaffe_1_1BNLLLayer-members.html +++ b/doxygen/classcaffe_1_1BNLLLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -109,9 +109,9 @@
      diff --git a/doxygen/classcaffe_1_1BNLLLayer.html b/doxygen/classcaffe_1_1BNLLLayer.html index 43f22d9913e..2d3afc574e8 100644 --- a/doxygen/classcaffe_1_1BNLLLayer.html +++ b/doxygen/classcaffe_1_1BNLLLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::BNLLLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@
      - + @@ -71,7 +71,7 @@

      -

      Computes $ y = x + \log(1 + \exp(-x)) $ if $ x > 0 $; $ y = \log(1 + \exp(x)) $ otherwise. +

      Computes $ y = x + \log(1 + \exp(-x)) $ if $ x > 0 $; $ y = \log(1 + \exp(x)) $ otherwise. More...

      #include <bnll_layer.hpp>

      @@ -80,7 +80,7 @@
      - + caffe::NeuronLayer< Dtype > caffe::Layer< Dtype > @@ -175,7 +175,7 @@

      Protected Member Functions

      virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top) - Computes $ y = x + \log(1 + \exp(-x)) $ if $ x > 0 $; $ y = \log(1 + \exp(x)) $ otherwise. More...
      + Computes $ y = x + \log(1 + \exp(-x)) $ if $ x > 0 $; $ y = \log(1 + \exp(x)) $ otherwise. More...
        virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top) @@ -212,15 +212,15 @@

      template<typename Dtype>
      class caffe::BNLLLayer< Dtype >

      -

      Computes $ y = x + \log(1 + \exp(-x)) $ if $ x > 0 $; $ y = \log(1 + \exp(x)) $ otherwise.

      +

      Computes $ y = x + \log(1 + \exp(-x)) $ if $ x > 0 $; $ y = \log(1 + \exp(x)) $ otherwise.

      Parameters
      bottominput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the inputs $ x $
      2. +
      3. $ (N \times C \times H \times W) $ the inputs $ x $
      topoutput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the computed outputs $ y = \left\{ \begin{array}{ll} x + \log(1 + \exp(-x)) & \mbox{if } x > 0 \\ \log(1 + \exp(x)) & \mbox{otherwise} \end{array} \right. $
      2. +
      3. $ (N \times C \times H \times W) $ the computed outputs $ y = \left\{ \begin{array}{ll} x + \log(1 + \exp(-x)) & \mbox{if } x > 0 \\ \log(1 + \exp(x)) & \mbox{otherwise} \end{array} \right. $
      @@ -228,7 +228,7 @@

      Member Function Documentation

      -

      § Backward_cpu()

      +

      ◆ Backward_cpu()

      @@ -273,12 +273,12 @@

      Parameters
      topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
        -
      1. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
      2. +
      3. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
      propagate_downsee Layer::Backward.
      bottominput Blob vector (length 2)
        -
      1. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \frac{\partial E}{\partial x} $ if propagate_down[0]
      2. +
      3. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \frac{\partial E}{\partial x} $ if propagate_down[0]
      @@ -290,7 +290,7 @@

      -

      § Forward_cpu()

      +

      ◆ Forward_cpu()

      @@ -325,15 +325,15 @@

      -

      Computes $ y = x + \log(1 + \exp(-x)) $ if $ x > 0 $; $ y = \log(1 + \exp(x)) $ otherwise.

      +

      Computes $ y = x + \log(1 + \exp(-x)) $ if $ x > 0 $; $ y = \log(1 + \exp(x)) $ otherwise.

      Parameters
      bottominput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the inputs $ x $
      2. +
      3. $ (N \times C \times H \times W) $ the inputs $ x $
      topoutput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the computed outputs $ y = \left\{ \begin{array}{ll} x + \log(1 + \exp(-x)) & \mbox{if } x > 0 \\ \log(1 + \exp(x)) & \mbox{otherwise} \end{array} \right. $
      2. +
      3. $ (N \times C \times H \times W) $ the computed outputs $ y = \left\{ \begin{array}{ll} x + \log(1 + \exp(-x)) & \mbox{if } x > 0 \\ \log(1 + \exp(x)) & \mbox{otherwise} \end{array} \right. $
      @@ -351,9 +351,9 @@

      diff --git a/doxygen/classcaffe_1_1BaseConvolutionLayer-members.html b/doxygen/classcaffe_1_1BaseConvolutionLayer-members.html index 1274ab38224..f7514966b92 100644 --- a/doxygen/classcaffe_1_1BaseConvolutionLayer-members.html +++ b/doxygen/classcaffe_1_1BaseConvolutionLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -142,9 +142,9 @@
      diff --git a/doxygen/classcaffe_1_1BaseConvolutionLayer.html b/doxygen/classcaffe_1_1BaseConvolutionLayer.html index 59818211fed..31acc808cd0 100644 --- a/doxygen/classcaffe_1_1BaseConvolutionLayer.html +++ b/doxygen/classcaffe_1_1BaseConvolutionLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::BaseConvolutionLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -81,7 +81,7 @@
      - + caffe::Layer< Dtype > caffe::ConvolutionLayer< Dtype > caffe::DeconvolutionLayer< Dtype > @@ -325,7 +325,7 @@

      Abstract base class that factors out the BLAS code common to ConvolutionLayer and DeconvolutionLayer.

      Member Function Documentation

      -

      § EqualNumBottomTopBlobs()

      +

      ◆ EqualNumBottomTopBlobs()

      @@ -357,7 +357,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -407,7 +407,7 @@

      -

      § MinBottomBlobs()

      +

      ◆ MinBottomBlobs()

      @@ -439,7 +439,7 @@

      -

      § MinTopBlobs()

      +

      ◆ MinTopBlobs()

      @@ -471,7 +471,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -527,9 +527,9 @@

      diff --git a/doxygen/classcaffe_1_1BaseDataLayer-members.html b/doxygen/classcaffe_1_1BaseDataLayer-members.html index 565199d53a3..43b925ba1b4 100644 --- a/doxygen/classcaffe_1_1BaseDataLayer-members.html +++ b/doxygen/classcaffe_1_1BaseDataLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -105,17 +105,16 @@ set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline - ShareInParallel() const (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >inlinevirtual - ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual - transform_param_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected - type() constcaffe::Layer< Dtype >inlinevirtual - ~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual + ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual + transform_param_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected + type() constcaffe::Layer< Dtype >inlinevirtual + ~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
      diff --git a/doxygen/classcaffe_1_1BaseDataLayer.html b/doxygen/classcaffe_1_1BaseDataLayer.html index 0b1d24f0888..e806c96390e 100644 --- a/doxygen/classcaffe_1_1BaseDataLayer.html +++ b/doxygen/classcaffe_1_1BaseDataLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::BaseDataLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -80,7 +80,7 @@
      - + caffe::Layer< Dtype > caffe::BasePrefetchingDataLayer< Dtype > caffe::MemoryDataLayer< Dtype > @@ -98,9 +98,6 @@ virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)  Does layer-specific setup: your layer should implement this function as well as Reshape. More...
        - -virtual bool ShareInParallel () const -  virtual void DataLayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)   @@ -233,7 +230,7 @@

      TODO(dox): thorough documentation for Forward and proto params.

      Member Function Documentation

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -285,7 +282,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -341,9 +338,9 @@

      diff --git a/doxygen/classcaffe_1_1BasePrefetchingDataLayer-members.html b/doxygen/classcaffe_1_1BasePrefetchingDataLayer-members.html index 6f68d3636a8..0e3e8628b92 100644 --- a/doxygen/classcaffe_1_1BasePrefetchingDataLayer-members.html +++ b/doxygen/classcaffe_1_1BasePrefetchingDataLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -115,21 +115,20 @@ set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline - ShareInParallel() const (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >inlinevirtual - StartInternalThread()caffe::InternalThread - StopInternalThread()caffe::InternalThread - ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual - transform_param_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected - transformed_data_ (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protected - type() constcaffe::Layer< Dtype >inlinevirtual - ~InternalThread() (defined in caffe::InternalThread)caffe::InternalThreadvirtual - ~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual + StartInternalThread()caffe::InternalThread + StopInternalThread()caffe::InternalThread + ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual + transform_param_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected + transformed_data_ (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protected + type() constcaffe::Layer< Dtype >inlinevirtual + ~InternalThread() (defined in caffe::InternalThread)caffe::InternalThreadvirtual + ~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
      diff --git a/doxygen/classcaffe_1_1BasePrefetchingDataLayer.html b/doxygen/classcaffe_1_1BasePrefetchingDataLayer.html index d30c18947b8..b4b17d0ebe6 100644 --- a/doxygen/classcaffe_1_1BasePrefetchingDataLayer.html +++ b/doxygen/classcaffe_1_1BasePrefetchingDataLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::BasePrefetchingDataLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -76,7 +76,7 @@
      - + caffe::BaseDataLayer< Dtype > caffe::InternalThread caffe::Layer< Dtype > @@ -106,9 +106,6 @@  BaseDataLayer (const LayerParameter &param)   - -virtual bool ShareInParallel () const -  virtual void DataLayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)   @@ -261,7 +258,7 @@

      Member Function Documentation

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -317,9 +314,9 @@

      diff --git a/doxygen/classcaffe_1_1Batch-members.html b/doxygen/classcaffe_1_1Batch-members.html index c559dc03e10..f95ebbf2a1a 100644 --- a/doxygen/classcaffe_1_1Batch-members.html +++ b/doxygen/classcaffe_1_1Batch-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -74,9 +74,9 @@
      diff --git a/doxygen/classcaffe_1_1Batch.html b/doxygen/classcaffe_1_1Batch.html index 884ecd79fc5..689c809e38d 100644 --- a/doxygen/classcaffe_1_1Batch.html +++ b/doxygen/classcaffe_1_1Batch.html @@ -3,7 +3,7 @@ - + Caffe: caffe::Batch< Dtype > Class Template Reference @@ -29,7 +29,7 @@
      - + @@ -85,9 +85,9 @@
      diff --git a/doxygen/classcaffe_1_1BatchNormLayer-members.html b/doxygen/classcaffe_1_1BatchNormLayer-members.html index 2e2e8ba3b98..8155498bc78 100644 --- a/doxygen/classcaffe_1_1BatchNormLayer-members.html +++ b/doxygen/classcaffe_1_1BatchNormLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@
      - + @@ -119,9 +119,9 @@
      diff --git a/doxygen/classcaffe_1_1BatchNormLayer.html b/doxygen/classcaffe_1_1BatchNormLayer.html index 287c6c5650c..dffb5f96d84 100644 --- a/doxygen/classcaffe_1_1BatchNormLayer.html +++ b/doxygen/classcaffe_1_1BatchNormLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::BatchNormLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@
      - + @@ -81,7 +81,7 @@
      - + caffe::Layer< Dtype >
      @@ -252,7 +252,7 @@

      TODO(dox): thorough documentation for Forward, Backward, and proto params.

      Member Function Documentation

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -284,7 +284,7 @@

      -

      § ExactNumTopBlobs()

      +

      ◆ ExactNumTopBlobs()

      @@ -316,7 +316,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -366,7 +366,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -422,9 +422,9 @@

      diff --git a/doxygen/classcaffe_1_1BatchReindexLayer-members.html b/doxygen/classcaffe_1_1BatchReindexLayer-members.html index 43a9d77712c..abd80a99df3 100644 --- a/doxygen/classcaffe_1_1BatchReindexLayer-members.html +++ b/doxygen/classcaffe_1_1BatchReindexLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -108,9 +108,9 @@
      diff --git a/doxygen/classcaffe_1_1BatchReindexLayer.html b/doxygen/classcaffe_1_1BatchReindexLayer.html index 15251576ad8..b50ecd4c0c6 100644 --- a/doxygen/classcaffe_1_1BatchReindexLayer.html +++ b/doxygen/classcaffe_1_1BatchReindexLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::BatchReindexLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -81,7 +81,7 @@
      - + caffe::Layer< Dtype >
      @@ -211,7 +211,7 @@

      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.

      Member Function Documentation

      -

      § Backward_cpu()

      +

      ◆ Backward_cpu()

      @@ -256,12 +256,12 @@

      Parameters
      @@ -274,7 +274,7 @@

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -306,7 +306,7 @@

      -

      § ExactNumTopBlobs()

      +

      ◆ ExactNumTopBlobs()

      @@ -338,7 +338,7 @@

      -

      § Forward_cpu()

      +

      ◆ Forward_cpu()

      @@ -375,12 +375,12 @@

      Parameters

      topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
        -
      1. $ (M \times ...) $: containing error gradients $ \frac{\partial E}{\partial y} $ with respect to concatenated outputs $ y $
      2. +
      3. $ (M \times ...) $: containing error gradients $ \frac{\partial E}{\partial y} $ with respect to concatenated outputs $ y $
      propagate_downsee Layer::Backward.
      bottominput Blob vector (length 2):
        -
      • $ \frac{\partial E}{\partial y} $ is de-indexed (summing where required) back to the input x_1
      • +
      • $ \frac{\partial E}{\partial y} $ 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.
      bottominput Blob vector (length 2+)
        -
      1. $ (N \times ...) $ the inputs $ x_1 $
      2. -
      3. $ (M) $ the inputs $ x_2 $
      4. +
      5. $ (N \times ...) $ the inputs $ x_1 $
      6. +
      7. $ (M) $ the inputs $ x_2 $
      topoutput Blob vector (length 1)
        -
      1. $ (M \times ...) $: the reindexed array $ y = x_1[x_2] $
      2. +
      3. $ (M \times ...) $: the reindexed array $ y = x_1[x_2] $
      @@ -392,7 +392,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -448,9 +448,9 @@

      diff --git a/doxygen/classcaffe_1_1BiasLayer-members.html b/doxygen/classcaffe_1_1BiasLayer-members.html index ce7805b5d36..fc5dbbc0ebc 100644 --- a/doxygen/classcaffe_1_1BiasLayer-members.html +++ b/doxygen/classcaffe_1_1BiasLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -108,9 +108,9 @@
      diff --git a/doxygen/classcaffe_1_1BiasLayer.html b/doxygen/classcaffe_1_1BiasLayer.html index d59af7627ad..fc2657d7f2a 100644 --- a/doxygen/classcaffe_1_1BiasLayer.html +++ b/doxygen/classcaffe_1_1BiasLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::BiasLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -79,7 +79,7 @@
      - + caffe::Layer< Dtype >
      @@ -209,7 +209,7 @@

      The second input may be omitted, in which case it's learned as a parameter of the layer. Note: in case bias and scaling are desired, both operations can be handled by ScaleLayer configured with bias_term: true.

      Member Function Documentation

      -

      § ExactNumTopBlobs()

      +

      ◆ ExactNumTopBlobs()

      @@ -241,7 +241,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -291,7 +291,7 @@

      -

      § MaxBottomBlobs()

      +

      ◆ MaxBottomBlobs()

      @@ -323,7 +323,7 @@

      -

      § MinBottomBlobs()

      +

      ◆ MinBottomBlobs()

      @@ -355,7 +355,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -411,9 +411,9 @@

      diff --git a/doxygen/classcaffe_1_1BilinearFiller-members.html b/doxygen/classcaffe_1_1BilinearFiller-members.html index 3bb3f900e13..23132b8c681 100644 --- a/doxygen/classcaffe_1_1BilinearFiller-members.html +++ b/doxygen/classcaffe_1_1BilinearFiller-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -77,9 +77,9 @@
      diff --git a/doxygen/classcaffe_1_1BilinearFiller.html b/doxygen/classcaffe_1_1BilinearFiller.html index 8623cded75b..8ede49e07df 100644 --- a/doxygen/classcaffe_1_1BilinearFiller.html +++ b/doxygen/classcaffe_1_1BilinearFiller.html @@ -3,7 +3,7 @@ - + Caffe: caffe::BilinearFiller< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -79,7 +79,7 @@
      - + caffe::Filler< Dtype >
      @@ -115,9 +115,9 @@
      diff --git a/doxygen/classcaffe_1_1Blob-members.html b/doxygen/classcaffe_1_1Blob-members.html index cf181563b25..3eaf75fac39 100644 --- a/doxygen/classcaffe_1_1Blob-members.html +++ b/doxygen/classcaffe_1_1Blob-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -147,9 +147,9 @@
      diff --git a/doxygen/classcaffe_1_1Blob.html b/doxygen/classcaffe_1_1Blob.html index 1bb6cc312f2..52325a6e5dc 100644 --- a/doxygen/classcaffe_1_1Blob.html +++ b/doxygen/classcaffe_1_1Blob.html @@ -3,7 +3,7 @@ - + Caffe: caffe::Blob< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -344,7 +344,7 @@

      TODO(dox): more thorough description.

      Member Function Documentation

      -

      § CanonicalAxisIndex()

      +

      ◆ CanonicalAxisIndex()

      @@ -380,7 +380,7 @@

      -

      § CopyFrom()

      +

      ◆ CopyFrom()

      @@ -426,7 +426,7 @@

      -

      § count() [1/2]

      +

      ◆ count() [1/2]

      @@ -473,7 +473,7 @@

      -

      § count() [2/2]

      +

      ◆ count() [2/2]

      @@ -509,7 +509,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -533,7 +533,7 @@

      -

      § shape()

      +

      ◆ shape()

      @@ -569,7 +569,7 @@

      -

      § ShareData()

      +

      ◆ ShareData()

      @@ -592,7 +592,7 @@

      -

      § ShareDiff()

      +

      ◆ ShareDiff()

      @@ -621,9 +621,9 @@

      diff --git a/doxygen/classcaffe_1_1BlockingQueue-members.html b/doxygen/classcaffe_1_1BlockingQueue-members.html index b4a76993359..74ee26f4223 100644 --- a/doxygen/classcaffe_1_1BlockingQueue-members.html +++ b/doxygen/classcaffe_1_1BlockingQueue-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -82,9 +82,9 @@
      diff --git a/doxygen/classcaffe_1_1BlockingQueue.html b/doxygen/classcaffe_1_1BlockingQueue.html index 7641955e51c..e7a8a43d668 100644 --- a/doxygen/classcaffe_1_1BlockingQueue.html +++ b/doxygen/classcaffe_1_1BlockingQueue.html @@ -3,7 +3,7 @@ - + Caffe: caffe::BlockingQueue< T > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -121,9 +121,9 @@
      diff --git a/doxygen/classcaffe_1_1BlockingQueue_1_1sync-members.html b/doxygen/classcaffe_1_1BlockingQueue_1_1sync-members.html index b079b9caa41..e31497a0ef5 100644 --- a/doxygen/classcaffe_1_1BlockingQueue_1_1sync-members.html +++ b/doxygen/classcaffe_1_1BlockingQueue_1_1sync-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -74,9 +74,9 @@
      diff --git a/doxygen/classcaffe_1_1BlockingQueue_1_1sync.html b/doxygen/classcaffe_1_1BlockingQueue_1_1sync.html index 6b9fd406723..a5a18440e8c 100644 --- a/doxygen/classcaffe_1_1BlockingQueue_1_1sync.html +++ b/doxygen/classcaffe_1_1BlockingQueue_1_1sync.html @@ -3,7 +3,7 @@ - + Caffe: caffe::BlockingQueue< T >::sync Class Reference @@ -29,7 +29,7 @@

      - + @@ -85,9 +85,9 @@
      diff --git a/doxygen/classcaffe_1_1CPUTimer-members.html b/doxygen/classcaffe_1_1CPUTimer-members.html index a634d5ef33a..01172e8bab6 100644 --- a/doxygen/classcaffe_1_1CPUTimer-members.html +++ b/doxygen/classcaffe_1_1CPUTimer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -94,9 +94,9 @@
      diff --git a/doxygen/classcaffe_1_1CPUTimer.html b/doxygen/classcaffe_1_1CPUTimer.html index 0a3583481de..034de03ad97 100644 --- a/doxygen/classcaffe_1_1CPUTimer.html +++ b/doxygen/classcaffe_1_1CPUTimer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::CPUTimer Class Reference @@ -29,7 +29,7 @@

      - + @@ -149,9 +149,9 @@
      diff --git a/doxygen/classcaffe_1_1Caffe-members.html b/doxygen/classcaffe_1_1Caffe-members.html index fff7ef31a84..70afb703d2c 100644 --- a/doxygen/classcaffe_1_1Caffe-members.html +++ b/doxygen/classcaffe_1_1Caffe-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -101,9 +101,9 @@
      diff --git a/doxygen/classcaffe_1_1Caffe.html b/doxygen/classcaffe_1_1Caffe.html index ddd00bc7c3f..9cf3f3e8b4b 100644 --- a/doxygen/classcaffe_1_1Caffe.html +++ b/doxygen/classcaffe_1_1Caffe.html @@ -3,7 +3,7 @@ - + Caffe: caffe::Caffe Class Reference @@ -29,7 +29,7 @@

      - + @@ -173,9 +173,9 @@
      diff --git a/doxygen/classcaffe_1_1Caffe_1_1RNG-members.html b/doxygen/classcaffe_1_1Caffe_1_1RNG-members.html index e6731d8c14b..48d3915ccaf 100644 --- a/doxygen/classcaffe_1_1Caffe_1_1RNG-members.html +++ b/doxygen/classcaffe_1_1Caffe_1_1RNG-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -77,9 +77,9 @@
      diff --git a/doxygen/classcaffe_1_1Caffe_1_1RNG.html b/doxygen/classcaffe_1_1Caffe_1_1RNG.html index 603723b8e41..f3fbee8fdad 100644 --- a/doxygen/classcaffe_1_1Caffe_1_1RNG.html +++ b/doxygen/classcaffe_1_1Caffe_1_1RNG.html @@ -3,7 +3,7 @@ - + Caffe: caffe::Caffe::RNG Class Reference @@ -29,7 +29,7 @@

      - + @@ -98,9 +98,9 @@
      diff --git a/doxygen/classcaffe_1_1Caffe_1_1RNG_1_1Generator-members.html b/doxygen/classcaffe_1_1Caffe_1_1RNG_1_1Generator-members.html index 349dde513f7..336234da7fc 100644 --- a/doxygen/classcaffe_1_1Caffe_1_1RNG_1_1Generator-members.html +++ b/doxygen/classcaffe_1_1Caffe_1_1RNG_1_1Generator-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -75,9 +75,9 @@
      diff --git a/doxygen/classcaffe_1_1Caffe_1_1RNG_1_1Generator.html b/doxygen/classcaffe_1_1Caffe_1_1RNG_1_1Generator.html index 4bca53d1fb9..f9417046cec 100644 --- a/doxygen/classcaffe_1_1Caffe_1_1RNG_1_1Generator.html +++ b/doxygen/classcaffe_1_1Caffe_1_1RNG_1_1Generator.html @@ -3,7 +3,7 @@ - + Caffe: caffe::Caffe::RNG::Generator Class Reference @@ -29,7 +29,7 @@
      - + @@ -85,9 +85,9 @@

      diff --git a/doxygen/classcaffe_1_1ConcatLayer-members.html b/doxygen/classcaffe_1_1ConcatLayer-members.html index c9461edc3c5..7a1a4ff7d0b 100644 --- a/doxygen/classcaffe_1_1ConcatLayer-members.html +++ b/doxygen/classcaffe_1_1ConcatLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@
      - + @@ -112,9 +112,9 @@

      diff --git a/doxygen/classcaffe_1_1ConcatLayer.html b/doxygen/classcaffe_1_1ConcatLayer.html index 3ff795e62b2..4a139c48831 100644 --- a/doxygen/classcaffe_1_1ConcatLayer.html +++ b/doxygen/classcaffe_1_1ConcatLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::ConcatLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@
      - + @@ -81,7 +81,7 @@
      - + caffe::Layer< Dtype >
      @@ -222,7 +222,7 @@

      Takes at least two Blobs and concatenates them along either the num or channel dimension, outputting the result.

      Member Function Documentation

      -

      § Backward_cpu()

      +

      ◆ Backward_cpu()

      @@ -267,11 +267,11 @@

      Parameters
      - +
      topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
        -
      1. $ (KN \times C \times H \times W) $ if axis == 0, or $ (N \times KC \times H \times W) $ if axis == 1: containing error gradients $ \frac{\partial E}{\partial y} $ with respect to concatenated outputs $ y $
      2. +
      3. $ (KN \times C \times H \times W) $ if axis == 0, or $ (N \times KC \times H \times W) $ if axis == 1: containing error gradients $ \frac{\partial E}{\partial y} $ with respect to concatenated outputs $ y $
      propagate_downsee Layer::Backward.
      bottominput Blob vector (length K), into which the top gradient $ \frac{\partial E}{\partial y} $ is deconcatenated back to the inputs $ \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} $
      bottominput Blob vector (length K), into which the top gradient $ \frac{\partial E}{\partial y} $ is deconcatenated back to the inputs $ \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} $
      @@ -281,7 +281,7 @@

      -

      § ExactNumTopBlobs()

      +

      ◆ ExactNumTopBlobs()

      @@ -313,7 +313,7 @@

      -

      § Forward_cpu()

      +

      ◆ Forward_cpu()

      @@ -350,16 +350,16 @@

      Parameters
      bottominput Blob vector (length 2+)
        -
      1. $ (N \times C \times H \times W) $ the inputs $ x_1 $
      2. -
      3. $ (N \times C \times H \times W) $ the inputs $ x_2 $
      4. +
      5. $ (N \times C \times H \times W) $ the inputs $ x_1 $
      6. +
      7. $ (N \times C \times H \times W) $ the inputs $ x_2 $
      8. ...
        -
      • K $ (N \times C \times H \times W) $ the inputs $ x_K $
      • +
      • K $ (N \times C \times H \times W) $ the inputs $ x_K $
      topoutput Blob vector (length 1)
        -
      1. $ (KN \times C \times H \times W) $ if axis == 0, or $ (N \times KC \times H \times W) $ if axis == 1: the concatenated output $ y = [\begin{array}{cccc} x_1 & x_2 & ... & x_K \end{array}] $
      2. +
      3. $ (KN \times C \times H \times W) $ if axis == 0, or $ (N \times KC \times H \times W) $ if axis == 1: the concatenated output $ y = [\begin{array}{cccc} x_1 & x_2 & ... & x_K \end{array}] $
      @@ -371,7 +371,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -421,7 +421,7 @@

      -

      § MinBottomBlobs()

      +

      ◆ MinBottomBlobs()

      @@ -453,7 +453,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -509,9 +509,9 @@

      diff --git a/doxygen/classcaffe_1_1ConstantFiller-members.html b/doxygen/classcaffe_1_1ConstantFiller-members.html index 56ab11e887d..f0ca96862fd 100644 --- a/doxygen/classcaffe_1_1ConstantFiller-members.html +++ b/doxygen/classcaffe_1_1ConstantFiller-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -77,9 +77,9 @@
      diff --git a/doxygen/classcaffe_1_1ConstantFiller.html b/doxygen/classcaffe_1_1ConstantFiller.html index 1bda5662e76..136ce8cd674 100644 --- a/doxygen/classcaffe_1_1ConstantFiller.html +++ b/doxygen/classcaffe_1_1ConstantFiller.html @@ -3,7 +3,7 @@ - + Caffe: caffe::ConstantFiller< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -70,7 +70,7 @@
      -

      Fills a Blob with constant values $ x = 0 $. +

      Fills a Blob with constant values $ x = 0 $. More...

      #include <filler.hpp>

      @@ -79,7 +79,7 @@
      - + caffe::Filler< Dtype >
      @@ -108,16 +108,16 @@

      template<typename Dtype>
      class caffe::ConstantFiller< Dtype >

      -

      Fills a Blob with constant values $ x = 0 $.

      +

      Fills a Blob with constant values $ x = 0 $.


      The documentation for this class was generated from the following file:
      diff --git a/doxygen/classcaffe_1_1ContrastiveLossLayer-members.html b/doxygen/classcaffe_1_1ContrastiveLossLayer-members.html index 5b7508aa3cc..6d5ad50489a 100644 --- a/doxygen/classcaffe_1_1ContrastiveLossLayer-members.html +++ b/doxygen/classcaffe_1_1ContrastiveLossLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -113,9 +113,9 @@
      diff --git a/doxygen/classcaffe_1_1ContrastiveLossLayer.html b/doxygen/classcaffe_1_1ContrastiveLossLayer.html index 8f123d49272..dfef10f8a2e 100644 --- a/doxygen/classcaffe_1_1ContrastiveLossLayer.html +++ b/doxygen/classcaffe_1_1ContrastiveLossLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::ContrastiveLossLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -72,7 +72,7 @@
      -

      Computes the contrastive loss $ 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 $ where $ d = \left| \left| a_n - b_n \right| \right|_2 $. This can be used to train siamese networks. +

      Computes the contrastive loss $ 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 $ where $ d = \left| \left| a_n - b_n \right| \right|_2 $. This can be used to train siamese networks. More...

      #include <contrastive_loss_layer.hpp>

      @@ -81,7 +81,7 @@
      - + caffe::LossLayer< Dtype > caffe::Layer< Dtype > @@ -176,7 +176,7 @@

      Protected Member Functions

      virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top) - Computes the contrastive loss $ 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 $ where $ d = \left| \left| a_n - b_n \right| \right|_2 $. This can be used to train siamese networks. More...
      + Computes the contrastive loss $ 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 $ where $ d = \left| \left| a_n - b_n \right| \right|_2 $. This can be used to train siamese networks. More...
        virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top) @@ -225,17 +225,17 @@

      template<typename Dtype>
      class caffe::ContrastiveLossLayer< Dtype >

      -

      Computes the contrastive loss $ 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 $ where $ d = \left| \left| a_n - b_n \right| \right|_2 $. This can be used to train siamese networks.

      +

      Computes the contrastive loss $ 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 $ where $ d = \left| \left| a_n - b_n \right| \right|_2 $. This can be used to train siamese networks.

      Parameters
      bottominput Blob vector (length 3)
        -
      1. $ (N \times C \times 1 \times 1) $ the features $ a \in [-\infty, +\infty]$
      2. -
      3. $ (N \times C \times 1 \times 1) $ the features $ b \in [-\infty, +\infty]$
      4. -
      5. $ (N \times 1 \times 1 \times 1) $ the binary similarity $ s \in [0, 1]$
      6. +
      7. $ (N \times C \times 1 \times 1) $ the features $ a \in [-\infty, +\infty]$
      8. +
      9. $ (N \times C \times 1 \times 1) $ the features $ b \in [-\infty, +\infty]$
      10. +
      11. $ (N \times 1 \times 1 \times 1) $ the binary similarity $ s \in [0, 1]$
      topoutput Blob vector (length 1)
        -
      1. $ (1 \times 1 \times 1 \times 1) $ the computed contrastive loss: $ 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 $ where $ d = \left| \left| a_n - b_n \right| \right|_2 $. This can be used to train siamese networks.
      2. +
      3. $ (1 \times 1 \times 1 \times 1) $ the computed contrastive loss: $ 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 $ where $ d = \left| \left| a_n - b_n \right| \right|_2 $. This can be used to train siamese networks.
      @@ -243,7 +243,7 @@

      Member Function Documentation

      -

      § AllowForceBackward()

      +

      ◆ AllowForceBackward()

      @@ -274,7 +274,7 @@

      -

      § Backward_cpu()

      +

      ◆ Backward_cpu()

      @@ -320,13 +320,13 @@

      Parameters
      topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
        -
      1. $ (1 \times 1 \times 1 \times 1) $ This Blob's diff will simply contain the loss_weight* $ \lambda $, as $ \lambda $ is the coefficient of this layer's output $\ell_i$ in the overall Net loss $ E = \lambda_i \ell_i + \mbox{other loss terms}$; hence $ \frac{\partial E}{\partial \ell_i} = \lambda_i $. (*Assuming that this top Blob is not used as a bottom (input) by any other layer of the Net.)
      2. +
      3. $ (1 \times 1 \times 1 \times 1) $ This Blob's diff will simply contain the loss_weight* $ \lambda $, as $ \lambda $ is the coefficient of this layer's output $\ell_i$ in the overall Net loss $ E = \lambda_i \ell_i + \mbox{other loss terms}$; hence $ \frac{\partial E}{\partial \ell_i} = \lambda_i $. (*Assuming that this top Blob is not used as a bottom (input) by any other layer of the Net.)
      propagate_downsee Layer::Backward.
      bottominput Blob vector (length 2)
        -
      1. $ (N \times C \times 1 \times 1) $ the features $a$; Backward fills their diff with gradients if propagate_down[0]
      2. -
      3. $ (N \times C \times 1 \times 1) $ the features $b$; Backward fills their diff with gradients if propagate_down[1]
      4. +
      5. $ (N \times C \times 1 \times 1) $ the features $a$; Backward fills their diff with gradients if propagate_down[0]
      6. +
      7. $ (N \times C \times 1 \times 1) $ the features $b$; Backward fills their diff with gradients if propagate_down[1]
      @@ -338,7 +338,7 @@

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -370,7 +370,7 @@

      -

      § Forward_cpu()

      +

      ◆ Forward_cpu()

      @@ -405,17 +405,17 @@

      -

      Computes the contrastive loss $ 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 $ where $ d = \left| \left| a_n - b_n \right| \right|_2 $. This can be used to train siamese networks.

      +

      Computes the contrastive loss $ 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 $ where $ d = \left| \left| a_n - b_n \right| \right|_2 $. This can be used to train siamese networks.

      Parameters
      bottominput Blob vector (length 3)
        -
      1. $ (N \times C \times 1 \times 1) $ the features $ a \in [-\infty, +\infty]$
      2. -
      3. $ (N \times C \times 1 \times 1) $ the features $ b \in [-\infty, +\infty]$
      4. -
      5. $ (N \times 1 \times 1 \times 1) $ the binary similarity $ s \in [0, 1]$
      6. +
      7. $ (N \times C \times 1 \times 1) $ the features $ a \in [-\infty, +\infty]$
      8. +
      9. $ (N \times C \times 1 \times 1) $ the features $ b \in [-\infty, +\infty]$
      10. +
      11. $ (N \times 1 \times 1 \times 1) $ the binary similarity $ s \in [0, 1]$
      topoutput Blob vector (length 1)
        -
      1. $ (1 \times 1 \times 1 \times 1) $ the computed contrastive loss: $ 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 $ where $ d = \left| \left| a_n - b_n \right| \right|_2 $. This can be used to train siamese networks.
      2. +
      3. $ (1 \times 1 \times 1 \times 1) $ the computed contrastive loss: $ 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 $ where $ d = \left| \left| a_n - b_n \right| \right|_2 $. This can be used to train siamese networks.
      @@ -427,7 +427,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -483,9 +483,9 @@

      diff --git a/doxygen/classcaffe_1_1ConvolutionLayer-members.html b/doxygen/classcaffe_1_1ConvolutionLayer-members.html index 3291ecf7336..a87719ec62d 100644 --- a/doxygen/classcaffe_1_1ConvolutionLayer-members.html +++ b/doxygen/classcaffe_1_1ConvolutionLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -143,9 +143,9 @@
      diff --git a/doxygen/classcaffe_1_1ConvolutionLayer.html b/doxygen/classcaffe_1_1ConvolutionLayer.html index e494fc34f4b..df9fb40828d 100644 --- a/doxygen/classcaffe_1_1ConvolutionLayer.html +++ b/doxygen/classcaffe_1_1ConvolutionLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::ConvolutionLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -80,7 +80,7 @@
      - + caffe::BaseConvolutionLayer< Dtype > caffe::Layer< Dtype > @@ -330,7 +330,7 @@

      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.

      Constructor & Destructor Documentation

      -

      § ConvolutionLayer()

      +

      ◆ ConvolutionLayer()

      @@ -362,7 +362,7 @@

      , 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. +
    1. group (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 $ \geq 1 $, 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.
    2. bias_term (optional, default true). Whether to have a bias.
    3. engine: convolution has CAFFE (matrix multiplication) and CUDNN (library kernels + stream parallelism) engines.
    4. @@ -380,9 +380,9 @@

      diff --git a/doxygen/classcaffe_1_1CropLayer-members.html b/doxygen/classcaffe_1_1CropLayer-members.html index c1bdd29bd41..1f08cd8f562 100644 --- a/doxygen/classcaffe_1_1CropLayer-members.html +++ b/doxygen/classcaffe_1_1CropLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -109,9 +109,9 @@
      diff --git a/doxygen/classcaffe_1_1CropLayer.html b/doxygen/classcaffe_1_1CropLayer.html index 45055bcda13..8b6c4108f37 100644 --- a/doxygen/classcaffe_1_1CropLayer.html +++ b/doxygen/classcaffe_1_1CropLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::CropLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@
      - + @@ -81,7 +81,7 @@
      - + caffe::Layer< Dtype >
      @@ -217,7 +217,7 @@

      TODO(dox): thorough documentation for Forward, Backward, and proto params.

      Member Function Documentation

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -249,7 +249,7 @@

      -

      § ExactNumTopBlobs()

      +

      ◆ ExactNumTopBlobs()

      @@ -281,7 +281,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -331,7 +331,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -387,9 +387,9 @@

      diff --git a/doxygen/classcaffe_1_1DataLayer-members.html b/doxygen/classcaffe_1_1DataLayer-members.html index 3f151e2af21..47f7a007855 100644 --- a/doxygen/classcaffe_1_1DataLayer-members.html +++ b/doxygen/classcaffe_1_1DataLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -120,23 +120,22 @@ set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline - ShareInParallel() const (defined in caffe::DataLayer< Dtype >)caffe::DataLayer< Dtype >inlinevirtual - Skip() (defined in caffe::DataLayer< Dtype >)caffe::DataLayer< Dtype >protected - StartInternalThread()caffe::InternalThread - StopInternalThread()caffe::InternalThread - ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual - transform_param_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected - transformed_data_ (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protected - type() constcaffe::DataLayer< Dtype >inlinevirtual - ~DataLayer() (defined in caffe::DataLayer< Dtype >)caffe::DataLayer< Dtype >virtual - ~InternalThread() (defined in caffe::InternalThread)caffe::InternalThreadvirtual - ~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual + Skip() (defined in caffe::DataLayer< Dtype >)caffe::DataLayer< Dtype >protected + StartInternalThread()caffe::InternalThread + StopInternalThread()caffe::InternalThread + ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual + transform_param_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected + transformed_data_ (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protected + type() constcaffe::DataLayer< Dtype >inlinevirtual + ~DataLayer() (defined in caffe::DataLayer< Dtype >)caffe::DataLayer< Dtype >virtual + ~InternalThread() (defined in caffe::InternalThread)caffe::InternalThreadvirtual + ~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
      diff --git a/doxygen/classcaffe_1_1DataLayer.html b/doxygen/classcaffe_1_1DataLayer.html index 71d725d4686..766e9fdd977 100644 --- a/doxygen/classcaffe_1_1DataLayer.html +++ b/doxygen/classcaffe_1_1DataLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::DataLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -76,7 +76,7 @@
      - + caffe::BasePrefetchingDataLayer< Dtype > caffe::BaseDataLayer< Dtype > caffe::InternalThread @@ -92,9 +92,6 @@ virtual void DataLayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)   - -virtual bool ShareInParallel () const -  virtual const char * type () const  Returns the layer type.
      @@ -280,7 +277,7 @@

      Member Function Documentation

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -312,7 +309,7 @@

      -

      § MaxTopBlobs()

      +

      ◆ MaxTopBlobs()

      @@ -344,7 +341,7 @@

      -

      § MinTopBlobs()

      +

      ◆ MinTopBlobs()

      @@ -382,9 +379,9 @@

      diff --git a/doxygen/classcaffe_1_1DataReader-members.html b/doxygen/classcaffe_1_1DataReader-members.html deleted file mode 100644 index 1ef365d2361..00000000000 --- a/doxygen/classcaffe_1_1DataReader-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -Caffe: Member List - - - - - - - - - -
      -
      - - - - - - -
      -
      Caffe -
      -
      -
      - - - - - - - - -
      -
      - - -
      - -
      - - -
      -
      -
      -
      caffe::DataReader Member List
      -
      -
      - -

      This is the complete list of members for caffe::DataReader, including all inherited members.

      - - - - - - - - - - -
      bodies_ (defined in caffe::DataReader)caffe::DataReaderprotectedstatic
      body_ (defined in caffe::DataReader)caffe::DataReaderprotected
      DataReader(const LayerParameter &param) (defined in caffe::DataReader)caffe::DataReaderexplicit
      DISABLE_COPY_AND_ASSIGN(DataReader) (defined in caffe::DataReader)caffe::DataReaderprotected
      free() const (defined in caffe::DataReader)caffe::DataReaderinline
      full() const (defined in caffe::DataReader)caffe::DataReaderinline
      queue_pair_ (defined in caffe::DataReader)caffe::DataReaderprotected
      source_key(const LayerParameter &param) (defined in caffe::DataReader)caffe::DataReaderinlineprotectedstatic
      ~DataReader() (defined in caffe::DataReader)caffe::DataReader
      - - - - diff --git a/doxygen/classcaffe_1_1DataReader.html b/doxygen/classcaffe_1_1DataReader.html deleted file mode 100644 index 29bc70e3690..00000000000 --- a/doxygen/classcaffe_1_1DataReader.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - -Caffe: caffe::DataReader Class Reference - - - - - - - - - -
      -
      - - - - - - -
      -
      Caffe -
      -
      -
      - - - - - - - - -
      -
      - - -
      - -
      - - -
      - -
      - -

      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. - More...

      - -

      #include <data_reader.hpp>

      - - - - - - -

      -Classes

      class  Body
       
      class  QueuePair
       
      - - - - - - - -

      -Public Member Functions

      DataReader (const LayerParameter &param)
       
      -BlockingQueue< Datum * > & free () const
       
      -BlockingQueue< Datum * > & full () const
       
      - - - -

      -Protected Member Functions

      DISABLE_COPY_AND_ASSIGN (DataReader)
       
      - - - -

      -Static Protected Member Functions

      -static string source_key (const LayerParameter &param)
       
      - - - - - -

      -Protected Attributes

      -const shared_ptr< QueuePairqueue_pair_
       
      -shared_ptr< Bodybody_
       
      - - - -

      -Static Protected Attributes

      -static map< const string, boost::weak_ptr< DataReader::Body > > bodies_
       
      -

      Detailed Description

      -

      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.

      -

      The documentation for this class was generated from the following files: -
      - - - - diff --git a/doxygen/classcaffe_1_1DataReader_1_1Body-members.html b/doxygen/classcaffe_1_1DataReader_1_1Body-members.html deleted file mode 100644 index 22c397c6df1..00000000000 --- a/doxygen/classcaffe_1_1DataReader_1_1Body-members.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - -Caffe: Member List - - - - - - - - - -
      -
      - - - - - - -
      -
      Caffe -
      -
      -
      - - - - - - - - -
      -
      - - -
      - -
      - - -
      -
      -
      -
      caffe::DataReader::Body Member List
      -
      -
      - -

      This is the complete list of members for caffe::DataReader::Body, including all inherited members.

      - - - - - - - - - - - - - - - -
      Body(const LayerParameter &param) (defined in caffe::DataReader::Body)caffe::DataReader::Bodyexplicit
      DataReader (defined in caffe::DataReader::Body)caffe::DataReader::Bodyfriend
      DISABLE_COPY_AND_ASSIGN(Body) (defined in caffe::DataReader::Body)caffe::DataReader::Bodyprotected
      InternalThread() (defined in caffe::InternalThread)caffe::InternalThreadinline
      InternalThreadEntry() (defined in caffe::DataReader::Body)caffe::DataReader::Bodyprotectedvirtual
      is_started() const (defined in caffe::InternalThread)caffe::InternalThread
      must_stop() (defined in caffe::InternalThread)caffe::InternalThreadprotected
      new_queue_pairs_ (defined in caffe::DataReader::Body)caffe::DataReader::Bodyprotected
      param_ (defined in caffe::DataReader::Body)caffe::DataReader::Bodyprotected
      read_one(db::Cursor *cursor, QueuePair *qp) (defined in caffe::DataReader::Body)caffe::DataReader::Bodyprotected
      StartInternalThread()caffe::InternalThread
      StopInternalThread()caffe::InternalThread
      ~Body() (defined in caffe::DataReader::Body)caffe::DataReader::Bodyvirtual
      ~InternalThread() (defined in caffe::InternalThread)caffe::InternalThreadvirtual
      - - - - diff --git a/doxygen/classcaffe_1_1DataReader_1_1Body.html b/doxygen/classcaffe_1_1DataReader_1_1Body.html deleted file mode 100644 index fb271c1a6d2..00000000000 --- a/doxygen/classcaffe_1_1DataReader_1_1Body.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - -Caffe: caffe::DataReader::Body Class Reference - - - - - - - - - -
      -
      - - - - - - -
      -
      Caffe -
      -
      -
      - - - - - - - - -
      -
      - - -
      - -
      - - -
      -
      - -
      -
      caffe::DataReader::Body Class Reference
      -
      -
      -
      -Inheritance diagram for caffe::DataReader::Body:
      -
      -
      - - -caffe::InternalThread - -
      - - - - - - - - - - - -

      -Public Member Functions

      Body (const LayerParameter &param)
       
      - Public Member Functions inherited from caffe::InternalThread
      void StartInternalThread ()
       
      void StopInternalThread ()
       
      -bool is_started () const
       
      - - - - - - - - - - -

      -Protected Member Functions

      -void InternalThreadEntry ()
       
      -void read_one (db::Cursor *cursor, QueuePair *qp)
       
      DISABLE_COPY_AND_ASSIGN (Body)
       
      - Protected Member Functions inherited from caffe::InternalThread
      -bool must_stop ()
       
      - - - - - -

      -Protected Attributes

      -const LayerParameter param_
       
      -BlockingQueue< shared_ptr< QueuePair > > new_queue_pairs_
       
      - - - -

      -Friends

      -class DataReader
       
      -
      The documentation for this class was generated from the following files: -
      - - - - diff --git a/doxygen/classcaffe_1_1DataReader_1_1Body.png b/doxygen/classcaffe_1_1DataReader_1_1Body.png deleted file mode 100644 index 018b4a8b2b6bb5093500afbb2750358c6905b369..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmeAS@N?(olHy`uVBq!ia0vp^Q-L^ugBeJwM;@;NQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;Ygr+Ar*{o=f3TGtia>SZyt32|HSR8 z0XYgQ)3*fO6kU90Nnua%2lr?C#|vdncREiJyS!}Dk{M=GRgQj{skJotoY_xR&$*Y1 z6aVclm!4m@q-w21SnJ9=o|Bew1@1Kq*RNdsb6-UEjOjOj%$ccqEo)QA+2cpgmv#h9 zt@xLecRDfO&oX=Olwec7M)kjio~gx;uHICaJ9;|U(`#-`jpy4P3s2={86|q%$lZGN zbX9y%XuWuRkoCHiYNB(VY}i-5;&bh~V?QR{`gnO?SLg@jtLJ~8I(NcSzHUv8^KHqJ zP_1ltEqQyZ=1E^tbG1CXGJ`#Xd}e!1N{X8H%AzmXl<|+MEyJ|SlS2BBcSU#y*)9}2 z5;ZyNyn;i>Y%YamzN`Y5moar@1~VSnvXUX`RtSS(u2#bgGf@X0BetA~(%N4(3B&P{& zd3whFebUc;v(l5?O7${+8>^OxuJH>lPv6S3uPHg}_r6(Tm&_B_G+mZC)1F*$bIPkt z>wl^Jjg7w>Fg1lQq^#!D3zO{FsMC>iUTyJ9|4=i1_Cdu7^Fw$4Z{7FSJLsm6zVp+4 pzW*=Pr#HL@`&}p0OLOfq`=iS8_w0h*a)HT+!PC{xWt~$(69A - - - - - - -Caffe: Member List - - - - - - - - - -
      -
      - - - - - - -
      -
      Caffe -
      -
      -
      - - - - - - - - -
      -
      - - -
      - -
      - - -
      -
      -
      -
      caffe::DataReader::QueuePair Member List
      -
      -
      - -

      This is the complete list of members for caffe::DataReader::QueuePair, including all inherited members.

      - - - - - - -
      DISABLE_COPY_AND_ASSIGN(QueuePair) (defined in caffe::DataReader::QueuePair)caffe::DataReader::QueuePair
      free_ (defined in caffe::DataReader::QueuePair)caffe::DataReader::QueuePair
      full_ (defined in caffe::DataReader::QueuePair)caffe::DataReader::QueuePair
      QueuePair(int size) (defined in caffe::DataReader::QueuePair)caffe::DataReader::QueuePairexplicit
      ~QueuePair() (defined in caffe::DataReader::QueuePair)caffe::DataReader::QueuePair
      - - - - diff --git a/doxygen/classcaffe_1_1DataReader_1_1QueuePair.html b/doxygen/classcaffe_1_1DataReader_1_1QueuePair.html deleted file mode 100644 index ed936eafbc3..00000000000 --- a/doxygen/classcaffe_1_1DataReader_1_1QueuePair.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - -Caffe: caffe::DataReader::QueuePair Class Reference - - - - - - - - - -
      -
      - - - - - - -
      -
      Caffe -
      -
      -
      - - - - - - - - -
      -
      - - -
      - -
      - - -
      -
      - -
      -
      caffe::DataReader::QueuePair Class Reference
      -
      -
      - - - - - - -

      -Public Member Functions

      QueuePair (int size)
       
      DISABLE_COPY_AND_ASSIGN (QueuePair)
       
      - - - - - -

      -Public Attributes

      -BlockingQueue< Datum * > free_
       
      -BlockingQueue< Datum * > full_
       
      -
      The documentation for this class was generated from the following files: -
      - - - - diff --git a/doxygen/classcaffe_1_1DataTransformer-members.html b/doxygen/classcaffe_1_1DataTransformer-members.html index a585c2aacdb..586ec43ef18 100644 --- a/doxygen/classcaffe_1_1DataTransformer-members.html +++ b/doxygen/classcaffe_1_1DataTransformer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -87,9 +87,9 @@
      diff --git a/doxygen/classcaffe_1_1DataTransformer.html b/doxygen/classcaffe_1_1DataTransformer.html index e0515a9c15f..29fea1d547a 100644 --- a/doxygen/classcaffe_1_1DataTransformer.html +++ b/doxygen/classcaffe_1_1DataTransformer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::DataTransformer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -136,7 +136,7 @@

      Applies common transformations to the input data, such as scaling, mirroring, substracting the image mean...

      Member Function Documentation

      -

      § InferBlobShape() [1/2]

      +

      ◆ InferBlobShape() [1/2]

      @@ -164,7 +164,7 @@

      -

      § InferBlobShape() [2/2]

      +

      ◆ InferBlobShape() [2/2]

      @@ -192,7 +192,7 @@

      -

      § Rand()

      +

      ◆ Rand()

      @@ -230,7 +230,7 @@

      -

      § Transform() [1/3]

      +

      ◆ Transform() [1/3]

      @@ -269,7 +269,7 @@

      -

      § Transform() [2/3]

      +

      ◆ Transform() [2/3]

      @@ -308,7 +308,7 @@

      -

      § Transform() [3/3]

      +

      ◆ Transform() [3/3]

      @@ -353,9 +353,9 @@

      diff --git a/doxygen/classcaffe_1_1DeconvolutionLayer-members.html b/doxygen/classcaffe_1_1DeconvolutionLayer-members.html index bc8ebdc70ee..493df08fcc4 100644 --- a/doxygen/classcaffe_1_1DeconvolutionLayer-members.html +++ b/doxygen/classcaffe_1_1DeconvolutionLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -143,9 +143,9 @@
      diff --git a/doxygen/classcaffe_1_1DeconvolutionLayer.html b/doxygen/classcaffe_1_1DeconvolutionLayer.html index 10d5fcfd70e..435f3c2bc0f 100644 --- a/doxygen/classcaffe_1_1DeconvolutionLayer.html +++ b/doxygen/classcaffe_1_1DeconvolutionLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::DeconvolutionLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -80,7 +80,7 @@
      - + caffe::BaseConvolutionLayer< Dtype > caffe::Layer< Dtype > @@ -335,9 +335,9 @@
      diff --git a/doxygen/classcaffe_1_1DevicePair-members.html b/doxygen/classcaffe_1_1DevicePair-members.html deleted file mode 100644 index 20ccc9c5f37..00000000000 --- a/doxygen/classcaffe_1_1DevicePair-members.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -Caffe: Member List - - - - - - - - - -
      -
      - - - - - - -
      -
      Caffe -
      -
      -
      - - - - - - - - -
      -
      - - -
      - -
      - - -
      -
      -
      -
      caffe::DevicePair Member List
      -
      -
      - -

      This is the complete list of members for caffe::DevicePair, including all inherited members.

      - - - - - - - -
      compute(const vector< int > devices, vector< DevicePair > *pairs) (defined in caffe::DevicePair)caffe::DevicePairstatic
      device() (defined in caffe::DevicePair)caffe::DevicePairinline
      device_ (defined in caffe::DevicePair)caffe::DevicePairprotected
      DevicePair(int parent, int device) (defined in caffe::DevicePair)caffe::DevicePairinline
      parent() (defined in caffe::DevicePair)caffe::DevicePairinline
      parent_ (defined in caffe::DevicePair)caffe::DevicePairprotected
      - - - - diff --git a/doxygen/classcaffe_1_1DevicePair.html b/doxygen/classcaffe_1_1DevicePair.html deleted file mode 100644 index 88beb911be3..00000000000 --- a/doxygen/classcaffe_1_1DevicePair.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -Caffe: caffe::DevicePair Class Reference - - - - - - - - - -
      -
      - - - - - - -
      -
      Caffe -
      -
      -
      - - - - - - - - -
      -
      - - -
      - -
      - - -
      - -
      - - - - - - - - -

      -Public Member Functions

      DevicePair (int parent, int device)
       
      -int parent ()
       
      -int device ()
       
      - - - -

      -Static Public Member Functions

      -static void compute (const vector< int > devices, vector< DevicePair > *pairs)
       
      - - - - - -

      -Protected Attributes

      -int parent_
       
      -int device_
       
      -
      The documentation for this class was generated from the following files: -
      - - - - diff --git a/doxygen/classcaffe_1_1DropoutLayer-members.html b/doxygen/classcaffe_1_1DropoutLayer-members.html index d1a8e91b723..496dc245039 100644 --- a/doxygen/classcaffe_1_1DropoutLayer-members.html +++ b/doxygen/classcaffe_1_1DropoutLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@
      - + @@ -113,9 +113,9 @@
      diff --git a/doxygen/classcaffe_1_1DropoutLayer.html b/doxygen/classcaffe_1_1DropoutLayer.html index 1311e132b3c..d6f6332ef97 100644 --- a/doxygen/classcaffe_1_1DropoutLayer.html +++ b/doxygen/classcaffe_1_1DropoutLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::DropoutLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -72,7 +72,7 @@
      -

      During training only, sets a random portion of $x$ to 0, adjusting the rest of the vector magnitude accordingly. +

      During training only, sets a random portion of $x$ to 0, adjusting the rest of the vector magnitude accordingly. More...

      #include <dropout_layer.hpp>

      @@ -81,7 +81,7 @@
      - + caffe::NeuronLayer< Dtype > caffe::Layer< Dtype > @@ -198,15 +198,15 @@ Protected Attributes

      Blob< unsigned int > rand_vec_ - when divided by UINT_MAX, the randomly generated values $u\sim U(0,1)$
      + when divided by UINT_MAX, the randomly generated values $u\sim U(0,1)$
        Dtype threshold_ - the probability $ p $ of dropping any input
      + the probability $ p $ of dropping any input
        Dtype scale_ - the scale for undropped inputs at train time $ 1 / (1 - p) $
      + the scale for undropped inputs at train time $ 1 / (1 - p) $
        unsigned int uint_thres_ @@ -227,15 +227,15 @@

      template<typename Dtype>
      class caffe::DropoutLayer< Dtype >

      -

      During training only, sets a random portion of $x$ to 0, adjusting the rest of the vector magnitude accordingly.

      +

      During training only, sets a random portion of $x$ to 0, adjusting the rest of the vector magnitude accordingly.

      Parameters
      bottominput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the inputs $ x $
      2. +
      3. $ (N \times C \times H \times W) $ the inputs $ x $
      topoutput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the computed outputs $ y = |x| $
      2. +
      3. $ (N \times C \times H \times W) $ the computed outputs $ y = |x| $
      @@ -243,7 +243,7 @@

      Constructor & Destructor Documentation

      -

      § DropoutLayer()

      +

      ◆ DropoutLayer()

      @@ -270,7 +270,7 @@

      Parameters
      paramprovides DropoutParameter dropout_param, with DropoutLayer options:
        -
      • dropout_ratio (optional, default 0.5). Sets the probability $ p $ that any given unit is dropped.
      • +
      • dropout_ratio (optional, default 0.5). Sets the probability $ p $ that any given unit is dropped.
      @@ -281,7 +281,7 @@

      Member Function Documentation

      -

      § Forward_cpu()

      +

      ◆ Forward_cpu()

      @@ -318,11 +318,11 @@

      Parameters
      bottominput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the inputs $ x $
      2. +
      3. $ (N \times C \times H \times W) $ the inputs $ x $
      topoutput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the computed outputs. At training time, we have $ y_{\mbox{train}} = \left\{ \begin{array}{ll} \frac{x}{1 - p} & \mbox{if } u > p \\ 0 & \mbox{otherwise} \end{array} \right. $, where $ u \sim U(0, 1)$ is generated independently for each input at each iteration. At test time, we simply have $ y_{\mbox{test}} = \mathbb{E}[y_{\mbox{train}}] = x $.
      2. +
      3. $ (N \times C \times H \times W) $ the computed outputs. At training time, we have $ y_{\mbox{train}} = \left\{ \begin{array}{ll} \frac{x}{1 - p} & \mbox{if } u > p \\ 0 & \mbox{otherwise} \end{array} \right. $, where $ u \sim U(0, 1)$ is generated independently for each input at each iteration. At test time, we simply have $ y_{\mbox{test}} = \mathbb{E}[y_{\mbox{train}}] = x $.
      @@ -334,7 +334,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -384,7 +384,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -440,9 +440,9 @@

      diff --git a/doxygen/classcaffe_1_1DummyDataLayer-members.html b/doxygen/classcaffe_1_1DummyDataLayer-members.html index 56c8656c7b1..7ef3fa34fb3 100644 --- a/doxygen/classcaffe_1_1DummyDataLayer-members.html +++ b/doxygen/classcaffe_1_1DummyDataLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -104,16 +104,15 @@ set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline - ShareInParallel() const (defined in caffe::DummyDataLayer< Dtype >)caffe::DummyDataLayer< Dtype >inlinevirtual - ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual - type() constcaffe::DummyDataLayer< Dtype >inlinevirtual - ~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual + ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual + type() constcaffe::DummyDataLayer< Dtype >inlinevirtual + ~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
      diff --git a/doxygen/classcaffe_1_1DummyDataLayer.html b/doxygen/classcaffe_1_1DummyDataLayer.html index b4c741c3a69..0505e49081d 100644 --- a/doxygen/classcaffe_1_1DummyDataLayer.html +++ b/doxygen/classcaffe_1_1DummyDataLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::DummyDataLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -81,7 +81,7 @@
      - + caffe::Layer< Dtype >
      @@ -94,9 +94,6 @@ virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)  Does layer-specific setup: your layer should implement this function as well as Reshape. More...
        - -virtual bool ShareInParallel () const -  virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)  Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
        @@ -223,7 +220,7 @@

      TODO(dox): thorough documentation for Forward and proto params.

      Member Function Documentation

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -255,7 +252,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -305,7 +302,7 @@

      -

      § MinTopBlobs()

      +

      ◆ MinTopBlobs()

      @@ -337,7 +334,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -393,9 +390,9 @@

      diff --git a/doxygen/classcaffe_1_1ELULayer-members.html b/doxygen/classcaffe_1_1ELULayer-members.html index 510f559257d..5c9bccd2a16 100644 --- a/doxygen/classcaffe_1_1ELULayer-members.html +++ b/doxygen/classcaffe_1_1ELULayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -109,9 +109,9 @@
      diff --git a/doxygen/classcaffe_1_1ELULayer.html b/doxygen/classcaffe_1_1ELULayer.html index 30dfbb14026..5da943ad72a 100644 --- a/doxygen/classcaffe_1_1ELULayer.html +++ b/doxygen/classcaffe_1_1ELULayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::ELULayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -71,7 +71,7 @@
      -

      Exponential Linear Unit non-linearity $ y = \left\{ \begin{array}{lr} x & \mathrm{if} \; x > 0 \\ \alpha (\exp(x)-1) & \mathrm{if} \; x \le 0 \end{array} \right. $. +

      Exponential Linear Unit non-linearity $ y = \left\{ \begin{array}{lr} x & \mathrm{if} \; x > 0 \\ \alpha (\exp(x)-1) & \mathrm{if} \; x \le 0 \end{array} \right. $. More...

      #include <elu_layer.hpp>

      @@ -80,7 +80,7 @@
      - + caffe::NeuronLayer< Dtype > caffe::Layer< Dtype > @@ -210,10 +210,10 @@

      template<typename Dtype>
      class caffe::ELULayer< Dtype >

      -

      Exponential Linear Unit non-linearity $ y = \left\{ \begin{array}{lr} x & \mathrm{if} \; x > 0 \\ \alpha (\exp(x)-1) & \mathrm{if} \; x \le 0 \end{array} \right. $.

      +

      Exponential Linear Unit non-linearity $ y = \left\{ \begin{array}{lr} x & \mathrm{if} \; x > 0 \\ \alpha (\exp(x)-1) & \mathrm{if} \; x \le 0 \end{array} \right. $.

      Constructor & Destructor Documentation

      -

      § ELULayer()

      +

      ◆ ELULayer()

      @@ -240,7 +240,7 @@

      Parameters
      paramprovides ELUParameter elu_param, with ELULayer options:
        -
      • alpha (optional, default 1). the value $ \alpha $ by which controls saturation for negative inputs.
      • +
      • alpha (optional, default 1). the value $ \alpha $ by which controls saturation for negative inputs.
      @@ -251,7 +251,7 @@

      Member Function Documentation

      -

      § Backward_cpu()

      +

      ◆ Backward_cpu()

      @@ -296,12 +296,12 @@

      Parameters
      topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
        -
      1. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
      2. +
      3. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
      propagate_downsee Layer::Backward.
      bottominput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \frac{\partial E}{\partial x} = \left\{ \begin{array}{lr} 1 & \mathrm{if} \; x > 0 \\ y + \alpha & \mathrm{if} \; x \le 0 \end{array} \right. $ if propagate_down[0].
      2. +
      3. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \frac{\partial E}{\partial x} = \left\{ \begin{array}{lr} 1 & \mathrm{if} \; x > 0 \\ y + \alpha & \mathrm{if} \; x \le 0 \end{array} \right. $ if propagate_down[0].
      @@ -313,7 +313,7 @@

      -

      § Forward_cpu()

      +

      ◆ Forward_cpu()

      @@ -350,11 +350,11 @@

      Parameters
      bottominput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the inputs $ x $
      2. +
      3. $ (N \times C \times H \times W) $ the inputs $ x $
      topoutput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the computed outputs $ y = \left\{ \begin{array}{lr} x & \mathrm{if} \; x > 0 \\ \alpha (\exp(x)-1) & \mathrm{if} \; x \le 0 \end{array} \right. $.
      2. +
      3. $ (N \times C \times H \times W) $ the computed outputs $ y = \left\{ \begin{array}{lr} x & \mathrm{if} \; x > 0 \\ \alpha (\exp(x)-1) & \mathrm{if} \; x \le 0 \end{array} \right. $.
      @@ -372,9 +372,9 @@

      diff --git a/doxygen/classcaffe_1_1EltwiseLayer-members.html b/doxygen/classcaffe_1_1EltwiseLayer-members.html index 9a9f71d9266..0284ad9d118 100644 --- a/doxygen/classcaffe_1_1EltwiseLayer-members.html +++ b/doxygen/classcaffe_1_1EltwiseLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -112,9 +112,9 @@
      diff --git a/doxygen/classcaffe_1_1EltwiseLayer.html b/doxygen/classcaffe_1_1EltwiseLayer.html index df4b823c82c..1eae6aec415 100644 --- a/doxygen/classcaffe_1_1EltwiseLayer.html +++ b/doxygen/classcaffe_1_1EltwiseLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::EltwiseLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -81,7 +81,7 @@
      - + caffe::Layer< Dtype >
      @@ -226,7 +226,7 @@

      TODO(dox): thorough documentation for Forward, Backward, and proto params.

      Member Function Documentation

      -

      § ExactNumTopBlobs()

      +

      ◆ ExactNumTopBlobs()

      @@ -258,7 +258,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -308,7 +308,7 @@

      -

      § MinBottomBlobs()

      +

      ◆ MinBottomBlobs()

      @@ -340,7 +340,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -396,9 +396,9 @@

      diff --git a/doxygen/classcaffe_1_1EmbedLayer-members.html b/doxygen/classcaffe_1_1EmbedLayer-members.html index 7bc16347feb..2d06bdff52e 100644 --- a/doxygen/classcaffe_1_1EmbedLayer-members.html +++ b/doxygen/classcaffe_1_1EmbedLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -113,9 +113,9 @@
      diff --git a/doxygen/classcaffe_1_1EmbedLayer.html b/doxygen/classcaffe_1_1EmbedLayer.html index 358d6c4dd45..bc7060eeb80 100644 --- a/doxygen/classcaffe_1_1EmbedLayer.html +++ b/doxygen/classcaffe_1_1EmbedLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::EmbedLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -81,7 +81,7 @@
      - + caffe::Layer< Dtype >
      @@ -229,7 +229,7 @@

      TODO(dox): thorough documentation for Forward, Backward, and proto params.

      Member Function Documentation

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -261,7 +261,7 @@

      -

      § ExactNumTopBlobs()

      +

      ◆ ExactNumTopBlobs()

      @@ -293,7 +293,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -343,7 +343,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -399,9 +399,9 @@

      diff --git a/doxygen/classcaffe_1_1EuclideanLossLayer-members.html b/doxygen/classcaffe_1_1EuclideanLossLayer-members.html index bee9a869715..78534e9947b 100644 --- a/doxygen/classcaffe_1_1EuclideanLossLayer-members.html +++ b/doxygen/classcaffe_1_1EuclideanLossLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -110,9 +110,9 @@
      diff --git a/doxygen/classcaffe_1_1EuclideanLossLayer.html b/doxygen/classcaffe_1_1EuclideanLossLayer.html index b927adec132..0d13d588361 100644 --- a/doxygen/classcaffe_1_1EuclideanLossLayer.html +++ b/doxygen/classcaffe_1_1EuclideanLossLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::EuclideanLossLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -72,7 +72,7 @@
      -

      Computes the Euclidean (L2) loss $ E = \frac{1}{2N} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $ for real-valued regression tasks. +

      Computes the Euclidean (L2) loss $ E = \frac{1}{2N} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $ for real-valued regression tasks. More...

      #include <euclidean_loss_layer.hpp>

      @@ -81,7 +81,7 @@
      - + caffe::LossLayer< Dtype > caffe::Layer< Dtype > @@ -176,7 +176,7 @@

      Protected Member Functions

      virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top) - Computes the Euclidean (L2) loss $ E = \frac{1}{2N} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $ for real-valued regression tasks. More...
      + Computes the Euclidean (L2) loss $ E = \frac{1}{2N} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $ for real-valued regression tasks. More...
        virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top) @@ -216,16 +216,16 @@

      template<typename Dtype>
      class caffe::EuclideanLossLayer< Dtype >

      -

      Computes the Euclidean (L2) loss $ E = \frac{1}{2N} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $ for real-valued regression tasks.

      +

      Computes the Euclidean (L2) loss $ E = \frac{1}{2N} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $ for real-valued regression tasks.

      Parameters
      bottominput Blob vector (length 2)
        -
      1. $ (N \times C \times H \times W) $ the predictions $ \hat{y} \in [-\infty, +\infty]$
      2. -
      3. $ (N \times C \times H \times W) $ the targets $ y \in [-\infty, +\infty]$
      4. +
      5. $ (N \times C \times H \times W) $ the predictions $ \hat{y} \in [-\infty, +\infty]$
      6. +
      7. $ (N \times C \times H \times W) $ the targets $ y \in [-\infty, +\infty]$
      topoutput Blob vector (length 1)
        -
      1. $ (1 \times 1 \times 1 \times 1) $ the computed Euclidean loss: $ E = \frac{1}{2n} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $
      2. +
      3. $ (1 \times 1 \times 1 \times 1) $ the computed Euclidean loss: $ E = \frac{1}{2n} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $
      @@ -235,7 +235,7 @@

      (Note: Caffe, and SGD in general, is certainly not the best way to solve linear least squares problems! We use it only as an instructive example.)

      Member Function Documentation

      -

      § AllowForceBackward()

      +

      ◆ AllowForceBackward()

      @@ -266,7 +266,7 @@

      -

      § Backward_cpu()

      +

      ◆ Backward_cpu()

      @@ -312,13 +312,13 @@

      Parameters
      topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
        -
      1. $ (1 \times 1 \times 1 \times 1) $ This Blob's diff will simply contain the loss_weight* $ \lambda $, as $ \lambda $ is the coefficient of this layer's output $\ell_i$ in the overall Net loss $ E = \lambda_i \ell_i + \mbox{other loss terms}$; hence $ \frac{\partial E}{\partial \ell_i} = \lambda_i $. (*Assuming that this top Blob is not used as a bottom (input) by any other layer of the Net.)
      2. +
      3. $ (1 \times 1 \times 1 \times 1) $ This Blob's diff will simply contain the loss_weight* $ \lambda $, as $ \lambda $ is the coefficient of this layer's output $\ell_i$ in the overall Net loss $ E = \lambda_i \ell_i + \mbox{other loss terms}$; hence $ \frac{\partial E}{\partial \ell_i} = \lambda_i $. (*Assuming that this top Blob is not used as a bottom (input) by any other layer of the Net.)
      propagate_downsee Layer::Backward.
      bottominput Blob vector (length 2)
        -
      1. $ (N \times C \times H \times W) $ the predictions $\hat{y}$; Backward fills their diff with gradients $ \frac{\partial E}{\partial \hat{y}} = \frac{1}{n} \sum\limits_{n=1}^N (\hat{y}_n - y_n) $ if propagate_down[0]
      2. -
      3. $ (N \times C \times H \times W) $ the targets $y$; Backward fills their diff with gradients $ \frac{\partial E}{\partial y} = \frac{1}{n} \sum\limits_{n=1}^N (y_n - \hat{y}_n) $ if propagate_down[1]
      4. +
      5. $ (N \times C \times H \times W) $ the predictions $\hat{y}$; Backward fills their diff with gradients $ \frac{\partial E}{\partial \hat{y}} = \frac{1}{n} \sum\limits_{n=1}^N (\hat{y}_n - y_n) $ if propagate_down[0]
      6. +
      7. $ (N \times C \times H \times W) $ the targets $y$; Backward fills their diff with gradients $ \frac{\partial E}{\partial y} = \frac{1}{n} \sum\limits_{n=1}^N (y_n - \hat{y}_n) $ if propagate_down[1]
      @@ -330,7 +330,7 @@

      -

      § Forward_cpu()

      +

      ◆ Forward_cpu()

      @@ -365,16 +365,16 @@

      -

      Computes the Euclidean (L2) loss $ E = \frac{1}{2N} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $ for real-valued regression tasks.

      +

      Computes the Euclidean (L2) loss $ E = \frac{1}{2N} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $ for real-valued regression tasks.

      Parameters
      bottominput Blob vector (length 2)
        -
      1. $ (N \times C \times H \times W) $ the predictions $ \hat{y} \in [-\infty, +\infty]$
      2. -
      3. $ (N \times C \times H \times W) $ the targets $ y \in [-\infty, +\infty]$
      4. +
      5. $ (N \times C \times H \times W) $ the predictions $ \hat{y} \in [-\infty, +\infty]$
      6. +
      7. $ (N \times C \times H \times W) $ the targets $ y \in [-\infty, +\infty]$
      topoutput Blob vector (length 1)
        -
      1. $ (1 \times 1 \times 1 \times 1) $ the computed Euclidean loss: $ E = \frac{1}{2n} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $
      2. +
      3. $ (1 \times 1 \times 1 \times 1) $ the computed Euclidean loss: $ E = \frac{1}{2n} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $
      @@ -388,7 +388,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -444,9 +444,9 @@

      diff --git a/doxygen/classcaffe_1_1ExpLayer-members.html b/doxygen/classcaffe_1_1ExpLayer-members.html index 453e394be44..46e10870764 100644 --- a/doxygen/classcaffe_1_1ExpLayer-members.html +++ b/doxygen/classcaffe_1_1ExpLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -111,9 +111,9 @@
      diff --git a/doxygen/classcaffe_1_1ExpLayer.html b/doxygen/classcaffe_1_1ExpLayer.html index 2caf8670492..4c4a6085b5d 100644 --- a/doxygen/classcaffe_1_1ExpLayer.html +++ b/doxygen/classcaffe_1_1ExpLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::ExpLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -72,7 +72,7 @@
      -

      Computes $ y = \gamma ^ {\alpha x + \beta} $, as specified by the scale $ \alpha $, shift $ \beta $, and base $ \gamma $. +

      Computes $ y = \gamma ^ {\alpha x + \beta} $, as specified by the scale $ \alpha $, shift $ \beta $, and base $ \gamma $. More...

      #include <exp_layer.hpp>

      @@ -81,7 +81,7 @@
      - + caffe::NeuronLayer< Dtype > caffe::Layer< Dtype > @@ -217,10 +217,10 @@

      template<typename Dtype>
      class caffe::ExpLayer< Dtype >

      -

      Computes $ y = \gamma ^ {\alpha x + \beta} $, as specified by the scale $ \alpha $, shift $ \beta $, and base $ \gamma $.

      +

      Computes $ y = \gamma ^ {\alpha x + \beta} $, as specified by the scale $ \alpha $, shift $ \beta $, and base $ \gamma $.

      Constructor & Destructor Documentation

      -

      § ExpLayer()

      +

      ◆ ExpLayer()

      @@ -247,9 +247,9 @@

      Parameters
      paramprovides ExpParameter exp_param, with ExpLayer options:
        -
      • scale (optional, default 1) the scale $ \alpha $
      • -
      • shift (optional, default 0) the shift $ \beta $
      • -
      • base (optional, default -1 for a value of $ e \approx 2.718 $) the base $ \gamma $
      • +
      • scale (optional, default 1) the scale $ \alpha $
      • +
      • shift (optional, default 0) the shift $ \beta $
      • +
      • base (optional, default -1 for a value of $ e \approx 2.718 $) the base $ \gamma $
      @@ -260,7 +260,7 @@

      Member Function Documentation

      -

      § Backward_cpu()

      +

      ◆ Backward_cpu()

      @@ -305,12 +305,12 @@

      Parameters
      topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
        -
      1. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
      2. +
      3. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
      propagate_downsee Layer::Backward.
      bottominput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \frac{\partial E}{\partial x} = \frac{\partial E}{\partial y} y \alpha \log_e(gamma) $ if propagate_down[0]
      2. +
      3. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \frac{\partial E}{\partial x} = \frac{\partial E}{\partial y} y \alpha \log_e(gamma) $ if propagate_down[0]
      @@ -322,7 +322,7 @@

      -

      § Forward_cpu()

      +

      ◆ Forward_cpu()

      @@ -359,11 +359,11 @@

      Parameters
      bottominput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the inputs $ x $
      2. +
      3. $ (N \times C \times H \times W) $ the inputs $ x $
      topoutput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the computed outputs $ y = \gamma ^ {\alpha x + \beta} $
      2. +
      3. $ (N \times C \times H \times W) $ the computed outputs $ y = \gamma ^ {\alpha x + \beta} $
      @@ -375,7 +375,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -431,9 +431,9 @@

      diff --git a/doxygen/classcaffe_1_1Filler-members.html b/doxygen/classcaffe_1_1Filler-members.html index 1aaed537ccf..3d4aa9fbeac 100644 --- a/doxygen/classcaffe_1_1Filler-members.html +++ b/doxygen/classcaffe_1_1Filler-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -76,9 +76,9 @@
      diff --git a/doxygen/classcaffe_1_1Filler.html b/doxygen/classcaffe_1_1Filler.html index 72b04059b88..5fc0ff474e3 100644 --- a/doxygen/classcaffe_1_1Filler.html +++ b/doxygen/classcaffe_1_1Filler.html @@ -3,7 +3,7 @@ - + Caffe: caffe::Filler< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -80,7 +80,7 @@
      - + caffe::BilinearFiller< Dtype > caffe::ConstantFiller< Dtype > caffe::GaussianFiller< Dtype > @@ -117,9 +117,9 @@
      diff --git a/doxygen/classcaffe_1_1FilterLayer-members.html b/doxygen/classcaffe_1_1FilterLayer-members.html index 1dc7bbcb4b9..f3e9be7a284 100644 --- a/doxygen/classcaffe_1_1FilterLayer-members.html +++ b/doxygen/classcaffe_1_1FilterLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@
      - + @@ -110,9 +110,9 @@
      diff --git a/doxygen/classcaffe_1_1FilterLayer.html b/doxygen/classcaffe_1_1FilterLayer.html index a4c8fe638a1..f0316262829 100644 --- a/doxygen/classcaffe_1_1FilterLayer.html +++ b/doxygen/classcaffe_1_1FilterLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::FilterLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -81,7 +81,7 @@
      - + caffe::Layer< Dtype >
      @@ -216,7 +216,7 @@

      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).

      Member Function Documentation

      -

      § Backward_cpu()

      +

      ◆ Backward_cpu()

      @@ -272,7 +272,7 @@

      -

      § Forward_cpu()

      +

      ◆ Forward_cpu()

      @@ -309,14 +309,14 @@

      Parameters
      bottominput Blob vector (length 2+)
        -
      1. $ (N \times C \times H \times W) $ the inputs to be filtered $ x_1 $
      2. +
      3. $ (N \times C \times H \times W) $ the inputs to be filtered $ x_1 $
      4. ...
      5. -
      6. $ (N \times C \times H \times W) $ the inputs to be filtered $ x_K $
      7. -
      8. $ (N \times 1 \times 1 \times 1) $ the selector blob
      9. +
      10. $ (N \times C \times H \times W) $ the inputs to be filtered $ x_K $
      11. +
      12. $ (N \times 1 \times 1 \times 1) $ the selector blob
      topoutput Blob vector (length 1+)
        -
      1. $ (S \times C \times H \times W) $ () the filtered output $ x_1 $ where S is the number of items that haven't been filtered $ (S \times C \times H \times W) $ the filtered output $ x_K $ where S is the number of items that haven't been filtered
      2. +
      3. $ (S \times C \times H \times W) $ () the filtered output $ x_1 $ where S is the number of items that haven't been filtered $ (S \times C \times H \times W) $ the filtered output $ x_K $ where S is the number of items that haven't been filtered
      @@ -328,7 +328,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -378,7 +378,7 @@

      -

      § MinBottomBlobs()

      +

      ◆ MinBottomBlobs()

      @@ -410,7 +410,7 @@

      -

      § MinTopBlobs()

      +

      ◆ MinTopBlobs()

      @@ -442,7 +442,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -498,9 +498,9 @@

      diff --git a/doxygen/classcaffe_1_1FlattenLayer-members.html b/doxygen/classcaffe_1_1FlattenLayer-members.html index b668cd1d646..f391e00ba5b 100644 --- a/doxygen/classcaffe_1_1FlattenLayer-members.html +++ b/doxygen/classcaffe_1_1FlattenLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -108,9 +108,9 @@
      diff --git a/doxygen/classcaffe_1_1FlattenLayer.html b/doxygen/classcaffe_1_1FlattenLayer.html index 6334cffff39..37d67cecfe4 100644 --- a/doxygen/classcaffe_1_1FlattenLayer.html +++ b/doxygen/classcaffe_1_1FlattenLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::FlattenLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -80,7 +80,7 @@
      - + caffe::Layer< Dtype >
      @@ -210,7 +210,7 @@

      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).

      Member Function Documentation

      -

      § Backward_cpu()

      +

      ◆ Backward_cpu()

      @@ -266,7 +266,7 @@

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -298,7 +298,7 @@

      -

      § ExactNumTopBlobs()

      +

      ◆ ExactNumTopBlobs()

      @@ -330,7 +330,7 @@

      -

      § Forward_cpu()

      +

      ◆ Forward_cpu()

      @@ -367,11 +367,11 @@

      Parameters
      bottominput Blob vector (length 2+)
        -
      1. $ (N \times C \times H \times W) $ the inputs
      2. +
      3. $ (N \times C \times H \times W) $ the inputs
      topoutput Blob vector (length 1)
        -
      1. $ (N \times CHW \times 1 \times 1) $ the outputs – i.e., the (virtually) copied, flattened inputs
      2. +
      3. $ (N \times CHW \times 1 \times 1) $ the outputs – i.e., the (virtually) copied, flattened inputs
      @@ -383,7 +383,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -439,9 +439,9 @@

      diff --git a/doxygen/classcaffe_1_1GPUParams-members.html b/doxygen/classcaffe_1_1GPUParams-members.html deleted file mode 100644 index a8bdcfb38c0..00000000000 --- a/doxygen/classcaffe_1_1GPUParams-members.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - -Caffe: Member List - - - - - - - - - -
      -
      - - - - - - -
      -
      Caffe -
      -
      -
      - - - - - - - - -
      -
      - - -
      - -
      - - -
      -
      -
      -
      caffe::GPUParams< Dtype > Member List
      -
      -
      - -

      This is the complete list of members for caffe::GPUParams< Dtype >, including all inherited members.

      - - - - - - - - - - - - - -
      configure(Solver< Dtype > *solver) const (defined in caffe::GPUParams< Dtype >)caffe::GPUParams< Dtype >
      data() const (defined in caffe::Params< Dtype >)caffe::Params< Dtype >inline
      data_ (defined in caffe::Params< Dtype >)caffe::Params< Dtype >protected
      diff() const (defined in caffe::Params< Dtype >)caffe::Params< Dtype >inline
      diff_ (defined in caffe::Params< Dtype >)caffe::Params< Dtype >protected
      DISABLE_COPY_AND_ASSIGN(Params) (defined in caffe::Params< Dtype >)caffe::Params< Dtype >protected
      GPUParams(shared_ptr< Solver< Dtype > > root_solver, int device) (defined in caffe::GPUParams< Dtype >)caffe::GPUParams< Dtype >
      Params(shared_ptr< Solver< Dtype > > root_solver) (defined in caffe::Params< Dtype >)caffe::Params< Dtype >explicit
      size() const (defined in caffe::Params< Dtype >)caffe::Params< Dtype >inline
      size_ (defined in caffe::Params< Dtype >)caffe::Params< Dtype >protected
      ~GPUParams() (defined in caffe::GPUParams< Dtype >)caffe::GPUParams< Dtype >virtual
      ~Params() (defined in caffe::Params< Dtype >)caffe::Params< Dtype >inlinevirtual
      - - - - diff --git a/doxygen/classcaffe_1_1GPUParams.html b/doxygen/classcaffe_1_1GPUParams.html deleted file mode 100644 index aed3f79efc6..00000000000 --- a/doxygen/classcaffe_1_1GPUParams.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - -Caffe: caffe::GPUParams< Dtype > Class Template Reference - - - - - - - - - -
      -
      - - - - - - -
      -
      Caffe -
      -
      -
      - - - - - - - - -
      -
      - - -
      - -
      - - -
      -
      - -
      -
      caffe::GPUParams< Dtype > Class Template Reference
      -
      -
      -
      -Inheritance diagram for caffe::GPUParams< Dtype >:
      -
      -
      - - -caffe::Params< Dtype > -caffe::P2PSync< Dtype > - -
      - - - - - - - - - - - - - - - -

      -Public Member Functions

      GPUParams (shared_ptr< Solver< Dtype > > root_solver, int device)
       
      -void configure (Solver< Dtype > *solver) const
       
      - Public Member Functions inherited from caffe::Params< Dtype >
      Params (shared_ptr< Solver< Dtype > > root_solver)
       
      -size_t size () const
       
      -Dtype * data () const
       
      -Dtype * diff () const
       
      - - - - - - - - - - - -

      -Additional Inherited Members

      - Protected Member Functions inherited from caffe::Params< Dtype >
      DISABLE_COPY_AND_ASSIGN (Params)
       
      - Protected Attributes inherited from caffe::Params< Dtype >
      -const size_t size_
       
      -Dtype * data_
       
      -Dtype * diff_
       
      -
      The documentation for this class was generated from the following files: -
      - - - - diff --git a/doxygen/classcaffe_1_1GPUParams.png b/doxygen/classcaffe_1_1GPUParams.png deleted file mode 100644 index 3f8a811f79b50c55947bff4f1256dda3653218a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1066 zcmeAS@N?(olHy`uVBq!ia0vp^tAV(KgBeJ!=X<>wNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~@APzW45?szJNMzFPYOJ){L>}x|DR~T zRhK1WYw70sr+sAJZOicBQ%w0ksrcOF4js>6jR@6~@dvd$|5+WLb!pMJ-M`%@>8)I| zYu^`{*N5Lf_`SI!b*l2~ZNF6)XU@Itb8SWRqOi+vORWVwOLaaUz2Eg`#*7J*N|wZ4 zdvwh1%$5x^8nh{#~~g?>`Zx9W}}CMfI9z zOx~9`Yd5p0yzFWUo%Ba^&7>#mt+UTro>ye3zssO@(Pho{+cq17H{J_e-Z;0@^cTZ{ ze2oZ3pgM+sTwx6LtlACxn?w)9ALM$lK7sW^_y(pQ+9=YROHDdG7=XbC(PNdgH-6W0 z2IG0t3v*@9A3Z%km#-i$_3F)~>}y(CRxI8iYr}YM^_pGhcI6hGeDU|UZtL35;b)E> zpY`U`uDK!s$Bp8d)}H9^Ok{kcvF7M4yE7%+KlS!=7sdYM$-ge%(|ffoH*Ia@@u;~a zYtpQS&4SwJdeQI!#{nF;Iw?q!6uVMch<=gwY{A<>4hr1~|&z6>zJp23p=){$b z3xHwj`*!{-W`_G$I_3U`M`XJ)zj@uip|4kX!R7fY85_)DAtZO#eCd>B0uB4~7$#>Z zUAvttccU}n{ff&6&K;4eWq4pNLTqRP1AFS6;AVnX?Z}nwx6h+n%+jF5f)4_N`?9)bayS@z&SY-3vPtwfwYT zkLabgd&#+nWiQBW)MHTHw%7cw_v4Lc{S$K!m94q9WA{ASw~Vj-czbT&oT+z=`E_F4 z_g?)cUpK_rr`%nAJ!{j{Utg=X)-GVXyUTI9v2!Jn2ht?5o-0 z|Fr)wy)M17eq&w3uf2P`F0F^>yIq@~&G{_zi~S9w>k*k(%<905&EV - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -78,9 +78,9 @@
      diff --git a/doxygen/classcaffe_1_1GaussianFiller.html b/doxygen/classcaffe_1_1GaussianFiller.html index e39fb5f32c2..939b321c5a4 100644 --- a/doxygen/classcaffe_1_1GaussianFiller.html +++ b/doxygen/classcaffe_1_1GaussianFiller.html @@ -3,7 +3,7 @@ - + Caffe: caffe::GaussianFiller< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -71,7 +71,7 @@
      -

      Fills a Blob with Gaussian-distributed values $ x = a $. +

      Fills a Blob with Gaussian-distributed values $ x = a $. More...

      #include <filler.hpp>

      @@ -80,7 +80,7 @@
      - + caffe::Filler< Dtype >
      @@ -112,16 +112,16 @@

      template<typename Dtype>
      class caffe::GaussianFiller< Dtype >

      -

      Fills a Blob with Gaussian-distributed values $ x = a $.

      +

      Fills a Blob with Gaussian-distributed values $ x = a $.


      The documentation for this class was generated from the following file:
      diff --git a/doxygen/classcaffe_1_1HDF5DataLayer-members.html b/doxygen/classcaffe_1_1HDF5DataLayer-members.html index edfca11d75d..91186d1981f 100644 --- a/doxygen/classcaffe_1_1HDF5DataLayer-members.html +++ b/doxygen/classcaffe_1_1HDF5DataLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -112,18 +112,17 @@ set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline - ShareInParallel() const (defined in caffe::HDF5DataLayer< Dtype >)caffe::HDF5DataLayer< Dtype >inlinevirtual - Skip() (defined in caffe::HDF5DataLayer< Dtype >)caffe::HDF5DataLayer< Dtype >protected - ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual - type() constcaffe::HDF5DataLayer< Dtype >inlinevirtual - ~HDF5DataLayer() (defined in caffe::HDF5DataLayer< Dtype >)caffe::HDF5DataLayer< Dtype >virtual - ~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual + Skip() (defined in caffe::HDF5DataLayer< Dtype >)caffe::HDF5DataLayer< Dtype >protected + ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual + type() constcaffe::HDF5DataLayer< Dtype >inlinevirtual + ~HDF5DataLayer() (defined in caffe::HDF5DataLayer< Dtype >)caffe::HDF5DataLayer< Dtype >virtual + ~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
      diff --git a/doxygen/classcaffe_1_1HDF5DataLayer.html b/doxygen/classcaffe_1_1HDF5DataLayer.html index 2414c5bbd26..b583827f66a 100644 --- a/doxygen/classcaffe_1_1HDF5DataLayer.html +++ b/doxygen/classcaffe_1_1HDF5DataLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::HDF5DataLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -81,7 +81,7 @@
      - + caffe::Layer< Dtype >
      @@ -94,9 +94,6 @@ virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)  Does layer-specific setup: your layer should implement this function as well as Reshape. More...
        - -virtual bool ShareInParallel () const -  virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)  Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
        @@ -250,7 +247,7 @@

      TODO(dox): thorough documentation for Forward and proto params.

      Member Function Documentation

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -282,7 +279,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -332,7 +329,7 @@

      -

      § MinTopBlobs()

      +

      ◆ MinTopBlobs()

      @@ -364,7 +361,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -420,9 +417,9 @@

      diff --git a/doxygen/classcaffe_1_1HDF5OutputLayer-members.html b/doxygen/classcaffe_1_1HDF5OutputLayer-members.html index 9dd754c60ee..106424175b5 100644 --- a/doxygen/classcaffe_1_1HDF5OutputLayer-members.html +++ b/doxygen/classcaffe_1_1HDF5OutputLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -109,17 +109,16 @@ set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline - ShareInParallel() const (defined in caffe::HDF5OutputLayer< Dtype >)caffe::HDF5OutputLayer< Dtype >inlinevirtual - ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual - type() constcaffe::HDF5OutputLayer< Dtype >inlinevirtual - ~HDF5OutputLayer() (defined in caffe::HDF5OutputLayer< Dtype >)caffe::HDF5OutputLayer< Dtype >virtual - ~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual + ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual + type() constcaffe::HDF5OutputLayer< Dtype >inlinevirtual + ~HDF5OutputLayer() (defined in caffe::HDF5OutputLayer< Dtype >)caffe::HDF5OutputLayer< Dtype >virtual + ~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
      diff --git a/doxygen/classcaffe_1_1HDF5OutputLayer.html b/doxygen/classcaffe_1_1HDF5OutputLayer.html index ae123426f27..4663ebd6604 100644 --- a/doxygen/classcaffe_1_1HDF5OutputLayer.html +++ b/doxygen/classcaffe_1_1HDF5OutputLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::HDF5OutputLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -81,7 +81,7 @@
      - + caffe::Layer< Dtype >
      @@ -94,9 +94,6 @@ virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)  Does layer-specific setup: your layer should implement this function as well as Reshape. More...
        - -virtual bool ShareInParallel () const -  virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)  Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
        @@ -238,7 +235,7 @@

      TODO(dox): thorough documentation for Forward and proto params.

      Member Function Documentation

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -270,7 +267,7 @@

      -

      § ExactNumTopBlobs()

      +

      ◆ ExactNumTopBlobs()

      @@ -302,7 +299,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -352,7 +349,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -408,9 +405,9 @@

      diff --git a/doxygen/classcaffe_1_1HingeLossLayer-members.html b/doxygen/classcaffe_1_1HingeLossLayer-members.html index 502c13e1bf0..89616bff462 100644 --- a/doxygen/classcaffe_1_1HingeLossLayer-members.html +++ b/doxygen/classcaffe_1_1HingeLossLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -109,9 +109,9 @@
      diff --git a/doxygen/classcaffe_1_1HingeLossLayer.html b/doxygen/classcaffe_1_1HingeLossLayer.html index d64d4be0cae..e230e4720c2 100644 --- a/doxygen/classcaffe_1_1HingeLossLayer.html +++ b/doxygen/classcaffe_1_1HingeLossLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::HingeLossLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -80,7 +80,7 @@
      - + caffe::LossLayer< Dtype > caffe::Layer< Dtype > @@ -216,21 +216,21 @@
      Parameters
      bottominput Blob vector (length 2)
        -
      1. $ (N \times C \times H \times W) $ the predictions $ t $, a Blob with values in $ [-\infty, +\infty] $ indicating the predicted score for each of the $ K = CHW $ classes. In an SVM, $ t $ is the result of taking the inner product $ X^T W $ of the D-dimensional features $ X \in \mathcal{R}^{D \times N} $ and the learned hyperplane parameters $ W \in \mathcal{R}^{D \times K} $, 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.
      2. -
      3. $ (N \times 1 \times 1 \times 1) $ the labels $ l $, an integer-valued Blob with values $ l_n \in [0, 1, 2, ..., K - 1] $ indicating the correct class label among the $ K $ classes
      4. +
      5. $ (N \times C \times H \times W) $ the predictions $ t $, a Blob with values in $ [-\infty, +\infty] $ indicating the predicted score for each of the $ K = CHW $ classes. In an SVM, $ t $ is the result of taking the inner product $ X^T W $ of the D-dimensional features $ X \in \mathcal{R}^{D \times N} $ and the learned hyperplane parameters $ W \in \mathcal{R}^{D \times K} $, 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.
      6. +
      7. $ (N \times 1 \times 1 \times 1) $ the labels $ l $, an integer-valued Blob with values $ l_n \in [0, 1, 2, ..., K - 1] $ indicating the correct class label among the $ K $ classes
      topoutput Blob vector (length 1)
        -
      1. $ (1 \times 1 \times 1 \times 1) $ the computed hinge loss: $ E = \frac{1}{N} \sum\limits_{n=1}^N \sum\limits_{k=1}^K [\max(0, 1 - \delta\{l_n = k\} t_{nk})] ^ p $, for the $ L^p $ norm (defaults to $ p = 1 $, the L1 norm; L2 norm, as in L2-SVM, is also available), and $ \delta\{\mathrm{condition}\} = \left\{ \begin{array}{lr} 1 & \mbox{if condition} \\ -1 & \mbox{otherwise} \end{array} \right. $
      2. +
      3. $ (1 \times 1 \times 1 \times 1) $ the computed hinge loss: $ E = \frac{1}{N} \sum\limits_{n=1}^N \sum\limits_{k=1}^K [\max(0, 1 - \delta\{l_n = k\} t_{nk})] ^ p $, for the $ L^p $ norm (defaults to $ p = 1 $, the L1 norm; L2 norm, as in L2-SVM, is also available), and $ \delta\{\mathrm{condition}\} = \left\{ \begin{array}{lr} 1 & \mbox{if condition} \\ -1 & \mbox{otherwise} \end{array} \right. $
      -

      In an SVM, $ t \in \mathcal{R}^{N \times K} $ is the result of taking the inner product $ X^T W $ of the features $ X \in \mathcal{R}^{D \times N} $ and the learned hyperplane parameters $ W \in \mathcal{R}^{D \times K} $. So, a Net with just an InnerProductLayer (with num_output = $k$) 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).

      +

      In an SVM, $ t \in \mathcal{R}^{N \times K} $ is the result of taking the inner product $ X^T W $ of the features $ X \in \mathcal{R}^{D \times N} $ and the learned hyperplane parameters $ W \in \mathcal{R}^{D \times K} $. So, a Net with just an InnerProductLayer (with num_output = $k$) 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).

      Member Function Documentation

      -

      § Backward_cpu()

      +

      ◆ Backward_cpu()

      @@ -276,13 +276,13 @@

      Parameters
      topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
        -
      1. $ (1 \times 1 \times 1 \times 1) $ This Blob's diff will simply contain the loss_weight* $ \lambda $, as $ \lambda $ is the coefficient of this layer's output $\ell_i$ in the overall Net loss $ E = \lambda_i \ell_i + \mbox{other loss terms}$; hence $ \frac{\partial E}{\partial \ell_i} = \lambda_i $. (*Assuming that this top Blob is not used as a bottom (input) by any other layer of the Net.)
      2. +
      3. $ (1 \times 1 \times 1 \times 1) $ This Blob's diff will simply contain the loss_weight* $ \lambda $, as $ \lambda $ is the coefficient of this layer's output $\ell_i$ in the overall Net loss $ E = \lambda_i \ell_i + \mbox{other loss terms}$; hence $ \frac{\partial E}{\partial \ell_i} = \lambda_i $. (*Assuming that this top Blob is not used as a bottom (input) by any other layer of the Net.)
      propagate_downsee Layer::Backward. propagate_down[1] must be false as we can't compute gradients with respect to the labels.
      bottominput Blob vector (length 2)
        -
      1. $ (N \times C \times H \times W) $ the predictions $t$; Backward computes diff $ \frac{\partial E}{\partial t} $
      2. -
      3. $ (N \times 1 \times 1 \times 1) $ the labels – ignored as we can't compute their error gradients
      4. +
      5. $ (N \times C \times H \times W) $ the predictions $t$; Backward computes diff $ \frac{\partial E}{\partial t} $
      6. +
      7. $ (N \times 1 \times 1 \times 1) $ the labels – ignored as we can't compute their error gradients
      @@ -294,7 +294,7 @@

      -

      § Forward_cpu()

      +

      ◆ Forward_cpu()

      @@ -333,18 +333,18 @@

      Parameters
      bottominput Blob vector (length 2)
        -
      1. $ (N \times C \times H \times W) $ the predictions $ t $, a Blob with values in $ [-\infty, +\infty] $ indicating the predicted score for each of the $ K = CHW $ classes. In an SVM, $ t $ is the result of taking the inner product $ X^T W $ of the D-dimensional features $ X \in \mathcal{R}^{D \times N} $ and the learned hyperplane parameters $ W \in \mathcal{R}^{D \times K} $, 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.
      2. -
      3. $ (N \times 1 \times 1 \times 1) $ the labels $ l $, an integer-valued Blob with values $ l_n \in [0, 1, 2, ..., K - 1] $ indicating the correct class label among the $ K $ classes
      4. +
      5. $ (N \times C \times H \times W) $ the predictions $ t $, a Blob with values in $ [-\infty, +\infty] $ indicating the predicted score for each of the $ K = CHW $ classes. In an SVM, $ t $ is the result of taking the inner product $ X^T W $ of the D-dimensional features $ X \in \mathcal{R}^{D \times N} $ and the learned hyperplane parameters $ W \in \mathcal{R}^{D \times K} $, 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.
      6. +
      7. $ (N \times 1 \times 1 \times 1) $ the labels $ l $, an integer-valued Blob with values $ l_n \in [0, 1, 2, ..., K - 1] $ indicating the correct class label among the $ K $ classes
      topoutput Blob vector (length 1)
        -
      1. $ (1 \times 1 \times 1 \times 1) $ the computed hinge loss: $ E = \frac{1}{N} \sum\limits_{n=1}^N \sum\limits_{k=1}^K [\max(0, 1 - \delta\{l_n = k\} t_{nk})] ^ p $, for the $ L^p $ norm (defaults to $ p = 1 $, the L1 norm; L2 norm, as in L2-SVM, is also available), and $ \delta\{\mathrm{condition}\} = \left\{ \begin{array}{lr} 1 & \mbox{if condition} \\ -1 & \mbox{otherwise} \end{array} \right. $
      2. +
      3. $ (1 \times 1 \times 1 \times 1) $ the computed hinge loss: $ E = \frac{1}{N} \sum\limits_{n=1}^N \sum\limits_{k=1}^K [\max(0, 1 - \delta\{l_n = k\} t_{nk})] ^ p $, for the $ L^p $ norm (defaults to $ p = 1 $, the L1 norm; L2 norm, as in L2-SVM, is also available), and $ \delta\{\mathrm{condition}\} = \left\{ \begin{array}{lr} 1 & \mbox{if condition} \\ -1 & \mbox{otherwise} \end{array} \right. $
      -

      In an SVM, $ t \in \mathcal{R}^{N \times K} $ is the result of taking the inner product $ X^T W $ of the features $ X \in \mathcal{R}^{D \times N} $ and the learned hyperplane parameters $ W \in \mathcal{R}^{D \times K} $. So, a Net with just an InnerProductLayer (with num_output = $k$) 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).

      +

      In an SVM, $ t \in \mathcal{R}^{N \times K} $ is the result of taking the inner product $ X^T W $ of the features $ X \in \mathcal{R}^{D \times N} $ and the learned hyperplane parameters $ W \in \mathcal{R}^{D \times K} $. So, a Net with just an InnerProductLayer (with num_output = $k$) 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).

      Implements caffe::Layer< Dtype >.

      @@ -357,9 +357,9 @@

      diff --git a/doxygen/classcaffe_1_1Im2colLayer-members.html b/doxygen/classcaffe_1_1Im2colLayer-members.html index 1e77b6c66d2..1dd8149eb46 100644 --- a/doxygen/classcaffe_1_1Im2colLayer-members.html +++ b/doxygen/classcaffe_1_1Im2colLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -119,9 +119,9 @@
      diff --git a/doxygen/classcaffe_1_1Im2colLayer.html b/doxygen/classcaffe_1_1Im2colLayer.html index d5b40b15ac4..4501a4aeba1 100644 --- a/doxygen/classcaffe_1_1Im2colLayer.html +++ b/doxygen/classcaffe_1_1Im2colLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::Im2colLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -81,7 +81,7 @@
      - + caffe::Layer< Dtype >
      @@ -251,7 +251,7 @@

      TODO(dox): thorough documentation for Forward, Backward, and proto params.

      Member Function Documentation

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -283,7 +283,7 @@

      -

      § ExactNumTopBlobs()

      +

      ◆ ExactNumTopBlobs()

      @@ -315,7 +315,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -365,7 +365,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -421,9 +421,9 @@

      diff --git a/doxygen/classcaffe_1_1ImageDataLayer-members.html b/doxygen/classcaffe_1_1ImageDataLayer-members.html index bc581d01ef2..530d2c11fba 100644 --- a/doxygen/classcaffe_1_1ImageDataLayer-members.html +++ b/doxygen/classcaffe_1_1ImageDataLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -119,23 +119,22 @@ set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline - ShareInParallel() const (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >inlinevirtual - ShuffleImages() (defined in caffe::ImageDataLayer< Dtype >)caffe::ImageDataLayer< Dtype >protectedvirtual - StartInternalThread()caffe::InternalThread - StopInternalThread()caffe::InternalThread - ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual - transform_param_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected - transformed_data_ (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protected - type() constcaffe::ImageDataLayer< Dtype >inlinevirtual - ~ImageDataLayer() (defined in caffe::ImageDataLayer< Dtype >)caffe::ImageDataLayer< Dtype >virtual - ~InternalThread() (defined in caffe::InternalThread)caffe::InternalThreadvirtual - ~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual + ShuffleImages() (defined in caffe::ImageDataLayer< Dtype >)caffe::ImageDataLayer< Dtype >protectedvirtual + StartInternalThread()caffe::InternalThread + StopInternalThread()caffe::InternalThread + ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual + transform_param_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected + transformed_data_ (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protected + type() constcaffe::ImageDataLayer< Dtype >inlinevirtual + ~ImageDataLayer() (defined in caffe::ImageDataLayer< Dtype >)caffe::ImageDataLayer< Dtype >virtual + ~InternalThread() (defined in caffe::InternalThread)caffe::InternalThreadvirtual + ~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
      diff --git a/doxygen/classcaffe_1_1ImageDataLayer.html b/doxygen/classcaffe_1_1ImageDataLayer.html index b54716a9264..fb739e39599 100644 --- a/doxygen/classcaffe_1_1ImageDataLayer.html +++ b/doxygen/classcaffe_1_1ImageDataLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::ImageDataLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -81,7 +81,7 @@
      - + caffe::BasePrefetchingDataLayer< Dtype > caffe::BaseDataLayer< Dtype > caffe::InternalThread @@ -126,9 +126,6 @@  BaseDataLayer (const LayerParameter &param)   - -virtual bool ShareInParallel () const -  virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)  Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
        @@ -288,7 +285,7 @@

      TODO(dox): thorough documentation for Forward and proto params.

      Member Function Documentation

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -320,7 +317,7 @@

      -

      § ExactNumTopBlobs()

      +

      ◆ ExactNumTopBlobs()

      @@ -357,9 +354,9 @@

      diff --git a/doxygen/classcaffe_1_1InfogainLossLayer-members.html b/doxygen/classcaffe_1_1InfogainLossLayer-members.html index 82bd0a8e7bd..bec5f6c56a6 100644 --- a/doxygen/classcaffe_1_1InfogainLossLayer-members.html +++ b/doxygen/classcaffe_1_1InfogainLossLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -79,40 +79,54 @@ CheckBlobCounts(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual EqualNumBottomTopBlobs() constcaffe::Layer< Dtype >inlinevirtual ExactNumBottomBlobs() constcaffe::InfogainLossLayer< Dtype >inlinevirtual - ExactNumTopBlobs() constcaffe::LossLayer< Dtype >inlinevirtual + ExactNumTopBlobs() constcaffe::InfogainLossLayer< Dtype >inlinevirtual Forward(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::InfogainLossLayer< Dtype >protectedvirtual Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotectedvirtual - infogain_ (defined in caffe::InfogainLossLayer< Dtype >)caffe::InfogainLossLayer< Dtype >protected + get_normalizer(LossParameter_NormalizationMode normalization_mode, int valid_count)caffe::InfogainLossLayer< Dtype >protectedvirtual + has_ignore_label_caffe::InfogainLossLayer< Dtype >protected + ignore_label_caffe::InfogainLossLayer< Dtype >protected + infogain_ (defined in caffe::InfogainLossLayer< Dtype >)caffe::InfogainLossLayer< Dtype >protected + infogain_axis_ (defined in caffe::InfogainLossLayer< Dtype >)caffe::InfogainLossLayer< Dtype >protected InfogainLossLayer(const LayerParameter &param) (defined in caffe::InfogainLossLayer< Dtype >)caffe::InfogainLossLayer< Dtype >inlineexplicit - Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit - layer_param() constcaffe::Layer< Dtype >inline - layer_param_caffe::Layer< Dtype >protected - LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::InfogainLossLayer< Dtype >virtual - loss(const int top_index) constcaffe::Layer< Dtype >inline - loss_caffe::Layer< Dtype >protected - LossLayer(const LayerParameter &param) (defined in caffe::LossLayer< Dtype >)caffe::LossLayer< Dtype >inlineexplicit - MaxBottomBlobs() constcaffe::InfogainLossLayer< Dtype >inlinevirtual - MaxTopBlobs() constcaffe::Layer< Dtype >inlinevirtual - MinBottomBlobs() constcaffe::InfogainLossLayer< Dtype >inlinevirtual - MinTopBlobs() constcaffe::Layer< Dtype >inlinevirtual + inner_num_ (defined in caffe::InfogainLossLayer< Dtype >)caffe::InfogainLossLayer< Dtype >protected + Layer(const LayerParameter &param)caffe::Layer< Dtype >inlineexplicit + layer_param() constcaffe::Layer< Dtype >inline + layer_param_caffe::Layer< Dtype >protected + LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::InfogainLossLayer< Dtype >virtual + loss(const int top_index) constcaffe::Layer< Dtype >inline + loss_caffe::Layer< Dtype >protected + LossLayer(const LayerParameter &param) (defined in caffe::LossLayer< Dtype >)caffe::LossLayer< Dtype >inlineexplicit + MaxBottomBlobs() constcaffe::InfogainLossLayer< Dtype >inlinevirtual + MaxTopBlobs() constcaffe::InfogainLossLayer< Dtype >inlinevirtual + MinBottomBlobs() constcaffe::InfogainLossLayer< Dtype >inlinevirtual + MinTopBlobs() constcaffe::InfogainLossLayer< Dtype >inlinevirtual + normalization_caffe::InfogainLossLayer< Dtype >protected + num_labels_ (defined in caffe::InfogainLossLayer< Dtype >)caffe::InfogainLossLayer< Dtype >protected + outer_num_ (defined in caffe::InfogainLossLayer< Dtype >)caffe::InfogainLossLayer< Dtype >protected param_propagate_down(const int param_id)caffe::Layer< Dtype >inline param_propagate_down_caffe::Layer< Dtype >protected phase_caffe::Layer< Dtype >protected - Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::InfogainLossLayer< Dtype >virtual - set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline - set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline - SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected - SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline + prob_caffe::InfogainLossLayer< Dtype >protected + Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::InfogainLossLayer< Dtype >virtual + set_loss(const int top_index, const Dtype value)caffe::Layer< Dtype >inline + set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline + SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected + SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline + softmax_bottom_vec_caffe::InfogainLossLayer< Dtype >protected + softmax_layer_caffe::InfogainLossLayer< Dtype >protected + softmax_top_vec_caffe::InfogainLossLayer< Dtype >protected + sum_rows_H_ (defined in caffe::InfogainLossLayer< Dtype >)caffe::InfogainLossLayer< Dtype >protected + sum_rows_of_H(const Blob< Dtype > *H)caffe::InfogainLossLayer< Dtype >protectedvirtual ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual type() constcaffe::InfogainLossLayer< Dtype >inlinevirtual ~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
      diff --git a/doxygen/classcaffe_1_1InfogainLossLayer.html b/doxygen/classcaffe_1_1InfogainLossLayer.html index 162bf01abb5..2e2020cf051 100644 --- a/doxygen/classcaffe_1_1InfogainLossLayer.html +++ b/doxygen/classcaffe_1_1InfogainLossLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::InfogainLossLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -81,7 +81,7 @@
      - + caffe::LossLayer< Dtype > caffe::Layer< Dtype > @@ -107,6 +107,15 @@ virtual int MaxBottomBlobs () const  Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is required. More...
        +virtual int ExactNumTopBlobs () const + Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
      +  +virtual int MinTopBlobs () const + Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
      +  +virtual int MaxTopBlobs () const + Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
      virtual const char * type () const  Returns the layer type.
      @@ -119,9 +128,6 @@ virtual bool AutoTopBlobs () const  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 int ExactNumTopBlobs () const - Returns the exact number of top blobs required by the layer, or -1 if no exact number is required. More...
      -  virtual bool AllowForceBackward (const int bottom_index) const   - Public Member Functions inherited from caffe::Layer< Dtype > @@ -156,12 +162,6 @@ void set_loss (const int top_index, const Dtype value)  Sets the loss associated with a top blob at a given index.
        -virtual int MinTopBlobs () const - Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required. More...
      -  -virtual int MaxTopBlobs () const - Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required. More...
      -  virtual bool EqualNumBottomTopBlobs () const  Returns true if the layer requires an equal number of bottom and top blobs. More...
        @@ -181,6 +181,12 @@ virtual void Backward_cpu (const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)  Computes the infogain loss error gradient w.r.t. the predictions. More...
        +virtual Dtype get_normalizer (LossParameter_NormalizationMode normalization_mode, int valid_count) +  + +virtual void sum_rows_of_H (const Blob< Dtype > *H) + fill sum_rows_H_ according to matrix H
      - Protected Member Functions inherited from caffe::Layer< Dtype > virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top) @@ -197,9 +203,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -221,13 +270,13 @@
      Parameters

      Protected Attributes

      +shared_ptr< Layer< Dtype > > softmax_layer_
       The internal SoftmaxLayer used to map predictions to a distribution.
       
      +Blob< Dtype > prob_
       prob stores the output probability predictions from the SoftmaxLayer.
       
      +vector< Blob< Dtype > * > softmax_bottom_vec_
       bottom vector holder used in call to the underlying SoftmaxLayer::Forward
       
      +vector< Blob< Dtype > * > softmax_top_vec_
       top vector holder used in call to the underlying SoftmaxLayer::Forward
       
      Blob< Dtype > infogain_
       
      +Blob< Dtype > sum_rows_H_
       
      +bool has_ignore_label_
       Whether to ignore instances with a certain label.
       
      +int ignore_label_
       The label indicating that an instance should be ignored.
       
      +LossParameter_NormalizationMode normalization_
       How to normalize the output loss.
       
      +int infogain_axis_
       
      +int outer_num_
       
      +int inner_num_
       
      +int num_labels_
       
      - Protected Attributes inherited from caffe::Layer< Dtype >
      LayerParameter layer_param_
       
      bottominput Blob vector (length 2-3)
        -
      1. $ (N \times C \times H \times W) $ the predictions $ \hat{p} $, a Blob with values in $ [0, 1] $ indicating the predicted probability of each of the $ K = CHW $ classes. Each prediction vector $ \hat{p}_n $ should sum to 1 as in a probability distribution: $ \forall n \sum\limits_{k=1}^K \hat{p}_{nk} = 1 $.
      2. -
      3. $ (N \times 1 \times 1 \times 1) $ the labels $ l $, an integer-valued Blob with values $ l_n \in [0, 1, 2, ..., K - 1] $ indicating the correct class label among the $ K $ classes
      4. -
      5. $ (1 \times 1 \times K \times K) $ (optional) the infogain matrix $ H $. This must be provided as the third bottom blob input if not provided as the infogain_mat in the InfogainLossParameter. If $ H = I $, this layer is equivalent to the MultinomialLogisticLossLayer.
      6. +
      7. $ (N \times C \times H \times W) $ the predictions $ \hat{p} $, a Blob with values in $ [0, 1] $ indicating the predicted probability of each of the $ K = CHW $ classes. Each prediction vector $ \hat{p}_n $ should sum to 1 as in a probability distribution: $ \forall n \sum\limits_{k=1}^K \hat{p}_{nk} = 1 $.
      8. +
      9. $ (N \times 1 \times 1 \times 1) $ the labels $ l $, an integer-valued Blob with values $ l_n \in [0, 1, 2, ..., K - 1] $ indicating the correct class label among the $ K $ classes
      10. +
      11. $ (1 \times 1 \times K \times K) $ (optional) the infogain matrix $ H $. This must be provided as the third bottom blob input if not provided as the infogain_mat in the InfogainLossParameter. If $ H = I $, this layer is equivalent to the MultinomialLogisticLossLayer.
      topoutput Blob vector (length 1)
        -
      1. $ (1 \times 1 \times 1 \times 1) $ the computed infogain multinomial logistic loss: $ 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}) $, where $ H_{l_n} $ denotes row $l_n$ of $H$.
      2. +
      3. $ (1 \times 1 \times 1 \times 1) $ the computed infogain multinomial logistic loss: $ 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}) $, where $ H_{l_n} $ denotes row $l_n$ of $H$.
      @@ -235,7 +284,7 @@

      Member Function Documentation

      -

      § Backward_cpu()

      +

      ◆ Backward_cpu()

      @@ -281,14 +330,14 @@

      Parameters
      topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
        -
      1. $ (1 \times 1 \times 1 \times 1) $ This Blob's diff will simply contain the loss_weight* $ \lambda $, as $ \lambda $ is the coefficient of this layer's output $\ell_i$ in the overall Net loss $ E = \lambda_i \ell_i + \mbox{other loss terms}$; hence $ \frac{\partial E}{\partial \ell_i} = \lambda_i $. (*Assuming that this top Blob is not used as a bottom (input) by any other layer of the Net.)
      2. +
      3. $ (1 \times 1 \times 1 \times 1) $ This Blob's diff will simply contain the loss_weight* $ \lambda $, as $ \lambda $ is the coefficient of this layer's output $\ell_i$ in the overall Net loss $ E = \lambda_i \ell_i + \mbox{other loss terms}$; hence $ \frac{\partial E}{\partial \ell_i} = \lambda_i $. (*Assuming that this top Blob is not used as a bottom (input) by any other layer of the Net.)
      propagate_downsee 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])
      bottominput Blob vector (length 2-3)
        -
      1. $ (N \times C \times H \times W) $ the predictions $ \hat{p} $; Backward computes diff $ \frac{\partial E}{\partial \hat{p}} $
      2. -
      3. $ (N \times 1 \times 1 \times 1) $ the labels – ignored as we can't compute their error gradients
      4. -
      5. $ (1 \times 1 \times K \times K) $ (optional) the information gain matrix – ignored as its error gradient computation is not implemented.
      6. +
      7. $ (N \times C \times H \times W) $ the predictions $ \hat{p} $; Backward computes diff $ \frac{\partial E}{\partial \hat{p}} $
      8. +
      9. $ (N \times 1 \times 1 \times 1) $ the labels – ignored as we can't compute their error gradients
      10. +
      11. $ (1 \times 1 \times K \times K) $ (optional) the information gain matrix – ignored as its error gradient computation is not implemented.
      @@ -300,7 +349,7 @@

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -331,8 +380,40 @@

      +

      ◆ ExactNumTopBlobs()

      + +
      +
      +
      +template<typename Dtype >
      + + + + + +
      + + + + + + + +
      virtual int caffe::InfogainLossLayer< Dtype >::ExactNumTopBlobs () const
      +
      +inlinevirtual
      +
      + +

      Returns the exact number of top blobs required by the layer, or -1 if no exact number is required.

      +

      This method should be overridden to return a non-negative value if your layer expects some exact number of top blobs.

      + +

      Reimplemented from caffe::LossLayer< Dtype >.

      + +
      +
      -

      § Forward_cpu()

      +

      ◆ Forward_cpu()

      @@ -372,13 +453,13 @@

      Parameters
      bottominput Blob vector (length 2-3)
        -
      1. $ (N \times C \times H \times W) $ the predictions $ \hat{p} $, a Blob with values in $ [0, 1] $ indicating the predicted probability of each of the $ K = CHW $ classes. Each prediction vector $ \hat{p}_n $ should sum to 1 as in a probability distribution: $ \forall n \sum\limits_{k=1}^K \hat{p}_{nk} = 1 $.
      2. -
      3. $ (N \times 1 \times 1 \times 1) $ the labels $ l $, an integer-valued Blob with values $ l_n \in [0, 1, 2, ..., K - 1] $ indicating the correct class label among the $ K $ classes
      4. -
      5. $ (1 \times 1 \times K \times K) $ (optional) the infogain matrix $ H $. This must be provided as the third bottom blob input if not provided as the infogain_mat in the InfogainLossParameter. If $ H = I $, this layer is equivalent to the MultinomialLogisticLossLayer.
      6. +
      7. $ (N \times C \times H \times W) $ the predictions $ \hat{p} $, a Blob with values in $ [0, 1] $ indicating the predicted probability of each of the $ K = CHW $ classes. Each prediction vector $ \hat{p}_n $ should sum to 1 as in a probability distribution: $ \forall n \sum\limits_{k=1}^K \hat{p}_{nk} = 1 $.
      8. +
      9. $ (N \times 1 \times 1 \times 1) $ the labels $ l $, an integer-valued Blob with values $ l_n \in [0, 1, 2, ..., K - 1] $ indicating the correct class label among the $ K $ classes
      10. +
      11. $ (1 \times 1 \times K \times K) $ (optional) the infogain matrix $ H $. This must be provided as the third bottom blob input if not provided as the infogain_mat in the InfogainLossParameter. If $ H = I $, this layer is equivalent to the MultinomialLogisticLossLayer.
      topoutput Blob vector (length 1)
        -
      1. $ (1 \times 1 \times 1 \times 1) $ the computed infogain multinomial logistic loss: $ 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}) $, where $ H_{l_n} $ denotes row $l_n$ of $H$.
      2. +
      3. $ (1 \times 1 \times 1 \times 1) $ the computed infogain multinomial logistic loss: $ 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}) $, where $ H_{l_n} $ denotes row $l_n$ of $H$.
      @@ -389,8 +470,47 @@

      +

      ◆ get_normalizer()

      + +
      +
      +
      +template<typename Dtype >
      + + + + + +
      + + + + + + + + + + + + + + + + + + +
      Dtype caffe::InfogainLossLayer< Dtype >::get_normalizer (LossParameter_NormalizationMode normalization_mode,
      int valid_count 
      )
      +
      +protectedvirtual
      +
      +

      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.

      + +
      +
      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -440,7 +560,7 @@

      -

      § MaxBottomBlobs()

      +

      ◆ MaxBottomBlobs()

      @@ -471,8 +591,40 @@

      +

      ◆ MaxTopBlobs()

      + +
      +
      +
      +template<typename Dtype >
      + + + + + +
      + + + + + + + +
      virtual int caffe::InfogainLossLayer< Dtype >::MaxTopBlobs () const
      +
      +inlinevirtual
      +
      + +

      Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required.

      +

      This method should be overridden to return a non-negative value if your layer expects some maximum number of top blobs.

      + +

      Reimplemented from caffe::Layer< Dtype >.

      + +
      +
      -

      § MinBottomBlobs()

      +

      ◆ MinBottomBlobs()

      @@ -503,8 +655,40 @@

      +

      ◆ MinTopBlobs()

      + +
      +
      +
      +template<typename Dtype >
      + + + + + +
      + + + + + + + +
      virtual int caffe::InfogainLossLayer< Dtype >::MinTopBlobs () const
      +
      +inlinevirtual
      +
      + +

      Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required.

      +

      This method should be overridden to return a non-negative value if your layer expects some minimum number of top blobs.

      + +

      Reimplemented from caffe::Layer< Dtype >.

      + +
      +
      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -560,9 +744,9 @@

      diff --git a/doxygen/classcaffe_1_1InnerProductLayer-members.html b/doxygen/classcaffe_1_1InnerProductLayer-members.html index 0eced590400..d34cc292baa 100644 --- a/doxygen/classcaffe_1_1InnerProductLayer-members.html +++ b/doxygen/classcaffe_1_1InnerProductLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -114,9 +114,9 @@
      diff --git a/doxygen/classcaffe_1_1InnerProductLayer.html b/doxygen/classcaffe_1_1InnerProductLayer.html index b869d98d1da..70f839c5cf5 100644 --- a/doxygen/classcaffe_1_1InnerProductLayer.html +++ b/doxygen/classcaffe_1_1InnerProductLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::InnerProductLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -81,7 +81,7 @@
      - + caffe::Layer< Dtype >
      @@ -233,7 +233,7 @@

      TODO(dox): thorough documentation for Forward, Backward, and proto params.

      Member Function Documentation

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -265,7 +265,7 @@

      -

      § ExactNumTopBlobs()

      +

      ◆ ExactNumTopBlobs()

      @@ -297,7 +297,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -347,7 +347,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -403,9 +403,9 @@

      diff --git a/doxygen/classcaffe_1_1InputLayer-members.html b/doxygen/classcaffe_1_1InputLayer-members.html index d3d418b408a..df0b894e805 100644 --- a/doxygen/classcaffe_1_1InputLayer-members.html +++ b/doxygen/classcaffe_1_1InputLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -102,16 +102,15 @@ set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline - ShareInParallel() const (defined in caffe::InputLayer< Dtype >)caffe::InputLayer< Dtype >inlinevirtual - ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual - type() constcaffe::InputLayer< Dtype >inlinevirtual - ~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual + ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual + type() constcaffe::InputLayer< Dtype >inlinevirtual + ~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
      diff --git a/doxygen/classcaffe_1_1InputLayer.html b/doxygen/classcaffe_1_1InputLayer.html index 34a41e4432e..a2c16263751 100644 --- a/doxygen/classcaffe_1_1InputLayer.html +++ b/doxygen/classcaffe_1_1InputLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::InputLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -80,7 +80,7 @@
      - + caffe::Layer< Dtype >
      @@ -93,9 +93,6 @@ virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)  Does layer-specific setup: your layer should implement this function as well as Reshape. More...
        - -virtual bool ShareInParallel () const -  virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)  Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
        @@ -216,7 +213,7 @@

      This data layer is a container that merely holds the data assigned to it; forward, backward, and reshape are all no-ops.

      Member Function Documentation

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -248,7 +245,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -298,7 +295,7 @@

      -

      § MinTopBlobs()

      +

      ◆ MinTopBlobs()

      @@ -330,7 +327,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -386,9 +383,9 @@

      diff --git a/doxygen/classcaffe_1_1InternalThread-members.html b/doxygen/classcaffe_1_1InternalThread-members.html index b993b461002..ba464c967cc 100644 --- a/doxygen/classcaffe_1_1InternalThread-members.html +++ b/doxygen/classcaffe_1_1InternalThread-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -79,9 +79,9 @@
      diff --git a/doxygen/classcaffe_1_1InternalThread.html b/doxygen/classcaffe_1_1InternalThread.html index 19ffebf9328..87172fef38a 100644 --- a/doxygen/classcaffe_1_1InternalThread.html +++ b/doxygen/classcaffe_1_1InternalThread.html @@ -3,7 +3,7 @@ - + Caffe: caffe::InternalThread Class Reference @@ -29,7 +29,7 @@

      - + @@ -108,7 +108,7 @@

      Virtual class encapsulate boost::thread for use in base class The child class will acquire the ability to run a single thread, by reimplementing the virtual function InternalThreadEntry.

      Member Function Documentation

      -

      § StartInternalThread()

      +

      ◆ StartInternalThread()

      @@ -126,7 +126,7 @@

      -

      § StopInternalThread()

      +

      ◆ StopInternalThread()

      @@ -150,9 +150,9 @@

      diff --git a/doxygen/classcaffe_1_1LRNLayer-members.html b/doxygen/classcaffe_1_1LRNLayer-members.html index 9a55c9a7b03..d4d6f3501e2 100644 --- a/doxygen/classcaffe_1_1LRNLayer-members.html +++ b/doxygen/classcaffe_1_1LRNLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -140,9 +140,9 @@
      diff --git a/doxygen/classcaffe_1_1LRNLayer.html b/doxygen/classcaffe_1_1LRNLayer.html index fafc7e9131b..2fbe84e96cc 100644 --- a/doxygen/classcaffe_1_1LRNLayer.html +++ b/doxygen/classcaffe_1_1LRNLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::LRNLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -81,7 +81,7 @@
      - + caffe::Layer< Dtype >
      @@ -310,7 +310,7 @@

      TODO(dox): thorough documentation for Forward, Backward, and proto params.

      Member Function Documentation

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -342,7 +342,7 @@

      -

      § ExactNumTopBlobs()

      +

      ◆ ExactNumTopBlobs()

      @@ -374,7 +374,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -424,7 +424,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -480,9 +480,9 @@

      diff --git a/doxygen/classcaffe_1_1LSTMLayer-members.html b/doxygen/classcaffe_1_1LSTMLayer-members.html index 4b5290c4960..c78fca3ba2b 100644 --- a/doxygen/classcaffe_1_1LSTMLayer-members.html +++ b/doxygen/classcaffe_1_1LSTMLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -127,9 +127,9 @@
      diff --git a/doxygen/classcaffe_1_1LSTMLayer.html b/doxygen/classcaffe_1_1LSTMLayer.html index 2ae5169b46d..11feae414c2 100644 --- a/doxygen/classcaffe_1_1LSTMLayer.html +++ b/doxygen/classcaffe_1_1LSTMLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::LSTMLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -80,7 +80,7 @@
      - + caffe::RecurrentLayer< Dtype > caffe::Layer< Dtype > @@ -292,9 +292,9 @@
      diff --git a/doxygen/classcaffe_1_1LSTMUnitLayer-members.html b/doxygen/classcaffe_1_1LSTMUnitLayer-members.html index 7dec74ac216..89841e749db 100644 --- a/doxygen/classcaffe_1_1LSTMUnitLayer-members.html +++ b/doxygen/classcaffe_1_1LSTMUnitLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@
      - + @@ -110,9 +110,9 @@
      diff --git a/doxygen/classcaffe_1_1LSTMUnitLayer.html b/doxygen/classcaffe_1_1LSTMUnitLayer.html index aba5ef4cb19..5c2b82062ba 100644 --- a/doxygen/classcaffe_1_1LSTMUnitLayer.html +++ b/doxygen/classcaffe_1_1LSTMUnitLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::LSTMUnitLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -81,7 +81,7 @@
      - + caffe::Layer< Dtype >
      @@ -217,7 +217,7 @@

      A helper for LSTMLayer: computes a single timestep of the non-linearity of the LSTM, producing the updated cell and hidden states.

      Member Function Documentation

      -

      § AllowForceBackward()

      +

      ◆ AllowForceBackward()

      @@ -250,7 +250,7 @@

      -

      § Backward_cpu()

      +

      ◆ Backward_cpu()

      @@ -295,15 +295,15 @@

      Parameters
      -
      topoutput Blob vector (length 2), providing the error gradient with respect to the outputs
        -
      1. $ (1 \times N \times D) $: containing error gradients $ \frac{\partial E}{\partial c_t} $ with respect to the updated cell state $ c_t $
      2. -
      3. $ (1 \times N \times D) $: containing error gradients $ \frac{\partial E}{\partial h_t} $ with respect to the updated cell state $ h_t $
      4. +
      5. $ (1 \times N \times D) $: containing error gradients $ \frac{\partial E}{\partial c_t} $ with respect to the updated cell state $ c_t $
      6. +
      7. $ (1 \times N \times D) $: containing error gradients $ \frac{\partial E}{\partial h_t} $ with respect to the updated cell state $ h_t $
      propagate_downsee Layer::Backward.
      bottominput Blob vector (length 3), into which the error gradients with respect to the LSTMUnit inputs $ c_{t-1} $ and the gate inputs are computed. Computatation of the error gradients w.r.t. the sequence indicators is not implemented.
        -
      1. $ (1 \times N \times D) $ the error gradient w.r.t. the previous timestep cell state $ c_{t-1} $
      2. -
      3. $ (1 \times N \times 4D) $ the error gradient w.r.t. the "gate inputs" $ [ \frac{\partial E}{\partial i_t} \frac{\partial E}{\partial f_t} \frac{\partial E}{\partial o_t} \frac{\partial E}{\partial g_t} ] $
      4. -
      5. $ (1 \times 1 \times N) $ the gradient w.r.t. the sequence continuation indicators $ \delta_t $ is currently not computed.
      6. +
      bottominput Blob vector (length 3), into which the error gradients with respect to the LSTMUnit inputs $ c_{t-1} $ and the gate inputs are computed. Computatation of the error gradients w.r.t. the sequence indicators is not implemented.
        +
      1. $ (1 \times N \times D) $ the error gradient w.r.t. the previous timestep cell state $ c_{t-1} $
      2. +
      3. $ (1 \times N \times 4D) $ the error gradient w.r.t. the "gate inputs" $ [ \frac{\partial E}{\partial i_t} \frac{\partial E}{\partial f_t} \frac{\partial E}{\partial o_t} \frac{\partial E}{\partial g_t} ] $
      4. +
      5. $ (1 \times 1 \times N) $ the gradient w.r.t. the sequence continuation indicators $ \delta_t $ is currently not computed.
      @@ -315,7 +315,7 @@

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -347,7 +347,7 @@

      -

      § ExactNumTopBlobs()

      +

      ◆ ExactNumTopBlobs()

      @@ -379,7 +379,7 @@

      -

      § Forward_cpu()

      +

      ◆ Forward_cpu()

      @@ -416,14 +416,14 @@

      Parameters
      bottominput Blob vector (length 3)
        -
      1. $ (1 \times N \times D) $ the previous timestep cell state $ c_{t-1} $
      2. -
      3. $ (1 \times N \times 4D) $ the "gate inputs" $ [i_t', f_t', o_t', g_t'] $
      4. -
      5. $ (1 \times N) $ the sequence continuation indicators $ \delta_t $
      6. +
      7. $ (1 \times N \times D) $ the previous timestep cell state $ c_{t-1} $
      8. +
      9. $ (1 \times N \times 4D) $ the "gate inputs" $ [i_t', f_t', o_t', g_t'] $
      10. +
      11. $ (1 \times N) $ the sequence continuation indicators $ \delta_t $
      topoutput Blob vector (length 2)
        -
      1. $ (1 \times N \times D) $ the updated cell state $ c_t $, computed as: i_t := [i_t'] f_t := [f_t'] o_t := [o_t'] g_t := [g_t'] c_t := cont_t * (f_t .* c_{t-1}) + (i_t .* g_t)
      2. -
      3. $ (1 \times N \times D) $ the updated hidden state $ h_t $, computed as: h_t := o_t .* [c_t]
      4. +
      5. $ (1 \times N \times D) $ the updated cell state $ c_t $, computed as: i_t := [i_t'] f_t := [f_t'] o_t := [o_t'] g_t := [g_t'] c_t := cont_t * (f_t .* c_{t-1}) + (i_t .* g_t)
      6. +
      7. $ (1 \times N \times D) $ the updated hidden state $ h_t $, computed as: h_t := o_t .* [c_t]
      @@ -435,7 +435,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -491,9 +491,9 @@

      diff --git a/doxygen/classcaffe_1_1Layer-members.html b/doxygen/classcaffe_1_1Layer-members.html index 580ad3d0d7f..aa227e1cb86 100644 --- a/doxygen/classcaffe_1_1Layer-members.html +++ b/doxygen/classcaffe_1_1Layer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -107,9 +107,9 @@
      diff --git a/doxygen/classcaffe_1_1Layer.html b/doxygen/classcaffe_1_1Layer.html index af899a2b79b..e701d871317 100644 --- a/doxygen/classcaffe_1_1Layer.html +++ b/doxygen/classcaffe_1_1Layer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::Layer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -81,7 +81,7 @@
      - + caffe::AccuracyLayer< Dtype > caffe::ArgMaxLayer< Dtype > caffe::BaseConvolutionLayer< Dtype > @@ -244,7 +244,7 @@

      Layers must implement a Forward function, in which they take their input (bottom) Blobs (if any) and compute their output Blobs (if any). They may also implement a Backward function, in which they compute the error gradients with respect to their input Blobs, given the error gradients with their output Blobs.

      Constructor & Destructor Documentation

      -

      § Layer()

      +

      ◆ Layer()

      @@ -274,7 +274,7 @@

      Member Function Documentation

      -

      § AllowForceBackward()

      +

      ◆ AllowForceBackward()

      @@ -307,7 +307,7 @@

      -

      § AutoTopBlobs()

      +

      ◆ AutoTopBlobs()

      @@ -339,7 +339,7 @@

      -

      § Backward()

      +

      ◆ Backward()

      @@ -395,7 +395,7 @@

      -

      § CheckBlobCounts()

      +

      ◆ CheckBlobCounts()

      @@ -434,7 +434,7 @@

      -

      § EqualNumBottomTopBlobs()

      +

      ◆ EqualNumBottomTopBlobs()

      @@ -466,7 +466,7 @@

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -493,12 +493,12 @@

      caffe::LSTMUnitLayer< Dtype >, caffe::InfogainLossLayer< Dtype >, caffe::BatchNormLayer< Dtype >, caffe::ArgMaxLayer< Dtype >, caffe::ContrastiveLossLayer< Dtype >, caffe::HDF5OutputLayer< Dtype >, caffe::AccuracyLayer< Dtype >, caffe::HDF5DataLayer< Dtype >, caffe::AbsValLayer< Dtype >, caffe::LRNLayer< Dtype >, caffe::WindowDataLayer< Dtype >, caffe::DummyDataLayer< Dtype >, caffe::ImageDataLayer< Dtype >, caffe::InputLayer< Dtype >, caffe::LossLayer< Dtype >, caffe::CropLayer< Dtype >, caffe::FlattenLayer< Dtype >, caffe::EmbedLayer< Dtype >, caffe::Im2colLayer< Dtype >, caffe::ReductionLayer< Dtype >, caffe::BatchReindexLayer< Dtype >, caffe::InnerProductLayer< Dtype >, caffe::ParameterLayer< Dtype >, caffe::ReshapeLayer< Dtype >, caffe::SliceLayer< Dtype >, caffe::SPPLayer< Dtype >, caffe::MemoryDataLayer< Dtype >, caffe::PoolingLayer< Dtype >, caffe::SplitLayer< Dtype >, caffe::DataLayer< Dtype >, caffe::MVNLayer< Dtype >, caffe::NeuronLayer< Dtype >, caffe::SoftmaxLayer< Dtype >, and caffe::TileLayer< Dtype >.

      +

      Reimplemented in caffe::LSTMUnitLayer< Dtype >, caffe::InfogainLossLayer< Dtype >, caffe::BatchNormLayer< Dtype >, caffe::ArgMaxLayer< Dtype >, caffe::ContrastiveLossLayer< Dtype >, caffe::AccuracyLayer< Dtype >, caffe::HDF5OutputLayer< Dtype >, caffe::HDF5DataLayer< Dtype >, caffe::AbsValLayer< Dtype >, caffe::LRNLayer< Dtype >, caffe::WindowDataLayer< Dtype >, caffe::ImageDataLayer< Dtype >, caffe::LossLayer< Dtype >, caffe::CropLayer< Dtype >, caffe::FlattenLayer< Dtype >, caffe::DummyDataLayer< Dtype >, caffe::EmbedLayer< Dtype >, caffe::Im2colLayer< Dtype >, caffe::InputLayer< Dtype >, caffe::ReductionLayer< Dtype >, caffe::BatchReindexLayer< Dtype >, caffe::InnerProductLayer< Dtype >, caffe::ParameterLayer< Dtype >, caffe::ReshapeLayer< Dtype >, caffe::SliceLayer< Dtype >, caffe::SPPLayer< Dtype >, caffe::MemoryDataLayer< Dtype >, caffe::PoolingLayer< Dtype >, caffe::SplitLayer< Dtype >, caffe::MVNLayer< Dtype >, caffe::NeuronLayer< Dtype >, caffe::SoftmaxLayer< Dtype >, caffe::DataLayer< Dtype >, and caffe::TileLayer< Dtype >.

      -

      § ExactNumTopBlobs()

      +

      ◆ ExactNumTopBlobs()

      @@ -525,12 +525,12 @@

      caffe::LSTMUnitLayer< Dtype >, caffe::SoftmaxWithLossLayer< Dtype >, caffe::BatchNormLayer< Dtype >, caffe::ArgMaxLayer< Dtype >, caffe::RecurrentLayer< Dtype >, caffe::LossLayer< Dtype >, caffe::HDF5OutputLayer< Dtype >, caffe::ScaleLayer< Dtype >, caffe::AbsValLayer< Dtype >, caffe::BiasLayer< Dtype >, caffe::LRNLayer< Dtype >, caffe::WindowDataLayer< Dtype >, caffe::ImageDataLayer< Dtype >, caffe::CropLayer< Dtype >, caffe::FlattenLayer< Dtype >, caffe::EmbedLayer< Dtype >, caffe::Im2colLayer< Dtype >, caffe::ReductionLayer< Dtype >, caffe::BatchReindexLayer< Dtype >, caffe::EltwiseLayer< Dtype >, caffe::InnerProductLayer< Dtype >, caffe::ParameterLayer< Dtype >, caffe::ReshapeLayer< Dtype >, caffe::SPPLayer< Dtype >, caffe::MemoryDataLayer< Dtype >, caffe::ConcatLayer< Dtype >, caffe::MVNLayer< Dtype >, caffe::NeuronLayer< Dtype >, caffe::SoftmaxLayer< Dtype >, caffe::SilenceLayer< Dtype >, and caffe::TileLayer< Dtype >.

      +

      Reimplemented in caffe::LSTMUnitLayer< Dtype >, caffe::InfogainLossLayer< Dtype >, caffe::SoftmaxWithLossLayer< Dtype >, caffe::BatchNormLayer< Dtype >, caffe::ArgMaxLayer< Dtype >, caffe::RecurrentLayer< Dtype >, caffe::LossLayer< Dtype >, caffe::ScaleLayer< Dtype >, caffe::HDF5OutputLayer< Dtype >, caffe::AbsValLayer< Dtype >, caffe::BiasLayer< Dtype >, caffe::LRNLayer< Dtype >, caffe::WindowDataLayer< Dtype >, caffe::ImageDataLayer< Dtype >, caffe::CropLayer< Dtype >, caffe::FlattenLayer< Dtype >, caffe::EmbedLayer< Dtype >, caffe::Im2colLayer< Dtype >, caffe::ReductionLayer< Dtype >, caffe::BatchReindexLayer< Dtype >, caffe::EltwiseLayer< Dtype >, caffe::InnerProductLayer< Dtype >, caffe::ParameterLayer< Dtype >, caffe::ReshapeLayer< Dtype >, caffe::SPPLayer< Dtype >, caffe::MemoryDataLayer< Dtype >, caffe::ConcatLayer< Dtype >, caffe::MVNLayer< Dtype >, caffe::NeuronLayer< Dtype >, caffe::SoftmaxLayer< Dtype >, caffe::SilenceLayer< Dtype >, and caffe::TileLayer< Dtype >.

      -

      § Forward()

      +

      ◆ Forward()

      @@ -580,7 +580,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -630,7 +630,7 @@

      -

      § MaxBottomBlobs()

      +

      ◆ MaxBottomBlobs()

      @@ -662,7 +662,7 @@

      -

      § MaxTopBlobs()

      +

      ◆ MaxTopBlobs()

      -

      § MinBottomBlobs()

      +

      ◆ MinBottomBlobs()

      @@ -726,7 +726,7 @@

      -

      § MinTopBlobs()

      +

      ◆ MinTopBlobs()

      -

      § param_propagate_down()

      +

      ◆ param_propagate_down()

      @@ -789,7 +789,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -834,12 +834,12 @@

      caffe::LSTMUnitLayer< Dtype >, caffe::SoftmaxWithLossLayer< Dtype >, caffe::InfogainLossLayer< Dtype >, caffe::SigmoidCrossEntropyLossLayer< Dtype >, caffe::MultinomialLogisticLossLayer< Dtype >, caffe::BatchNormLayer< Dtype >, caffe::EuclideanLossLayer< Dtype >, caffe::ArgMaxLayer< Dtype >, caffe::PReLULayer< Dtype >, caffe::DropoutLayer< Dtype >, caffe::BaseDataLayer< Dtype >, caffe::HDF5OutputLayer< Dtype >, caffe::AccuracyLayer< Dtype >, caffe::HDF5DataLayer< Dtype >, caffe::PythonLayer< Dtype >, caffe::RecurrentLayer< Dtype >, caffe::ScaleLayer< Dtype >, caffe::LossLayer< Dtype >, caffe::LRNLayer< Dtype >, caffe::BiasLayer< Dtype >, caffe::DummyDataLayer< Dtype >, caffe::InputLayer< Dtype >, caffe::CropLayer< Dtype >, caffe::FlattenLayer< Dtype >, caffe::EmbedLayer< Dtype >, caffe::Im2colLayer< Dtype >, caffe::ParameterLayer< Dtype >, caffe::ReductionLayer< Dtype >, caffe::BatchReindexLayer< Dtype >, caffe::EltwiseLayer< Dtype >, caffe::FilterLayer< Dtype >, caffe::InnerProductLayer< Dtype >, caffe::ReshapeLayer< Dtype >, caffe::SliceLayer< Dtype >, caffe::SPPLayer< Dtype >, caffe::BaseConvolutionLayer< Dtype >, caffe::PoolingLayer< Dtype >, caffe::ConcatLayer< Dtype >, caffe::NeuronLayer< Dtype >, caffe::SplitLayer< Dtype >, caffe::MVNLayer< Dtype >, caffe::SoftmaxLayer< Dtype >, caffe::SilenceLayer< Dtype >, and caffe::TileLayer< Dtype >.

      +

      Implemented in caffe::LSTMUnitLayer< Dtype >, caffe::SoftmaxWithLossLayer< Dtype >, caffe::InfogainLossLayer< Dtype >, caffe::SigmoidCrossEntropyLossLayer< Dtype >, caffe::MultinomialLogisticLossLayer< Dtype >, caffe::BatchNormLayer< Dtype >, caffe::EuclideanLossLayer< Dtype >, caffe::ArgMaxLayer< Dtype >, caffe::PReLULayer< Dtype >, caffe::DropoutLayer< Dtype >, caffe::AccuracyLayer< Dtype >, caffe::BaseDataLayer< Dtype >, caffe::HDF5OutputLayer< Dtype >, caffe::PythonLayer< Dtype >, caffe::RecurrentLayer< Dtype >, caffe::ScaleLayer< Dtype >, caffe::HDF5DataLayer< Dtype >, caffe::LossLayer< Dtype >, caffe::LRNLayer< Dtype >, caffe::BiasLayer< Dtype >, caffe::CropLayer< Dtype >, caffe::FlattenLayer< Dtype >, caffe::DummyDataLayer< Dtype >, caffe::EmbedLayer< Dtype >, caffe::Im2colLayer< Dtype >, caffe::InputLayer< Dtype >, caffe::ParameterLayer< Dtype >, caffe::ReductionLayer< Dtype >, caffe::BatchReindexLayer< Dtype >, caffe::EltwiseLayer< Dtype >, caffe::FilterLayer< Dtype >, caffe::InnerProductLayer< Dtype >, caffe::ReshapeLayer< Dtype >, caffe::SliceLayer< Dtype >, caffe::SPPLayer< Dtype >, caffe::BaseConvolutionLayer< Dtype >, caffe::PoolingLayer< Dtype >, caffe::ConcatLayer< Dtype >, caffe::NeuronLayer< Dtype >, caffe::SplitLayer< Dtype >, caffe::MVNLayer< Dtype >, caffe::SoftmaxLayer< Dtype >, caffe::SilenceLayer< Dtype >, and caffe::TileLayer< Dtype >.

      -

      § SetLossWeights()

      +

      ◆ SetLossWeights()

      @@ -868,7 +868,7 @@

      -

      § SetUp()

      +

      ◆ SetUp()

      @@ -917,7 +917,7 @@

      Member Data Documentation

      -

      § blobs_

      +

      ◆ blobs_

      @@ -942,7 +942,7 @@

      -

      § layer_param_

      +

      ◆ layer_param_

      @@ -967,7 +967,7 @@

      -

      § loss_

      +

      ◆ loss_

      @@ -992,7 +992,7 @@

      -

      § param_propagate_down_

      +

      ◆ param_propagate_down_

      @@ -1017,7 +1017,7 @@

      -

      § phase_

      +

      ◆ phase_

      @@ -1047,9 +1047,9 @@

      diff --git a/doxygen/classcaffe_1_1LayerRegisterer-members.html b/doxygen/classcaffe_1_1LayerRegisterer-members.html index 4e2d2832b94..a575dffa1b0 100644 --- a/doxygen/classcaffe_1_1LayerRegisterer-members.html +++ b/doxygen/classcaffe_1_1LayerRegisterer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -73,9 +73,9 @@
      diff --git a/doxygen/classcaffe_1_1LayerRegisterer.html b/doxygen/classcaffe_1_1LayerRegisterer.html index 392162ea5ff..69d878cc306 100644 --- a/doxygen/classcaffe_1_1LayerRegisterer.html +++ b/doxygen/classcaffe_1_1LayerRegisterer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::LayerRegisterer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -82,9 +82,9 @@
      diff --git a/doxygen/classcaffe_1_1LayerRegistry-members.html b/doxygen/classcaffe_1_1LayerRegistry-members.html index 49cfbe51486..9831aaf9d98 100644 --- a/doxygen/classcaffe_1_1LayerRegistry-members.html +++ b/doxygen/classcaffe_1_1LayerRegistry-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -78,9 +78,9 @@
      diff --git a/doxygen/classcaffe_1_1LayerRegistry.html b/doxygen/classcaffe_1_1LayerRegistry.html index e153e16d5d1..ceb13f152f7 100644 --- a/doxygen/classcaffe_1_1LayerRegistry.html +++ b/doxygen/classcaffe_1_1LayerRegistry.html @@ -3,7 +3,7 @@ - + Caffe: caffe::LayerRegistry< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -101,9 +101,9 @@
      diff --git a/doxygen/classcaffe_1_1LogLayer-members.html b/doxygen/classcaffe_1_1LogLayer-members.html index 7cc769b8cf8..12b6e5006e2 100644 --- a/doxygen/classcaffe_1_1LogLayer-members.html +++ b/doxygen/classcaffe_1_1LogLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -113,9 +113,9 @@
      diff --git a/doxygen/classcaffe_1_1LogLayer.html b/doxygen/classcaffe_1_1LogLayer.html index 55766ab9697..a3af3a5261b 100644 --- a/doxygen/classcaffe_1_1LogLayer.html +++ b/doxygen/classcaffe_1_1LogLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::LogLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@
      - + @@ -72,7 +72,7 @@
      -

      Computes $ y = log_{\gamma}(\alpha x + \beta) $, as specified by the scale $ \alpha $, shift $ \beta $, and base $ \gamma $. +

      Computes $ y = log_{\gamma}(\alpha x + \beta) $, as specified by the scale $ \alpha $, shift $ \beta $, and base $ \gamma $. More...

      #include <log_layer.hpp>

      @@ -81,7 +81,7 @@
      - + caffe::NeuronLayer< Dtype > caffe::Layer< Dtype > @@ -223,10 +223,10 @@

      template<typename Dtype>
      class caffe::LogLayer< Dtype >

      -

      Computes $ y = log_{\gamma}(\alpha x + \beta) $, as specified by the scale $ \alpha $, shift $ \beta $, and base $ \gamma $.

      +

      Computes $ y = log_{\gamma}(\alpha x + \beta) $, as specified by the scale $ \alpha $, shift $ \beta $, and base $ \gamma $.

      Constructor & Destructor Documentation

      -

      § LogLayer()

      +

      ◆ LogLayer()

      @@ -253,9 +253,9 @@

      Parameters
      paramprovides LogParameter log_param, with LogLayer options:
        -
      • scale (optional, default 1) the scale $ \alpha $
      • -
      • shift (optional, default 0) the shift $ \beta $
      • -
      • base (optional, default -1 for a value of $ e \approx 2.718 $) the base $ \gamma $
      • +
      • scale (optional, default 1) the scale $ \alpha $
      • +
      • shift (optional, default 0) the shift $ \beta $
      • +
      • base (optional, default -1 for a value of $ e \approx 2.718 $) the base $ \gamma $
      @@ -266,7 +266,7 @@

      Member Function Documentation

      -

      § Backward_cpu()

      +

      ◆ Backward_cpu()

      @@ -311,12 +311,12 @@

      Parameters
      topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
        -
      1. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
      2. +
      3. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
      propagate_downsee Layer::Backward.
      bottominput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \frac{\partial E}{\partial x} = \frac{\partial E}{\partial y} y \alpha \log_e(gamma) $ if propagate_down[0]
      2. +
      3. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \frac{\partial E}{\partial x} = \frac{\partial E}{\partial y} y \alpha \log_e(gamma) $ if propagate_down[0]
      @@ -328,7 +328,7 @@

      -

      § Forward_cpu()

      +

      ◆ Forward_cpu()

      @@ -365,11 +365,11 @@

      Parameters
      bottominput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the inputs $ x $
      2. +
      3. $ (N \times C \times H \times W) $ the inputs $ x $
      topoutput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the computed outputs $ y = log_{\gamma}(\alpha x + \beta) $
      2. +
      3. $ (N \times C \times H \times W) $ the computed outputs $ y = log_{\gamma}(\alpha x + \beta) $
      @@ -381,7 +381,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -437,9 +437,9 @@

      diff --git a/doxygen/classcaffe_1_1LossLayer-members.html b/doxygen/classcaffe_1_1LossLayer-members.html index acd4d97ef71..285ec70765f 100644 --- a/doxygen/classcaffe_1_1LossLayer-members.html +++ b/doxygen/classcaffe_1_1LossLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -108,9 +108,9 @@
      diff --git a/doxygen/classcaffe_1_1LossLayer.html b/doxygen/classcaffe_1_1LossLayer.html index 405d97c8612..a4d76839cab 100644 --- a/doxygen/classcaffe_1_1LossLayer.html +++ b/doxygen/classcaffe_1_1LossLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::LossLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -79,7 +79,7 @@
      - + caffe::Layer< Dtype > caffe::ContrastiveLossLayer< Dtype > caffe::EuclideanLossLayer< Dtype > @@ -216,7 +216,7 @@

      LossLayers are typically only capable of backpropagating to their first input – the predictions.

      Member Function Documentation

      -

      § AllowForceBackward()

      +

      ◆ AllowForceBackward()

      @@ -249,7 +249,7 @@

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -283,7 +283,7 @@

      -

      § ExactNumTopBlobs()

      +

      ◆ ExactNumTopBlobs()

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -369,7 +369,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -427,9 +427,9 @@

      diff --git a/doxygen/classcaffe_1_1MSRAFiller-members.html b/doxygen/classcaffe_1_1MSRAFiller-members.html index bcc4a25fbcf..70bff453bae 100644 --- a/doxygen/classcaffe_1_1MSRAFiller-members.html +++ b/doxygen/classcaffe_1_1MSRAFiller-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -77,9 +77,9 @@
      diff --git a/doxygen/classcaffe_1_1MSRAFiller.html b/doxygen/classcaffe_1_1MSRAFiller.html index 1c22d27c8a5..4dbe7ae04e7 100644 --- a/doxygen/classcaffe_1_1MSRAFiller.html +++ b/doxygen/classcaffe_1_1MSRAFiller.html @@ -3,7 +3,7 @@ - + Caffe: caffe::MSRAFiller< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -70,7 +70,7 @@
      -

      Fills a Blob with values $ x \sim N(0, \sigma^2) $ where $ \sigma^2 $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average. +

      Fills a Blob with values $ x \sim N(0, \sigma^2) $ where $ \sigma^2 $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average. More...

      #include <filler.hpp>

      @@ -79,7 +79,7 @@
      - + caffe::Filler< Dtype >
      @@ -108,7 +108,7 @@

      template<typename Dtype>
      class caffe::MSRAFiller< Dtype >

      -

      Fills a Blob with values $ x \sim N(0, \sigma^2) $ where $ \sigma^2 $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average.

      +

      Fills a Blob with values $ x \sim N(0, \sigma^2) $ where $ \sigma^2 $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average.

      A Filler based on the paper [He, Zhang, Ren and Sun 2015]: Specifically accounts for ReLU nonlinearities.

      Aside: for another perspective on the scaling factor, see the derivation of [Saxe, McClelland, and Ganguli 2013 (v3)].

      It fills the incoming matrix by randomly sampling Gaussian data with std = sqrt(2 / n) where n is the fan_in, fan_out, or their average, depending on the variance_norm option. You should make sure the input blob has shape (num, a, b, c) where a * b * c = fan_in and num * b * c = fan_out. Note that this is currently not the case for inner product layers.

      @@ -118,9 +118,9 @@
      diff --git a/doxygen/classcaffe_1_1MVNLayer-members.html b/doxygen/classcaffe_1_1MVNLayer-members.html index 67ea0fee99d..659a65713e4 100644 --- a/doxygen/classcaffe_1_1MVNLayer-members.html +++ b/doxygen/classcaffe_1_1MVNLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@
      - + @@ -113,9 +113,9 @@

      diff --git a/doxygen/classcaffe_1_1MVNLayer.html b/doxygen/classcaffe_1_1MVNLayer.html index f9629176dd6..0a9d6eb89bb 100644 --- a/doxygen/classcaffe_1_1MVNLayer.html +++ b/doxygen/classcaffe_1_1MVNLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::MVNLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@
      - + @@ -81,7 +81,7 @@
      - + caffe::Layer< Dtype >
      @@ -230,7 +230,7 @@

      TODO(dox): thorough documentation for Forward, Backward, and proto params.

      Member Function Documentation

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -262,7 +262,7 @@

      -

      § ExactNumTopBlobs()

      +

      ◆ ExactNumTopBlobs()

      @@ -294,7 +294,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -350,9 +350,9 @@

      diff --git a/doxygen/classcaffe_1_1MemoryDataLayer-members.html b/doxygen/classcaffe_1_1MemoryDataLayer-members.html index a71a6138f6f..31e0dc2db58 100644 --- a/doxygen/classcaffe_1_1MemoryDataLayer-members.html +++ b/doxygen/classcaffe_1_1MemoryDataLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -122,20 +122,19 @@ set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline - ShareInParallel() const (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >inlinevirtual - size_ (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >protected - ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual - transform_param_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected - type() constcaffe::MemoryDataLayer< Dtype >inlinevirtual - width() (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >inline - width_ (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >protected - ~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual + size_ (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >protected + ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual + transform_param_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected + type() constcaffe::MemoryDataLayer< Dtype >inlinevirtual + width() (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >inline + width_ (defined in caffe::MemoryDataLayer< Dtype >)caffe::MemoryDataLayer< Dtype >protected + ~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
      diff --git a/doxygen/classcaffe_1_1MemoryDataLayer.html b/doxygen/classcaffe_1_1MemoryDataLayer.html index b4b750b5e9f..868b65660e6 100644 --- a/doxygen/classcaffe_1_1MemoryDataLayer.html +++ b/doxygen/classcaffe_1_1MemoryDataLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::MemoryDataLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -81,7 +81,7 @@
      - + caffe::BaseDataLayer< Dtype > caffe::Layer< Dtype > @@ -133,9 +133,6 @@ virtual void LayerSetUp (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)  Does layer-specific setup: your layer should implement this function as well as Reshape. More...
        - -virtual bool ShareInParallel () const -  virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)  Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
        @@ -292,7 +289,7 @@

      TODO(dox): thorough documentation for Forward and proto params.

      Member Function Documentation

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -324,7 +321,7 @@

      -

      § ExactNumTopBlobs()

      +

      ◆ ExactNumTopBlobs()

      @@ -362,9 +359,9 @@

      diff --git a/doxygen/classcaffe_1_1MultinomialLogisticLossLayer-members.html b/doxygen/classcaffe_1_1MultinomialLogisticLossLayer-members.html index b029cbc1a0c..e242d6ea1ad 100644 --- a/doxygen/classcaffe_1_1MultinomialLogisticLossLayer-members.html +++ b/doxygen/classcaffe_1_1MultinomialLogisticLossLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -109,9 +109,9 @@
      diff --git a/doxygen/classcaffe_1_1MultinomialLogisticLossLayer.html b/doxygen/classcaffe_1_1MultinomialLogisticLossLayer.html index 33fa494bd49..ad15a9f9e4d 100644 --- a/doxygen/classcaffe_1_1MultinomialLogisticLossLayer.html +++ b/doxygen/classcaffe_1_1MultinomialLogisticLossLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::MultinomialLogisticLossLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -80,7 +80,7 @@
      - + caffe::LossLayer< Dtype > caffe::Layer< Dtype > @@ -217,12 +217,12 @@
      Parameters
      bottominput Blob vector (length 2)
        -
      1. $ (N \times C \times H \times W) $ the predictions $ \hat{p} $, a Blob with values in $ [0, 1] $ indicating the predicted probability of each of the $ K = CHW $ classes. Each prediction vector $ \hat{p}_n $ should sum to 1 as in a probability distribution: $ \forall n \sum\limits_{k=1}^K \hat{p}_{nk} = 1 $.
      2. -
      3. $ (N \times 1 \times 1 \times 1) $ the labels $ l $, an integer-valued Blob with values $ l_n \in [0, 1, 2, ..., K - 1] $ indicating the correct class label among the $ K $ classes
      4. +
      5. $ (N \times C \times H \times W) $ the predictions $ \hat{p} $, a Blob with values in $ [0, 1] $ indicating the predicted probability of each of the $ K = CHW $ classes. Each prediction vector $ \hat{p}_n $ should sum to 1 as in a probability distribution: $ \forall n \sum\limits_{k=1}^K \hat{p}_{nk} = 1 $.
      6. +
      7. $ (N \times 1 \times 1 \times 1) $ the labels $ l $, an integer-valued Blob with values $ l_n \in [0, 1, 2, ..., K - 1] $ indicating the correct class label among the $ K $ classes
      topoutput Blob vector (length 1)
        -
      1. $ (1 \times 1 \times 1 \times 1) $ the computed multinomial logistic loss: $ E = \frac{-1}{N} \sum\limits_{n=1}^N \log(\hat{p}_{n,l_n}) $
      2. +
      3. $ (1 \times 1 \times 1 \times 1) $ the computed multinomial logistic loss: $ E = \frac{-1}{N} \sum\limits_{n=1}^N \log(\hat{p}_{n,l_n}) $
      @@ -230,7 +230,7 @@

      Member Function Documentation

      -

      § Backward_cpu()

      +

      ◆ Backward_cpu()

      @@ -276,13 +276,13 @@

      Parameters
      topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
        -
      1. $ (1 \times 1 \times 1 \times 1) $ This Blob's diff will simply contain the loss_weight* $ \lambda $, as $ \lambda $ is the coefficient of this layer's output $\ell_i$ in the overall Net loss $ E = \lambda_i \ell_i + \mbox{other loss terms}$; hence $ \frac{\partial E}{\partial \ell_i} = \lambda_i $. (*Assuming that this top Blob is not used as a bottom (input) by any other layer of the Net.)
      2. +
      3. $ (1 \times 1 \times 1 \times 1) $ This Blob's diff will simply contain the loss_weight* $ \lambda $, as $ \lambda $ is the coefficient of this layer's output $\ell_i$ in the overall Net loss $ E = \lambda_i \ell_i + \mbox{other loss terms}$; hence $ \frac{\partial E}{\partial \ell_i} = \lambda_i $. (*Assuming that this top Blob is not used as a bottom (input) by any other layer of the Net.)
      propagate_downsee Layer::Backward. propagate_down[1] must be false as we can't compute gradients with respect to the labels.
      bottominput Blob vector (length 2)
        -
      1. $ (N \times C \times H \times W) $ the predictions $ \hat{p} $; Backward computes diff $ \frac{\partial E}{\partial \hat{p}} $
      2. -
      3. $ (N \times 1 \times 1 \times 1) $ the labels – ignored as we can't compute their error gradients
      4. +
      5. $ (N \times C \times H \times W) $ the predictions $ \hat{p} $; Backward computes diff $ \frac{\partial E}{\partial \hat{p}} $
      6. +
      7. $ (N \times 1 \times 1 \times 1) $ the labels – ignored as we can't compute their error gradients
      @@ -294,7 +294,7 @@

      -

      § Forward_cpu()

      +

      ◆ Forward_cpu()

      @@ -334,12 +334,12 @@

      Parameters
      bottominput Blob vector (length 2)
        -
      1. $ (N \times C \times H \times W) $ the predictions $ \hat{p} $, a Blob with values in $ [0, 1] $ indicating the predicted probability of each of the $ K = CHW $ classes. Each prediction vector $ \hat{p}_n $ should sum to 1 as in a probability distribution: $ \forall n \sum\limits_{k=1}^K \hat{p}_{nk} = 1 $.
      2. -
      3. $ (N \times 1 \times 1 \times 1) $ the labels $ l $, an integer-valued Blob with values $ l_n \in [0, 1, 2, ..., K - 1] $ indicating the correct class label among the $ K $ classes
      4. +
      5. $ (N \times C \times H \times W) $ the predictions $ \hat{p} $, a Blob with values in $ [0, 1] $ indicating the predicted probability of each of the $ K = CHW $ classes. Each prediction vector $ \hat{p}_n $ should sum to 1 as in a probability distribution: $ \forall n \sum\limits_{k=1}^K \hat{p}_{nk} = 1 $.
      6. +
      7. $ (N \times 1 \times 1 \times 1) $ the labels $ l $, an integer-valued Blob with values $ l_n \in [0, 1, 2, ..., K - 1] $ indicating the correct class label among the $ K $ classes
      topoutput Blob vector (length 1)
        -
      1. $ (1 \times 1 \times 1 \times 1) $ the computed multinomial logistic loss: $ E = \frac{-1}{N} \sum\limits_{n=1}^N \log(\hat{p}_{n,l_n}) $
      2. +
      3. $ (1 \times 1 \times 1 \times 1) $ the computed multinomial logistic loss: $ E = \frac{-1}{N} \sum\limits_{n=1}^N \log(\hat{p}_{n,l_n}) $
      @@ -351,7 +351,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -407,9 +407,9 @@

      diff --git a/doxygen/classcaffe_1_1NesterovSolver-members.html b/doxygen/classcaffe_1_1NesterovSolver-members.html index c0b14d0bd43..850ef38b1f4 100644 --- a/doxygen/classcaffe_1_1NesterovSolver-members.html +++ b/doxygen/classcaffe_1_1NesterovSolver-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -135,9 +135,9 @@
      diff --git a/doxygen/classcaffe_1_1NesterovSolver.html b/doxygen/classcaffe_1_1NesterovSolver.html index d60f58227c1..8f53f5d189a 100644 --- a/doxygen/classcaffe_1_1NesterovSolver.html +++ b/doxygen/classcaffe_1_1NesterovSolver.html @@ -3,7 +3,7 @@ - + Caffe: caffe::NesterovSolver< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -75,7 +75,7 @@
      - + caffe::SGDSolver< Dtype > caffe::Solver< Dtype > @@ -290,9 +290,9 @@
      diff --git a/doxygen/classcaffe_1_1Net-members.html b/doxygen/classcaffe_1_1Net-members.html index fd7f4c45367..9c07c31a1d7 100644 --- a/doxygen/classcaffe_1_1Net-members.html +++ b/doxygen/classcaffe_1_1Net-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@
      - + @@ -186,9 +186,9 @@
      diff --git a/doxygen/classcaffe_1_1Net.html b/doxygen/classcaffe_1_1Net.html index 43419c8a8ff..d2cea7b6165 100644 --- a/doxygen/classcaffe_1_1Net.html +++ b/doxygen/classcaffe_1_1Net.html @@ -3,7 +3,7 @@ - + Caffe: caffe::Net< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -481,7 +481,7 @@

      TODO(dox): more thorough description.

      Member Function Documentation

      -

      § Backward()

      +

      ◆ Backward()

      @@ -501,7 +501,7 @@

      -

      § ForwardFromTo()

      +

      ◆ ForwardFromTo()

      @@ -532,7 +532,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -554,7 +554,7 @@

      -

      § ShareWeights()

      +

      ◆ ShareWeights()

      @@ -577,7 +577,7 @@

      Member Data Documentation

      -

      § blob_loss_weights_

      +

      ◆ blob_loss_weights_

      @@ -602,7 +602,7 @@

      -

      § bottom_vecs_

      +

      ◆ bottom_vecs_

      @@ -627,7 +627,7 @@

      -

      § learnable_param_ids_

      +

      ◆ learnable_param_ids_

      @@ -658,9 +658,9 @@

      diff --git a/doxygen/classcaffe_1_1Net_1_1Callback-members.html b/doxygen/classcaffe_1_1Net_1_1Callback-members.html index 2ab7bba4b5d..d4d053a47e5 100644 --- a/doxygen/classcaffe_1_1Net_1_1Callback-members.html +++ b/doxygen/classcaffe_1_1Net_1_1Callback-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -74,9 +74,9 @@
      diff --git a/doxygen/classcaffe_1_1Net_1_1Callback.html b/doxygen/classcaffe_1_1Net_1_1Callback.html index be8274d13fa..4582c2aff67 100644 --- a/doxygen/classcaffe_1_1Net_1_1Callback.html +++ b/doxygen/classcaffe_1_1Net_1_1Callback.html @@ -3,7 +3,7 @@ - + Caffe: caffe::Net< Dtype >::Callback Class Reference @@ -29,7 +29,7 @@

      - + @@ -90,9 +90,9 @@
      diff --git a/doxygen/classcaffe_1_1NeuronLayer-members.html b/doxygen/classcaffe_1_1NeuronLayer-members.html index 20dbd8119d3..c1b8cb5f195 100644 --- a/doxygen/classcaffe_1_1NeuronLayer-members.html +++ b/doxygen/classcaffe_1_1NeuronLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -108,9 +108,9 @@
      diff --git a/doxygen/classcaffe_1_1NeuronLayer.html b/doxygen/classcaffe_1_1NeuronLayer.html index 6ba4f495d8b..b0cac27a41b 100644 --- a/doxygen/classcaffe_1_1NeuronLayer.html +++ b/doxygen/classcaffe_1_1NeuronLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::NeuronLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@
      - + @@ -70,7 +70,7 @@
      -

      An interface for layers that take one blob as input ( $ x $) and produce one equally-sized blob as output ( $ y $), where each element of the output depends only on the corresponding input element. +

      An interface for layers that take one blob as input ( $ x $) and produce one equally-sized blob as output ( $ y $), where each element of the output depends only on the corresponding input element. More...

      #include <neuron_layer.hpp>

      @@ -79,7 +79,7 @@
      - + caffe::Layer< Dtype > caffe::AbsValLayer< Dtype > caffe::BNLLLayer< Dtype > @@ -217,10 +217,10 @@

      template<typename Dtype>
      class caffe::NeuronLayer< Dtype >

      -

      An interface for layers that take one blob as input ( $ x $) and produce one equally-sized blob as output ( $ y $), where each element of the output depends only on the corresponding input element.

      +

      An interface for layers that take one blob as input ( $ x $) and produce one equally-sized blob as output ( $ y $), where each element of the output depends only on the corresponding input element.

      Member Function Documentation

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -254,7 +254,7 @@

      -

      § ExactNumTopBlobs()

      +

      ◆ ExactNumTopBlobs()

      @@ -288,7 +288,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -346,9 +346,9 @@

      diff --git a/doxygen/classcaffe_1_1P2PSync-members.html b/doxygen/classcaffe_1_1P2PSync-members.html deleted file mode 100644 index d22f29cbf89..00000000000 --- a/doxygen/classcaffe_1_1P2PSync-members.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -Caffe: Member List - - - - - - - - - -
      -
      - - - - - - -
      -
      Caffe -
      -
      -
      - - - - - - - - -
      -
      - - -
      - -
      - - -
      -
      -
      -
      caffe::P2PSync< Dtype > Member List
      -
      -
      - -

      This is the complete list of members for caffe::P2PSync< Dtype >, including all inherited members.

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      children_ (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >protected
      configure(Solver< Dtype > *solver) const (defined in caffe::GPUParams< Dtype >)caffe::GPUParams< Dtype >
      data() const (defined in caffe::Params< Dtype >)caffe::Params< Dtype >inline
      data_ (defined in caffe::Params< Dtype >)caffe::Params< Dtype >protected
      diff() const (defined in caffe::Params< Dtype >)caffe::Params< Dtype >inline
      diff_ (defined in caffe::Params< Dtype >)caffe::Params< Dtype >protected
      DISABLE_COPY_AND_ASSIGN(Params) (defined in caffe::Params< Dtype >)caffe::Params< Dtype >protected
      GPUParams(shared_ptr< Solver< Dtype > > root_solver, int device) (defined in caffe::GPUParams< Dtype >)caffe::GPUParams< Dtype >
      initial_iter() const (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >inline
      initial_iter_ (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >protected
      InternalThread() (defined in caffe::InternalThread)caffe::InternalThreadinline
      InternalThreadEntry() (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >protectedvirtual
      is_started() const (defined in caffe::InternalThread)caffe::InternalThread
      must_stop() (defined in caffe::InternalThread)caffe::InternalThreadprotected
      on_gradients_ready() (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >protectedvirtual
      on_start() (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >protectedvirtual
      P2PSync(shared_ptr< Solver< Dtype > > root_solver, P2PSync< Dtype > *parent, const SolverParameter &param) (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >explicit
      Params(shared_ptr< Solver< Dtype > > root_solver) (defined in caffe::Params< Dtype >)caffe::Params< Dtype >explicit
      parent_ (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >protected
      parent_grads_ (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >protected
      Prepare(const vector< int > &gpus, vector< shared_ptr< P2PSync< Dtype > > > *syncs) (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >
      queue_ (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >protected
      Run(const vector< int > &gpus) (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >
      size() const (defined in caffe::Params< Dtype >)caffe::Params< Dtype >inline
      size_ (defined in caffe::Params< Dtype >)caffe::Params< Dtype >protected
      solver() const (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >inline
      solver_ (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >protected
      StartInternalThread()caffe::InternalThread
      StopInternalThread()caffe::InternalThread
      ~GPUParams() (defined in caffe::GPUParams< Dtype >)caffe::GPUParams< Dtype >virtual
      ~InternalThread() (defined in caffe::InternalThread)caffe::InternalThreadvirtual
      ~P2PSync() (defined in caffe::P2PSync< Dtype >)caffe::P2PSync< Dtype >virtual
      ~Params() (defined in caffe::Params< Dtype >)caffe::Params< Dtype >inlinevirtual
      - - - - diff --git a/doxygen/classcaffe_1_1P2PSync.html b/doxygen/classcaffe_1_1P2PSync.html deleted file mode 100644 index 6e8594c4332..00000000000 --- a/doxygen/classcaffe_1_1P2PSync.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - - -Caffe: caffe::P2PSync< Dtype > Class Template Reference - - - - - - - - - -
      -
      - - - - - - -
      -
      Caffe -
      -
      -
      - - - - - - - - -
      -
      - - -
      - -
      - - -
      -
      - -
      -
      caffe::P2PSync< Dtype > Class Template Reference
      -
      -
      -
      -Inheritance diagram for caffe::P2PSync< Dtype >:
      -
      -
      - - -caffe::GPUParams< Dtype > -caffe::Solver< Dtype >::Callback -caffe::InternalThread -caffe::Params< Dtype > - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      -Public Member Functions

      P2PSync (shared_ptr< Solver< Dtype > > root_solver, P2PSync< Dtype > *parent, const SolverParameter &param)
       
      -const shared_ptr< Solver< Dtype > > & solver () const
       
      -void Run (const vector< int > &gpus)
       
      -void Prepare (const vector< int > &gpus, vector< shared_ptr< P2PSync< Dtype > > > *syncs)
       
      -const int initial_iter () const
       
      - Public Member Functions inherited from caffe::GPUParams< Dtype >
      GPUParams (shared_ptr< Solver< Dtype > > root_solver, int device)
       
      -void configure (Solver< Dtype > *solver) const
       
      - Public Member Functions inherited from caffe::Params< Dtype >
      Params (shared_ptr< Solver< Dtype > > root_solver)
       
      -size_t size () const
       
      -Dtype * data () const
       
      -Dtype * diff () const
       
      - Public Member Functions inherited from caffe::InternalThread
      void StartInternalThread ()
       
      void StopInternalThread ()
       
      -bool is_started () const
       
      - - - - - - - - - - - - - -

      -Protected Member Functions

      -void on_start ()
       
      -void on_gradients_ready ()
       
      -void InternalThreadEntry ()
       
      - Protected Member Functions inherited from caffe::Params< Dtype >
      DISABLE_COPY_AND_ASSIGN (Params)
       
      - Protected Member Functions inherited from caffe::InternalThread
      -bool must_stop ()
       
      - - - - - - - - - - - - - - - - - - - - -

      -Protected Attributes

      -P2PSync< Dtype > * parent_
       
      -vector< P2PSync< Dtype > * > children_
       
      -BlockingQueue< P2PSync< Dtype > * > queue_
       
      -const int initial_iter_
       
      -Dtype * parent_grads_
       
      -shared_ptr< Solver< Dtype > > solver_
       
      - Protected Attributes inherited from caffe::Params< Dtype >
      -const size_t size_
       
      -Dtype * data_
       
      -Dtype * diff_
       
      -
      The documentation for this class was generated from the following files: -
      - - - - diff --git a/doxygen/classcaffe_1_1P2PSync.png b/doxygen/classcaffe_1_1P2PSync.png deleted file mode 100644 index 956f8b17de0361564d3e7b571c3c03c960f72547..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2025 zcmb`IdsI@{9>+1E6t#zGkk{7|P}A$9hdOH5L(PsUKBrVP>1O7n=^aW@BdwEDsV$u- z%}~ZHi^@RFoA^$eY0L~s$wU#;(LfV)jU);>au40^ANQ_%|C_zm+53C;{_S(t{_XGn z?EFwdfDzIR34_6mfP;SFFxVOrq_67fLNx`?#6k@^G$_(vqtQTeO16+*{NhJQeR(=N zI}!OKR?w^7*>FMx3<}bgf!C2cV6b(WfZx8zOdYv+hWuNb@qzIxw;qpZaB~STqR&Rd zt@5y??AOWH%o)S&BkCEdPi3xmXy=8B8ko)i^DReI?(AEBq0S;~Q_6K7_3Gad~f=NTIw_;{TZF)JbpD&VJ9-+tCi1PM-Wk=sUjFW-G8 z`w2_2=aM3e^xQSE`tAcwKe+Se?&lfAE8#?Ea%8=B_CpdXUt%+0e%wIt0Hb)XasL!k zHLL&r{mYDb-GUO5tHU~k$kT?i-qzD8+PrAdQE1n*FJ$UlklSRwDdk+YQ}HWZkVk*k zUe1mvAzCzSSa9HyVlDNR=_GOL8Ah|uY2I!18;exdw{kjPkj#(fWU;WG2ldz9n-8tS zPV*!Av`Ij_{_XHq%SvE=Hx7O6^+qs`=fEA~p(n2f(T;3`R`8!W+^@eDad!M`vU6!0 z?C)H79t`z;9-FvlcxjDSD7a4tzx25V(yKn&%;)zTAg8{}s)Aoy)1n=Zv*+Hq;QT)} z=uZ#RME6P+Do#XS1z)Nt`^K(&?m;j>TS*;tq6Y#rLqGjetZx{I>n^)V0(O|-qG*Qx zP}gy?U!7ojKTYCwezkRUbwsnfTm+CSzI&(eEv`=R06!kEa#`uO^eBvFW21NMS!pJn z8}H?%adKPoRG#W(`wh=8>4L#(?Co0Mq4y%zvv=3yLQ?DITKDX|btq+1+@!`@_{ZOi z^%}+Lv?r=65+`I~e%nfYc1}y|7@H)J<}fCd3S~a-cI~0%r*9Yjpt{l9vEBHL@cAG( z2T45?)T*eI*GIFW6WmVKuNHz9$i=6#@1$nGkv&+Xa(FMt3fV{<7o1Dm!@UCXhUfvS zLub5mvUNC<&w89=dS-#)qTE`nxS z`19{M=}jNAa56_z*)e!4=;XDMR7@#)#d{&h+p}4=uc-&w7}&48I>I`dTMLTu{iu_Z z$bjmL};?`eY%9U%x2A%vX_WjLWbALQ`3d z$!IF?2)@!>VYOKN%fbg{J{_~8n;JaO=6Sfb{XH{=_CyGDU(}P}%H2fu!0^l?y!-XJ zwu{Q>hSd`^6x@4b>O|K+Bx-b9NuQk3Sf)w7Y=tbvYJL>2*mheS1t3%Aom?!#b}ga$ zuz=M86Io0EZ4#}q#)Zsn2Z|t%0s-vkzr@r@wL$h=T7vzk6HaSbt%r|?Lmm$Ow}-C* zT3i2~0Wu)dyD))n71c*W9(6ODdaFF= znDcw58)i^FCo47VJ%@R|oB6t9{#wNSJfy;G+%gzkG-D-_RNZD4;m~cE4=0!`LcAvU z#3{#DMWhC=cucvo%S$pdoQ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -113,9 +113,9 @@
      diff --git a/doxygen/classcaffe_1_1PReLULayer.html b/doxygen/classcaffe_1_1PReLULayer.html index b8f294e86bb..c101e95a60c 100644 --- a/doxygen/classcaffe_1_1PReLULayer.html +++ b/doxygen/classcaffe_1_1PReLULayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::PReLULayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -72,7 +72,7 @@
      -

      Parameterized Rectified Linear Unit non-linearity $ y_i = \max(0, x_i) + a_i \min(0, x_i) $. 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. +

      Parameterized Rectified Linear Unit non-linearity $ y_i = \max(0, x_i) + a_i \min(0, x_i) $. 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. More...

      #include <prelu_layer.hpp>

      @@ -81,7 +81,7 @@
      - + caffe::NeuronLayer< Dtype > caffe::Layer< Dtype > @@ -223,10 +223,10 @@

      template<typename Dtype>
      class caffe::PReLULayer< Dtype >

      -

      Parameterized Rectified Linear Unit non-linearity $ y_i = \max(0, x_i) + a_i \min(0, x_i) $. 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.

      +

      Parameterized Rectified Linear Unit non-linearity $ y_i = \max(0, x_i) + a_i \min(0, x_i) $. 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.

      Constructor & Destructor Documentation

      -

      § PReLULayer()

      +

      ◆ PReLULayer()

      @@ -265,7 +265,7 @@

      Member Function Documentation

      -

      § Backward_cpu()

      +

      ◆ Backward_cpu()

      @@ -310,12 +310,12 @@

      Parameters
      topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
        -
      1. $ (N \times C \times ...) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
      2. +
      3. $ (N \times C \times ...) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
      propagate_downsee Layer::Backward.
      bottominput Blob vector (length 1)
        -
      1. $ (N \times C \times ...) $ the inputs $ x $; For each channel $i$, backward fills their diff with gradients $ \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. $. If param_propagate_down_[0] is true, it fills the diff with gradients $ \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. $.
      2. +
      3. $ (N \times C \times ...) $ the inputs $ x $; For each channel $i$, backward fills their diff with gradients $ \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. $. If param_propagate_down_[0] is true, it fills the diff with gradients $ \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. $.
      @@ -327,7 +327,7 @@

      -

      § Forward_cpu()

      +

      ◆ Forward_cpu()

      @@ -364,11 +364,11 @@

      Parameters
      bottominput Blob vector (length 1)
        -
      1. $ (N \times C \times ...) $ the inputs $ x $
      2. +
      3. $ (N \times C \times ...) $ the inputs $ x $
      topoutput Blob vector (length 1)
        -
      1. $ (N \times C \times ...) $ the computed outputs for each channel $i$ $ y_i = \max(0, x_i) + a_i \min(0, x_i) $.
      2. +
      3. $ (N \times C \times ...) $ the computed outputs for each channel $i$ $ y_i = \max(0, x_i) + a_i \min(0, x_i) $.
      @@ -380,7 +380,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -430,7 +430,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -486,9 +486,9 @@

      diff --git a/doxygen/classcaffe_1_1ParameterLayer-members.html b/doxygen/classcaffe_1_1ParameterLayer-members.html index 6828b0ff07d..ecfb758c69e 100644 --- a/doxygen/classcaffe_1_1ParameterLayer-members.html +++ b/doxygen/classcaffe_1_1ParameterLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -108,9 +108,9 @@
      diff --git a/doxygen/classcaffe_1_1ParameterLayer.html b/doxygen/classcaffe_1_1ParameterLayer.html index c816a10518b..14c82c96966 100644 --- a/doxygen/classcaffe_1_1ParameterLayer.html +++ b/doxygen/classcaffe_1_1ParameterLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::ParameterLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -75,7 +75,7 @@
      - + caffe::Layer< Dtype >
      @@ -202,7 +202,7 @@

      Member Function Documentation

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -234,7 +234,7 @@

      -

      § ExactNumTopBlobs()

      +

      ◆ ExactNumTopBlobs()

      @@ -266,7 +266,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -316,7 +316,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -371,9 +371,9 @@

      diff --git a/doxygen/classcaffe_1_1Params-members.html b/doxygen/classcaffe_1_1Params-members.html deleted file mode 100644 index 367cf4f9c1b..00000000000 --- a/doxygen/classcaffe_1_1Params-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -Caffe: Member List - - - - - - - - - -
      -
      - - - - - - -
      -
      Caffe -
      -
      -
      - - - - - - - - -
      -
      - - -
      - -
      - - -
      -
      -
      -
      caffe::Params< Dtype > Member List
      -
      -
      - -

      This is the complete list of members for caffe::Params< Dtype >, including all inherited members.

      - - - - - - - - - - -
      data() const (defined in caffe::Params< Dtype >)caffe::Params< Dtype >inline
      data_ (defined in caffe::Params< Dtype >)caffe::Params< Dtype >protected
      diff() const (defined in caffe::Params< Dtype >)caffe::Params< Dtype >inline
      diff_ (defined in caffe::Params< Dtype >)caffe::Params< Dtype >protected
      DISABLE_COPY_AND_ASSIGN(Params) (defined in caffe::Params< Dtype >)caffe::Params< Dtype >protected
      Params(shared_ptr< Solver< Dtype > > root_solver) (defined in caffe::Params< Dtype >)caffe::Params< Dtype >explicit
      size() const (defined in caffe::Params< Dtype >)caffe::Params< Dtype >inline
      size_ (defined in caffe::Params< Dtype >)caffe::Params< Dtype >protected
      ~Params() (defined in caffe::Params< Dtype >)caffe::Params< Dtype >inlinevirtual
      - - - - diff --git a/doxygen/classcaffe_1_1Params.html b/doxygen/classcaffe_1_1Params.html deleted file mode 100644 index e6adda148ea..00000000000 --- a/doxygen/classcaffe_1_1Params.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -Caffe: caffe::Params< Dtype > Class Template Reference - - - - - - - - - -
      -
      - - - - - - -
      -
      Caffe -
      -
      -
      - - - - - - - - -
      -
      - - -
      - -
      - - -
      -
      - -
      -
      caffe::Params< Dtype > Class Template Reference
      -
      -
      -
      -Inheritance diagram for caffe::Params< Dtype >:
      -
      -
      - - -caffe::GPUParams< Dtype > -caffe::P2PSync< Dtype > - -
      - - - - - - - - - - -

      -Public Member Functions

      Params (shared_ptr< Solver< Dtype > > root_solver)
       
      -size_t size () const
       
      -Dtype * data () const
       
      -Dtype * diff () const
       
      - - - -

      -Protected Member Functions

      DISABLE_COPY_AND_ASSIGN (Params)
       
      - - - - - - - -

      -Protected Attributes

      -const size_t size_
       
      -Dtype * data_
       
      -Dtype * diff_
       
      -
      The documentation for this class was generated from the following files: -
      - - - - diff --git a/doxygen/classcaffe_1_1Params.png b/doxygen/classcaffe_1_1Params.png deleted file mode 100644 index e263d2cb32f118809afea4abfded6e480426f9fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1072 zcmeAS@N?(olHy`uVBq!ia0vp^tAV(KgBeJ!=X<>wNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~@Aq_Z45?szJNMzFPYOJ){L>}x|DR~T zRhK1dOX=qMr+sAJZM*2erh^}aG5X(bE$BW^3K&xqfoXJcCW zY>w26AmQ2n%~tQ9BD>ml?Ynhy7xyLEu4w#Q)^KH&<=?`%>lf5cWMA@s_0{I}g1FVI zHNW(~zWS|k*YBdUvu)Od@A_(P%5Wv{cXsTT_F9Gq_Aj#f|0!j!&1ew*CAWI#0S5Ii zXQdc+EJ|Sg5Wa!w$Lot-!CskMj6Ytp8FZ>8?Y;Y~ac;-gJ}cfgK5H(rGt@bQ!T_pP zJA(0#=o*H9Twx6LtlACxVL=3!K53a=ez)k{&Da#rSxyJFJb@}bKV9!IUFtgNjK}x$ zzbfqJ-w%zRbZ+$-E9=q&Q64H+18=bTds?kGdTsT3+ey{MnOk!Yow_|?t4daEa`jz5 zuOQj(y)01^<=YY`rno2S-usq#M)%3?KYAxhpBe9&8*gA1CcSNA)c3xvdY3lNdb=i5 z{#v%MyB8!tU)-G{`&wvQ+6kHV*qZtA)!%2eZhQLc_N|S#lHa_0mGxx}yJ^9WABx$N zuB-$F>hxXPE|xDzf4x<+>3jtH*QnUDkKVrm1?$P8*{e;hKL7i^X~IfI&(bUZva>zuF~@;;^9D~7 z!Pjri_}{p!DZi4Lke<|Q$M8WKXE`u^OPlfU$J=ZT5x@hznJIQ8;{o5M|}?Y@#sf#*zC>6=TF*GyN3Ci*T)%| z*Iq}?-+%w>xu2q|J;Q1xHv1-=Jhy3nTI;Jlb@}GW*R6`~h2Lw~y02_a?B2CAw)#z1 zz7g&r{i|auulWMmjd~2K+xD8@_1>H`d;XzYEpH>%7MI&v-(r02$opn{af04C>uZT| z{d4u7lt!$V-z0Z6yY!~l->SX0>;jte?k?~ST`3%FW<8@;eg*GNtNKgqDleDsx?-;X zC;SKNwbv`+lm9Y&t*)H9Bt8)2yQa`de@fHOT0Xb@!ryQ1>iOcDVJk3uGkCiCxvX - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -122,9 +122,9 @@
      diff --git a/doxygen/classcaffe_1_1PoolingLayer.html b/doxygen/classcaffe_1_1PoolingLayer.html index 4e4080b00d6..f5342e892c1 100644 --- a/doxygen/classcaffe_1_1PoolingLayer.html +++ b/doxygen/classcaffe_1_1PoolingLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::PoolingLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -81,7 +81,7 @@
      - + caffe::Layer< Dtype >
      @@ -256,7 +256,7 @@

      TODO(dox): thorough documentation for Forward, Backward, and proto params.

      Member Function Documentation

      -

      § ExactNumBottomBlobs()

      +

      ◆ ExactNumBottomBlobs()

      @@ -288,7 +288,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -338,7 +338,7 @@

      -

      § MaxTopBlobs()

      +

      ◆ MaxTopBlobs()

      @@ -370,7 +370,7 @@

      -

      § MinTopBlobs()

      +

      ◆ MinTopBlobs()

      @@ -402,7 +402,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -458,9 +458,9 @@

      diff --git a/doxygen/classcaffe_1_1PositiveUnitballFiller-members.html b/doxygen/classcaffe_1_1PositiveUnitballFiller-members.html index 36917027f6b..53764755a1d 100644 --- a/doxygen/classcaffe_1_1PositiveUnitballFiller-members.html +++ b/doxygen/classcaffe_1_1PositiveUnitballFiller-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -77,9 +77,9 @@
      diff --git a/doxygen/classcaffe_1_1PositiveUnitballFiller.html b/doxygen/classcaffe_1_1PositiveUnitballFiller.html index 0a99b1cb5b2..f44703726ba 100644 --- a/doxygen/classcaffe_1_1PositiveUnitballFiller.html +++ b/doxygen/classcaffe_1_1PositiveUnitballFiller.html @@ -3,7 +3,7 @@ - + Caffe: caffe::PositiveUnitballFiller< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -70,7 +70,7 @@
      -

      Fills a Blob with values $ x \in [0, 1] $ such that $ \forall i \sum_j x_{ij} = 1 $. +

      Fills a Blob with values $ x \in [0, 1] $ such that $ \forall i \sum_j x_{ij} = 1 $. More...

      #include <filler.hpp>

      @@ -79,7 +79,7 @@
      - + caffe::Filler< Dtype >
      @@ -108,16 +108,16 @@

      template<typename Dtype>
      class caffe::PositiveUnitballFiller< Dtype >

      -

      Fills a Blob with values $ x \in [0, 1] $ such that $ \forall i \sum_j x_{ij} = 1 $.

      +

      Fills a Blob with values $ x \in [0, 1] $ such that $ \forall i \sum_j x_{ij} = 1 $.


      The documentation for this class was generated from the following file:
      diff --git a/doxygen/classcaffe_1_1PowerLayer-members.html b/doxygen/classcaffe_1_1PowerLayer-members.html index e0876380275..705bc3af0f6 100644 --- a/doxygen/classcaffe_1_1PowerLayer-members.html +++ b/doxygen/classcaffe_1_1PowerLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -113,9 +113,9 @@
      diff --git a/doxygen/classcaffe_1_1PowerLayer.html b/doxygen/classcaffe_1_1PowerLayer.html index 26473d93fec..7b1194d41ce 100644 --- a/doxygen/classcaffe_1_1PowerLayer.html +++ b/doxygen/classcaffe_1_1PowerLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::PowerLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -72,7 +72,7 @@
      -

      Computes $ y = (\alpha x + \beta) ^ \gamma $, as specified by the scale $ \alpha $, shift $ \beta $, and power $ \gamma $. +

      Computes $ y = (\alpha x + \beta) ^ \gamma $, as specified by the scale $ \alpha $, shift $ \beta $, and power $ \gamma $. More...

      #include <power_layer.hpp>

      @@ -81,7 +81,7 @@
      - + caffe::NeuronLayer< Dtype > caffe::Layer< Dtype > @@ -197,19 +197,19 @@ Protected Attributes

      Dtype power_$ \gamma $ from layer_param_.power_param()
      $ \gamma $ from layer_param_.power_param()
        Dtype scale_$ \alpha $ from layer_param_.power_param()
      $ \alpha $ from layer_param_.power_param()
        Dtype shift_$ \beta $ from layer_param_.power_param()
      $ \beta $ from layer_param_.power_param()
        Dtype diff_scale_ - Result of $ \alpha \gamma $.
      + Result of $ \alpha \gamma $.
        - Protected Attributes inherited from caffe::Layer< Dtype > LayerParameter layer_param_ @@ -227,10 +227,10 @@

      template<typename Dtype>
      class caffe::PowerLayer< Dtype >

      -

      Computes $ y = (\alpha x + \beta) ^ \gamma $, as specified by the scale $ \alpha $, shift $ \beta $, and power $ \gamma $.

      +

      Computes $ y = (\alpha x + \beta) ^ \gamma $, as specified by the scale $ \alpha $, shift $ \beta $, and power $ \gamma $.

      Constructor & Destructor Documentation

      -

      § PowerLayer()

      +

      ◆ PowerLayer()

      @@ -257,9 +257,9 @@

      Parameters
      paramprovides PowerParameter power_param, with PowerLayer options:
        -
      • scale (optional, default 1) the scale $ \alpha $
      • -
      • shift (optional, default 0) the shift $ \beta $
      • -
      • power (optional, default 1) the power $ \gamma $
      • +
      • scale (optional, default 1) the scale $ \alpha $
      • +
      • shift (optional, default 0) the shift $ \beta $
      • +
      • power (optional, default 1) the power $ \gamma $
      @@ -270,7 +270,7 @@

      Member Function Documentation

      -

      § Backward_cpu()

      +

      ◆ Backward_cpu()

      @@ -315,12 +315,12 @@

      Parameters
      topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
        -
      1. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
      2. +
      3. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
      propagate_downsee Layer::Backward.
      bottominput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \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} $ if propagate_down[0]
      2. +
      3. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \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} $ if propagate_down[0]
      @@ -332,7 +332,7 @@

      -

      § Forward_cpu()

      +

      ◆ Forward_cpu()

      @@ -369,11 +369,11 @@

      Parameters
      bottominput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the inputs $ x $
      2. +
      3. $ (N \times C \times H \times W) $ the inputs $ x $
      topoutput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the computed outputs $ y = (\alpha x + \beta) ^ \gamma $
      2. +
      3. $ (N \times C \times H \times W) $ the computed outputs $ y = (\alpha x + \beta) ^ \gamma $
      @@ -385,7 +385,7 @@

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -441,9 +441,9 @@

      diff --git a/doxygen/classcaffe_1_1PythonLayer-members.html b/doxygen/classcaffe_1_1PythonLayer-members.html index deb9f9190f6..018b3738abc 100644 --- a/doxygen/classcaffe_1_1PythonLayer-members.html +++ b/doxygen/classcaffe_1_1PythonLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -102,16 +102,15 @@ set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline - ShareInParallel() const (defined in caffe::PythonLayer< Dtype >)caffe::PythonLayer< Dtype >inlinevirtual - ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual - type() constcaffe::PythonLayer< Dtype >inlinevirtual - ~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual + ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual + type() constcaffe::PythonLayer< Dtype >inlinevirtual + ~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual
      diff --git a/doxygen/classcaffe_1_1PythonLayer.html b/doxygen/classcaffe_1_1PythonLayer.html index 2f11b5b6cc9..7cfbd996bda 100644 --- a/doxygen/classcaffe_1_1PythonLayer.html +++ b/doxygen/classcaffe_1_1PythonLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::PythonLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -75,7 +75,7 @@
      - + caffe::Layer< Dtype >
      @@ -91,9 +91,6 @@ virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)  Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
        - -virtual bool ShareInParallel () const -  virtual const char * type () const  Returns the layer type.
      @@ -205,7 +202,7 @@

      Member Function Documentation

      -

      § LayerSetUp()

      +

      ◆ LayerSetUp()

      @@ -255,7 +252,7 @@

      -

      § Reshape()

      +

      ◆ Reshape()

      @@ -310,9 +307,9 @@

      diff --git a/doxygen/classcaffe_1_1RMSPropSolver-members.html b/doxygen/classcaffe_1_1RMSPropSolver-members.html index a587daba027..3a3dd1396b1 100644 --- a/doxygen/classcaffe_1_1RMSPropSolver-members.html +++ b/doxygen/classcaffe_1_1RMSPropSolver-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -136,9 +136,9 @@
      diff --git a/doxygen/classcaffe_1_1RMSPropSolver.html b/doxygen/classcaffe_1_1RMSPropSolver.html index 20b2ed2029a..4cc1e974dc3 100644 --- a/doxygen/classcaffe_1_1RMSPropSolver.html +++ b/doxygen/classcaffe_1_1RMSPropSolver.html @@ -3,7 +3,7 @@ - + Caffe: caffe::RMSPropSolver< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -75,7 +75,7 @@
      - + caffe::SGDSolver< Dtype > caffe::Solver< Dtype > @@ -293,9 +293,9 @@
      diff --git a/doxygen/classcaffe_1_1RNNLayer-members.html b/doxygen/classcaffe_1_1RNNLayer-members.html index 04075ab4cb8..4378c16477f 100644 --- a/doxygen/classcaffe_1_1RNNLayer-members.html +++ b/doxygen/classcaffe_1_1RNNLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@
      - + @@ -127,9 +127,9 @@
      diff --git a/doxygen/classcaffe_1_1RNNLayer.html b/doxygen/classcaffe_1_1RNNLayer.html index 6ec75071473..d43c0837ebd 100644 --- a/doxygen/classcaffe_1_1RNNLayer.html +++ b/doxygen/classcaffe_1_1RNNLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::RNNLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@
      - + @@ -80,7 +80,7 @@
      - + caffe::RecurrentLayer< Dtype > caffe::Layer< Dtype > @@ -280,7 +280,7 @@ class caffe::RNNLayer< Dtype >

      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 $ x_t $, computes hidden state $ h_t := \tanh[ W_{hh} h_{t_1} + W_{xh} x_t + b_h ] $, and outputs $ o_t := \tanh[ W_{ho} h_t + b_o ] $.

      +

      Given time-varying inputs $ x_t $, computes hidden state $ h_t := \tanh[ W_{hh} h_{t_1} + W_{xh} x_t + b_h ] $, and outputs $ o_t := \tanh[ W_{ho} h_t + b_o ] $.


      The documentation for this class was generated from the following files:
      • include/caffe/layers/rnn_layer.hpp
      • src/caffe/layers/rnn_layer.cpp
      • @@ -288,9 +288,9 @@
      diff --git a/doxygen/classcaffe_1_1ReLULayer-members.html b/doxygen/classcaffe_1_1ReLULayer-members.html index 824464b76e8..ab3bc959765 100644 --- a/doxygen/classcaffe_1_1ReLULayer-members.html +++ b/doxygen/classcaffe_1_1ReLULayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -109,9 +109,9 @@
      diff --git a/doxygen/classcaffe_1_1ReLULayer.html b/doxygen/classcaffe_1_1ReLULayer.html index 761cc87d1be..6d86acac89e 100644 --- a/doxygen/classcaffe_1_1ReLULayer.html +++ b/doxygen/classcaffe_1_1ReLULayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::ReLULayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@
      - + @@ -71,7 +71,7 @@
      -

      Rectified Linear Unit non-linearity $ y = \max(0, x) $. The simple max is fast to compute, and the function does not saturate. +

      Rectified Linear Unit non-linearity $ y = \max(0, x) $. The simple max is fast to compute, and the function does not saturate. More...

      #include <relu_layer.hpp>

      @@ -80,7 +80,7 @@
      - + caffe::NeuronLayer< Dtype > caffe::Layer< Dtype > @@ -210,10 +210,10 @@

      template<typename Dtype>
      class caffe::ReLULayer< Dtype >

      -

      Rectified Linear Unit non-linearity $ y = \max(0, x) $. The simple max is fast to compute, and the function does not saturate.

      +

      Rectified Linear Unit non-linearity $ y = \max(0, x) $. The simple max is fast to compute, and the function does not saturate.

      Constructor & Destructor Documentation

      -

      § ReLULayer()

      +

      ◆ ReLULayer()

      @@ -240,7 +240,7 @@

      Parameters
      paramprovides ReLUParameter relu_param, with ReLULayer options:
        -
      • negative_slope (optional, default 0). the value $ \nu $ by which negative values are multiplied.
      • +
      • negative_slope (optional, default 0). the value $ \nu $ by which negative values are multiplied.
      @@ -251,7 +251,7 @@

      Member Function Documentation

      -

      § Backward_cpu()

      +

      ◆ Backward_cpu()

      @@ -296,12 +296,12 @@

      Parameters
      topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
        -
      1. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
      2. +
      3. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
      propagate_downsee Layer::Backward.
      bottominput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \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. $ if propagate_down[0], by default. If a non-zero negative_slope $ \nu $ is provided, the computed gradients are $ \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. $.
      2. +
      3. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \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. $ if propagate_down[0], by default. If a non-zero negative_slope $ \nu $ is provided, the computed gradients are $ \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. $.
      @@ -313,7 +313,7 @@

      -

      § Forward_cpu()

      +

      ◆ Forward_cpu()

      @@ -350,11 +350,11 @@

      Parameters
      bottominput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the inputs $ x $
      2. +
      3. $ (N \times C \times H \times W) $ the inputs $ x $
      topoutput Blob vector (length 1)
        -
      1. $ (N \times C \times H \times W) $ the computed outputs $ y = \max(0, x) $ by default. If a non-zero negative_slope $ \nu $ is provided, the computed outputs are $ y = \max(0, x) + \nu \min(0, x) $.
      2. +
      3. $ (N \times C \times H \times W) $ the computed outputs $ y = \max(0, x) $ by default. If a non-zero negative_slope $ \nu $ is provided, the computed outputs are $ y = \max(0, x) + \nu \min(0, x) $.
      @@ -372,9 +372,9 @@

      diff --git a/doxygen/classcaffe_1_1RecurrentLayer-members.html b/doxygen/classcaffe_1_1RecurrentLayer-members.html index 64bdfc5f852..a8d243e859e 100644 --- a/doxygen/classcaffe_1_1RecurrentLayer-members.html +++ b/doxygen/classcaffe_1_1RecurrentLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

      - + @@ -126,9 +126,9 @@
      diff --git a/doxygen/classcaffe_1_1RecurrentLayer.html b/doxygen/classcaffe_1_1RecurrentLayer.html index 1767e94b7e5..77ae559f828 100644 --- a/doxygen/classcaffe_1_1RecurrentLayer.html +++ b/doxygen/classcaffe_1_1RecurrentLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::RecurrentLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

      - + @@ -81,7 +81,7 @@
      - + caffe::Layer< Dtype > caffe::LSTMLayer< Dtype > caffe::RNNLayer< Dtype > @@ -278,7 +278,7 @@

      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.

      Member Function Documentation

      -

      § AllowForceBackward()

      +

      ◆ AllowForceBackward()

      @@ -311,7 +311,7 @@

      -

      § ExactNumTopBlobs()

      +

      ◆ ExactNumTopBlobs()

      @@ -343,7 +343,7 @@

      -

      § Forward_cpu()

      +

      ◆ Forward_cpu()

      @@ -384,14 +384,14 @@

      -
    5. $ (T \times N \times ...) $ the time-varying input $ x $. After the first two axes, whose dimensions must correspond to the number of timesteps $ T $ and the number of independent streams $ N $, respectively, its dimensions may be arbitrary. Note that the ordering of dimensions – $ (T \times N \times ...) $, rather than $ (N \times T \times ...) $ – means that the $ N $ independent input streams must be "interleaved".
    6. -
    7. $ (T \times N) $ the sequence continuation indicators $ \delta $. These inputs should be binary (0 or 1) indicators, where $ \delta_{t,n} = 0 $ means that timestep $ t $ of stream $ n $ is the beginning of a new sequence, and hence the previous hidden state $ h_{t-1} $ is multiplied by $ \delta_t = 0 $ and has no effect on the cell's output at timestep $ t $, and a value of $ \delta_{t,n} = 1 $ means that timestep $ t $ of stream $ n $ is a continuation from the previous timestep $ t-1 $, and the previous hidden state $ h_{t-1} $ affects the updated hidden state and output.
    8. -
    9. $ (N \times ...) $ (optional) the static (non-time-varying) input $ x_{static} $. 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 $ x'_t = [x_t; x_{static}] $ – i.e., tiling the static input across the $ T $ 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 $ N $ 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.
    10. +
    11. $ (T \times N \times ...) $ the time-varying input $ x $. After the first two axes, whose dimensions must correspond to the number of timesteps $ T $ and the number of independent streams $ N $, respectively, its dimensions may be arbitrary. Note that the ordering of dimensions – $ (T \times N \times ...) $, rather than $ (N \times T \times ...) $ – means that the $ N $ independent input streams must be "interleaved".
    12. +
    13. $ (T \times N) $ the sequence continuation indicators $ \delta $. These inputs should be binary (0 or 1) indicators, where $ \delta_{t,n} = 0 $ means that timestep $ t $ of stream $ n $ is the beginning of a new sequence, and hence the previous hidden state $ h_{t-1} $ is multiplied by $ \delta_t = 0 $ and has no effect on the cell's output at timestep $ t $, and a value of $ \delta_{t,n} = 1 $ means that timestep $ t $ of stream $ n $ is a continuation from the previous timestep $ t-1 $, and the previous hidden state $ h_{t-1} $ affects the updated hidden state and output.
    14. +
    15. $ (N \times ...) $ (optional) the static (non-time-varying) input $ x_{static} $. 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 $ x'_t = [x_t; x_{static}] $ – i.e., tiling the static input across the $ T $ 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 $ N $ 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.
    16. +
      +

      Caffe

      +

      + Deep learning framework by the BVLC +

      +

      + Created by +
      + Yangqing Jia +
      + Lead Developer +
      + Evan Shelhamer +

      +
      +
      + +

      Forward and Backward

      + +

      The forward and backward passes are the essential computations of a Net.

      + +

      Forward and Backward

      + +

      Let’s consider a simple logistic regression classifier.

      + +

      The forward pass computes the output given the input for inference. +In forward Caffe composes the computation of each layer to compute the “function” represented by the model. +This pass goes from bottom to top.

      + +

      Forward pass

      + +

      The data is passed through an inner product layer for then through a softmax for and softmax loss to give .

      + +

      The backward pass computes the gradient given the loss for learning. +In backward Caffe reverse-composes the gradient of each layer to compute the gradient of the whole model by automatic differentiation. +This is back-propagation. +This pass goes from top to bottom.

      + +

      Backward pass

      + +

      The backward pass begins with the loss and computes the gradient with respect to the output . The gradient with respect to the rest of the model is computed layer-by-layer through the chain rule. Layers with parameters, like the INNER_PRODUCT layer, compute the gradient with respect to their parameters during the backward step.

      + +

      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.
      • +
      + +

      The Solver 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.

      + +

      For the details of the forward and backward steps of Caffe’s layer types, refer to the layer catalogue.

      + + + +
      +
    Parameters
    topoutput Blob vector (length 1)
      -
    1. $ (T \times N \times D) $ the time-varying output $ y $, where $ D $ is recurrent_param.num_output(). Refer to documentation for particular RecurrentLayer implementations (such as RNNLayer and LSTMLayer) for the definition of $ y $.
    2. +
    3. $ (T \times N \times D) $ the time-varying output $ y $, where $ D $ is recurrent_param.num_output(). Refer to documentation for particular RecurrentLayer implementations (such as RNNLayer and LSTMLayer) for the definition of $ y $.
    @@ -403,7 +403,7 @@

    -

    § LayerSetUp()

    +

    ◆ LayerSetUp()

    @@ -453,7 +453,7 @@

    -

    § MaxBottomBlobs()

    +

    ◆ MaxBottomBlobs()

    @@ -485,7 +485,7 @@

    -

    § MinBottomBlobs()

    +

    ◆ MinBottomBlobs()

    @@ -517,7 +517,7 @@

    -

    § Reshape()

    +

    ◆ Reshape()

    @@ -574,9 +574,9 @@

    diff --git a/doxygen/classcaffe_1_1ReductionLayer-members.html b/doxygen/classcaffe_1_1ReductionLayer-members.html index 16f8d06c773..c4d9086abf8 100644 --- a/doxygen/classcaffe_1_1ReductionLayer-members.html +++ b/doxygen/classcaffe_1_1ReductionLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

    - + @@ -114,9 +114,9 @@
    diff --git a/doxygen/classcaffe_1_1ReductionLayer.html b/doxygen/classcaffe_1_1ReductionLayer.html index e98a4c547e1..da0ce31ac9a 100644 --- a/doxygen/classcaffe_1_1ReductionLayer.html +++ b/doxygen/classcaffe_1_1ReductionLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::ReductionLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

    - + @@ -81,7 +81,7 @@
    - + caffe::Layer< Dtype >
    @@ -238,7 +238,7 @@

    TODO(dox): thorough documentation for Forward, Backward, and proto params.

    Member Function Documentation

    -

    § ExactNumBottomBlobs()

    +

    ◆ ExactNumBottomBlobs()

    @@ -270,7 +270,7 @@

    -

    § ExactNumTopBlobs()

    +

    ◆ ExactNumTopBlobs()

    @@ -302,7 +302,7 @@

    -

    § LayerSetUp()

    +

    ◆ LayerSetUp()

    @@ -352,7 +352,7 @@

    -

    § Reshape()

    +

    ◆ Reshape()

    @@ -408,9 +408,9 @@

    diff --git a/doxygen/classcaffe_1_1ReshapeLayer-members.html b/doxygen/classcaffe_1_1ReshapeLayer-members.html index be7ec2b282d..c6080d02b5f 100644 --- a/doxygen/classcaffe_1_1ReshapeLayer-members.html +++ b/doxygen/classcaffe_1_1ReshapeLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

    - + @@ -111,9 +111,9 @@
    diff --git a/doxygen/classcaffe_1_1ReshapeLayer.html b/doxygen/classcaffe_1_1ReshapeLayer.html index fd1ed619e7a..406dd83ccf2 100644 --- a/doxygen/classcaffe_1_1ReshapeLayer.html +++ b/doxygen/classcaffe_1_1ReshapeLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::ReshapeLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

    - + @@ -76,7 +76,7 @@
    - + caffe::Layer< Dtype >
    @@ -215,7 +215,7 @@

    Member Function Documentation

    -

    § ExactNumBottomBlobs()

    +

    ◆ ExactNumBottomBlobs()

    @@ -247,7 +247,7 @@

    -

    § ExactNumTopBlobs()

    +

    ◆ ExactNumTopBlobs()

    @@ -279,7 +279,7 @@

    -

    § LayerSetUp()

    +

    ◆ LayerSetUp()

    @@ -329,7 +329,7 @@

    -

    § Reshape()

    +

    ◆ Reshape()

    @@ -385,9 +385,9 @@

    diff --git a/doxygen/classcaffe_1_1SGDSolver-members.html b/doxygen/classcaffe_1_1SGDSolver-members.html index 9a5131e1b4a..0a20042dff6 100644 --- a/doxygen/classcaffe_1_1SGDSolver-members.html +++ b/doxygen/classcaffe_1_1SGDSolver-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

    - + @@ -132,9 +132,9 @@
    diff --git a/doxygen/classcaffe_1_1SGDSolver.html b/doxygen/classcaffe_1_1SGDSolver.html index 328c7f02b55..79bbf7f9f4f 100644 --- a/doxygen/classcaffe_1_1SGDSolver.html +++ b/doxygen/classcaffe_1_1SGDSolver.html @@ -3,7 +3,7 @@ - + Caffe: caffe::SGDSolver< Dtype > Class Template Reference @@ -29,7 +29,7 @@

    - + @@ -81,7 +81,7 @@
    - + caffe::Solver< Dtype > caffe::AdaDeltaSolver< Dtype > caffe::AdaGradSolver< Dtype > @@ -293,9 +293,9 @@
    diff --git a/doxygen/classcaffe_1_1SPPLayer-members.html b/doxygen/classcaffe_1_1SPPLayer-members.html index b99cbf7b093..041b22e1792 100644 --- a/doxygen/classcaffe_1_1SPPLayer-members.html +++ b/doxygen/classcaffe_1_1SPPLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@
    - + @@ -130,9 +130,9 @@
    diff --git a/doxygen/classcaffe_1_1SPPLayer.html b/doxygen/classcaffe_1_1SPPLayer.html index 75cae0921f8..9638e621cce 100644 --- a/doxygen/classcaffe_1_1SPPLayer.html +++ b/doxygen/classcaffe_1_1SPPLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::SPPLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

    - + @@ -81,7 +81,7 @@
    - + caffe::Layer< Dtype >
    @@ -290,7 +290,7 @@

    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.

    Member Function Documentation

    -

    § ExactNumBottomBlobs()

    +

    ◆ ExactNumBottomBlobs()

    @@ -322,7 +322,7 @@

    -

    § ExactNumTopBlobs()

    +

    ◆ ExactNumTopBlobs()

    @@ -354,7 +354,7 @@

    -

    § LayerSetUp()

    +

    ◆ LayerSetUp()

    @@ -404,7 +404,7 @@

    -

    § Reshape()

    +

    ◆ Reshape()

    @@ -460,9 +460,9 @@

    diff --git a/doxygen/classcaffe_1_1ScaleLayer-members.html b/doxygen/classcaffe_1_1ScaleLayer-members.html index fe8d018b1b5..dda9c9113fd 100644 --- a/doxygen/classcaffe_1_1ScaleLayer-members.html +++ b/doxygen/classcaffe_1_1ScaleLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

    - + @@ -119,9 +119,9 @@
    diff --git a/doxygen/classcaffe_1_1ScaleLayer.html b/doxygen/classcaffe_1_1ScaleLayer.html index bae8011c691..1a763fd631f 100644 --- a/doxygen/classcaffe_1_1ScaleLayer.html +++ b/doxygen/classcaffe_1_1ScaleLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::ScaleLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

    - + @@ -81,7 +81,7 @@
    - + caffe::Layer< Dtype >
    @@ -245,7 +245,7 @@

    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).

    Member Function Documentation

    -

    § ExactNumTopBlobs()

    +

    ◆ ExactNumTopBlobs()

    @@ -277,7 +277,7 @@

    -

    § Forward_cpu()

    +

    ◆ Forward_cpu()

    @@ -311,16 +311,16 @@

    -

    In the below shape specifications, $ i $ 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).

    +

    In the below shape specifications, $ i $ 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).

    Parameters
    bottominput Blob vector (length 2)
      -
    1. $ (d_0 \times ... \times d_i \times ... \times d_j \times ... \times d_n) $ the first factor $ x $
    2. -
    3. $ (d_i \times ... \times d_j) $ the second factor $ y $
    4. +
    5. $ (d_0 \times ... \times d_i \times ... \times d_j \times ... \times d_n) $ the first factor $ x $
    6. +
    7. $ (d_i \times ... \times d_j) $ the second factor $ y $
    topoutput Blob vector (length 1)
      -
    1. $ (d_0 \times ... \times d_i \times ... \times d_j \times ... \times d_n) $ the product $ z = x y $ computed after "broadcasting" y. Equivalent to tiling $ y $ to have the same shape as $ x $, then computing the elementwise product.
    2. +
    3. $ (d_0 \times ... \times d_i \times ... \times d_j \times ... \times d_n) $ the product $ z = x y $ computed after "broadcasting" y. Equivalent to tiling $ y $ to have the same shape as $ x $, then computing the elementwise product.
    @@ -332,7 +332,7 @@

    -

    § LayerSetUp()

    +

    ◆ LayerSetUp()

    @@ -382,7 +382,7 @@

    -

    § MaxBottomBlobs()

    +

    ◆ MaxBottomBlobs()

    @@ -414,7 +414,7 @@

    -

    § MinBottomBlobs()

    +

    ◆ MinBottomBlobs()

    @@ -446,7 +446,7 @@

    -

    § Reshape()

    +

    ◆ Reshape()

    @@ -502,9 +502,9 @@

    diff --git a/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer-members.html b/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer-members.html index 35484bcf311..0aca893b194 100644 --- a/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer-members.html +++ b/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

    - + @@ -120,9 +120,9 @@
    diff --git a/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer.html b/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer.html index 2fcae43e615..81565291f5c 100644 --- a/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer.html +++ b/doxygen/classcaffe_1_1SigmoidCrossEntropyLossLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::SigmoidCrossEntropyLossLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

    - + @@ -72,7 +72,7 @@
    -

    Computes the cross-entropy (logistic) loss $ 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] $, often used for predicting targets interpreted as probabilities. +

    Computes the cross-entropy (logistic) loss $ 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] $, often used for predicting targets interpreted as probabilities. More...

    #include <sigmoid_cross_entropy_loss_layer.hpp>

    @@ -81,7 +81,7 @@
    - + caffe::LossLayer< Dtype > caffe::Layer< Dtype > @@ -176,7 +176,7 @@

    Protected Member Functions

    virtual void Forward_cpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top) - Computes the cross-entropy (logistic) loss $ 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] $, often used for predicting targets interpreted as probabilities. More...
    + Computes the cross-entropy (logistic) loss $ 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] $, often used for predicting targets interpreted as probabilities. More...
      virtual void Forward_gpu (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top) @@ -252,17 +252,17 @@

    template<typename Dtype>
    class caffe::SigmoidCrossEntropyLossLayer< Dtype >

    -

    Computes the cross-entropy (logistic) loss $ 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] $, often used for predicting targets interpreted as probabilities.

    +

    Computes the cross-entropy (logistic) loss $ 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] $, 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.

    Parameters
    bottominput Blob vector (length 2)
      -
    1. $ (N \times C \times H \times W) $ the scores $ x \in [-\infty, +\infty]$, which this layer maps to probability predictions $ \hat{p}_n = \sigma(x_n) \in [0, 1] $ using the sigmoid function $ \sigma(.) $ (see SigmoidLayer).
    2. -
    3. $ (N \times C \times H \times W) $ the targets $ y \in [0, 1] $
    4. +
    5. $ (N \times C \times H \times W) $ the scores $ x \in [-\infty, +\infty]$, which this layer maps to probability predictions $ \hat{p}_n = \sigma(x_n) \in [0, 1] $ using the sigmoid function $ \sigma(.) $ (see SigmoidLayer).
    6. +
    7. $ (N \times C \times H \times W) $ the targets $ y \in [0, 1] $
    topoutput Blob vector (length 1)
      -
    1. $ (1 \times 1 \times 1 \times 1) $ the computed cross-entropy loss: $ 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] $
    2. +
    3. $ (1 \times 1 \times 1 \times 1) $ the computed cross-entropy loss: $ 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] $
    @@ -270,7 +270,7 @@

    Member Function Documentation

    -

    § Backward_cpu()

    +

    ◆ Backward_cpu()

    @@ -316,13 +316,13 @@

    Parameters
    topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
      -
    1. $ (1 \times 1 \times 1 \times 1) $ This Blob's diff will simply contain the loss_weight* $ \lambda $, as $ \lambda $ is the coefficient of this layer's output $\ell_i$ in the overall Net loss $ E = \lambda_i \ell_i + \mbox{other loss terms}$; hence $ \frac{\partial E}{\partial \ell_i} = \lambda_i $. (*Assuming that this top Blob is not used as a bottom (input) by any other layer of the Net.)
    2. +
    3. $ (1 \times 1 \times 1 \times 1) $ This Blob's diff will simply contain the loss_weight* $ \lambda $, as $ \lambda $ is the coefficient of this layer's output $\ell_i$ in the overall Net loss $ E = \lambda_i \ell_i + \mbox{other loss terms}$; hence $ \frac{\partial E}{\partial \ell_i} = \lambda_i $. (*Assuming that this top Blob is not used as a bottom (input) by any other layer of the Net.)
    propagate_downsee Layer::Backward. propagate_down[1] must be false as gradient computation with respect to the targets is not implemented.
    bottominput Blob vector (length 2)
      -
    1. $ (N \times C \times H \times W) $ the predictions $x$; Backward computes diff $ \frac{\partial E}{\partial x} = \frac{1}{n} \sum\limits_{n=1}^N (\hat{p}_n - p_n) $
    2. -
    3. $ (N \times 1 \times 1 \times 1) $ the labels – ignored as we can't compute their error gradients
    4. +
    5. $ (N \times C \times H \times W) $ the predictions $x$; Backward computes diff $ \frac{\partial E}{\partial x} = \frac{1}{n} \sum\limits_{n=1}^N (\hat{p}_n - p_n) $
    6. +
    7. $ (N \times 1 \times 1 \times 1) $ the labels – ignored as we can't compute their error gradients
    @@ -334,7 +334,7 @@

    -

    § Forward_cpu()

    +

    ◆ Forward_cpu()

    @@ -369,17 +369,17 @@

    -

    Computes the cross-entropy (logistic) loss $ 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] $, often used for predicting targets interpreted as probabilities.

    +

    Computes the cross-entropy (logistic) loss $ 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] $, 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.

    Parameters
    bottominput Blob vector (length 2)
      -
    1. $ (N \times C \times H \times W) $ the scores $ x \in [-\infty, +\infty]$, which this layer maps to probability predictions $ \hat{p}_n = \sigma(x_n) \in [0, 1] $ using the sigmoid function $ \sigma(.) $ (see SigmoidLayer).
    2. -
    3. $ (N \times C \times H \times W) $ the targets $ y \in [0, 1] $
    4. +
    5. $ (N \times C \times H \times W) $ the scores $ x \in [-\infty, +\infty]$, which this layer maps to probability predictions $ \hat{p}_n = \sigma(x_n) \in [0, 1] $ using the sigmoid function $ \sigma(.) $ (see SigmoidLayer).
    6. +
    7. $ (N \times C \times H \times W) $ the targets $ y \in [0, 1] $
    topoutput Blob vector (length 1)
      -
    1. $ (1 \times 1 \times 1 \times 1) $ the computed cross-entropy loss: $ 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] $
    2. +
    3. $ (1 \times 1 \times 1 \times 1) $ the computed cross-entropy loss: $ 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] $
    @@ -391,7 +391,7 @@

    -

    § get_normalizer()

    +

    ◆ get_normalizer()

    @@ -430,7 +430,7 @@

    -

    § LayerSetUp()

    +

    ◆ LayerSetUp()

    @@ -480,7 +480,7 @@

    -

    § Reshape()

    +

    ◆ Reshape()

    @@ -536,9 +536,9 @@

    diff --git a/doxygen/classcaffe_1_1SigmoidLayer-members.html b/doxygen/classcaffe_1_1SigmoidLayer-members.html index 1cab19ac40e..65033e36001 100644 --- a/doxygen/classcaffe_1_1SigmoidLayer-members.html +++ b/doxygen/classcaffe_1_1SigmoidLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

    - + @@ -109,9 +109,9 @@
    diff --git a/doxygen/classcaffe_1_1SigmoidLayer.html b/doxygen/classcaffe_1_1SigmoidLayer.html index 1a6f95a86f1..3c91d73385f 100644 --- a/doxygen/classcaffe_1_1SigmoidLayer.html +++ b/doxygen/classcaffe_1_1SigmoidLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::SigmoidLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

    - + @@ -71,7 +71,7 @@
    -

    Sigmoid function non-linearity $ y = (1 + \exp(-x))^{-1} $, a classic choice in neural networks. +

    Sigmoid function non-linearity $ y = (1 + \exp(-x))^{-1} $, a classic choice in neural networks. More...

    #include <sigmoid_layer.hpp>

    @@ -80,7 +80,7 @@
    - + caffe::NeuronLayer< Dtype > caffe::Layer< Dtype > @@ -211,11 +211,11 @@

    template<typename Dtype>
    class caffe::SigmoidLayer< Dtype >

    -

    Sigmoid function non-linearity $ y = (1 + \exp(-x))^{-1} $, a classic choice in neural networks.

    +

    Sigmoid function non-linearity $ y = (1 + \exp(-x))^{-1} $, 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.

    Member Function Documentation

    -

    § Backward_cpu()

    +

    ◆ Backward_cpu()

    @@ -260,12 +260,12 @@

    Parameters
    topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
      -
    1. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
    2. +
    3. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
    propagate_downsee Layer::Backward.
    bottominput Blob vector (length 1)
      -
    1. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \frac{\partial E}{\partial x} = \frac{\partial E}{\partial y} y (1 - y) $ if propagate_down[0]
    2. +
    3. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \frac{\partial E}{\partial x} = \frac{\partial E}{\partial y} y (1 - y) $ if propagate_down[0]
    @@ -277,7 +277,7 @@

    -

    § Forward_cpu()

    +

    ◆ Forward_cpu()

    @@ -314,11 +314,11 @@

    Parameters
    bottominput Blob vector (length 1)
      -
    1. $ (N \times C \times H \times W) $ the inputs $ x $
    2. +
    3. $ (N \times C \times H \times W) $ the inputs $ x $
    topoutput Blob vector (length 1)
      -
    1. $ (N \times C \times H \times W) $ the computed outputs $ y = (1 + \exp(-x))^{-1} $
    2. +
    3. $ (N \times C \times H \times W) $ the computed outputs $ y = (1 + \exp(-x))^{-1} $
    @@ -336,9 +336,9 @@

    diff --git a/doxygen/classcaffe_1_1SignalHandler-members.html b/doxygen/classcaffe_1_1SignalHandler-members.html index be6bcbbb1eb..c21b06c61a5 100644 --- a/doxygen/classcaffe_1_1SignalHandler-members.html +++ b/doxygen/classcaffe_1_1SignalHandler-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

    - + @@ -75,9 +75,9 @@
    diff --git a/doxygen/classcaffe_1_1SignalHandler.html b/doxygen/classcaffe_1_1SignalHandler.html index b69ef0c21c3..f25e6965685 100644 --- a/doxygen/classcaffe_1_1SignalHandler.html +++ b/doxygen/classcaffe_1_1SignalHandler.html @@ -3,7 +3,7 @@ - + Caffe: caffe::SignalHandler Class Reference @@ -29,7 +29,7 @@

    - + @@ -86,9 +86,9 @@
    diff --git a/doxygen/classcaffe_1_1SilenceLayer-members.html b/doxygen/classcaffe_1_1SilenceLayer-members.html index ea46ffb1c13..b6051fe3846 100644 --- a/doxygen/classcaffe_1_1SilenceLayer-members.html +++ b/doxygen/classcaffe_1_1SilenceLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@
    - + @@ -108,9 +108,9 @@
    diff --git a/doxygen/classcaffe_1_1SilenceLayer.html b/doxygen/classcaffe_1_1SilenceLayer.html index c7e449b623f..d40ad1b3172 100644 --- a/doxygen/classcaffe_1_1SilenceLayer.html +++ b/doxygen/classcaffe_1_1SilenceLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::SilenceLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@
    - + @@ -80,7 +80,7 @@
    - + caffe::Layer< Dtype >
    @@ -212,7 +212,7 @@

    Ignores bottom blobs while producing no top blobs. (This is useful to suppress outputs during testing.)

    Member Function Documentation

    -

    § ExactNumTopBlobs()

    +

    ◆ ExactNumTopBlobs()

    @@ -244,7 +244,7 @@

    -

    § MinBottomBlobs()

    +

    ◆ MinBottomBlobs()

    @@ -276,7 +276,7 @@

    -

    § Reshape()

    +

    ◆ Reshape()

    @@ -332,9 +332,9 @@

    diff --git a/doxygen/classcaffe_1_1SliceLayer-members.html b/doxygen/classcaffe_1_1SliceLayer-members.html index c11415f9f8c..2869a455a6e 100644 --- a/doxygen/classcaffe_1_1SliceLayer-members.html +++ b/doxygen/classcaffe_1_1SliceLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

    - + @@ -113,9 +113,9 @@
    diff --git a/doxygen/classcaffe_1_1SliceLayer.html b/doxygen/classcaffe_1_1SliceLayer.html index cb794310594..b3ea764e3b2 100644 --- a/doxygen/classcaffe_1_1SliceLayer.html +++ b/doxygen/classcaffe_1_1SliceLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::SliceLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

    - + @@ -81,7 +81,7 @@
    - + caffe::Layer< Dtype >
    @@ -229,7 +229,7 @@

    TODO(dox): thorough documentation for Forward, Backward, and proto params.

    Member Function Documentation

    -

    § ExactNumBottomBlobs()

    +

    ◆ ExactNumBottomBlobs()

    @@ -261,7 +261,7 @@

    -

    § LayerSetUp()

    +

    ◆ LayerSetUp()

    @@ -311,7 +311,7 @@

    -

    § MinTopBlobs()

    +

    ◆ MinTopBlobs()

    @@ -343,7 +343,7 @@

    -

    § Reshape()

    +

    ◆ Reshape()

    @@ -399,9 +399,9 @@

    diff --git a/doxygen/classcaffe_1_1SoftmaxLayer-members.html b/doxygen/classcaffe_1_1SoftmaxLayer-members.html index d9b551e9738..0699681bb7c 100644 --- a/doxygen/classcaffe_1_1SoftmaxLayer-members.html +++ b/doxygen/classcaffe_1_1SoftmaxLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

    - + @@ -113,9 +113,9 @@
    diff --git a/doxygen/classcaffe_1_1SoftmaxLayer.html b/doxygen/classcaffe_1_1SoftmaxLayer.html index 57112e7273d..d11ad4afeca 100644 --- a/doxygen/classcaffe_1_1SoftmaxLayer.html +++ b/doxygen/classcaffe_1_1SoftmaxLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::SoftmaxLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

    - + @@ -81,7 +81,7 @@
    - + caffe::Layer< Dtype >
    @@ -231,7 +231,7 @@

    TODO(dox): thorough documentation for Forward, Backward, and proto params.

    Member Function Documentation

    -

    § ExactNumBottomBlobs()

    +

    ◆ ExactNumBottomBlobs()

    @@ -263,7 +263,7 @@

    -

    § ExactNumTopBlobs()

    +

    ◆ ExactNumTopBlobs()

    @@ -295,7 +295,7 @@

    -

    § Reshape()

    +

    ◆ Reshape()

    @@ -351,9 +351,9 @@

    diff --git a/doxygen/classcaffe_1_1SoftmaxWithLossLayer-members.html b/doxygen/classcaffe_1_1SoftmaxWithLossLayer-members.html index d8fdb67fbee..88645473e89 100644 --- a/doxygen/classcaffe_1_1SoftmaxWithLossLayer-members.html +++ b/doxygen/classcaffe_1_1SoftmaxWithLossLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

    - + @@ -120,9 +120,9 @@
    diff --git a/doxygen/classcaffe_1_1SoftmaxWithLossLayer.html b/doxygen/classcaffe_1_1SoftmaxWithLossLayer.html index 651cb990630..3c469d8f65e 100644 --- a/doxygen/classcaffe_1_1SoftmaxWithLossLayer.html +++ b/doxygen/classcaffe_1_1SoftmaxWithLossLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::SoftmaxWithLossLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

    - + @@ -81,7 +81,7 @@
    - + caffe::LossLayer< Dtype > caffe::Layer< Dtype > @@ -257,12 +257,12 @@
    Parameters
    bottominput Blob vector (length 2)
      -
    1. $ (N \times C \times H \times W) $ the predictions $ x $, a Blob with values in $ [-\infty, +\infty] $ indicating the predicted score for each of the $ K = CHW $ classes. This layer maps these scores to a probability distribution over classes using the softmax function $ \hat{p}_{nk} = \exp(x_{nk}) / \left[\sum_{k'} \exp(x_{nk'})\right] $ (see SoftmaxLayer).
    2. -
    3. $ (N \times 1 \times 1 \times 1) $ the labels $ l $, an integer-valued Blob with values $ l_n \in [0, 1, 2, ..., K - 1] $ indicating the correct class label among the $ K $ classes
    4. +
    5. $ (N \times C \times H \times W) $ the predictions $ x $, a Blob with values in $ [-\infty, +\infty] $ indicating the predicted score for each of the $ K = CHW $ classes. This layer maps these scores to a probability distribution over classes using the softmax function $ \hat{p}_{nk} = \exp(x_{nk}) / \left[\sum_{k'} \exp(x_{nk'})\right] $ (see SoftmaxLayer).
    6. +
    7. $ (N \times 1 \times 1 \times 1) $ the labels $ l $, an integer-valued Blob with values $ l_n \in [0, 1, 2, ..., K - 1] $ indicating the correct class label among the $ K $ classes
    topoutput Blob vector (length 1)
      -
    1. $ (1 \times 1 \times 1 \times 1) $ the computed cross-entropy classification loss: $ E = \frac{-1}{N} \sum\limits_{n=1}^N \log(\hat{p}_{n,l_n}) $, for softmax output class probabilites $ \hat{p} $
    2. +
    3. $ (1 \times 1 \times 1 \times 1) $ the computed cross-entropy classification loss: $ E = \frac{-1}{N} \sum\limits_{n=1}^N \log(\hat{p}_{n,l_n}) $, for softmax output class probabilites $ \hat{p} $
    @@ -270,7 +270,7 @@

    Constructor & Destructor Documentation

    -

    § SoftmaxWithLossLayer()

    +

    ◆ SoftmaxWithLossLayer()

    @@ -309,7 +309,7 @@

    Member Function Documentation

    -

    § Backward_cpu()

    +

    ◆ Backward_cpu()

    @@ -355,13 +355,13 @@

    Parameters
    topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
      -
    1. $ (1 \times 1 \times 1 \times 1) $ This Blob's diff will simply contain the loss_weight* $ \lambda $, as $ \lambda $ is the coefficient of this layer's output $\ell_i$ in the overall Net loss $ E = \lambda_i \ell_i + \mbox{other loss terms}$; hence $ \frac{\partial E}{\partial \ell_i} = \lambda_i $. (*Assuming that this top Blob is not used as a bottom (input) by any other layer of the Net.)
    2. +
    3. $ (1 \times 1 \times 1 \times 1) $ This Blob's diff will simply contain the loss_weight* $ \lambda $, as $ \lambda $ is the coefficient of this layer's output $\ell_i$ in the overall Net loss $ E = \lambda_i \ell_i + \mbox{other loss terms}$; hence $ \frac{\partial E}{\partial \ell_i} = \lambda_i $. (*Assuming that this top Blob is not used as a bottom (input) by any other layer of the Net.)
    propagate_downsee Layer::Backward. propagate_down[1] must be false as we can't compute gradients with respect to the labels.
    bottominput Blob vector (length 2)
      -
    1. $ (N \times C \times H \times W) $ the predictions $ x $; Backward computes diff $ \frac{\partial E}{\partial x} $
    2. -
    3. $ (N \times 1 \times 1 \times 1) $ the labels – ignored as we can't compute their error gradients
    4. +
    5. $ (N \times C \times H \times W) $ the predictions $ x $; Backward computes diff $ \frac{\partial E}{\partial x} $
    6. +
    7. $ (N \times 1 \times 1 \times 1) $ the labels – ignored as we can't compute their error gradients
    @@ -373,7 +373,7 @@

    -

    § ExactNumTopBlobs()

    +

    ◆ ExactNumTopBlobs()

    @@ -405,7 +405,7 @@

    -

    § get_normalizer()

    +

    ◆ get_normalizer()

    @@ -444,7 +444,7 @@

    -

    § LayerSetUp()

    +

    ◆ LayerSetUp()

    @@ -494,7 +494,7 @@

    -

    § MaxTopBlobs()

    +

    ◆ MaxTopBlobs()

    @@ -526,7 +526,7 @@

    -

    § MinTopBlobs()

    +

    ◆ MinTopBlobs()

    @@ -558,7 +558,7 @@

    -

    § Reshape()

    +

    ◆ Reshape()

    @@ -614,9 +614,9 @@

    diff --git a/doxygen/classcaffe_1_1Solver-members.html b/doxygen/classcaffe_1_1Solver-members.html index 3c6282a6145..7e1c8f70cab 100644 --- a/doxygen/classcaffe_1_1Solver-members.html +++ b/doxygen/classcaffe_1_1Solver-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

    - + @@ -117,9 +117,9 @@
    diff --git a/doxygen/classcaffe_1_1Solver.html b/doxygen/classcaffe_1_1Solver.html index 0cd2e597afe..09fd033005f 100644 --- a/doxygen/classcaffe_1_1Solver.html +++ b/doxygen/classcaffe_1_1Solver.html @@ -3,7 +3,7 @@ - + Caffe: caffe::Solver< Dtype > Class Template Reference @@ -29,7 +29,7 @@

    - + @@ -82,7 +82,7 @@
    - + caffe::SGDSolver< Dtype > caffe::AdaDeltaSolver< Dtype > caffe::AdaGradSolver< Dtype > @@ -252,9 +252,9 @@
    diff --git a/doxygen/classcaffe_1_1SolverRegisterer-members.html b/doxygen/classcaffe_1_1SolverRegisterer-members.html index 8d8f3a7eaae..caa0cb0718a 100644 --- a/doxygen/classcaffe_1_1SolverRegisterer-members.html +++ b/doxygen/classcaffe_1_1SolverRegisterer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@
    - + @@ -73,9 +73,9 @@
    diff --git a/doxygen/classcaffe_1_1SolverRegisterer.html b/doxygen/classcaffe_1_1SolverRegisterer.html index 4e568f82af9..1487cecddf4 100644 --- a/doxygen/classcaffe_1_1SolverRegisterer.html +++ b/doxygen/classcaffe_1_1SolverRegisterer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::SolverRegisterer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

    - + @@ -82,9 +82,9 @@
    diff --git a/doxygen/classcaffe_1_1SolverRegistry-members.html b/doxygen/classcaffe_1_1SolverRegistry-members.html index 2a5054bd257..6209f26e3f0 100644 --- a/doxygen/classcaffe_1_1SolverRegistry-members.html +++ b/doxygen/classcaffe_1_1SolverRegistry-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

    - + @@ -78,9 +78,9 @@
    diff --git a/doxygen/classcaffe_1_1SolverRegistry.html b/doxygen/classcaffe_1_1SolverRegistry.html index a39cbdabbc5..237f72d1c27 100644 --- a/doxygen/classcaffe_1_1SolverRegistry.html +++ b/doxygen/classcaffe_1_1SolverRegistry.html @@ -3,7 +3,7 @@ - + Caffe: caffe::SolverRegistry< Dtype > Class Template Reference @@ -29,7 +29,7 @@

    - + @@ -101,9 +101,9 @@
    diff --git a/doxygen/classcaffe_1_1Solver_1_1Callback-members.html b/doxygen/classcaffe_1_1Solver_1_1Callback-members.html index ce23ca07f40..10fe6c91d7f 100644 --- a/doxygen/classcaffe_1_1Solver_1_1Callback-members.html +++ b/doxygen/classcaffe_1_1Solver_1_1Callback-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

    - + @@ -75,9 +75,9 @@
    diff --git a/doxygen/classcaffe_1_1Solver_1_1Callback.html b/doxygen/classcaffe_1_1Solver_1_1Callback.html index f8cef28ab60..402eab50331 100644 --- a/doxygen/classcaffe_1_1Solver_1_1Callback.html +++ b/doxygen/classcaffe_1_1Solver_1_1Callback.html @@ -3,7 +3,7 @@ - + Caffe: caffe::Solver< Dtype >::Callback Class Reference @@ -29,7 +29,7 @@

    - + @@ -93,9 +93,9 @@
    diff --git a/doxygen/classcaffe_1_1Solver_1_1Callback.png b/doxygen/classcaffe_1_1Solver_1_1Callback.png deleted file mode 100644 index 0ac96400656fe731a88b8e4ea897c8dfbb1d3865..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 792 zcmeAS@N?(olHy`uVBq!ia0vp^M}RnhgBeH`_G|F~DTx4|5ZC|z{{xvX-h3_XKQsZz z0^#8tTZ`oe9!TES?UxqhWU}U_|yiMU*S3QTu^~HiSRx+&L zQqmW@On;7!ctd#Q4#vXzh`k&i-!$C#BjOOfb+WR+`6as92KMzmxly0){#wN{L-^fZ z-NjFXE87a01yc4%swYnSod5UNhN2QZ$<>cPT-fwv?F)r9E2SepPbhwVjFkaPumw9M@)1-oqu+}O1SM{(4?%X zoRhvR<8!cSn(|~_I>T#k>pP<1W;XnX(tiF^U%s1f5o6$?-RDj2cMJ4?-~7*L+LCE; zPBXqtt516oJn!?)hF$t1kH79*y5)YB}T-d;Ch% zhj(QOZ<->MPCMRQ#A|+T>iLYef{!d5*)mm!xqEB{df$c=o3(WpvTocdl>69!&5<U$CY9`hdo-iXLvv~OYxyTHG`s)o7heWU#tfdWelF{r5}E)PwO^$G diff --git a/doxygen/classcaffe_1_1SplitLayer-members.html b/doxygen/classcaffe_1_1SplitLayer-members.html index d6c86e81148..9ea232f2b1b 100644 --- a/doxygen/classcaffe_1_1SplitLayer-members.html +++ b/doxygen/classcaffe_1_1SplitLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@
    - + @@ -109,9 +109,9 @@
    diff --git a/doxygen/classcaffe_1_1SplitLayer.html b/doxygen/classcaffe_1_1SplitLayer.html index 8de089e78df..764d0b62658 100644 --- a/doxygen/classcaffe_1_1SplitLayer.html +++ b/doxygen/classcaffe_1_1SplitLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::SplitLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@
    - + @@ -81,7 +81,7 @@
    - + caffe::Layer< Dtype >
    @@ -217,7 +217,7 @@

    TODO(dox): thorough documentation for Forward, Backward, and proto params.

    Member Function Documentation

    -

    § ExactNumBottomBlobs()

    +

    ◆ ExactNumBottomBlobs()

    @@ -249,7 +249,7 @@

    -

    § MinTopBlobs()

    +

    ◆ MinTopBlobs()

    @@ -281,7 +281,7 @@

    -

    § Reshape()

    +

    ◆ Reshape()

    @@ -337,9 +337,9 @@

    diff --git a/doxygen/classcaffe_1_1SyncedMemory-members.html b/doxygen/classcaffe_1_1SyncedMemory-members.html index 9f32c451613..f4e646067e5 100644 --- a/doxygen/classcaffe_1_1SyncedMemory-members.html +++ b/doxygen/classcaffe_1_1SyncedMemory-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

    - + @@ -89,9 +89,9 @@
    diff --git a/doxygen/classcaffe_1_1SyncedMemory.html b/doxygen/classcaffe_1_1SyncedMemory.html index 0dec3cfa55f..d389cb56a57 100644 --- a/doxygen/classcaffe_1_1SyncedMemory.html +++ b/doxygen/classcaffe_1_1SyncedMemory.html @@ -3,7 +3,7 @@ - + Caffe: caffe::SyncedMemory Class Reference @@ -29,7 +29,7 @@

    - + @@ -128,9 +128,9 @@
    diff --git a/doxygen/classcaffe_1_1TanHLayer-members.html b/doxygen/classcaffe_1_1TanHLayer-members.html index 6c0622eaaaa..1b155615e9b 100644 --- a/doxygen/classcaffe_1_1TanHLayer-members.html +++ b/doxygen/classcaffe_1_1TanHLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

    - + @@ -109,9 +109,9 @@
    diff --git a/doxygen/classcaffe_1_1TanHLayer.html b/doxygen/classcaffe_1_1TanHLayer.html index 4da28e081b6..bbb9fc09740 100644 --- a/doxygen/classcaffe_1_1TanHLayer.html +++ b/doxygen/classcaffe_1_1TanHLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::TanHLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

    - + @@ -71,7 +71,7 @@
    -

    TanH hyperbolic tangent non-linearity $ y = \frac{\exp(2x) - 1}{\exp(2x) + 1} $, popular in auto-encoders. +

    TanH hyperbolic tangent non-linearity $ y = \frac{\exp(2x) - 1}{\exp(2x) + 1} $, popular in auto-encoders. More...

    #include <tanh_layer.hpp>

    @@ -80,7 +80,7 @@
    - + caffe::NeuronLayer< Dtype > caffe::Layer< Dtype > @@ -211,11 +211,11 @@

    template<typename Dtype>
    class caffe::TanHLayer< Dtype >

    -

    TanH hyperbolic tangent non-linearity $ y = \frac{\exp(2x) - 1}{\exp(2x) + 1} $, popular in auto-encoders.

    +

    TanH hyperbolic tangent non-linearity $ y = \frac{\exp(2x) - 1}{\exp(2x) + 1} $, 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.

    Member Function Documentation

    -

    § Backward_cpu()

    +

    ◆ Backward_cpu()

    @@ -260,12 +260,12 @@

    Parameters
    topoutput Blob vector (length 1), providing the error gradient with respect to the outputs
      -
    1. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
    2. +
    3. $ (N \times C \times H \times W) $ containing error gradients $ \frac{\partial E}{\partial y} $ with respect to computed outputs $ y $
    propagate_downsee Layer::Backward.
    bottominput Blob vector (length 1)
      -
    1. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \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) $ if propagate_down[0]
    2. +
    3. $ (N \times C \times H \times W) $ the inputs $ x $; Backward fills their diff with gradients $ \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) $ if propagate_down[0]
    @@ -277,7 +277,7 @@

    -

    § Forward_cpu()

    +

    ◆ Forward_cpu()

    @@ -314,11 +314,11 @@

    Parameters
    bottominput Blob vector (length 1)
      -
    1. $ (N \times C \times H \times W) $ the inputs $ x $
    2. +
    3. $ (N \times C \times H \times W) $ the inputs $ x $
    topoutput Blob vector (length 1)
      -
    1. $ (N \times C \times H \times W) $ the computed outputs $ y = \frac{\exp(2x) - 1}{\exp(2x) + 1} $
    2. +
    3. $ (N \times C \times H \times W) $ the computed outputs $ y = \frac{\exp(2x) - 1}{\exp(2x) + 1} $
    @@ -336,9 +336,9 @@

    diff --git a/doxygen/classcaffe_1_1ThresholdLayer-members.html b/doxygen/classcaffe_1_1ThresholdLayer-members.html index 7a0a5eb77b0..4d3ea93a25f 100644 --- a/doxygen/classcaffe_1_1ThresholdLayer-members.html +++ b/doxygen/classcaffe_1_1ThresholdLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

    - + @@ -110,9 +110,9 @@
    diff --git a/doxygen/classcaffe_1_1ThresholdLayer.html b/doxygen/classcaffe_1_1ThresholdLayer.html index 6f06461ef9e..76c6369028f 100644 --- a/doxygen/classcaffe_1_1ThresholdLayer.html +++ b/doxygen/classcaffe_1_1ThresholdLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::ThresholdLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

    - + @@ -81,7 +81,7 @@
    - + caffe::NeuronLayer< Dtype > caffe::Layer< Dtype > @@ -218,7 +218,7 @@

    Tests whether the input exceeds a threshold: outputs 1 for inputs above threshold; 0 otherwise.

    Constructor & Destructor Documentation

    -

    § ThresholdLayer()

    +

    ◆ ThresholdLayer()

    @@ -245,7 +245,7 @@

    Parameters
    paramprovides ThresholdParameter threshold_param, with ThresholdLayer options:
      -
    • threshold (optional, default 0). the threshold value $ t $ to which the input values are compared.
    • +
    • threshold (optional, default 0). the threshold value $ t $ to which the input values are compared.
    @@ -256,7 +256,7 @@

    Member Function Documentation

    -

    § Forward_cpu()

    +

    ◆ Forward_cpu()

    @@ -293,11 +293,11 @@

    Parameters
    bottominput Blob vector (length 1)
      -
    1. $ (N \times C \times H \times W) $ the inputs $ x $
    2. +
    3. $ (N \times C \times H \times W) $ the inputs $ x $
    topoutput Blob vector (length 1)
      -
    1. $ (N \times C \times H \times W) $ the computed outputs $ y = \left\{ \begin{array}{lr} 0 & \mathrm{if} \; x \le t \\ 1 & \mathrm{if} \; x > t \end{array} \right. $
    2. +
    3. $ (N \times C \times H \times W) $ the computed outputs $ y = \left\{ \begin{array}{lr} 0 & \mathrm{if} \; x \le t \\ 1 & \mathrm{if} \; x > t \end{array} \right. $
    @@ -309,7 +309,7 @@

    -

    § LayerSetUp()

    +

    ◆ LayerSetUp()

    @@ -365,9 +365,9 @@

    diff --git a/doxygen/classcaffe_1_1TileLayer-members.html b/doxygen/classcaffe_1_1TileLayer-members.html index ad6b8cd2795..145dc36d4d0 100644 --- a/doxygen/classcaffe_1_1TileLayer-members.html +++ b/doxygen/classcaffe_1_1TileLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

    - + @@ -112,9 +112,9 @@
    diff --git a/doxygen/classcaffe_1_1TileLayer.html b/doxygen/classcaffe_1_1TileLayer.html index 36db07bb497..9a4ee03abb4 100644 --- a/doxygen/classcaffe_1_1TileLayer.html +++ b/doxygen/classcaffe_1_1TileLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::TileLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@

    - + @@ -81,7 +81,7 @@
    - + caffe::Layer< Dtype >
    @@ -225,7 +225,7 @@

    Copy a Blob along specified dimensions.

    Member Function Documentation

    -

    § ExactNumBottomBlobs()

    +

    ◆ ExactNumBottomBlobs()

    @@ -257,7 +257,7 @@

    -

    § ExactNumTopBlobs()

    +

    ◆ ExactNumTopBlobs()

    @@ -289,7 +289,7 @@

    -

    § Reshape()

    +

    ◆ Reshape()

    @@ -345,9 +345,9 @@

    diff --git a/doxygen/classcaffe_1_1Timer-members.html b/doxygen/classcaffe_1_1Timer-members.html index a1d7ecd94f3..e52d9e42d79 100644 --- a/doxygen/classcaffe_1_1Timer-members.html +++ b/doxygen/classcaffe_1_1Timer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

    - + @@ -92,9 +92,9 @@
    diff --git a/doxygen/classcaffe_1_1Timer.html b/doxygen/classcaffe_1_1Timer.html index e3b635ab510..66bf3408cd2 100644 --- a/doxygen/classcaffe_1_1Timer.html +++ b/doxygen/classcaffe_1_1Timer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::Timer Class Reference @@ -29,7 +29,7 @@

    - + @@ -151,9 +151,9 @@
    diff --git a/doxygen/classcaffe_1_1UniformFiller-members.html b/doxygen/classcaffe_1_1UniformFiller-members.html index 8756c4b81e8..065ac2f6bdf 100644 --- a/doxygen/classcaffe_1_1UniformFiller-members.html +++ b/doxygen/classcaffe_1_1UniformFiller-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

    - + @@ -77,9 +77,9 @@
    diff --git a/doxygen/classcaffe_1_1UniformFiller.html b/doxygen/classcaffe_1_1UniformFiller.html index db70f919bfa..e26d372039e 100644 --- a/doxygen/classcaffe_1_1UniformFiller.html +++ b/doxygen/classcaffe_1_1UniformFiller.html @@ -3,7 +3,7 @@ - + Caffe: caffe::UniformFiller< Dtype > Class Template Reference @@ -29,7 +29,7 @@

    - + @@ -70,7 +70,7 @@
    -

    Fills a Blob with uniformly distributed values $ x\sim U(a, b) $. +

    Fills a Blob with uniformly distributed values $ x\sim U(a, b) $. More...

    #include <filler.hpp>

    @@ -79,7 +79,7 @@
    - + caffe::Filler< Dtype >
    @@ -108,16 +108,16 @@

    template<typename Dtype>
    class caffe::UniformFiller< Dtype >

    -

    Fills a Blob with uniformly distributed values $ x\sim U(a, b) $.

    +

    Fills a Blob with uniformly distributed values $ x\sim U(a, b) $.


    The documentation for this class was generated from the following file:
    diff --git a/doxygen/classcaffe_1_1WindowDataLayer-members.html b/doxygen/classcaffe_1_1WindowDataLayer-members.html index 22d3a7e3161..acb7229a2b8 100644 --- a/doxygen/classcaffe_1_1WindowDataLayer-members.html +++ b/doxygen/classcaffe_1_1WindowDataLayer-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@
    - + @@ -130,28 +130,27 @@ set_param_propagate_down(const int param_id, const bool value)caffe::Layer< Dtype >inline SetLossWeights(const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inlineprotected SetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)caffe::Layer< Dtype >inline - ShareInParallel() const (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >inlinevirtual - StartInternalThread()caffe::InternalThread - StopInternalThread()caffe::InternalThread - ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual - transform_param_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected - transformed_data_ (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protected - type() constcaffe::WindowDataLayer< Dtype >inlinevirtual - WindowDataLayer(const LayerParameter &param) (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >inlineexplicit - WindowField enum name (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected - X1 enum value (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected - X2 enum value (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected - Y1 enum value (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected - Y2 enum value (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected - ~InternalThread() (defined in caffe::InternalThread)caffe::InternalThreadvirtual - ~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual - ~WindowDataLayer() (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >virtual + StartInternalThread()caffe::InternalThread + StopInternalThread()caffe::InternalThread + ToProto(LayerParameter *param, bool write_diff=false)caffe::Layer< Dtype >virtual + transform_param_ (defined in caffe::BaseDataLayer< Dtype >)caffe::BaseDataLayer< Dtype >protected + transformed_data_ (defined in caffe::BasePrefetchingDataLayer< Dtype >)caffe::BasePrefetchingDataLayer< Dtype >protected + type() constcaffe::WindowDataLayer< Dtype >inlinevirtual + WindowDataLayer(const LayerParameter &param) (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >inlineexplicit + WindowField enum name (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected + X1 enum value (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected + X2 enum value (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected + Y1 enum value (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected + Y2 enum value (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >protected + ~InternalThread() (defined in caffe::InternalThread)caffe::InternalThreadvirtual + ~Layer() (defined in caffe::Layer< Dtype >)caffe::Layer< Dtype >inlinevirtual + ~WindowDataLayer() (defined in caffe::WindowDataLayer< Dtype >)caffe::WindowDataLayer< Dtype >virtual
    diff --git a/doxygen/classcaffe_1_1WindowDataLayer.html b/doxygen/classcaffe_1_1WindowDataLayer.html index a02530a7cf1..27ace9b7cb4 100644 --- a/doxygen/classcaffe_1_1WindowDataLayer.html +++ b/doxygen/classcaffe_1_1WindowDataLayer.html @@ -3,7 +3,7 @@ - + Caffe: caffe::WindowDataLayer< Dtype > Class Template Reference @@ -29,7 +29,7 @@
    - + @@ -82,7 +82,7 @@
    - + caffe::BasePrefetchingDataLayer< Dtype > caffe::BaseDataLayer< Dtype > caffe::InternalThread @@ -127,9 +127,6 @@  BaseDataLayer (const LayerParameter &param)   - -virtual bool ShareInParallel () const -  virtual void Reshape (const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)  Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs. More...
      @@ -326,7 +323,7 @@

    TODO(dox): thorough documentation for Forward and proto params.

    Member Function Documentation

    -

    § ExactNumBottomBlobs()

    +

    ◆ ExactNumBottomBlobs()

    @@ -358,7 +355,7 @@

    -

    § ExactNumTopBlobs()

    +

    ◆ ExactNumTopBlobs()

    @@ -395,9 +392,9 @@

    diff --git a/doxygen/classcaffe_1_1WorkerSolver-members.html b/doxygen/classcaffe_1_1WorkerSolver-members.html deleted file mode 100644 index 41356eb3bf1..00000000000 --- a/doxygen/classcaffe_1_1WorkerSolver-members.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - -Caffe: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    Caffe -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    caffe::WorkerSolver< Dtype > Member List
    -
    -
    - -

    This is the complete list of members for caffe::WorkerSolver< Dtype >, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    action_request_function_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
    add_callback(Callback *value) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
    ApplyUpdate() (defined in caffe::WorkerSolver< Dtype >)caffe::WorkerSolver< Dtype >inlineprotectedvirtual
    callbacks() const (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
    callbacks_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
    CheckSnapshotWritePermissions() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
    current_step_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
    DISABLE_COPY_AND_ASSIGN(Solver) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
    DisplayOutputBlobs(const int net_id) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
    GetRequestedAction() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
    Init(const SolverParameter &param) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
    InitTestNets() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
    InitTrainNet() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
    iter() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
    iter_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
    losses_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
    net() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
    net_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
    param() const (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
    param_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
    requested_early_exit_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
    Restore(const char *resume_file) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
    RestoreSolverStateFromBinaryProto(const string &state_file) (defined in caffe::WorkerSolver< Dtype >)caffe::WorkerSolver< Dtype >inlineprotectedvirtual
    RestoreSolverStateFromHDF5(const string &state_file) (defined in caffe::WorkerSolver< Dtype >)caffe::WorkerSolver< Dtype >inlineprotectedvirtual
    root_solver_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
    SetActionFunction(ActionCallback func) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
    smoothed_loss_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
    Snapshot() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
    SnapshotFilename(const string extension) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
    SnapshotSolverState(const string &model_filename) (defined in caffe::WorkerSolver< Dtype >)caffe::WorkerSolver< Dtype >inlineprotectedvirtual
    SnapshotToBinaryProto() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
    SnapshotToHDF5() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
    Solve(const char *resume_file=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >virtual
    Solve(const string resume_file) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
    Solver(const SolverParameter &param, const Solver *root_solver=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >explicit
    Solver(const string &param_file, const Solver *root_solver=NULL) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >explicit
    Step(int iters) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >
    Test(const int test_net_id=0) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
    test_nets() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inline
    test_nets_ (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
    TestAll() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
    type() constcaffe::Solver< Dtype >inlinevirtual
    UpdateSmoothedLoss(Dtype loss, int start_iter, int average_loss) (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >protected
    WorkerSolver(const SolverParameter &param, const Solver< Dtype > *root_solver=NULL) (defined in caffe::WorkerSolver< Dtype >)caffe::WorkerSolver< Dtype >inlineexplicit
    ~Solver() (defined in caffe::Solver< Dtype >)caffe::Solver< Dtype >inlinevirtual
    - - - - diff --git a/doxygen/classcaffe_1_1WorkerSolver.html b/doxygen/classcaffe_1_1WorkerSolver.html deleted file mode 100644 index e3889b7faed..00000000000 --- a/doxygen/classcaffe_1_1WorkerSolver.html +++ /dev/null @@ -1,249 +0,0 @@ - - - - - - - -Caffe: caffe::WorkerSolver< Dtype > Class Template Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    Caffe -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    caffe::WorkerSolver< Dtype > Class Template Reference
    -
    -
    - -

    Solver that only computes gradients, used as worker for multi-GPU training. - More...

    - -

    #include <solver.hpp>

    -
    -Inheritance diagram for caffe::WorkerSolver< Dtype >:
    -
    -
    - - -caffe::Solver< Dtype > - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

    WorkerSolver (const SolverParameter &param, const Solver< Dtype > *root_solver=NULL)
     
    - Public Member Functions inherited from caffe::Solver< Dtype >
    Solver (const SolverParameter &param, const Solver *root_solver=NULL)
     
    Solver (const string &param_file, const Solver *root_solver=NULL)
     
    -void Init (const SolverParameter &param)
     
    -void InitTrainNet ()
     
    -void InitTestNets ()
     
    -void SetActionFunction (ActionCallback func)
     
    -SolverAction::Enum GetRequestedAction ()
     
    -virtual void Solve (const char *resume_file=NULL)
     
    -void Solve (const string resume_file)
     
    -void Step (int iters)
     
    -void Restore (const char *resume_file)
     
    -void Snapshot ()
     
    -const SolverParameter & param () const
     
    -shared_ptr< Net< Dtype > > net ()
     
    -const vector< shared_ptr< Net< Dtype > > > & test_nets ()
     
    -int iter ()
     
    -const vector< Callback * > & callbacks () const
     
    -void add_callback (Callback *value)
     
    -void CheckSnapshotWritePermissions ()
     
    -virtual const char * type () const
     Returns the solver type.
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Protected Member Functions

    -void ApplyUpdate ()
     
    -void SnapshotSolverState (const string &model_filename)
     
    -void RestoreSolverStateFromBinaryProto (const string &state_file)
     
    -void RestoreSolverStateFromHDF5 (const string &state_file)
     
    - Protected Member Functions inherited from caffe::Solver< Dtype >
    -string SnapshotFilename (const string extension)
     
    -string SnapshotToBinaryProto ()
     
    -string SnapshotToHDF5 ()
     
    -void TestAll ()
     
    -void Test (const int test_net_id=0)
     
    -void DisplayOutputBlobs (const int net_id)
     
    -void UpdateSmoothedLoss (Dtype loss, int start_iter, int average_loss)
     
    DISABLE_COPY_AND_ASSIGN (Solver)
     
    - - - - - - - - - - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Protected Attributes inherited from caffe::Solver< Dtype >
    -SolverParameter param_
     
    -int iter_
     
    -int current_step_
     
    -shared_ptr< Net< Dtype > > net_
     
    -vector< shared_ptr< Net< Dtype > > > test_nets_
     
    -vector< Callback * > callbacks_
     
    -vector< Dtype > losses_
     
    -Dtype smoothed_loss_
     
    -const Solver *const root_solver_
     
    -ActionCallback action_request_function_
     
    -bool requested_early_exit_
     
    -

    Detailed Description

    -

    template<typename Dtype>
    -class caffe::WorkerSolver< Dtype >

    - -

    Solver that only computes gradients, used as worker for multi-GPU training.

    -

    The documentation for this class was generated from the following file: -
    - - - - diff --git a/doxygen/classcaffe_1_1WorkerSolver.png b/doxygen/classcaffe_1_1WorkerSolver.png deleted file mode 100644 index d8d2158dfe50635fdc1aa19cd1f24aecdff9039d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 750 zcmeAS@N?(olHy`uVBq!ia0vp^+kiNLgBeIR8`rM{QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;SZ+_|C|B3sz zWgak7S^C>7Ol4Wz$|d5(1v&5aZ*R-}-03?h?ed{%O9G>AOfvC$pRjz3chJuzx93NC zURwI@U;FE=p_BZ+uzmYG=hYgA3yrl>UX!XyduvtF&KFm$%dPvo{kcD@rux;-Z&%xf z+)M16xa9h-Bi|Hes_U2UN?7}%xY05vyHq=W`jWP|r0MG!Z%_ThTDBk~@wcq)gV-C@ z;xo6)Cmmb7R(o6Ffo?QDJf*sq!k?0@aI)^@#ZKU!E?-@9h< zpZZPP-l`Z{esMnRCvDB|f2?@s?PLEpPj;D97k>Zm@z2|Dq*i!clKvH(bNSPxFKz#J zc&NOz278P9s^DR?j?$m??_i@|J|8mq(mzP@t47cC;k z{O$9LuiDHB_P+~WY>G=Ve{t^sAB*gb<>^c&AshOCzpLD5TfZjvmQLBZbIJ~Xj~uh% zxfgQ3#@_h7fenM7Wkdgaj>G)({&6JEmw9^iR;ZUkvsQ0 z<+JKHL|uE|ma}}|s?O*89CTRLf8+dfK?)Bur1id414H!N-Pn7JkLN92dU2)P-Mya4 zD>ue+Z`=G - + Caffe: Member List @@ -29,7 +29,7 @@

    - + @@ -77,9 +77,9 @@
    diff --git a/doxygen/classcaffe_1_1XavierFiller.html b/doxygen/classcaffe_1_1XavierFiller.html index f9b9806b6e5..e50afbabf4f 100644 --- a/doxygen/classcaffe_1_1XavierFiller.html +++ b/doxygen/classcaffe_1_1XavierFiller.html @@ -3,7 +3,7 @@ - + Caffe: caffe::XavierFiller< Dtype > Class Template Reference @@ -29,7 +29,7 @@

    - + @@ -70,7 +70,7 @@
    -

    Fills a Blob with values $ x \sim U(-a, +a) $ where $ a $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average. +

    Fills a Blob with values $ x \sim U(-a, +a) $ where $ a $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average. More...

    #include <filler.hpp>

    @@ -79,7 +79,7 @@
    - + caffe::Filler< Dtype >
    @@ -108,7 +108,7 @@

    template<typename Dtype>
    class caffe::XavierFiller< Dtype >

    -

    Fills a Blob with values $ x \sim U(-a, +a) $ where $ a $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average.

    +

    Fills a Blob with values $ x \sim U(-a, +a) $ where $ a $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average.

    A Filler based on the paper [Bengio and Glorot 2010]: Understanding the difficulty of training deep feedforward neuralnetworks.

    It fills the incoming matrix by randomly sampling uniform data from [-scale, scale] where scale = sqrt(3 / n) where n is the fan_in, fan_out, or their average, depending on the variance_norm option. You should make sure the input blob has shape (num, a, b, c) where a * b * c = fan_in and num * b * c = fan_out. Note that this is currently not the case for inner product layers.

    TODO(dox): make notation in above comment consistent with rest & use LaTeX.

    @@ -118,9 +118,9 @@
    diff --git a/doxygen/classcaffe_1_1db_1_1Cursor-members.html b/doxygen/classcaffe_1_1db_1_1Cursor-members.html index 8e690fafa74..6722b1e6471 100644 --- a/doxygen/classcaffe_1_1db_1_1Cursor-members.html +++ b/doxygen/classcaffe_1_1db_1_1Cursor-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@
    - + @@ -80,9 +80,9 @@
    diff --git a/doxygen/classcaffe_1_1db_1_1Cursor.html b/doxygen/classcaffe_1_1db_1_1Cursor.html index 7e0d73269e2..5f5edff611b 100644 --- a/doxygen/classcaffe_1_1db_1_1Cursor.html +++ b/doxygen/classcaffe_1_1db_1_1Cursor.html @@ -3,7 +3,7 @@ - + Caffe: caffe::db::Cursor Class Reference @@ -29,7 +29,7 @@
    - + @@ -97,9 +97,9 @@
    diff --git a/doxygen/classcaffe_1_1db_1_1Cursor.png b/doxygen/classcaffe_1_1db_1_1Cursor.png deleted file mode 100644 index 8b319059f4777f32abc45c1dd62bfbc8058ba5a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 877 zcmeAS@N?(olHy`uVBq!ia0y~yV6+3W12~w0~`Z!IAWT-YF+lZX?p{kQgRwUbA3o`OO#m0dEn{JoKqLr6NG;;e`n4q(5@|3)i7Qj zwYUB2S>bomUvqWto%?m~@^yLUgrk4I?_0FwP3`Jav$@?iN7wc5+x6+()=jJCMY_dS zZa%VS&vX6NN29g$9p+cRVE&=sV#hEW)#aSE3}y@Y4?OFCA>Ed^Lxth~Q4RqH3!u8` zg*^2PYCx%{$K!r5f8eNPQ0J%wt5y5LcmumZ@k{e%j(_~b5HoqdK{zyMpcdfP1hfJs zc|OfYb7{ZfvMHCA{}7g(tP(phYCe#-pzdk5(0@{n(|nbiEq0!pUcQuWlk_}mXu5u# zYUbqQ0`~QvD^8z$>@%tE>4JUclb>yy{P5dX-{hRW&+GQ3ZFuG~smyZO`@2j0{huG& z`$9WE>7RMLd46)%+_v?%=IIx|n|m_c`8%{xvN&^)YMs-dP*Jf0^sK zYvKF91-7-HJ+5l$?ECIy%N$ZJ8zcX7?!MLMeWLEn<-C4z`$iS3)ysmJKt@&Y5OdxTUR#!(aybl zx>Wc33GY>F)?V5aCBJmX+t=39w`?m?y3=jvxl1Irc2bETETA}RC#4AgQaP#i#dDJH qi^(dpK_O}XE6D5Rq!2Lqhgl@sv7z_eDG6ZSVDNPHb6Mw<&;$TUNvt9O diff --git a/doxygen/classcaffe_1_1db_1_1DB-members.html b/doxygen/classcaffe_1_1db_1_1DB-members.html index b4a3b1a69af..c6227533731 100644 --- a/doxygen/classcaffe_1_1db_1_1DB-members.html +++ b/doxygen/classcaffe_1_1db_1_1DB-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

    - + @@ -79,9 +79,9 @@
    diff --git a/doxygen/classcaffe_1_1db_1_1DB.html b/doxygen/classcaffe_1_1db_1_1DB.html index d98cfdeb5fb..d47ad4769b1 100644 --- a/doxygen/classcaffe_1_1db_1_1DB.html +++ b/doxygen/classcaffe_1_1db_1_1DB.html @@ -3,7 +3,7 @@ - + Caffe: caffe::db::DB Class Reference @@ -29,7 +29,7 @@

    - + @@ -94,9 +94,9 @@
    diff --git a/doxygen/classcaffe_1_1db_1_1DB.png b/doxygen/classcaffe_1_1db_1_1DB.png deleted file mode 100644 index d494a69e11b2457e4ac7516c1ba1b09832b5e69e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 686 zcmV;f0#W^mP)vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0006#NklfT?53yXiDNjR-Kfc2tk%_w4wzaIx$#R9yc7}6pjQc5THQo!KbcI*8^v15g^ckMF`h143 zl%*fZI4Q(joj172(m9J=<2?-UcepS>KU^4~DJ~4q4;Kb#iVFkuV;F{^GXN)K1h^A- z6CTH#8Q)F#*Y{q=w-fd(4RCE-7~smdFu;{@VSp>+!T|r9aU93*0nnMRu8|7^G{%Ji zdf~zVjd5XsUbrwoV_X=Z7cLCY7#9ZUg$n~T=B&aYgzyn#2qApLcLxuW)DOHwafIDLj8BB{8h>P1_KPQQr$styW!Xg^SKo<9))l zAtbZMG_8&LB0Nt@{EFpbhNjx715@{$*VsCfODTw*!iPdw3NJ@p3Y!S$A5%(!89o}qitw8=Z1$!d%|7vNwA3z*`s}27g%5-<+t#e` z%6{6|avLeq{QIHs=OI)JZyq3%@NHUn39?L(wORUaLii+0n{_JkZIL2#3Mo@*PL;Vu z)qD6*2v)fMJuFGh*!Lcmqz1UKBsIo`C8-xKEJ=-VVM*%69fd;(p)W=_gb@1j1K8a$ Uj>{r>_y7O^07*qoM6N<$g4qZ<3jhEB diff --git a/doxygen/classcaffe_1_1db_1_1LMDB-members.html b/doxygen/classcaffe_1_1db_1_1LMDB-members.html deleted file mode 100644 index b566f7a9c35..00000000000 --- a/doxygen/classcaffe_1_1db_1_1LMDB-members.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - -Caffe: Member List - - - - - - - - - - -
    -
    - - - - - - -
    -
    Caffe -
    -
    -
    - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    caffe::db::LMDB Member List
    -
    -
    - -

    This is the complete list of members for caffe::db::LMDB, including all inherited members.

    - - - - - - - - - - -
    Close() (defined in caffe::db::LMDB)caffe::db::LMDBinlinevirtual
    DB() (defined in caffe::db::DB)caffe::db::DBinline
    DISABLE_COPY_AND_ASSIGN(DB) (defined in caffe::db::DB)caffe::db::DB
    LMDB() (defined in caffe::db::LMDB)caffe::db::LMDBinline
    NewCursor() (defined in caffe::db::LMDB)caffe::db::LMDBvirtual
    NewTransaction() (defined in caffe::db::LMDB)caffe::db::LMDBvirtual
    Open(const string &source, Mode mode) (defined in caffe::db::LMDB)caffe::db::LMDBvirtual
    ~DB() (defined in caffe::db::DB)caffe::db::DBinlinevirtual
    ~LMDB() (defined in caffe::db::LMDB)caffe::db::LMDBinlinevirtual
    - - - - diff --git a/doxygen/classcaffe_1_1db_1_1LMDB.html b/doxygen/classcaffe_1_1db_1_1LMDB.html deleted file mode 100644 index 1c61b4b3e56..00000000000 --- a/doxygen/classcaffe_1_1db_1_1LMDB.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - -Caffe: caffe::db::LMDB Class Reference - - - - - - - - - - -
    -
    - - - - - - -
    -
    Caffe -
    -
    -
    - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    caffe::db::LMDB Class Reference
    -
    -
    -
    -Inheritance diagram for caffe::db::LMDB:
    -
    -
    - - -caffe::db::DB - -
    - - - - - - - - - - - - - -

    -Public Member Functions

    -virtual void Open (const string &source, Mode mode)
     
    -virtual void Close ()
     
    -virtual LMDBCursorNewCursor ()
     
    -virtual LMDBTransactionNewTransaction ()
     
    - Public Member Functions inherited from caffe::db::DB
    DISABLE_COPY_AND_ASSIGN (DB)
     
    -
    The documentation for this class was generated from the following files:
      -
    • include/caffe/util/db_lmdb.hpp
    • -
    • src/caffe/util/db_lmdb.cpp
    • -
    -
    - - - - diff --git a/doxygen/classcaffe_1_1db_1_1LMDB.png b/doxygen/classcaffe_1_1db_1_1LMDB.png deleted file mode 100644 index 6d7f806ccfcd0429cc45f6f25ae0648b9b2d9fe6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 488 zcmeAS@N?(olHy`uVBq!ia0vp^X+Rvn!3-qtD1CSUq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXg%ROBjLn;{G&b_#9jRFrt`=lTL=huX= zMDy>u{pOJE&X;Y0iH$3l?weeE?y+KbM~|9`l9J!QF14ji9W%D^-mZLo-loFjc2nPy z#fF>Ldt1#iUR9)7EBwf8*W0DXP6bche@#a4=ImE;YZuLmP8MGL(xs?&_V;tk{4_Vu zcG9oAw&UKi$y;Xc;j@@+JoEX@nz+nrM_F#~y;nt6d9616c(Pns=@YAyveF|Jkgd-$ zi_TSAFvN*9d^~ee=d{RqnX_3lAI@Cz^SqX>2}7I{^8*zV20t`va*)?!MMj{r8T|fj zOk3M4dtgiMk4xd(|GwY5A&b*Kd)vX?_Pb^k-ETI29WCK|BS~ZWC3|MA-EV%c*eLDG z{d|?>pKr@{xvySPmRIcZ(F@`Q%h`R)%FVROqZTi-%bxXk?e>={Z==NJv-8fog|4=H z9)EG>-T1JmvnA4NlVUTss^v_oz0Z5VoRha<@&yKqnae#jmp=T%kQ5~5CUK^0DKJ_X NJYD@<);T3K0RZ?^+9?14 diff --git a/doxygen/classcaffe_1_1db_1_1LMDBCursor-members.html b/doxygen/classcaffe_1_1db_1_1LMDBCursor-members.html deleted file mode 100644 index 28a8a258741..00000000000 --- a/doxygen/classcaffe_1_1db_1_1LMDBCursor-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -Caffe: Member List - - - - - - - - - - -
    -
    - - - - - - -
    -
    Caffe -
    -
    -
    - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    caffe::db::LMDBCursor Member List
    -
    -
    - -

    This is the complete list of members for caffe::db::LMDBCursor, including all inherited members.

    - - - - - - - - - - - -
    Cursor() (defined in caffe::db::Cursor)caffe::db::Cursorinline
    DISABLE_COPY_AND_ASSIGN(Cursor) (defined in caffe::db::Cursor)caffe::db::Cursor
    key() (defined in caffe::db::LMDBCursor)caffe::db::LMDBCursorinlinevirtual
    LMDBCursor(MDB_txn *mdb_txn, MDB_cursor *mdb_cursor) (defined in caffe::db::LMDBCursor)caffe::db::LMDBCursorinlineexplicit
    Next() (defined in caffe::db::LMDBCursor)caffe::db::LMDBCursorinlinevirtual
    SeekToFirst() (defined in caffe::db::LMDBCursor)caffe::db::LMDBCursorinlinevirtual
    valid() (defined in caffe::db::LMDBCursor)caffe::db::LMDBCursorinlinevirtual
    value() (defined in caffe::db::LMDBCursor)caffe::db::LMDBCursorinlinevirtual
    ~Cursor() (defined in caffe::db::Cursor)caffe::db::Cursorinlinevirtual
    ~LMDBCursor() (defined in caffe::db::LMDBCursor)caffe::db::LMDBCursorinlinevirtual
    - - - - diff --git a/doxygen/classcaffe_1_1db_1_1LMDBCursor.html b/doxygen/classcaffe_1_1db_1_1LMDBCursor.html deleted file mode 100644 index 7b53c8543af..00000000000 --- a/doxygen/classcaffe_1_1db_1_1LMDBCursor.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - -Caffe: caffe::db::LMDBCursor Class Reference - - - - - - - - - - -
    -
    - - - - - - -
    -
    Caffe -
    -
    -
    - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    caffe::db::LMDBCursor Class Reference
    -
    -
    -
    -Inheritance diagram for caffe::db::LMDBCursor:
    -
    -
    - - -caffe::db::Cursor - -
    - - - - - - - - - - - - - - - - - -

    -Public Member Functions

    LMDBCursor (MDB_txn *mdb_txn, MDB_cursor *mdb_cursor)
     
    -virtual void SeekToFirst ()
     
    -virtual void Next ()
     
    -virtual string key ()
     
    -virtual string value ()
     
    -virtual bool valid ()
     
    - Public Member Functions inherited from caffe::db::Cursor
    DISABLE_COPY_AND_ASSIGN (Cursor)
     
    -
    The documentation for this class was generated from the following file: -
    - - - - diff --git a/doxygen/classcaffe_1_1db_1_1LMDBCursor.png b/doxygen/classcaffe_1_1db_1_1LMDBCursor.png deleted file mode 100644 index e8ed8ed47b0f11269f8e63466687b539d357c5da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 623 zcmeAS@N?(olHy`uVBq!ia0vp^y+9nm!3-pY71+{%lth3}i0l9V|AEXGZ@!lHADRGU zf$@O@2Ut7r$OE|?B|(0{3_wL7aP?G(5d#C`KTj9OkP61PbMN-GDDb%P&p)~6zw&#H zkW&%$Ml-oLy=>der6rT|`pzbu(?+~HlT0`>l|2nXxIfoxrH9llE1i>DKmD7$M86_y z^Evr-g&S^G#lMQVu|+qp{cHSNe(8Ak>r3z6s7w3zb(&qM^u#61&&_hTeSENMt>n7e z8$8o_a#r~6(LIUt$IEHK%O!H@v;**@1xGgV51Ve$ls z;^MT=e(!k`GG2dhzc0J(baZaS#&@aQ1*bdDT2+)OZrPZ6`^3LL1xy8=+h1C*`kz&Q zBlNG_n(6Oy%ChtG(@Ll9i`sr8_tx6S2TP-kV_si2xfwnCVWza@4RBb_fwND)wCPv51 z_AS%l{uWq$;rbL`d$(_&sxQ|qu3l2*`&6I#fGEO;o9j*iJtOpwA)rw%wP|ngCSdAd N@O1TaS?83{1ON<)7i0hc diff --git a/doxygen/classcaffe_1_1db_1_1LMDBTransaction-members.html b/doxygen/classcaffe_1_1db_1_1LMDBTransaction-members.html deleted file mode 100644 index 9f09b95ee4b..00000000000 --- a/doxygen/classcaffe_1_1db_1_1LMDBTransaction-members.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -Caffe: Member List - - - - - - - - - - -
    -
    - - - - - - -
    -
    Caffe -
    -
    -
    - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    caffe::db::LMDBTransaction Member List
    -
    -
    - -

    This is the complete list of members for caffe::db::LMDBTransaction, including all inherited members.

    - - - - - - - -
    Commit() (defined in caffe::db::LMDBTransaction)caffe::db::LMDBTransactioninlinevirtual
    DISABLE_COPY_AND_ASSIGN(Transaction) (defined in caffe::db::Transaction)caffe::db::Transaction
    LMDBTransaction(MDB_dbi *mdb_dbi, MDB_txn *mdb_txn) (defined in caffe::db::LMDBTransaction)caffe::db::LMDBTransactioninlineexplicit
    Put(const string &key, const string &value) (defined in caffe::db::LMDBTransaction)caffe::db::LMDBTransactionvirtual
    Transaction() (defined in caffe::db::Transaction)caffe::db::Transactioninline
    ~Transaction() (defined in caffe::db::Transaction)caffe::db::Transactioninlinevirtual
    - - - - diff --git a/doxygen/classcaffe_1_1db_1_1LMDBTransaction.html b/doxygen/classcaffe_1_1db_1_1LMDBTransaction.html deleted file mode 100644 index d1053768521..00000000000 --- a/doxygen/classcaffe_1_1db_1_1LMDBTransaction.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - -Caffe: caffe::db::LMDBTransaction Class Reference - - - - - - - - - - -
    -
    - - - - - - -
    -
    Caffe -
    -
    -
    - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    caffe::db::LMDBTransaction Class Reference
    -
    -
    -
    -Inheritance diagram for caffe::db::LMDBTransaction:
    -
    -
    - - -caffe::db::Transaction - -
    - - - - - - - - - - - -

    -Public Member Functions

    LMDBTransaction (MDB_dbi *mdb_dbi, MDB_txn *mdb_txn)
     
    -virtual void Put (const string &key, const string &value)
     
    -virtual void Commit ()
     
    - Public Member Functions inherited from caffe::db::Transaction
    DISABLE_COPY_AND_ASSIGN (Transaction)
     
    -
    The documentation for this class was generated from the following files:
      -
    • include/caffe/util/db_lmdb.hpp
    • -
    • src/caffe/util/db_lmdb.cpp
    • -
    -
    - - - - diff --git a/doxygen/classcaffe_1_1db_1_1LMDBTransaction.png b/doxygen/classcaffe_1_1db_1_1LMDBTransaction.png deleted file mode 100644 index 58f4754193cfe769d7c164158dcd8968f7f30c54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 678 zcmeAS@N?(olHy`uVBq!ia0vp^D}XqFgBeKf3OV-)NJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~nR>c7hEy=VoqN0QwE~Z;xOLF~|C7(F zOgIvAX-V;)0F!k$7T!5?=!VT^ozq6m5h^c#i!PY-WF^B?6@ObcUrq0z&};9qZhf1) zL_I6a`%>$?rghKS)PAp(3$8Qy&YMwqCT#8eJL~Rj{kCp*sNR|XpFQG&j`iARe|wSr z#>42T)RrF`*7FCuWQMd1$Qf+$LU`{*vLKY4a@_w22a z_f>-TU%O>}Z-UnAdUh?(`-?%2W?i9DspX)0GT69L@AM`g1%~py3~3j17OcOnvSf3^ zzk+j)R=gQ0whil+d zl^OmC-m#^htuFkkTFaK6nN-41)w1mGwwzp--UsaqRGG{4X0zuz@}Dvfw>OCYUdv#$ zKQ^rJJQV-{ diff --git a/doxygen/classcaffe_1_1db_1_1LevelDB-members.html b/doxygen/classcaffe_1_1db_1_1LevelDB-members.html deleted file mode 100644 index fbef9878904..00000000000 --- a/doxygen/classcaffe_1_1db_1_1LevelDB-members.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - -Caffe: Member List - - - - - - - - - - -
    -
    - - - - - - -
    -
    Caffe -
    -
    -
    - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    caffe::db::LevelDB Member List
    -
    -
    - -

    This is the complete list of members for caffe::db::LevelDB, including all inherited members.

    - - - - - - - - - - -
    Close() (defined in caffe::db::LevelDB)caffe::db::LevelDBinlinevirtual
    DB() (defined in caffe::db::DB)caffe::db::DBinline
    DISABLE_COPY_AND_ASSIGN(DB) (defined in caffe::db::DB)caffe::db::DB
    LevelDB() (defined in caffe::db::LevelDB)caffe::db::LevelDBinline
    NewCursor() (defined in caffe::db::LevelDB)caffe::db::LevelDBinlinevirtual
    NewTransaction() (defined in caffe::db::LevelDB)caffe::db::LevelDBinlinevirtual
    Open(const string &source, Mode mode) (defined in caffe::db::LevelDB)caffe::db::LevelDBvirtual
    ~DB() (defined in caffe::db::DB)caffe::db::DBinlinevirtual
    ~LevelDB() (defined in caffe::db::LevelDB)caffe::db::LevelDBinlinevirtual
    - - - - diff --git a/doxygen/classcaffe_1_1db_1_1LevelDB.html b/doxygen/classcaffe_1_1db_1_1LevelDB.html deleted file mode 100644 index 7546162de60..00000000000 --- a/doxygen/classcaffe_1_1db_1_1LevelDB.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - -Caffe: caffe::db::LevelDB Class Reference - - - - - - - - - - -
    -
    - - - - - - -
    -
    Caffe -
    -
    -
    - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    caffe::db::LevelDB Class Reference
    -
    -
    -
    -Inheritance diagram for caffe::db::LevelDB:
    -
    -
    - - -caffe::db::DB - -
    - - - - - - - - - - - - - -

    -Public Member Functions

    -virtual void Open (const string &source, Mode mode)
     
    -virtual void Close ()
     
    -virtual LevelDBCursorNewCursor ()
     
    -virtual LevelDBTransactionNewTransaction ()
     
    - Public Member Functions inherited from caffe::db::DB
    DISABLE_COPY_AND_ASSIGN (DB)
     
    -
    The documentation for this class was generated from the following files: -
    - - - - diff --git a/doxygen/classcaffe_1_1db_1_1LevelDB.png b/doxygen/classcaffe_1_1db_1_1LevelDB.png deleted file mode 100644 index da84c4a11e2b3aceda8daf5c16645d6f0930e521..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 507 zcmVvTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0004sNklrf+Oi1_fu&Xfuw zV%jon=iNW%hlt1n&pDUX!wA2eX7-MB*V*$ekJ2~EFQZFfHCBGLOins$uJ%iHYip?X zp3|P6W{}q7K3}-cHoq+0d^*yx^YwiW&UWYcz3;Q1dB4vO*X>%KHA<=8cG9YDTTy-N z{S*=T9N`oZ@gbZdB0gN?%sJ<|0KCQxU@{jtZ@2l<3!Hc5bm%ZEwf1 za~a(Gw;3niPXIT<3E)FG0erZ~nNmt~`2jIQ83QfPXJr5Y002ovPDHLkV1g~#>s0^% diff --git a/doxygen/classcaffe_1_1db_1_1LevelDBCursor-members.html b/doxygen/classcaffe_1_1db_1_1LevelDBCursor-members.html deleted file mode 100644 index 5239e4dc544..00000000000 --- a/doxygen/classcaffe_1_1db_1_1LevelDBCursor-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - -Caffe: Member List - - - - - - - - - - -
    -
    - - - - - - -
    -
    Caffe -
    -
    -
    - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    caffe::db::LevelDBCursor Member List
    -
    -
    - -

    This is the complete list of members for caffe::db::LevelDBCursor, including all inherited members.

    - - - - - - - - - - - -
    Cursor() (defined in caffe::db::Cursor)caffe::db::Cursorinline
    DISABLE_COPY_AND_ASSIGN(Cursor) (defined in caffe::db::Cursor)caffe::db::Cursor
    key() (defined in caffe::db::LevelDBCursor)caffe::db::LevelDBCursorinlinevirtual
    LevelDBCursor(leveldb::Iterator *iter) (defined in caffe::db::LevelDBCursor)caffe::db::LevelDBCursorinlineexplicit
    Next() (defined in caffe::db::LevelDBCursor)caffe::db::LevelDBCursorinlinevirtual
    SeekToFirst() (defined in caffe::db::LevelDBCursor)caffe::db::LevelDBCursorinlinevirtual
    valid() (defined in caffe::db::LevelDBCursor)caffe::db::LevelDBCursorinlinevirtual
    value() (defined in caffe::db::LevelDBCursor)caffe::db::LevelDBCursorinlinevirtual
    ~Cursor() (defined in caffe::db::Cursor)caffe::db::Cursorinlinevirtual
    ~LevelDBCursor() (defined in caffe::db::LevelDBCursor)caffe::db::LevelDBCursorinline
    - - - - diff --git a/doxygen/classcaffe_1_1db_1_1LevelDBCursor.html b/doxygen/classcaffe_1_1db_1_1LevelDBCursor.html deleted file mode 100644 index fe9453b8b7a..00000000000 --- a/doxygen/classcaffe_1_1db_1_1LevelDBCursor.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - -Caffe: caffe::db::LevelDBCursor Class Reference - - - - - - - - - - -
    -
    - - - - - - -
    -
    Caffe -
    -
    -
    - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    caffe::db::LevelDBCursor Class Reference
    -
    -
    -
    -Inheritance diagram for caffe::db::LevelDBCursor:
    -
    -
    - - -caffe::db::Cursor - -
    - - - - - - - - - - - - - - - - - -

    -Public Member Functions

    LevelDBCursor (leveldb::Iterator *iter)
     
    -virtual void SeekToFirst ()
     
    -virtual void Next ()
     
    -virtual string key ()
     
    -virtual string value ()
     
    -virtual bool valid ()
     
    - Public Member Functions inherited from caffe::db::Cursor
    DISABLE_COPY_AND_ASSIGN (Cursor)
     
    -
    The documentation for this class was generated from the following file: -
    - - - - diff --git a/doxygen/classcaffe_1_1db_1_1LevelDBCursor.png b/doxygen/classcaffe_1_1db_1_1LevelDBCursor.png deleted file mode 100644 index 6368450c740ebf649ee3ea495ce6479570e568e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 644 zcmeAS@N?(olHy`uVBq!ia0vp^vw%2&gBeI(3!3vCNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~346LYhEy=VoqMtGwE_=oyYR~Y|4(k8 zBH+X1yJt7Q$93&xx+(`641b^6mV0~F2G2`fEwfZAIZZu3Jqq<+sjyOeXXGT!mw(kg z?T@XTrY`MQ5%~K`-P5x5+w}i^o@(#4_x7Yavuu5Ce_XA%Y|o{(ThS_+ht}S*EBT+g zs(R&&qM+AuSH(PMee_t%KPxrC{_fUW6)*KYndMeb4Za(eqx36cZO)bW)x1nroj=XD z{*;(h@~Aw0t?%`7w=|t!KYZ`^{QioYJi3;to7VWH7;oXaHeq_Z+5%l?)l9!Xizlh* zFI4l4bMl?E2jt?))w#E~>2e;p|B)$Ta_QB$^{IESg;vjA`)b>Us1%Kc`2oxygt8do zoOlm-uVAd;G-c3V$o4?>3d5cjsfOtY$8g|cdRf13PmQ{5zDiQo z_V#P{npFocX4l{Bxw_A%R9`fB+1~jpOP#My>yDD=IGyls-R-@%>W;AOPP_N&*uE80 z6@5~ozU*5mYdkxSpE=6>m0zyFh2p$3Wovn_OUbX|eO^;`?M!OHoW6@)zkL48TKM(D z_xF5PbJ}KYE#G-9HA8ma`6rLx?b>_&R01fV9?Od!IM0Fb>yzKcOQ(cAk(cFDRFXd} RWe-d;44$rjF6*2UngAGcE+GH_ diff --git a/doxygen/classcaffe_1_1db_1_1LevelDBTransaction-members.html b/doxygen/classcaffe_1_1db_1_1LevelDBTransaction-members.html deleted file mode 100644 index 16efdef44c4..00000000000 --- a/doxygen/classcaffe_1_1db_1_1LevelDBTransaction-members.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -Caffe: Member List - - - - - - - - - - -
    -
    - - - - - - -
    -
    Caffe -
    -
    -
    - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    caffe::db::LevelDBTransaction Member List
    -
    -
    - -

    This is the complete list of members for caffe::db::LevelDBTransaction, including all inherited members.

    - - - - - - - -
    Commit() (defined in caffe::db::LevelDBTransaction)caffe::db::LevelDBTransactioninlinevirtual
    DISABLE_COPY_AND_ASSIGN(Transaction) (defined in caffe::db::Transaction)caffe::db::Transaction
    LevelDBTransaction(leveldb::DB *db) (defined in caffe::db::LevelDBTransaction)caffe::db::LevelDBTransactioninlineexplicit
    Put(const string &key, const string &value) (defined in caffe::db::LevelDBTransaction)caffe::db::LevelDBTransactioninlinevirtual
    Transaction() (defined in caffe::db::Transaction)caffe::db::Transactioninline
    ~Transaction() (defined in caffe::db::Transaction)caffe::db::Transactioninlinevirtual
    - - - - diff --git a/doxygen/classcaffe_1_1db_1_1LevelDBTransaction.html b/doxygen/classcaffe_1_1db_1_1LevelDBTransaction.html deleted file mode 100644 index 0f55e88b519..00000000000 --- a/doxygen/classcaffe_1_1db_1_1LevelDBTransaction.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - -Caffe: caffe::db::LevelDBTransaction Class Reference - - - - - - - - - - -
    -
    - - - - - - -
    -
    Caffe -
    -
    -
    - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    caffe::db::LevelDBTransaction Class Reference
    -
    -
    -
    -Inheritance diagram for caffe::db::LevelDBTransaction:
    -
    -
    - - -caffe::db::Transaction - -
    - - - - - - - - - - - -

    -Public Member Functions

    LevelDBTransaction (leveldb::DB *db)
     
    -virtual void Put (const string &key, const string &value)
     
    -virtual void Commit ()
     
    - Public Member Functions inherited from caffe::db::Transaction
    DISABLE_COPY_AND_ASSIGN (Transaction)
     
    -
    The documentation for this class was generated from the following file: -
    - - - - diff --git a/doxygen/classcaffe_1_1db_1_1LevelDBTransaction.png b/doxygen/classcaffe_1_1db_1_1LevelDBTransaction.png deleted file mode 100644 index 093aff3f892ded2d5e46d4bd7d7bc6ec24c9fca7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 698 zcmeAS@N?(olHy`uVBq!ia0vp^TY)%$gBeI>upC(hq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0JUv|;Ln;{G&b{6D+JM7#dij!{|NZSI zKTF#1SZ(UE7ZFKM=Jw=oaB57SmKwQCxLd_{*^+5XBviMm9DNb|D#*;UC^@$5cwGIY zFD_?uJ*!spuMEFE{af|^`3W^Ge>$r8Z@%7Yw{0i)lU=)Zl^wkM?|#`f?ce)0rk|ac z-7D*vRqDOh{rdhhCGzcASIV=Bw|kWR2ru`WRYR3T)&z=zhC*)?>+yRv!dTrFTH;C zaQj_Uoz0vNynivy@Cy$5 z|L07Ht?F0(FD*BUgVOmKJA#6kk7%r9Oqz0q0jQxtLeVe+UoimwZUZp1K{#YD5mzVoNXH>rVmDi6l9xG?1ud!p0 z%P83vbbUcif9^Y`&0kNJuHL+RzFo}1wAFLZts%WnOjx>oPPovqccjOV`Hy!T4l!>iL{g5HM)*T0&@_kP9q;^+EN z%oe96aL3oZWq#Golj&U|@;d9>PnqEIZ@UiIFOqw<^<|3Q{#*TDeILj2zg+qL^RK2` zV(U9+yk=Y1F7xzd_1VDebk?7BcT+n)rv9BTduIERc~S{t$RUxr(pxjt>@V|kMYVZx TWl;{mgvQ|M>gTe~DWM4fdjM0q diff --git a/doxygen/classcaffe_1_1db_1_1Transaction-members.html b/doxygen/classcaffe_1_1db_1_1Transaction-members.html index 984d99a7e5c..ea42a01f971 100644 --- a/doxygen/classcaffe_1_1db_1_1Transaction-members.html +++ b/doxygen/classcaffe_1_1db_1_1Transaction-members.html @@ -3,7 +3,7 @@ - + Caffe: Member List @@ -29,7 +29,7 @@

    - + @@ -77,9 +77,9 @@
    diff --git a/doxygen/classcaffe_1_1db_1_1Transaction.html b/doxygen/classcaffe_1_1db_1_1Transaction.html index 5f16c2635e8..a4872946700 100644 --- a/doxygen/classcaffe_1_1db_1_1Transaction.html +++ b/doxygen/classcaffe_1_1db_1_1Transaction.html @@ -3,7 +3,7 @@ - + Caffe: caffe::db::Transaction Class Reference @@ -29,7 +29,7 @@
    - + @@ -88,9 +88,9 @@

    diff --git a/doxygen/classcaffe_1_1db_1_1Transaction.png b/doxygen/classcaffe_1_1db_1_1Transaction.png deleted file mode 100644 index 88f1e6f067fe75f5a635901668590f929a204d25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 955 zcmeAS@N?(olHy`uVBq!ia0y~yU@QT$12~w0q}}(ruRuy7z$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-opiH zW|lw0QL|XRS!e4R-UobTt2mYKIbTY?EMx23&g!s7_4>7QH+)XKrThG-$-H%bja@7E z{)v016MOBq+C1Lf@v9#(T>10<()FFOa%W!d%6($F-^;v~eM59*#x2G#KUiO;a&DB_ zGrelr_1faeHAP>P7^?nseR;Zj2lw{*C#PR}z3=JP348$)wq7yb8{8Q6^6cNVTkRzW za{RNa!meF=H1ErGQ`;r}r3uzP|92)yxPIXqkGggqVux?UJ2V)0a3u6X@TsdhbuNoy^gx zOQ!wGR9`w@=1AGwU3=zx&)+3eX05%KV_Ny7FKm0az4x@Y?g)LQ^K;f7>6bsR>g|5I zr(*BrtD1{;Zad$%^y{&*ZG4M;>pHiX-JVx7qm6UB{dVoYs~xXg`d@c%Ye}-EJSYNZ ztiAm^^V71M3OCnw25hTV`+M7QO`qQB-yT&vf9bG0XPtUj{Ic3}%kN#mdw=z_eewEb z-fS`9U-;*Dp7HiFJN=$){it()>)m~8KAF7Gz1*BW_4>XE{~juA`q=&HoritI%(+Kz z|NJm}_xefsk4!H=cYZma|B>#?`Oj-tEqfkN+N;$bS@$jX-1^D&vC{V^|NE=3?)2_y zdG`C$_T_~pM|=D{yuWtJHL=vEx1)2ke{V3Gc7D_O`$}(~t}3}c`QKfIH5al! - + Caffe: Class Index @@ -29,7 +29,7 @@
    - + @@ -120,9 +120,9 @@

    diff --git a/doxygen/common_8hpp_source.html b/doxygen/common_8hpp_source.html index 0e98bd40743..ae81a7450d9 100644 --- a/doxygen/common_8hpp_source.html +++ b/doxygen/common_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/common.hpp Source File @@ -29,7 +29,7 @@
    - + @@ -74,9 +74,9 @@
    diff --git a/doxygen/common__layers_8hpp_source.html b/doxygen/common__layers_8hpp_source.html deleted file mode 100644 index cb906af5d9d..00000000000 --- a/doxygen/common__layers_8hpp_source.html +++ /dev/null @@ -1,776 +0,0 @@ - - - - - - -Caffe: include/caffe/common_layers.hpp Source File - - - - - - - - - - -
    -
    - - - - - - -
    -
    Caffe -
    -
    -
    - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    common_layers.hpp
    -
    -
    -
    1 #ifndef CAFFE_COMMON_LAYERS_HPP_
    -
    2 #define CAFFE_COMMON_LAYERS_HPP_
    -
    3 
    -
    4 #include <string>
    -
    5 #include <utility>
    -
    6 #include <vector>
    -
    7 
    -
    8 #include "caffe/blob.hpp"
    -
    9 #include "caffe/common.hpp"
    -
    10 #include "caffe/data_layers.hpp"
    -
    11 #include "caffe/layer.hpp"
    -
    12 #include "caffe/loss_layers.hpp"
    -
    13 #include "caffe/neuron_layers.hpp"
    -
    14 #include "caffe/proto/caffe.pb.h"
    -
    15 
    -
    16 namespace caffe {
    -
    17 
    -
    29 template <typename Dtype>
    -
    30 class ArgMaxLayer : public Layer<Dtype> {
    -
    31  public:
    -
    44  explicit ArgMaxLayer(const LayerParameter& param)
    -
    45  : Layer<Dtype>(param) {}
    -
    46  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    -
    47  const vector<Blob<Dtype>*>& top);
    -
    48  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    -
    49  const vector<Blob<Dtype>*>& top);
    -
    50 
    -
    51  virtual inline const char* type() const { return "ArgMax"; }
    -
    52  virtual inline int ExactNumBottomBlobs() const { return 1; }
    -
    53  virtual inline int ExactNumTopBlobs() const { return 1; }
    -
    54 
    -
    55  protected:
    -
    68  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    -
    69  const vector<Blob<Dtype>*>& top);
    -
    71  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    -
    72  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {
    -
    73  NOT_IMPLEMENTED;
    -
    74  }
    -
    75  bool out_max_val_;
    -
    76  size_t top_k_;
    -
    77  bool has_axis_;
    -
    78  int axis_;
    -
    79 };
    -
    80 
    -
    88 template <typename Dtype>
    -
    89 class BatchReindexLayer : public Layer<Dtype> {
    -
    90  public:
    -
    91  explicit BatchReindexLayer(const LayerParameter& param)
    -
    92  : Layer<Dtype>(param) {}
    -
    93  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    -
    94  const vector<Blob<Dtype>*>& top);
    -
    95 
    -
    96  virtual inline const char* type() const { return "BatchReindex"; }
    -
    97  virtual inline int ExactNumBottomBlobs() const { return 2; }
    -
    98  virtual inline int ExactNumTopBlobs() const { return 1; }
    -
    99 
    -
    100  protected:
    -
    113  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    -
    114  const vector<Blob<Dtype>*>& top);
    -
    115  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    -
    116  const vector<Blob<Dtype>*>& top);
    -
    117 
    -
    133  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    -
    134  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    135  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    -
    136  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    137 
    -
    138  private:
    -
    139  struct pair_sort_first {
    -
    140  bool operator()(const std::pair<int, int> &left,
    -
    141  const std::pair<int, int> &right) {
    -
    142  return left.first < right.first;
    -
    143  }
    -
    144  };
    -
    145  void check_batch_reindex(int initial_num, int final_num,
    -
    146  const Dtype* ridx_data);
    -
    147 };
    -
    148 
    -
    149 
    -
    154 template <typename Dtype>
    -
    155 class ConcatLayer : public Layer<Dtype> {
    -
    156  public:
    -
    157  explicit ConcatLayer(const LayerParameter& param)
    -
    158  : Layer<Dtype>(param) {}
    -
    159  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    -
    160  const vector<Blob<Dtype>*>& top);
    -
    161  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    -
    162  const vector<Blob<Dtype>*>& top);
    -
    163 
    -
    164  virtual inline const char* type() const { return "Concat"; }
    -
    165  virtual inline int MinBottomBlobs() const { return 1; }
    -
    166  virtual inline int ExactNumTopBlobs() const { return 1; }
    -
    167 
    -
    168  protected:
    -
    185  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    -
    186  const vector<Blob<Dtype>*>& top);
    -
    187  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    -
    188  const vector<Blob<Dtype>*>& top);
    -
    189 
    -
    212  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    -
    213  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    214  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    -
    215  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    216 
    -
    217  int count_;
    -
    218  int num_concats_;
    -
    219  int concat_input_size_;
    -
    220  int concat_axis_;
    -
    221 };
    -
    222 
    -
    229 template <typename Dtype>
    -
    230 class EltwiseLayer : public Layer<Dtype> {
    -
    231  public:
    -
    232  explicit EltwiseLayer(const LayerParameter& param)
    -
    233  : Layer<Dtype>(param) {}
    -
    234  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    -
    235  const vector<Blob<Dtype>*>& top);
    -
    236  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    -
    237  const vector<Blob<Dtype>*>& top);
    -
    238 
    -
    239  virtual inline const char* type() const { return "Eltwise"; }
    -
    240  virtual inline int MinBottomBlobs() const { return 2; }
    -
    241  virtual inline int ExactNumTopBlobs() const { return 1; }
    -
    242 
    -
    243  protected:
    -
    244  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    -
    245  const vector<Blob<Dtype>*>& top);
    -
    246  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    -
    247  const vector<Blob<Dtype>*>& top);
    -
    248  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    -
    249  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    250  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    -
    251  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    252 
    -
    253  EltwiseParameter_EltwiseOp op_;
    -
    254  vector<Dtype> coeffs_;
    -
    255  Blob<int> max_idx_;
    -
    256 
    -
    257  bool stable_prod_grad_;
    -
    258 };
    -
    259 
    -
    267 template <typename Dtype>
    -
    268 class EmbedLayer : public Layer<Dtype> {
    -
    269  public:
    -
    270  explicit EmbedLayer(const LayerParameter& param)
    -
    271  : Layer<Dtype>(param) {}
    -
    272  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    -
    273  const vector<Blob<Dtype>*>& top);
    -
    274  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    -
    275  const vector<Blob<Dtype>*>& top);
    -
    276 
    -
    277  virtual inline const char* type() const { return "Embed"; }
    -
    278  virtual inline int ExactNumBottomBlobs() const { return 1; }
    -
    279  virtual inline int ExactNumTopBlobs() const { return 1; }
    -
    280 
    -
    281  protected:
    -
    282  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    -
    283  const vector<Blob<Dtype>*>& top);
    -
    284  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    -
    285  const vector<Blob<Dtype>*>& top);
    -
    286  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    -
    287  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    288  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    -
    289  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    290 
    -
    291  int M_;
    -
    292  int K_;
    -
    293  int N_;
    -
    294  bool bias_term_;
    -
    295  Blob<Dtype> bias_multiplier_;
    -
    296 };
    -
    297 
    -
    304 template <typename Dtype>
    -
    305 class FilterLayer : public Layer<Dtype> {
    -
    306  public:
    -
    307  explicit FilterLayer(const LayerParameter& param)
    -
    308  : Layer<Dtype>(param) {}
    -
    309  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    -
    310  const vector<Blob<Dtype>*>& top);
    -
    311  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    -
    312  const vector<Blob<Dtype>*>& top);
    -
    313 
    -
    314  virtual inline const char* type() const { return "Filter"; }
    -
    315  virtual inline int MinBottomBlobs() const { return 2; }
    -
    316  virtual inline int MinTopBlobs() const { return 1; }
    -
    317 
    -
    318  protected:
    -
    338  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    -
    339  const vector<Blob<Dtype>*>& top);
    -
    340  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    -
    341  const vector<Blob<Dtype>*>& top);
    -
    342 
    -
    352  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    -
    353  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    354  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    -
    355  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    356 
    -
    357  bool first_reshape_;
    -
    358  vector<int> indices_to_forward_;
    -
    359 };
    -
    360 
    -
    371 template <typename Dtype>
    -
    372 class FlattenLayer : public Layer<Dtype> {
    -
    373  public:
    -
    374  explicit FlattenLayer(const LayerParameter& param)
    -
    375  : Layer<Dtype>(param) {}
    -
    376  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    -
    377  const vector<Blob<Dtype>*>& top);
    -
    378 
    -
    379  virtual inline const char* type() const { return "Flatten"; }
    -
    380  virtual inline int ExactNumBottomBlobs() const { return 1; }
    -
    381  virtual inline int ExactNumTopBlobs() const { return 1; }
    -
    382 
    -
    383  protected:
    -
    392  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    -
    393  const vector<Blob<Dtype>*>& top);
    -
    394 
    -
    404  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    -
    405  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    406 };
    -
    407 
    -
    414 template <typename Dtype>
    -
    415 class InnerProductLayer : public Layer<Dtype> {
    -
    416  public:
    -
    417  explicit InnerProductLayer(const LayerParameter& param)
    -
    418  : Layer<Dtype>(param) {}
    -
    419  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    -
    420  const vector<Blob<Dtype>*>& top);
    -
    421  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    -
    422  const vector<Blob<Dtype>*>& top);
    -
    423 
    -
    424  virtual inline const char* type() const { return "InnerProduct"; }
    -
    425  virtual inline int ExactNumBottomBlobs() const { return 1; }
    -
    426  virtual inline int ExactNumTopBlobs() const { return 1; }
    -
    427 
    -
    428  protected:
    -
    429  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    -
    430  const vector<Blob<Dtype>*>& top);
    -
    431  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    -
    432  const vector<Blob<Dtype>*>& top);
    -
    433  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    -
    434  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    435  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    -
    436  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    437 
    -
    438  int M_;
    -
    439  int K_;
    -
    440  int N_;
    -
    441  bool bias_term_;
    -
    442  Blob<Dtype> bias_multiplier_;
    -
    443 };
    -
    444 
    -
    450 template <typename Dtype>
    -
    451 class MVNLayer : public Layer<Dtype> {
    -
    452  public:
    -
    453  explicit MVNLayer(const LayerParameter& param)
    -
    454  : Layer<Dtype>(param) {}
    -
    455  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    -
    456  const vector<Blob<Dtype>*>& top);
    -
    457 
    -
    458  virtual inline const char* type() const { return "MVN"; }
    -
    459  virtual inline int ExactNumBottomBlobs() const { return 1; }
    -
    460  virtual inline int ExactNumTopBlobs() const { return 1; }
    -
    461 
    -
    462  protected:
    -
    463  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    -
    464  const vector<Blob<Dtype>*>& top);
    -
    465  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    -
    466  const vector<Blob<Dtype>*>& top);
    -
    467  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    -
    468  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    469  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    -
    470  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    471 
    -
    472  Blob<Dtype> mean_, variance_, temp_;
    -
    473 
    - -
    476  Dtype eps_;
    -
    477 };
    -
    478 
    -
    479 /*
    -
    480  * @brief Reshapes the input Blob into an arbitrary-sized output Blob.
    -
    481  *
    -
    482  * Note: similarly to FlattenLayer, this layer does not change the input values
    -
    483  * (see FlattenLayer, Blob::ShareData and Blob::ShareDiff).
    -
    484  */
    -
    485 template <typename Dtype>
    -
    486 class ReshapeLayer : public Layer<Dtype> {
    -
    487  public:
    -
    488  explicit ReshapeLayer(const LayerParameter& param)
    -
    489  : Layer<Dtype>(param) {}
    -
    490  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    -
    491  const vector<Blob<Dtype>*>& top);
    -
    492  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    -
    493  const vector<Blob<Dtype>*>& top);
    -
    494 
    -
    495  virtual inline const char* type() const { return "Reshape"; }
    -
    496  virtual inline int ExactNumBottomBlobs() const { return 1; }
    -
    497  virtual inline int ExactNumTopBlobs() const { return 1; }
    -
    498 
    -
    499  protected:
    -
    500  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    -
    501  const vector<Blob<Dtype>*>& top) {}
    -
    502  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    -
    503  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
    -
    504  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    -
    505  const vector<Blob<Dtype>*>& top) {}
    -
    506  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    -
    507  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
    -
    508 
    -
    510  vector<int> copy_axes_;
    - - -
    515 };
    -
    516 
    -
    524 template <typename Dtype>
    -
    525 class ReductionLayer : public Layer<Dtype> {
    -
    526  public:
    -
    527  explicit ReductionLayer(const LayerParameter& param)
    -
    528  : Layer<Dtype>(param) {}
    -
    529  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    -
    530  const vector<Blob<Dtype>*>& top);
    -
    531  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    -
    532  const vector<Blob<Dtype>*>& top);
    -
    533 
    -
    534  virtual inline const char* type() const { return "Reduction"; }
    -
    535  virtual inline int ExactNumBottomBlobs() const { return 1; }
    -
    536  virtual inline int ExactNumTopBlobs() const { return 1; }
    -
    537 
    -
    538  protected:
    -
    539  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    -
    540  const vector<Blob<Dtype>*>& top);
    -
    541  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    -
    542  const vector<Blob<Dtype>*>& top);
    -
    543  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    -
    544  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    545  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    -
    546  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    547 
    -
    549  ReductionParameter_ReductionOp op_;
    -
    551  Dtype coeff_;
    -
    553  int axis_;
    -
    555  int num_;
    -
    557  int dim_;
    - -
    560 };
    -
    561 
    -
    566 template <typename Dtype>
    -
    567 class SilenceLayer : public Layer<Dtype> {
    -
    568  public:
    -
    569  explicit SilenceLayer(const LayerParameter& param)
    -
    570  : Layer<Dtype>(param) {}
    -
    571  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    -
    572  const vector<Blob<Dtype>*>& top) {}
    -
    573 
    -
    574  virtual inline const char* type() const { return "Silence"; }
    -
    575  virtual inline int MinBottomBlobs() const { return 1; }
    -
    576  virtual inline int ExactNumTopBlobs() const { return 0; }
    -
    577 
    -
    578  protected:
    -
    579  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    -
    580  const vector<Blob<Dtype>*>& top) {}
    -
    581  // We can't define Forward_gpu here, since STUB_GPU will provide
    -
    582  // its own definition for CPU_ONLY mode.
    -
    583  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    -
    584  const vector<Blob<Dtype>*>& top);
    -
    585  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    -
    586  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    587  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    -
    588  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    589 };
    -
    590 
    -
    596 template <typename Dtype>
    -
    597 class SoftmaxLayer : public Layer<Dtype> {
    -
    598  public:
    -
    599  explicit SoftmaxLayer(const LayerParameter& param)
    -
    600  : Layer<Dtype>(param) {}
    -
    601  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    -
    602  const vector<Blob<Dtype>*>& top);
    -
    603 
    -
    604  virtual inline const char* type() const { return "Softmax"; }
    -
    605  virtual inline int ExactNumBottomBlobs() const { return 1; }
    -
    606  virtual inline int ExactNumTopBlobs() const { return 1; }
    -
    607 
    -
    608  protected:
    -
    609  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    -
    610  const vector<Blob<Dtype>*>& top);
    -
    611  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    -
    612  const vector<Blob<Dtype>*>& top);
    -
    613  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    -
    614  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    615  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    -
    616  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    617 
    -
    618  int outer_num_;
    -
    619  int inner_num_;
    -
    620  int softmax_axis_;
    - - -
    625 };
    -
    626 
    -
    627 #ifdef USE_CUDNN
    -
    628 
    -
    632 template <typename Dtype>
    -
    633 class CuDNNSoftmaxLayer : public SoftmaxLayer<Dtype> {
    -
    634  public:
    -
    635  explicit CuDNNSoftmaxLayer(const LayerParameter& param)
    -
    636  : SoftmaxLayer<Dtype>(param), handles_setup_(false) {}
    -
    637  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    -
    638  const vector<Blob<Dtype>*>& top);
    -
    639  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    -
    640  const vector<Blob<Dtype>*>& top);
    -
    641  virtual ~CuDNNSoftmaxLayer();
    -
    642 
    -
    643  protected:
    -
    644  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    -
    645  const vector<Blob<Dtype>*>& top);
    -
    646  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    -
    647  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    648 
    -
    649  bool handles_setup_;
    -
    650  cudnnHandle_t handle_;
    -
    651  cudnnTensorDescriptor_t bottom_desc_;
    -
    652  cudnnTensorDescriptor_t top_desc_;
    -
    653 };
    -
    654 #endif
    -
    655 
    -
    662 template <typename Dtype>
    -
    663 class SplitLayer : public Layer<Dtype> {
    -
    664  public:
    -
    665  explicit SplitLayer(const LayerParameter& param)
    -
    666  : Layer<Dtype>(param) {}
    -
    667  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    -
    668  const vector<Blob<Dtype>*>& top);
    -
    669 
    -
    670  virtual inline const char* type() const { return "Split"; }
    -
    671  virtual inline int ExactNumBottomBlobs() const { return 1; }
    -
    672  virtual inline int MinTopBlobs() const { return 1; }
    -
    673 
    -
    674  protected:
    -
    675  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    -
    676  const vector<Blob<Dtype>*>& top);
    -
    677  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    -
    678  const vector<Blob<Dtype>*>& top);
    -
    679  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    -
    680  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    681  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    -
    682  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    683 
    -
    684  int count_;
    -
    685 };
    -
    686 
    -
    693 template <typename Dtype>
    -
    694 class SliceLayer : public Layer<Dtype> {
    -
    695  public:
    -
    696  explicit SliceLayer(const LayerParameter& param)
    -
    697  : Layer<Dtype>(param) {}
    -
    698  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    -
    699  const vector<Blob<Dtype>*>& top);
    -
    700  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    -
    701  const vector<Blob<Dtype>*>& top);
    -
    702 
    -
    703  virtual inline const char* type() const { return "Slice"; }
    -
    704  virtual inline int ExactNumBottomBlobs() const { return 1; }
    -
    705  virtual inline int MinTopBlobs() const { return 1; }
    -
    706 
    -
    707  protected:
    -
    708  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    -
    709  const vector<Blob<Dtype>*>& top);
    -
    710  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    -
    711  const vector<Blob<Dtype>*>& top);
    -
    712  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    -
    713  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    714  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    -
    715  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    716 
    -
    717  int count_;
    -
    718  int num_slices_;
    -
    719  int slice_size_;
    -
    720  int slice_axis_;
    -
    721  vector<int> slice_point_;
    -
    722 };
    -
    723 
    -
    727 template <typename Dtype>
    -
    728 class TileLayer : public Layer<Dtype> {
    -
    729  public:
    -
    730  explicit TileLayer(const LayerParameter& param)
    -
    731  : Layer<Dtype>(param) {}
    -
    732  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    -
    733  const vector<Blob<Dtype>*>& top);
    -
    734 
    -
    735  virtual inline const char* type() const { return "Tile"; }
    -
    736  virtual inline int ExactNumBottomBlobs() const { return 1; }
    -
    737  virtual inline int ExactNumTopBlobs() const { return 1; }
    -
    738 
    -
    739  protected:
    -
    740  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    -
    741  const vector<Blob<Dtype>*>& top);
    -
    742  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    -
    743  const vector<Blob<Dtype>*>& top);
    -
    744 
    -
    745  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    -
    746  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    747  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    -
    748  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    749 
    -
    750  unsigned int axis_, tiles_, outer_dim_, inner_dim_;
    -
    751 };
    -
    752 
    -
    753 } // namespace caffe
    -
    754 
    -
    755 #endif // CAFFE_COMMON_LAYERS_HPP_
    -
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: common_layers.hpp:506
    -
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the CPU device, compute the layer output.
    Definition: split_layer.cpp:27
    -
    virtual int MinBottomBlobs() const
    Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is requi...
    Definition: common_layers.hpp:240
    -
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: common_layers.hpp:460
    -
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the CPU device, compute the layer output.
    Definition: embed_layer.cpp:68
    -
    virtual const char * type() const
    Returns the layer type.
    Definition: common_layers.hpp:51
    -
    virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: inner_product_layer.cpp:13
    -
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    -
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: tile_layer.cpp:39
    -
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: common_layers.hpp:381
    -
    virtual const char * type() const
    Returns the layer type.
    Definition: common_layers.hpp:277
    -
    Copy a Blob along specified dimensions.
    Definition: common_layers.hpp:728
    -
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: batch_reindex_layer.cpp:10
    -
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    Definition: common_layers.hpp:504
    -
    An interface for the units of computation which can be composed into a Net.
    Definition: layer.hpp:33
    -
    A layer factory that allows one to register layers. During runtime, registered layers could be called...
    Definition: blob.hpp:15
    -
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Definition: concat_layer.cpp:58
    -
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: embed_layer.cpp:52
    -
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: reduction_layer.cpp:80
    -
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the CPU device, compute the layer output.
    Definition: reduction_layer.cpp:45
    -
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: common_layers.hpp:426
    -
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: common_layers.hpp:605
    -
    Blob< Dtype > sum_multiplier_
    sum_multiplier is used to carry out sum using BLAS
    Definition: common_layers.hpp:622
    -
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: common_layers.hpp:704
    -
    Reshapes the input Blob into flat vectors.
    Definition: common_layers.hpp:372
    -
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: common_layers.hpp:502
    -
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: inner_product_layer.cpp:55
    -
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: softmax_layer.cpp:64
    -
    int dim_
    the input size of each reduction
    Definition: common_layers.hpp:557
    -
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: slice_layer.cpp:23
    -
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the CPU device, compute the layer output.
    Definition: common_layers.hpp:579
    -
    virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: reshape_layer.cpp:9
    -
    virtual const char * type() const
    Returns the layer type.
    Definition: common_layers.hpp:379
    -
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: common_layers.hpp:459
    -
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: common_layers.hpp:606
    -
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    -
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the CPU device, compute the layer output.
    Definition: tile_layer.cpp:25
    -
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    -
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    -
    int constant_count_
    the product of the "constant" output dimensions
    Definition: common_layers.hpp:514
    -
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: filter_layer.cpp:18
    -
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: argmax_layer.cpp:34
    -
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Computes the error gradient w.r.t. the concatenate inputs.
    Definition: concat_layer.cpp:78
    -
    virtual int MinTopBlobs() const
    Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
    Definition: common_layers.hpp:705
    -
    virtual const char * type() const
    Returns the layer type.
    Definition: common_layers.hpp:604
    -
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: common_layers.hpp:97
    -
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: reshape_layer.cpp:31
    -
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: common_layers.hpp:278
    -
    virtual int MinBottomBlobs() const
    Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is requi...
    Definition: common_layers.hpp:575
    -
    virtual int MinBottomBlobs() const
    Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is requi...
    Definition: common_layers.hpp:315
    -
    virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: concat_layer.cpp:10
    -
    virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: eltwise_layer.cpp:11
    -
    int inferred_axis_
    the index of the axis whose dimension we infer, or -1 if none
    Definition: common_layers.hpp:512
    -
    virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: embed_layer.cpp:13
    -
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: embed_layer.cpp:89
    -
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: reduction_layer.cpp:18
    -
    Normalizes the input to have 0-mean and/or unit (1) variance.
    Definition: common_layers.hpp:451
    -
    A layer for learning "embeddings" of one-hot vector input. Equivalent to an InnerProductLayer with on...
    Definition: common_layers.hpp:268
    -
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: common_layers.hpp:535
    -
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Definition: filter_layer.cpp:63
    -
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Computes the error gradient w.r.t. the forwarded inputs.
    Definition: filter_layer.cpp:81
    -
    Compute the index of the max values for each datum across all dimensions .
    Definition: common_layers.hpp:30
    -
    virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: argmax_layer.cpp:12
    -
    Computes the softmax function.
    Definition: common_layers.hpp:597
    -
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    -
    virtual const char * type() const
    Returns the layer type.
    Definition: common_layers.hpp:534
    -
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    -
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    -
    virtual const char * type() const
    Returns the layer type.
    Definition: common_layers.hpp:574
    -
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the CPU device, compute the layer output.
    Definition: inner_product_layer.cpp:81
    -
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    -
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    -
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    -
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    -
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: silence_layer.cpp:10
    -
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    -
    Compute elementwise operations, such as product and sum, along multiple input Blobs.
    Definition: common_layers.hpp:230
    -
    virtual const char * type() const
    Returns the layer type.
    Definition: common_layers.hpp:424
    -
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: common_layers.hpp:497
    -
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: common_layers.hpp:380
    -
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: common_layers.hpp:53
    -
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    -
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: common_layers.hpp:736
    -
    Ignores bottom blobs while producing no top blobs. (This is useful to suppress outputs during testing...
    Definition: common_layers.hpp:567
    -
    Blob< Dtype > sum_multiplier_
    a helper Blob used for summation (op_ == SUM)
    Definition: common_layers.hpp:559
    -
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: common_layers.hpp:576
    -
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    -
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: eltwise_layer.cpp:32
    -
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the CPU device, compute the layer output.
    Definition: slice_layer.cpp:77
    -
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    -
    virtual const char * type() const
    Returns the layer type.
    Definition: common_layers.hpp:458
    -
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Not implemented (non-differentiable function)
    Definition: common_layers.hpp:71
    -
    Definition: common_layers.hpp:486
    -
    virtual const char * type() const
    Returns the layer type.
    Definition: common_layers.hpp:239
    -
    virtual const char * type() const
    Returns the layer type.
    Definition: common_layers.hpp:670
    -
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: slice_layer.cpp:98
    -
    Also known as a "fully-connected" layer, computes an inner product with a set of learned weights...
    Definition: common_layers.hpp:415
    -
    vector< int > copy_axes_
    vector of axes indices whose dimensions we'll copy from the bottom
    Definition: common_layers.hpp:510
    -
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: flatten_layer.cpp:10
    -
    virtual const char * type() const
    Returns the layer type.
    Definition: common_layers.hpp:314
    -
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: inner_product_layer.cpp:96
    -
    virtual int MinTopBlobs() const
    Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
    Definition: common_layers.hpp:316
    -
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: common_layers.hpp:536
    -
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    -
    ReductionParameter_ReductionOp op_
    the reduction operation performed by the layer
    Definition: common_layers.hpp:549
    -
    Compute "reductions" – operations that return a scalar output Blob for an input Blob of arbitrary si...
    Definition: common_layers.hpp:525
    -
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    -
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Definition: batch_reindex_layer.cpp:34
    -
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: common_layers.hpp:737
    -
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: split_layer.cpp:35
    -
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    -
    virtual const char * type() const
    Returns the layer type.
    Definition: common_layers.hpp:96
    -
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: common_layers.hpp:279
    -
    virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: reduction_layer.cpp:12
    -
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    -
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: mvn_layer.cpp:11
    -
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Computes the error gradient w.r.t. the reordered input.
    Definition: batch_reindex_layer.cpp:53
    -
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: tile_layer.cpp:10
    -
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: common_layers.hpp:52
    -
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: common_layers.hpp:241
    -
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    -
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: mvn_layer.cpp:76
    -
    Dtype coeff_
    a scalar coefficient applied to all outputs
    Definition: common_layers.hpp:551
    -
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: concat_layer.cpp:18
    -
    Blob< Dtype > scale_
    scale is an intermediate Blob to hold temporary results.
    Definition: common_layers.hpp:624
    -
    virtual int MinBottomBlobs() const
    Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is requi...
    Definition: common_layers.hpp:165
    -
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    -
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the CPU device, compute the layer output.
    Definition: softmax_layer.cpp:28
    -
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: common_layers.hpp:571
    -
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: common_layers.hpp:166
    -
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    -
    Creates a "split" path in the network by copying the bottom Blob into multiple top Blobs to be used b...
    Definition: common_layers.hpp:663
    -
    virtual int MinTopBlobs() const
    Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
    Definition: common_layers.hpp:672
    -
    virtual const char * type() const
    Returns the layer type.
    Definition: common_layers.hpp:164
    -
    Index into the input blob along its first axis.
    Definition: common_layers.hpp:89
    -
    Takes a Blob and slices it along either the num or channel dimension, outputting multiple sliced Blob...
    Definition: common_layers.hpp:694
    -
    virtual const char * type() const
    Returns the layer type.
    Definition: common_layers.hpp:735
    -
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    -
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: common_layers.hpp:671
    -
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    -
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Definition: flatten_layer.cpp:30
    -
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: eltwise_layer.cpp:101
    -
    virtual const char * type() const
    Returns the layer type.
    Definition: common_layers.hpp:495
    -
    virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: slice_layer.cpp:11
    -
    ArgMaxLayer(const LayerParameter &param)
    Definition: common_layers.hpp:44
    -
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the CPU device, compute the layer output.
    Definition: eltwise_layer.cpp:46
    -
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    -
    Blob< Dtype > sum_multiplier_
    sum_multiplier is used to carry out sum using BLAS
    Definition: common_layers.hpp:475
    -
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: softmax_layer.cpp:11
    -
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the CPU device, compute the layer output.
    Definition: mvn_layer.cpp:33
    -
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the CPU device, compute the layer output.
    Definition: common_layers.hpp:500
    -
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    -
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: common_layers.hpp:496
    -
    int num_
    the number of reductions performed
    Definition: common_layers.hpp:555
    -
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Computes the error gradient w.r.t. the concatenate inputs.
    Definition: flatten_layer.cpp:36
    -
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: split_layer.cpp:10
    -
    virtual const char * type() const
    Returns the layer type.
    Definition: common_layers.hpp:703
    -
    Takes two+ Blobs, interprets last Blob as a selector and filter remaining Blobs accordingly with sele...
    Definition: common_layers.hpp:305
    -
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: common_layers.hpp:98
    -
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: common_layers.hpp:425
    -
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Definition: argmax_layer.cpp:54
    -
    int axis_
    the index of the first input axis to reduce
    Definition: common_layers.hpp:553
    -
    virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: filter_layer.cpp:11
    -
    Takes at least two Blobs and concatenates them along either the num or channel dimension, outputting the result.
    Definition: common_layers.hpp:155
    -
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:25
    -
    - - - - diff --git a/doxygen/concat__layer_8hpp_source.html b/doxygen/concat__layer_8hpp_source.html index beefed9e946..e8a38daefaa 100644 --- a/doxygen/concat__layer_8hpp_source.html +++ b/doxygen/concat__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/concat_layer.hpp Source File @@ -29,7 +29,7 @@
    - + @@ -82,9 +82,9 @@

    diff --git a/doxygen/contrastive__loss__layer_8hpp_source.html b/doxygen/contrastive__loss__layer_8hpp_source.html index fbd58792647..a6dab6d7d0c 100644 --- a/doxygen/contrastive__loss__layer_8hpp_source.html +++ b/doxygen/contrastive__loss__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/contrastive_loss_layer.hpp Source File @@ -29,7 +29,7 @@

    - + @@ -81,9 +81,9 @@

    diff --git a/doxygen/conv__layer_8hpp_source.html b/doxygen/conv__layer_8hpp_source.html index 7844c8ec807..31498965774 100644 --- a/doxygen/conv__layer_8hpp_source.html +++ b/doxygen/conv__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/conv_layer.hpp Source File @@ -29,7 +29,7 @@
    - + @@ -79,9 +79,9 @@

    diff --git a/doxygen/crop__layer_8hpp_source.html b/doxygen/crop__layer_8hpp_source.html index a14b1bac105..b1f2e0c133a 100644 --- a/doxygen/crop__layer_8hpp_source.html +++ b/doxygen/crop__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/crop_layer.hpp Source File @@ -29,7 +29,7 @@

    - + @@ -75,16 +75,16 @@
    Takes a Blob and crop it, to the shape specified by the second input Blob, across all dimensions afte...
    Definition: crop_layer.hpp:21
    virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: crop_layer.cpp:36
    virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    -
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the CPU device, compute the layer output.
    Definition: crop_layer.cpp:115
    -
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: crop_layer.cpp:124
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the CPU device, compute the layer output.
    Definition: crop_layer.cpp:113
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: crop_layer.cpp:122
    virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: crop_layer.cpp:16
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24

    diff --git a/doxygen/cudnn_8hpp_source.html b/doxygen/cudnn_8hpp_source.html index 51c2270dbde..f2f2c0577c3 100644 --- a/doxygen/cudnn_8hpp_source.html +++ b/doxygen/cudnn_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/util/cudnn.hpp Source File @@ -29,7 +29,7 @@
    - + @@ -66,13 +66,13 @@
    cudnn.hpp

    -
    1 #ifndef CAFFE_UTIL_CUDNN_H_
    2 #define CAFFE_UTIL_CUDNN_H_
    3 #ifdef USE_CUDNN
    4 
    5 #include <cudnn.h>
    6 
    7 #include "caffe/common.hpp"
    8 #include "caffe/proto/caffe.pb.h"
    9 
    10 #define CUDNN_VERSION_MIN(major, minor, patch) \
    11  (CUDNN_VERSION >= (major * 1000 + minor * 100 + patch))
    12 
    13 #define CUDNN_CHECK(condition) \
    14  do { \
    15  cudnnStatus_t status = condition; \
    16  CHECK_EQ(status, CUDNN_STATUS_SUCCESS) << " "\
    17  << cudnnGetErrorString(status); \
    18  } while (0)
    19 
    20 inline const char* cudnnGetErrorString(cudnnStatus_t status) {
    21  switch (status) {
    22  case CUDNN_STATUS_SUCCESS:
    23  return "CUDNN_STATUS_SUCCESS";
    24  case CUDNN_STATUS_NOT_INITIALIZED:
    25  return "CUDNN_STATUS_NOT_INITIALIZED";
    26  case CUDNN_STATUS_ALLOC_FAILED:
    27  return "CUDNN_STATUS_ALLOC_FAILED";
    28  case CUDNN_STATUS_BAD_PARAM:
    29  return "CUDNN_STATUS_BAD_PARAM";
    30  case CUDNN_STATUS_INTERNAL_ERROR:
    31  return "CUDNN_STATUS_INTERNAL_ERROR";
    32  case CUDNN_STATUS_INVALID_VALUE:
    33  return "CUDNN_STATUS_INVALID_VALUE";
    34  case CUDNN_STATUS_ARCH_MISMATCH:
    35  return "CUDNN_STATUS_ARCH_MISMATCH";
    36  case CUDNN_STATUS_MAPPING_ERROR:
    37  return "CUDNN_STATUS_MAPPING_ERROR";
    38  case CUDNN_STATUS_EXECUTION_FAILED:
    39  return "CUDNN_STATUS_EXECUTION_FAILED";
    40  case CUDNN_STATUS_NOT_SUPPORTED:
    41  return "CUDNN_STATUS_NOT_SUPPORTED";
    42  case CUDNN_STATUS_LICENSE_ERROR:
    43  return "CUDNN_STATUS_LICENSE_ERROR";
    44  }
    45  return "Unknown cudnn status";
    46 }
    47 
    48 namespace caffe {
    49 
    50 namespace cudnn {
    51 
    52 template <typename Dtype> class dataType;
    53 template<> class dataType<float> {
    54  public:
    55  static const cudnnDataType_t type = CUDNN_DATA_FLOAT;
    56  static float oneval, zeroval;
    57  static const void *one, *zero;
    58 };
    59 template<> class dataType<double> {
    60  public:
    61  static const cudnnDataType_t type = CUDNN_DATA_DOUBLE;
    62  static double oneval, zeroval;
    63  static const void *one, *zero;
    64 };
    65 
    66 template <typename Dtype>
    67 inline void createTensor4dDesc(cudnnTensorDescriptor_t* desc) {
    68  CUDNN_CHECK(cudnnCreateTensorDescriptor(desc));
    69 }
    70 
    71 template <typename Dtype>
    72 inline void setTensor4dDesc(cudnnTensorDescriptor_t* desc,
    73  int n, int c, int h, int w,
    74  int stride_n, int stride_c, int stride_h, int stride_w) {
    75  CUDNN_CHECK(cudnnSetTensor4dDescriptorEx(*desc, dataType<Dtype>::type,
    76  n, c, h, w, stride_n, stride_c, stride_h, stride_w));
    77 }
    78 
    79 template <typename Dtype>
    80 inline void setTensor4dDesc(cudnnTensorDescriptor_t* desc,
    81  int n, int c, int h, int w) {
    82  const int stride_w = 1;
    83  const int stride_h = w * stride_w;
    84  const int stride_c = h * stride_h;
    85  const int stride_n = c * stride_c;
    86  setTensor4dDesc<Dtype>(desc, n, c, h, w,
    87  stride_n, stride_c, stride_h, stride_w);
    88 }
    89 
    90 template <typename Dtype>
    91 inline void createFilterDesc(cudnnFilterDescriptor_t* desc,
    92  int n, int c, int h, int w) {
    93  CUDNN_CHECK(cudnnCreateFilterDescriptor(desc));
    94 #if CUDNN_VERSION_MIN(5, 0, 0)
    95  CUDNN_CHECK(cudnnSetFilter4dDescriptor(*desc, dataType<Dtype>::type,
    96  CUDNN_TENSOR_NCHW, n, c, h, w));
    97 #else
    98  CUDNN_CHECK(cudnnSetFilter4dDescriptor_v4(*desc, dataType<Dtype>::type,
    99  CUDNN_TENSOR_NCHW, n, c, h, w));
    100 #endif
    101 }
    102 
    103 template <typename Dtype>
    104 inline void createConvolutionDesc(cudnnConvolutionDescriptor_t* conv) {
    105  CUDNN_CHECK(cudnnCreateConvolutionDescriptor(conv));
    106 }
    107 
    108 template <typename Dtype>
    109 inline void setConvolutionDesc(cudnnConvolutionDescriptor_t* conv,
    110  cudnnTensorDescriptor_t bottom, cudnnFilterDescriptor_t filter,
    111  int pad_h, int pad_w, int stride_h, int stride_w) {
    112  CUDNN_CHECK(cudnnSetConvolution2dDescriptor(*conv,
    113  pad_h, pad_w, stride_h, stride_w, 1, 1, CUDNN_CROSS_CORRELATION));
    114 }
    115 
    116 template <typename Dtype>
    117 inline void createPoolingDesc(cudnnPoolingDescriptor_t* pool_desc,
    118  PoolingParameter_PoolMethod poolmethod, cudnnPoolingMode_t* mode,
    119  int h, int w, int pad_h, int pad_w, int stride_h, int stride_w) {
    120  switch (poolmethod) {
    121  case PoolingParameter_PoolMethod_MAX:
    122  *mode = CUDNN_POOLING_MAX;
    123  break;
    124  case PoolingParameter_PoolMethod_AVE:
    125  *mode = CUDNN_POOLING_AVERAGE_COUNT_INCLUDE_PADDING;
    126  break;
    127  default:
    128  LOG(FATAL) << "Unknown pooling method.";
    129  }
    130  CUDNN_CHECK(cudnnCreatePoolingDescriptor(pool_desc));
    131 #if CUDNN_VERSION_MIN(5, 0, 0)
    132  CUDNN_CHECK(cudnnSetPooling2dDescriptor(*pool_desc, *mode,
    133  CUDNN_PROPAGATE_NAN, h, w, pad_h, pad_w, stride_h, stride_w));
    134 #else
    135  CUDNN_CHECK(cudnnSetPooling2dDescriptor_v4(*pool_desc, *mode,
    136  CUDNN_PROPAGATE_NAN, h, w, pad_h, pad_w, stride_h, stride_w));
    137 #endif
    138 }
    139 
    140 template <typename Dtype>
    141 inline void createActivationDescriptor(cudnnActivationDescriptor_t* activ_desc,
    142  cudnnActivationMode_t mode) {
    143  CUDNN_CHECK(cudnnCreateActivationDescriptor(activ_desc));
    144  CUDNN_CHECK(cudnnSetActivationDescriptor(*activ_desc, mode,
    145  CUDNN_PROPAGATE_NAN, Dtype(0)));
    146 }
    147 
    148 } // namespace cudnn
    149 
    150 } // namespace caffe
    151 
    152 #endif // USE_CUDNN
    153 #endif // CAFFE_UTIL_CUDNN_H_
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    1 #ifndef CAFFE_UTIL_CUDNN_H_
    2 #define CAFFE_UTIL_CUDNN_H_
    3 #ifdef USE_CUDNN
    4 
    5 #include <cudnn.h>
    6 
    7 #include "caffe/common.hpp"
    8 #include "caffe/proto/caffe.pb.h"
    9 
    10 #define CUDNN_VERSION_MIN(major, minor, patch) \
    11  (CUDNN_VERSION >= (major * 1000 + minor * 100 + patch))
    12 
    13 #define CUDNN_CHECK(condition) \
    14  do { \
    15  cudnnStatus_t status = condition; \
    16  CHECK_EQ(status, CUDNN_STATUS_SUCCESS) << " "\
    17  << cudnnGetErrorString(status); \
    18  } while (0)
    19 
    20 inline const char* cudnnGetErrorString(cudnnStatus_t status) {
    21  switch (status) {
    22  case CUDNN_STATUS_SUCCESS:
    23  return "CUDNN_STATUS_SUCCESS";
    24  case CUDNN_STATUS_NOT_INITIALIZED:
    25  return "CUDNN_STATUS_NOT_INITIALIZED";
    26  case CUDNN_STATUS_ALLOC_FAILED:
    27  return "CUDNN_STATUS_ALLOC_FAILED";
    28  case CUDNN_STATUS_BAD_PARAM:
    29  return "CUDNN_STATUS_BAD_PARAM";
    30  case CUDNN_STATUS_INTERNAL_ERROR:
    31  return "CUDNN_STATUS_INTERNAL_ERROR";
    32  case CUDNN_STATUS_INVALID_VALUE:
    33  return "CUDNN_STATUS_INVALID_VALUE";
    34  case CUDNN_STATUS_ARCH_MISMATCH:
    35  return "CUDNN_STATUS_ARCH_MISMATCH";
    36  case CUDNN_STATUS_MAPPING_ERROR:
    37  return "CUDNN_STATUS_MAPPING_ERROR";
    38  case CUDNN_STATUS_EXECUTION_FAILED:
    39  return "CUDNN_STATUS_EXECUTION_FAILED";
    40  case CUDNN_STATUS_NOT_SUPPORTED:
    41  return "CUDNN_STATUS_NOT_SUPPORTED";
    42  case CUDNN_STATUS_LICENSE_ERROR:
    43  return "CUDNN_STATUS_LICENSE_ERROR";
    44 #if CUDNN_VERSION_MIN(6, 0, 0)
    45  case CUDNN_STATUS_RUNTIME_PREREQUISITE_MISSING:
    46  return "CUDNN_STATUS_RUNTIME_PREREQUISITE_MISSING";
    47 #endif
    48  }
    49  return "Unknown cudnn status";
    50 }
    51 
    52 namespace caffe {
    53 
    54 namespace cudnn {
    55 
    56 template <typename Dtype> class dataType;
    57 template<> class dataType<float> {
    58  public:
    59  static const cudnnDataType_t type = CUDNN_DATA_FLOAT;
    60  static float oneval, zeroval;
    61  static const void *one, *zero;
    62 };
    63 template<> class dataType<double> {
    64  public:
    65  static const cudnnDataType_t type = CUDNN_DATA_DOUBLE;
    66  static double oneval, zeroval;
    67  static const void *one, *zero;
    68 };
    69 
    70 template <typename Dtype>
    71 inline void createTensor4dDesc(cudnnTensorDescriptor_t* desc) {
    72  CUDNN_CHECK(cudnnCreateTensorDescriptor(desc));
    73 }
    74 
    75 template <typename Dtype>
    76 inline void setTensor4dDesc(cudnnTensorDescriptor_t* desc,
    77  int n, int c, int h, int w,
    78  int stride_n, int stride_c, int stride_h, int stride_w) {
    79  CUDNN_CHECK(cudnnSetTensor4dDescriptorEx(*desc, dataType<Dtype>::type,
    80  n, c, h, w, stride_n, stride_c, stride_h, stride_w));
    81 }
    82 
    83 template <typename Dtype>
    84 inline void setTensor4dDesc(cudnnTensorDescriptor_t* desc,
    85  int n, int c, int h, int w) {
    86  const int stride_w = 1;
    87  const int stride_h = w * stride_w;
    88  const int stride_c = h * stride_h;
    89  const int stride_n = c * stride_c;
    90  setTensor4dDesc<Dtype>(desc, n, c, h, w,
    91  stride_n, stride_c, stride_h, stride_w);
    92 }
    93 
    94 template <typename Dtype>
    95 inline void createFilterDesc(cudnnFilterDescriptor_t* desc,
    96  int n, int c, int h, int w) {
    97  CUDNN_CHECK(cudnnCreateFilterDescriptor(desc));
    98 #if CUDNN_VERSION_MIN(5, 0, 0)
    99  CUDNN_CHECK(cudnnSetFilter4dDescriptor(*desc, dataType<Dtype>::type,
    100  CUDNN_TENSOR_NCHW, n, c, h, w));
    101 #else
    102  CUDNN_CHECK(cudnnSetFilter4dDescriptor_v4(*desc, dataType<Dtype>::type,
    103  CUDNN_TENSOR_NCHW, n, c, h, w));
    104 #endif
    105 }
    106 
    107 template <typename Dtype>
    108 inline void createConvolutionDesc(cudnnConvolutionDescriptor_t* conv) {
    109  CUDNN_CHECK(cudnnCreateConvolutionDescriptor(conv));
    110 }
    111 
    112 template <typename Dtype>
    113 inline void setConvolutionDesc(cudnnConvolutionDescriptor_t* conv,
    114  cudnnTensorDescriptor_t bottom, cudnnFilterDescriptor_t filter,
    115  int pad_h, int pad_w, int stride_h, int stride_w) {
    116 #if CUDNN_VERSION_MIN(6, 0, 0)
    117  CUDNN_CHECK(cudnnSetConvolution2dDescriptor(*conv,
    118  pad_h, pad_w, stride_h, stride_w, 1, 1, CUDNN_CROSS_CORRELATION,
    119  dataType<Dtype>::type));
    120 #else
    121  CUDNN_CHECK(cudnnSetConvolution2dDescriptor(*conv,
    122  pad_h, pad_w, stride_h, stride_w, 1, 1, CUDNN_CROSS_CORRELATION));
    123 #endif
    124 }
    125 
    126 template <typename Dtype>
    127 inline void createPoolingDesc(cudnnPoolingDescriptor_t* pool_desc,
    128  PoolingParameter_PoolMethod poolmethod, cudnnPoolingMode_t* mode,
    129  int h, int w, int pad_h, int pad_w, int stride_h, int stride_w) {
    130  switch (poolmethod) {
    131  case PoolingParameter_PoolMethod_MAX:
    132  *mode = CUDNN_POOLING_MAX;
    133  break;
    134  case PoolingParameter_PoolMethod_AVE:
    135  *mode = CUDNN_POOLING_AVERAGE_COUNT_INCLUDE_PADDING;
    136  break;
    137  default:
    138  LOG(FATAL) << "Unknown pooling method.";
    139  }
    140  CUDNN_CHECK(cudnnCreatePoolingDescriptor(pool_desc));
    141 #if CUDNN_VERSION_MIN(5, 0, 0)
    142  CUDNN_CHECK(cudnnSetPooling2dDescriptor(*pool_desc, *mode,
    143  CUDNN_PROPAGATE_NAN, h, w, pad_h, pad_w, stride_h, stride_w));
    144 #else
    145  CUDNN_CHECK(cudnnSetPooling2dDescriptor_v4(*pool_desc, *mode,
    146  CUDNN_PROPAGATE_NAN, h, w, pad_h, pad_w, stride_h, stride_w));
    147 #endif
    148 }
    149 
    150 template <typename Dtype>
    151 inline void createActivationDescriptor(cudnnActivationDescriptor_t* activ_desc,
    152  cudnnActivationMode_t mode) {
    153  CUDNN_CHECK(cudnnCreateActivationDescriptor(activ_desc));
    154  CUDNN_CHECK(cudnnSetActivationDescriptor(*activ_desc, mode,
    155  CUDNN_PROPAGATE_NAN, Dtype(0)));
    156 }
    157 
    158 } // namespace cudnn
    159 
    160 } // namespace caffe
    161 
    162 #endif // USE_CUDNN
    163 #endif // CAFFE_UTIL_CUDNN_H_
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    diff --git a/doxygen/cudnn__conv__layer_8hpp_source.html b/doxygen/cudnn__conv__layer_8hpp_source.html index f5d9c823791..a5e845a3386 100644 --- a/doxygen/cudnn__conv__layer_8hpp_source.html +++ b/doxygen/cudnn__conv__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/cudnn_conv_layer.hpp Source File @@ -29,7 +29,7 @@
    - + @@ -70,9 +70,9 @@

    diff --git a/doxygen/cudnn__lcn__layer_8hpp_source.html b/doxygen/cudnn__lcn__layer_8hpp_source.html index 7e1d6814cdf..02b90675e45 100644 --- a/doxygen/cudnn__lcn__layer_8hpp_source.html +++ b/doxygen/cudnn__lcn__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/cudnn_lcn_layer.hpp Source File @@ -29,7 +29,7 @@
    - + @@ -70,9 +70,9 @@

    diff --git a/doxygen/cudnn__lrn__layer_8hpp_source.html b/doxygen/cudnn__lrn__layer_8hpp_source.html index a8bc09d3084..1575667ac68 100644 --- a/doxygen/cudnn__lrn__layer_8hpp_source.html +++ b/doxygen/cudnn__lrn__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/cudnn_lrn_layer.hpp Source File @@ -29,7 +29,7 @@

    - + @@ -70,9 +70,9 @@

    diff --git a/doxygen/cudnn__pooling__layer_8hpp_source.html b/doxygen/cudnn__pooling__layer_8hpp_source.html index 49c2b3ca876..57043d1cb8f 100644 --- a/doxygen/cudnn__pooling__layer_8hpp_source.html +++ b/doxygen/cudnn__pooling__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/cudnn_pooling_layer.hpp Source File @@ -29,7 +29,7 @@
    - + @@ -70,9 +70,9 @@ diff --git a/doxygen/cudnn__relu__layer_8hpp_source.html b/doxygen/cudnn__relu__layer_8hpp_source.html index e1cd2f1a2aa..f5a16862af1 100644 --- a/doxygen/cudnn__relu__layer_8hpp_source.html +++ b/doxygen/cudnn__relu__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/cudnn_relu_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -70,9 +70,9 @@ diff --git a/doxygen/cudnn__sigmoid__layer_8hpp_source.html b/doxygen/cudnn__sigmoid__layer_8hpp_source.html index 2924db08749..e5f5e5a041d 100644 --- a/doxygen/cudnn__sigmoid__layer_8hpp_source.html +++ b/doxygen/cudnn__sigmoid__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/cudnn_sigmoid_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -70,9 +70,9 @@ diff --git a/doxygen/cudnn__softmax__layer_8hpp_source.html b/doxygen/cudnn__softmax__layer_8hpp_source.html index 67d9adc9f50..1cc1393b185 100644 --- a/doxygen/cudnn__softmax__layer_8hpp_source.html +++ b/doxygen/cudnn__softmax__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/cudnn_softmax_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -70,9 +70,9 @@ diff --git a/doxygen/cudnn__tanh__layer_8hpp_source.html b/doxygen/cudnn__tanh__layer_8hpp_source.html index 02ef88560a5..adb61bb30da 100644 --- a/doxygen/cudnn__tanh__layer_8hpp_source.html +++ b/doxygen/cudnn__tanh__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/cudnn_tanh_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -70,9 +70,9 @@ diff --git a/doxygen/data__layer_8hpp_source.html b/doxygen/data__layer_8hpp_source.html index 604f904e8a5..747c187a7ff 100644 --- a/doxygen/data__layer_8hpp_source.html +++ b/doxygen/data__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/data_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -66,21 +66,21 @@
    data_layer.hpp
    -
    1 #ifndef CAFFE_DATA_LAYER_HPP_
    2 #define CAFFE_DATA_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/data_transformer.hpp"
    8 #include "caffe/internal_thread.hpp"
    9 #include "caffe/layer.hpp"
    10 #include "caffe/layers/base_data_layer.hpp"
    11 #include "caffe/proto/caffe.pb.h"
    12 #include "caffe/util/db.hpp"
    13 
    14 namespace caffe {
    15 
    16 template <typename Dtype>
    17 class DataLayer : public BasePrefetchingDataLayer<Dtype> {
    18  public:
    19  explicit DataLayer(const LayerParameter& param);
    20  virtual ~DataLayer();
    21  virtual void DataLayerSetUp(const vector<Blob<Dtype>*>& bottom,
    22  const vector<Blob<Dtype>*>& top);
    23  // DataLayer uses DataReader instead for sharing for parallelism
    24  virtual inline bool ShareInParallel() const { return false; }
    25  virtual inline const char* type() const { return "Data"; }
    26  virtual inline int ExactNumBottomBlobs() const { return 0; }
    27  virtual inline int MinTopBlobs() const { return 1; }
    28  virtual inline int MaxTopBlobs() const { return 2; }
    29 
    30  protected:
    31  void Next();
    32  bool Skip();
    33  virtual void load_batch(Batch<Dtype>* batch);
    34 
    35  shared_ptr<db::DB> db_;
    36  shared_ptr<db::Cursor> cursor_;
    37  uint64_t offset_;
    38 };
    39 
    40 } // namespace caffe
    41 
    42 #endif // CAFFE_DATA_LAYER_HPP_
    Definition: base_data_layer.hpp:49
    -
    Definition: base_data_layer.hpp:55
    +
    1 #ifndef CAFFE_DATA_LAYER_HPP_
    2 #define CAFFE_DATA_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/data_transformer.hpp"
    8 #include "caffe/internal_thread.hpp"
    9 #include "caffe/layer.hpp"
    10 #include "caffe/layers/base_data_layer.hpp"
    11 #include "caffe/proto/caffe.pb.h"
    12 #include "caffe/util/db.hpp"
    13 
    14 namespace caffe {
    15 
    16 template <typename Dtype>
    17 class DataLayer : public BasePrefetchingDataLayer<Dtype> {
    18  public:
    19  explicit DataLayer(const LayerParameter& param);
    20  virtual ~DataLayer();
    21  virtual void DataLayerSetUp(const vector<Blob<Dtype>*>& bottom,
    22  const vector<Blob<Dtype>*>& top);
    23  virtual inline const char* type() const { return "Data"; }
    24  virtual inline int ExactNumBottomBlobs() const { return 0; }
    25  virtual inline int MinTopBlobs() const { return 1; }
    26  virtual inline int MaxTopBlobs() const { return 2; }
    27 
    28  protected:
    29  void Next();
    30  bool Skip();
    31  virtual void load_batch(Batch<Dtype>* batch);
    32 
    33  shared_ptr<db::DB> db_;
    34  shared_ptr<db::Cursor> cursor_;
    35  uint64_t offset_;
    36 };
    37 
    38 } // namespace caffe
    39 
    40 #endif // CAFFE_DATA_LAYER_HPP_
    Definition: base_data_layer.hpp:47
    +
    Definition: base_data_layer.hpp:53
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    Definition: data_layer.hpp:17
    -
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: data_layer.hpp:26
    -
    virtual const char * type() const
    Returns the layer type.
    Definition: data_layer.hpp:25
    -
    virtual int MaxTopBlobs() const
    Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required...
    Definition: data_layer.hpp:28
    -
    virtual int MinTopBlobs() const
    Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
    Definition: data_layer.hpp:27
    +
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: data_layer.hpp:24
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: data_layer.hpp:23
    +
    virtual int MaxTopBlobs() const
    Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required...
    Definition: data_layer.hpp:26
    +
    virtual int MinTopBlobs() const
    Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
    Definition: data_layer.hpp:25
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    diff --git a/doxygen/data__layers_8hpp_source.html b/doxygen/data__layers_8hpp_source.html deleted file mode 100644 index bda072cae87..00000000000 --- a/doxygen/data__layers_8hpp_source.html +++ /dev/null @@ -1,475 +0,0 @@ - - - - - - -Caffe: include/caffe/data_layers.hpp Source File - - - - - - - - - - -
    -
    - - - - - - -
    -
    Caffe -
    -
    -
    - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    data_layers.hpp
    -
    -
    -
    1 #ifndef CAFFE_DATA_LAYERS_HPP_
    -
    2 #define CAFFE_DATA_LAYERS_HPP_
    -
    3 
    -
    4 #include <string>
    -
    5 #include <utility>
    -
    6 #include <vector>
    -
    7 #include "hdf5.h"
    -
    8 
    -
    9 #include "caffe/blob.hpp"
    -
    10 #include "caffe/common.hpp"
    -
    11 #include "caffe/data_reader.hpp"
    -
    12 #include "caffe/data_transformer.hpp"
    -
    13 #include "caffe/filler.hpp"
    -
    14 #include "caffe/internal_thread.hpp"
    -
    15 #include "caffe/layer.hpp"
    -
    16 #include "caffe/proto/caffe.pb.h"
    -
    17 #include "caffe/util/blocking_queue.hpp"
    -
    18 #include "caffe/util/db.hpp"
    -
    19 
    -
    20 namespace caffe {
    -
    21 
    -
    27 template <typename Dtype>
    -
    28 class BaseDataLayer : public Layer<Dtype> {
    -
    29  public:
    -
    30  explicit BaseDataLayer(const LayerParameter& param);
    -
    31  // LayerSetUp: implements common data layer setup functionality, and calls
    -
    32  // DataLayerSetUp to do special data layer setup for individual layer types.
    -
    33  // This method may not be overridden except by the BasePrefetchingDataLayer.
    -
    34  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    -
    35  const vector<Blob<Dtype>*>& top);
    -
    36  // Data layers should be shared by multiple solvers in parallel
    -
    37  virtual inline bool ShareInParallel() const { return true; }
    -
    38  virtual void DataLayerSetUp(const vector<Blob<Dtype>*>& bottom,
    -
    39  const vector<Blob<Dtype>*>& top) {}
    -
    40  // Data layers have no bottoms, so reshaping is trivial.
    -
    41  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    -
    42  const vector<Blob<Dtype>*>& top) {}
    -
    43 
    -
    44  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    -
    45  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
    -
    46  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    -
    47  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
    -
    48 
    -
    49  protected:
    -
    50  TransformationParameter transform_param_;
    -
    51  shared_ptr<DataTransformer<Dtype> > data_transformer_;
    -
    52  bool output_labels_;
    -
    53 };
    -
    54 
    -
    55 template <typename Dtype>
    -
    56 class Batch {
    -
    57  public:
    -
    58  Blob<Dtype> data_, label_;
    -
    59 };
    -
    60 
    -
    61 template <typename Dtype>
    - -
    63  public BaseDataLayer<Dtype>, public InternalThread {
    -
    64  public:
    -
    65  explicit BasePrefetchingDataLayer(const LayerParameter& param);
    -
    66  // LayerSetUp: implements common data layer setup functionality, and calls
    -
    67  // DataLayerSetUp to do special data layer setup for individual layer types.
    -
    68  // This method may not be overridden.
    -
    69  void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    -
    70  const vector<Blob<Dtype>*>& top);
    -
    71 
    -
    72  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    -
    73  const vector<Blob<Dtype>*>& top);
    -
    74  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    -
    75  const vector<Blob<Dtype>*>& top);
    -
    76 
    -
    77  // Prefetches batches (asynchronously if to GPU memory)
    -
    78  static const int PREFETCH_COUNT = 3;
    -
    79 
    -
    80  protected:
    -
    81  virtual void InternalThreadEntry();
    -
    82  virtual void load_batch(Batch<Dtype>* batch) = 0;
    -
    83 
    -
    84  Batch<Dtype> prefetch_[PREFETCH_COUNT];
    -
    85  BlockingQueue<Batch<Dtype>*> prefetch_free_;
    -
    86  BlockingQueue<Batch<Dtype>*> prefetch_full_;
    -
    87 
    -
    88  Blob<Dtype> transformed_data_;
    -
    89 };
    -
    90 
    -
    91 template <typename Dtype>
    -
    92 class DataLayer : public BasePrefetchingDataLayer<Dtype> {
    -
    93  public:
    -
    94  explicit DataLayer(const LayerParameter& param);
    -
    95  virtual ~DataLayer();
    -
    96  virtual void DataLayerSetUp(const vector<Blob<Dtype>*>& bottom,
    -
    97  const vector<Blob<Dtype>*>& top);
    -
    98  // DataLayer uses DataReader instead for sharing for parallelism
    -
    99  virtual inline bool ShareInParallel() const { return false; }
    -
    100  virtual inline const char* type() const { return "Data"; }
    -
    101  virtual inline int ExactNumBottomBlobs() const { return 0; }
    -
    102  virtual inline int MinTopBlobs() const { return 1; }
    -
    103  virtual inline int MaxTopBlobs() const { return 2; }
    -
    104 
    -
    105  protected:
    -
    106  virtual void load_batch(Batch<Dtype>* batch);
    -
    107 
    -
    108  DataReader reader_;
    -
    109 };
    -
    110 
    -
    116 template <typename Dtype>
    -
    117 class DummyDataLayer : public Layer<Dtype> {
    -
    118  public:
    -
    119  explicit DummyDataLayer(const LayerParameter& param)
    -
    120  : Layer<Dtype>(param) {}
    -
    121  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    -
    122  const vector<Blob<Dtype>*>& top);
    -
    123  // Data layers should be shared by multiple solvers in parallel
    -
    124  virtual inline bool ShareInParallel() const { return true; }
    -
    125  // Data layers have no bottoms, so reshaping is trivial.
    -
    126  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    -
    127  const vector<Blob<Dtype>*>& top) {}
    -
    128 
    -
    129  virtual inline const char* type() const { return "DummyData"; }
    -
    130  virtual inline int ExactNumBottomBlobs() const { return 0; }
    -
    131  virtual inline int MinTopBlobs() const { return 1; }
    -
    132 
    -
    133  protected:
    -
    134  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    -
    135  const vector<Blob<Dtype>*>& top);
    -
    136  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    -
    137  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
    -
    138  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    -
    139  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
    -
    140 
    -
    141  vector<shared_ptr<Filler<Dtype> > > fillers_;
    -
    142  vector<bool> refill_;
    -
    143 };
    -
    144 
    -
    150 template <typename Dtype>
    -
    151 class HDF5DataLayer : public Layer<Dtype> {
    -
    152  public:
    -
    153  explicit HDF5DataLayer(const LayerParameter& param)
    -
    154  : Layer<Dtype>(param) {}
    -
    155  virtual ~HDF5DataLayer();
    -
    156  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    -
    157  const vector<Blob<Dtype>*>& top);
    -
    158  // Data layers should be shared by multiple solvers in parallel
    -
    159  virtual inline bool ShareInParallel() const { return true; }
    -
    160  // Data layers have no bottoms, so reshaping is trivial.
    -
    161  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    -
    162  const vector<Blob<Dtype>*>& top) {}
    -
    163 
    -
    164  virtual inline const char* type() const { return "HDF5Data"; }
    -
    165  virtual inline int ExactNumBottomBlobs() const { return 0; }
    -
    166  virtual inline int MinTopBlobs() const { return 1; }
    -
    167 
    -
    168  protected:
    -
    169  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    -
    170  const vector<Blob<Dtype>*>& top);
    -
    171  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    -
    172  const vector<Blob<Dtype>*>& top);
    -
    173  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    -
    174  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
    -
    175  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    -
    176  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
    -
    177  virtual void LoadHDF5FileData(const char* filename);
    -
    178 
    -
    179  std::vector<std::string> hdf_filenames_;
    -
    180  unsigned int num_files_;
    -
    181  unsigned int current_file_;
    -
    182  hsize_t current_row_;
    -
    183  std::vector<shared_ptr<Blob<Dtype> > > hdf_blobs_;
    -
    184  std::vector<unsigned int> data_permutation_;
    -
    185  std::vector<unsigned int> file_permutation_;
    -
    186 };
    -
    187 
    -
    193 template <typename Dtype>
    -
    194 class HDF5OutputLayer : public Layer<Dtype> {
    -
    195  public:
    -
    196  explicit HDF5OutputLayer(const LayerParameter& param)
    -
    197  : Layer<Dtype>(param), file_opened_(false) {}
    -
    198  virtual ~HDF5OutputLayer();
    -
    199  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    -
    200  const vector<Blob<Dtype>*>& top);
    -
    201  // Data layers should be shared by multiple solvers in parallel
    -
    202  virtual inline bool ShareInParallel() const { return true; }
    -
    203  // Data layers have no bottoms, so reshaping is trivial.
    -
    204  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    -
    205  const vector<Blob<Dtype>*>& top) {}
    -
    206 
    -
    207  virtual inline const char* type() const { return "HDF5Output"; }
    -
    208  // TODO: no limit on the number of blobs
    -
    209  virtual inline int ExactNumBottomBlobs() const { return 2; }
    -
    210  virtual inline int ExactNumTopBlobs() const { return 0; }
    -
    211 
    -
    212  inline std::string file_name() const { return file_name_; }
    -
    213 
    -
    214  protected:
    -
    215  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    -
    216  const vector<Blob<Dtype>*>& top);
    -
    217  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    -
    218  const vector<Blob<Dtype>*>& top);
    -
    219  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    -
    220  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    221  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    -
    222  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    -
    223  virtual void SaveBlobs();
    -
    224 
    -
    225  bool file_opened_;
    -
    226  std::string file_name_;
    -
    227  hid_t file_id_;
    -
    228  Blob<Dtype> data_blob_;
    -
    229  Blob<Dtype> label_blob_;
    -
    230 };
    -
    231 
    -
    237 template <typename Dtype>
    - -
    239  public:
    -
    240  explicit ImageDataLayer(const LayerParameter& param)
    - -
    242  virtual ~ImageDataLayer();
    -
    243  virtual void DataLayerSetUp(const vector<Blob<Dtype>*>& bottom,
    -
    244  const vector<Blob<Dtype>*>& top);
    -
    245 
    -
    246  virtual inline const char* type() const { return "ImageData"; }
    -
    247  virtual inline int ExactNumBottomBlobs() const { return 0; }
    -
    248  virtual inline int ExactNumTopBlobs() const { return 2; }
    -
    249 
    -
    250  protected:
    -
    251  shared_ptr<Caffe::RNG> prefetch_rng_;
    -
    252  virtual void ShuffleImages();
    -
    253  virtual void load_batch(Batch<Dtype>* batch);
    -
    254 
    -
    255  vector<std::pair<std::string, int> > lines_;
    -
    256  int lines_id_;
    -
    257 };
    -
    258 
    -
    264 template <typename Dtype>
    -
    265 class MemoryDataLayer : public BaseDataLayer<Dtype> {
    -
    266  public:
    -
    267  explicit MemoryDataLayer(const LayerParameter& param)
    -
    268  : BaseDataLayer<Dtype>(param), has_new_data_(false) {}
    -
    269  virtual void DataLayerSetUp(const vector<Blob<Dtype>*>& bottom,
    -
    270  const vector<Blob<Dtype>*>& top);
    -
    271 
    -
    272  virtual inline const char* type() const { return "MemoryData"; }
    -
    273  virtual inline int ExactNumBottomBlobs() const { return 0; }
    -
    274  virtual inline int ExactNumTopBlobs() const { return 2; }
    -
    275 
    -
    276  virtual void AddDatumVector(const vector<Datum>& datum_vector);
    -
    277 #ifdef USE_OPENCV
    -
    278  virtual void AddMatVector(const vector<cv::Mat>& mat_vector,
    -
    279  const vector<int>& labels);
    -
    280 #endif // USE_OPENCV
    -
    281 
    -
    282  // Reset should accept const pointers, but can't, because the memory
    -
    283  // will be given to Blob, which is mutable
    -
    284  void Reset(Dtype* data, Dtype* label, int n);
    -
    285  void set_batch_size(int new_size);
    -
    286 
    -
    287  int batch_size() { return batch_size_; }
    -
    288  int channels() { return channels_; }
    -
    289  int height() { return height_; }
    -
    290  int width() { return width_; }
    -
    291 
    -
    292  protected:
    -
    293  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    -
    294  const vector<Blob<Dtype>*>& top);
    -
    295 
    -
    296  int batch_size_, channels_, height_, width_, size_;
    -
    297  Dtype* data_;
    -
    298  Dtype* labels_;
    -
    299  int n_;
    -
    300  size_t pos_;
    -
    301  Blob<Dtype> added_data_;
    -
    302  Blob<Dtype> added_label_;
    -
    303  bool has_new_data_;
    -
    304 };
    -
    305 
    -
    312 template <typename Dtype>
    - -
    314  public:
    -
    315  explicit WindowDataLayer(const LayerParameter& param)
    - -
    317  virtual ~WindowDataLayer();
    -
    318  virtual void DataLayerSetUp(const vector<Blob<Dtype>*>& bottom,
    -
    319  const vector<Blob<Dtype>*>& top);
    -
    320 
    -
    321  virtual inline const char* type() const { return "WindowData"; }
    -
    322  virtual inline int ExactNumBottomBlobs() const { return 0; }
    -
    323  virtual inline int ExactNumTopBlobs() const { return 2; }
    -
    324 
    -
    325  protected:
    -
    326  virtual unsigned int PrefetchRand();
    -
    327  virtual void load_batch(Batch<Dtype>* batch);
    -
    328 
    -
    329  shared_ptr<Caffe::RNG> prefetch_rng_;
    -
    330  vector<std::pair<std::string, vector<int> > > image_database_;
    -
    331  enum WindowField { IMAGE_INDEX, LABEL, OVERLAP, X1, Y1, X2, Y2, NUM };
    -
    332  vector<vector<float> > fg_windows_;
    -
    333  vector<vector<float> > bg_windows_;
    -
    334  Blob<Dtype> data_mean_;
    -
    335  vector<Dtype> mean_values_;
    -
    336  bool has_mean_file_;
    -
    337  bool has_mean_values_;
    -
    338  bool cache_images_;
    -
    339  vector<std::pair<std::string, Datum > > image_database_cache_;
    -
    340 };
    -
    341 
    -
    342 } // namespace caffe
    -
    343 
    -
    344 #endif // CAFFE_DATA_LAYERS_HPP_
    -
    virtual bool ShareInParallel() const
    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.
    Definition: data_layers.hpp:99
    -
    Definition: data_layers.hpp:56
    -
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    -
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: data_layers.hpp:175
    -
    Definition: data_layers.hpp:62
    -
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: data_layers.hpp:165
    -
    virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: hdf5_data_layer.cpp:73
    -
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    -
    An interface for the units of computation which can be composed into a Net.
    Definition: layer.hpp:33
    -
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: data_layers.hpp:136
    -
    A layer factory that allows one to register layers. During runtime, registered layers could be called...
    Definition: blob.hpp:15
    -
    Provides data to the Net from windows of images files, specified by a window data file...
    Definition: data_layers.hpp:313
    -
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: data_layers.hpp:210
    -
    virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: hdf5_output_layer.cpp:15
    -
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: data_layers.hpp:126
    -
    Write blobs to disk as HDF5 files.
    Definition: data_layers.hpp:194
    -
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the CPU device, compute the layer output.
    Definition: hdf5_data_layer.cpp:129
    -
    virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: base_data_layer.cpp:18
    -
    Provides data to the Net generated by a Filler.
    Definition: data_layers.hpp:117
    -
    Definition: data_layers.hpp:92
    -
    virtual int MinTopBlobs() const
    Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
    Definition: data_layers.hpp:102
    -
    virtual const char * type() const
    Returns the layer type.
    Definition: data_layers.hpp:207
    -
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the CPU device, compute the layer output.
    Definition: memory_data_layer.cpp:110
    -
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    -
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: data_layers.hpp:101
    -
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: data_layers.hpp:44
    -
    virtual const char * type() const
    Returns the layer type.
    Definition: data_layers.hpp:272
    -
    Provides base for data layers that feed blobs to the Net.
    Definition: data_layers.hpp:28
    -
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: data_layers.hpp:130
    -
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the CPU device, compute the layer output.
    Definition: hdf5_output_layer.cpp:44
    -
    void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: base_data_layer.cpp:43
    -
    virtual bool ShareInParallel() const
    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.
    Definition: data_layers.hpp:37
    -
    Provides data to the Net from image files.
    Definition: data_layers.hpp:238
    -
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: data_layers.hpp:322
    -
    virtual const char * type() const
    Returns the layer type.
    Definition: data_layers.hpp:246
    -
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: data_layers.hpp:209
    -
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: data_layers.hpp:323
    -
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: data_layers.hpp:273
    -
    virtual const char * type() const
    Returns the layer type.
    Definition: data_layers.hpp:129
    -
    Provides data to the Net from HDF5 files.
    Definition: data_layers.hpp:151
    -
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: data_layers.hpp:138
    -
    virtual const char * type() const
    Returns the layer type.
    Definition: data_layers.hpp:164
    -
    virtual int MinTopBlobs() const
    Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
    Definition: data_layers.hpp:166
    -
    virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    -
    virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: dummy_data_layer.cpp:10
    -
    virtual int MaxTopBlobs() const
    Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required...
    Definition: data_layers.hpp:103
    -
    virtual bool ShareInParallel() const
    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.
    Definition: data_layers.hpp:202
    -
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: data_layers.hpp:274
    -
    virtual int MinTopBlobs() const
    Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
    Definition: data_layers.hpp:131
    -
    virtual const char * type() const
    Returns the layer type.
    Definition: data_layers.hpp:100
    -
    Definition: internal_thread.hpp:19
    -
    virtual bool ShareInParallel() const
    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.
    Definition: data_layers.hpp:159
    -
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: hdf5_output_layer.cpp:65
    -
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: data_layers.hpp:41
    -
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: data_layers.hpp:248
    -
    Definition: blocking_queue.hpp:12
    -
    virtual const char * type() const
    Returns the layer type.
    Definition: data_layers.hpp:321
    -
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the CPU device, compute the layer output.
    Definition: dummy_data_layer.cpp:102
    -
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: data_layers.hpp:161
    -
    Reads data from a source to queues available to data layers. A single reading thread is created per s...
    Definition: data_reader.hpp:23
    -
    virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Using the CPU device, compute the layer output.
    Definition: base_data_layer.cpp:104
    -
    virtual bool ShareInParallel() const
    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.
    Definition: data_layers.hpp:124
    -
    virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: data_layers.hpp:46
    -
    virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: data_layers.hpp:173
    -
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: data_layers.hpp:247
    -
    Provides data to the Net from memory.
    Definition: data_layers.hpp:265
    -
    virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: data_layers.hpp:204
    -
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:25
    -
    - - - - diff --git a/doxygen/data__reader_8hpp_source.html b/doxygen/data__reader_8hpp_source.html deleted file mode 100644 index 21be006d561..00000000000 --- a/doxygen/data__reader_8hpp_source.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -Caffe: include/caffe/data_reader.hpp Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    Caffe -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    data_reader.hpp
    -
    -
    -
    1 #ifndef CAFFE_DATA_READER_HPP_
    2 #define CAFFE_DATA_READER_HPP_
    3 
    4 #include <map>
    5 #include <string>
    6 #include <vector>
    7 
    8 #include "caffe/common.hpp"
    9 #include "caffe/internal_thread.hpp"
    10 #include "caffe/util/blocking_queue.hpp"
    11 #include "caffe/util/db.hpp"
    12 
    13 namespace caffe {
    14 
    23 class DataReader {
    24  public:
    25  explicit DataReader(const LayerParameter& param);
    26  ~DataReader();
    27 
    28  inline BlockingQueue<Datum*>& free() const {
    29  return queue_pair_->free_;
    30  }
    31  inline BlockingQueue<Datum*>& full() const {
    32  return queue_pair_->full_;
    33  }
    34 
    35  protected:
    36  // Queue pairs are shared between a body and its readers
    37  class QueuePair {
    38  public:
    39  explicit QueuePair(int size);
    40  ~QueuePair();
    41 
    44 
    45  DISABLE_COPY_AND_ASSIGN(QueuePair);
    46  };
    47 
    48  // A single body is created per source
    49  class Body : public InternalThread {
    50  public:
    51  explicit Body(const LayerParameter& param);
    52  virtual ~Body();
    53 
    54  protected:
    55  void InternalThreadEntry();
    56  void read_one(db::Cursor* cursor, QueuePair* qp);
    57 
    58  const LayerParameter param_;
    59  BlockingQueue<shared_ptr<QueuePair> > new_queue_pairs_;
    60 
    61  friend class DataReader;
    62 
    63  DISABLE_COPY_AND_ASSIGN(Body);
    64  };
    65 
    66  // A source is uniquely identified by its layer name + path, in case
    67  // the same database is read from two different locations in the net.
    68  static inline string source_key(const LayerParameter& param) {
    69  return param.name() + ":" + param.data_param().source();
    70  }
    71 
    72  const shared_ptr<QueuePair> queue_pair_;
    73  shared_ptr<Body> body_;
    74 
    75  static map<const string, boost::weak_ptr<DataReader::Body> > bodies_;
    76 
    77 DISABLE_COPY_AND_ASSIGN(DataReader);
    78 };
    79 
    80 } // namespace caffe
    81 
    82 #endif // CAFFE_DATA_READER_HPP_
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    -
    Definition: data_reader.hpp:49
    -
    Definition: data_reader.hpp:37
    -
    Definition: internal_thread.hpp:19
    -
    Definition: blocking_queue.hpp:10
    -
    Reads data from a source to queues available to data layers. A single reading thread is created per s...
    Definition: data_reader.hpp:23
    -
    Definition: db.hpp:13
    -
    - - - - diff --git a/doxygen/data__transformer_8hpp_source.html b/doxygen/data__transformer_8hpp_source.html index 42ab00f68ff..7446a3e2cd6 100644 --- a/doxygen/data__transformer_8hpp_source.html +++ b/doxygen/data__transformer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/data_transformer.hpp Source File @@ -29,7 +29,7 @@
    - + @@ -76,9 +76,9 @@ diff --git a/doxygen/db_8hpp_source.html b/doxygen/db_8hpp_source.html index 85d30c2cfdc..5b7edab4b82 100644 --- a/doxygen/db_8hpp_source.html +++ b/doxygen/db_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/util/db.hpp Source File @@ -29,7 +29,7 @@ - + @@ -73,9 +73,9 @@ diff --git a/doxygen/db__leveldb_8hpp_source.html b/doxygen/db__leveldb_8hpp_source.html index 44701912631..ee2e9d47c4f 100644 --- a/doxygen/db__leveldb_8hpp_source.html +++ b/doxygen/db__leveldb_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/util/db_leveldb.hpp Source File @@ -29,7 +29,7 @@ - + @@ -66,13 +66,13 @@
    db_leveldb.hpp
    -
    1 #ifdef USE_LEVELDB
    2 #ifndef CAFFE_UTIL_DB_LEVELDB_HPP
    3 #define CAFFE_UTIL_DB_LEVELDB_HPP
    4 
    5 #include <string>
    6 
    7 #include "leveldb/db.h"
    8 #include "leveldb/write_batch.h"
    9 
    10 #include "caffe/util/db.hpp"
    11 
    12 namespace caffe { namespace db {
    13 
    14 class LevelDBCursor : public Cursor {
    15  public:
    16  explicit LevelDBCursor(leveldb::Iterator* iter)
    17  : iter_(iter) { SeekToFirst(); }
    18  ~LevelDBCursor() { delete iter_; }
    19  virtual void SeekToFirst() { iter_->SeekToFirst(); }
    20  virtual void Next() { iter_->Next(); }
    21  virtual string key() { return iter_->key().ToString(); }
    22  virtual string value() { return iter_->value().ToString(); }
    23  virtual bool valid() { return iter_->Valid(); }
    24 
    25  private:
    26  leveldb::Iterator* iter_;
    27 };
    28 
    29 class LevelDBTransaction : public Transaction {
    30  public:
    31  explicit LevelDBTransaction(leveldb::DB* db) : db_(db) { CHECK_NOTNULL(db_); }
    32  virtual void Put(const string& key, const string& value) {
    33  batch_.Put(key, value);
    34  }
    35  virtual void Commit() {
    36  leveldb::Status status = db_->Write(leveldb::WriteOptions(), &batch_);
    37  CHECK(status.ok()) << "Failed to write batch to leveldb "
    38  << std::endl << status.ToString();
    39  }
    40 
    41  private:
    42  leveldb::DB* db_;
    43  leveldb::WriteBatch batch_;
    44 
    45  DISABLE_COPY_AND_ASSIGN(LevelDBTransaction);
    46 };
    47 
    48 class LevelDB : public DB {
    49  public:
    50  LevelDB() : db_(NULL) { }
    51  virtual ~LevelDB() { Close(); }
    52  virtual void Open(const string& source, Mode mode);
    53  virtual void Close() {
    54  if (db_ != NULL) {
    55  delete db_;
    56  db_ = NULL;
    57  }
    58  }
    59  virtual LevelDBCursor* NewCursor() {
    60  return new LevelDBCursor(db_->NewIterator(leveldb::ReadOptions()));
    61  }
    62  virtual LevelDBTransaction* NewTransaction() {
    63  return new LevelDBTransaction(db_);
    64  }
    65 
    66  private:
    67  leveldb::DB* db_;
    68 };
    69 
    70 
    71 } // namespace db
    72 } // namespace caffe
    73 
    74 #endif // CAFFE_UTIL_DB_LEVELDB_HPP
    75 #endif // USE_LEVELDB
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    +
    1 #ifdef USE_LEVELDB
    2 #ifndef CAFFE_UTIL_DB_LEVELDB_HPP
    3 #define CAFFE_UTIL_DB_LEVELDB_HPP
    4 
    5 #include <string>
    6 
    7 #include "leveldb/db.h"
    8 #include "leveldb/write_batch.h"
    9 
    10 #include "caffe/util/db.hpp"
    11 
    12 namespace caffe { namespace db {
    13 
    14 class LevelDBCursor : public Cursor {
    15  public:
    16  explicit LevelDBCursor(leveldb::Iterator* iter)
    17  : iter_(iter) {
    18  SeekToFirst();
    19  CHECK(iter_->status().ok()) << iter_->status().ToString();
    20  }
    21  ~LevelDBCursor() { delete iter_; }
    22  virtual void SeekToFirst() { iter_->SeekToFirst(); }
    23  virtual void Next() { iter_->Next(); }
    24  virtual string key() { return iter_->key().ToString(); }
    25  virtual string value() { return iter_->value().ToString(); }
    26  virtual bool valid() { return iter_->Valid(); }
    27 
    28  private:
    29  leveldb::Iterator* iter_;
    30 };
    31 
    32 class LevelDBTransaction : public Transaction {
    33  public:
    34  explicit LevelDBTransaction(leveldb::DB* db) : db_(db) { CHECK_NOTNULL(db_); }
    35  virtual void Put(const string& key, const string& value) {
    36  batch_.Put(key, value);
    37  }
    38  virtual void Commit() {
    39  leveldb::Status status = db_->Write(leveldb::WriteOptions(), &batch_);
    40  CHECK(status.ok()) << "Failed to write batch to leveldb "
    41  << std::endl << status.ToString();
    42  }
    43 
    44  private:
    45  leveldb::DB* db_;
    46  leveldb::WriteBatch batch_;
    47 
    48  DISABLE_COPY_AND_ASSIGN(LevelDBTransaction);
    49 };
    50 
    51 class LevelDB : public DB {
    52  public:
    53  LevelDB() : db_(NULL) { }
    54  virtual ~LevelDB() { Close(); }
    55  virtual void Open(const string& source, Mode mode);
    56  virtual void Close() {
    57  if (db_ != NULL) {
    58  delete db_;
    59  db_ = NULL;
    60  }
    61  }
    62  virtual LevelDBCursor* NewCursor() {
    63  return new LevelDBCursor(db_->NewIterator(leveldb::ReadOptions()));
    64  }
    65  virtual LevelDBTransaction* NewTransaction() {
    66  return new LevelDBTransaction(db_);
    67  }
    68 
    69  private:
    70  leveldb::DB* db_;
    71 };
    72 
    73 
    74 } // namespace db
    75 } // namespace caffe
    76 
    77 #endif // CAFFE_UTIL_DB_LEVELDB_HPP
    78 #endif // USE_LEVELDB
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    diff --git a/doxygen/db__lmdb_8hpp_source.html b/doxygen/db__lmdb_8hpp_source.html index ff582d5f3f9..cfeff08fb82 100644 --- a/doxygen/db__lmdb_8hpp_source.html +++ b/doxygen/db__lmdb_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/util/db_lmdb.hpp Source File @@ -29,7 +29,7 @@
    - + @@ -70,9 +70,9 @@ diff --git a/doxygen/deconv__layer_8hpp_source.html b/doxygen/deconv__layer_8hpp_source.html index cd24f6d06d5..636ffcec104 100644 --- a/doxygen/deconv__layer_8hpp_source.html +++ b/doxygen/deconv__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/deconv_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -78,9 +78,9 @@ diff --git a/doxygen/device__alternate_8hpp_source.html b/doxygen/device__alternate_8hpp_source.html index 2967f13e212..73c31aae3d5 100644 --- a/doxygen/device__alternate_8hpp_source.html +++ b/doxygen/device__alternate_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/util/device_alternate.hpp Source File @@ -29,7 +29,7 @@ - + @@ -70,9 +70,9 @@ diff --git a/doxygen/dir_4b7f3da7c7b4301d805dae0326fb91b7.html b/doxygen/dir_4b7f3da7c7b4301d805dae0326fb91b7.html index 7cb86d1919f..f0070bc9df7 100644 --- a/doxygen/dir_4b7f3da7c7b4301d805dae0326fb91b7.html +++ b/doxygen/dir_4b7f3da7c7b4301d805dae0326fb91b7.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe Directory Reference @@ -29,7 +29,7 @@ - + @@ -73,9 +73,9 @@ diff --git a/doxygen/dir_5c92236a0f5740f6a611cf0cbca860fd.html b/doxygen/dir_5c92236a0f5740f6a611cf0cbca860fd.html index 3be63101f82..ba09938737b 100644 --- a/doxygen/dir_5c92236a0f5740f6a611cf0cbca860fd.html +++ b/doxygen/dir_5c92236a0f5740f6a611cf0cbca860fd.html @@ -3,7 +3,7 @@ - + Caffe: src/caffe Directory Reference @@ -29,7 +29,7 @@ - + @@ -73,9 +73,9 @@ diff --git a/doxygen/dir_63b6f53f56ebc4a4e494d80608d10658.html b/doxygen/dir_63b6f53f56ebc4a4e494d80608d10658.html index eb358d3c6b1..442e3089c14 100644 --- a/doxygen/dir_63b6f53f56ebc4a4e494d80608d10658.html +++ b/doxygen/dir_63b6f53f56ebc4a4e494d80608d10658.html @@ -3,7 +3,7 @@ - + Caffe: src/caffe/util Directory Reference @@ -29,7 +29,7 @@ - + @@ -69,9 +69,9 @@ diff --git a/doxygen/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/doxygen/dir_68267d1309a1af8e8297ef4c3efbcdba.html index 9814ed295fd..20ef82e76f2 100644 --- a/doxygen/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/doxygen/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -3,7 +3,7 @@ - + Caffe: src Directory Reference @@ -29,7 +29,7 @@ - + @@ -73,9 +73,9 @@ diff --git a/doxygen/dir_750d2c266ff028c3ef5b86bdca6396e1.html b/doxygen/dir_750d2c266ff028c3ef5b86bdca6396e1.html index c0f8a34a777..3bdd7ab11cb 100644 --- a/doxygen/dir_750d2c266ff028c3ef5b86bdca6396e1.html +++ b/doxygen/dir_750d2c266ff028c3ef5b86bdca6396e1.html @@ -3,7 +3,7 @@ - + Caffe: src/caffe/solvers Directory Reference @@ -29,7 +29,7 @@ - + @@ -69,9 +69,9 @@ diff --git a/doxygen/dir_b4c5ae27f152c386e8799324caa2412e.html b/doxygen/dir_b4c5ae27f152c386e8799324caa2412e.html index abe8d8b3088..a57809f6cae 100644 --- a/doxygen/dir_b4c5ae27f152c386e8799324caa2412e.html +++ b/doxygen/dir_b4c5ae27f152c386e8799324caa2412e.html @@ -3,7 +3,7 @@ - + Caffe: src/caffe/layers Directory Reference @@ -29,7 +29,7 @@ - + @@ -69,9 +69,9 @@ diff --git a/doxygen/dir_b9606a76d4acbf8f90a06a4a51ec8b9e.html b/doxygen/dir_b9606a76d4acbf8f90a06a4a51ec8b9e.html index 86c09c2fbe0..bfc9cb0ba52 100644 --- a/doxygen/dir_b9606a76d4acbf8f90a06a4a51ec8b9e.html +++ b/doxygen/dir_b9606a76d4acbf8f90a06a4a51ec8b9e.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers Directory Reference @@ -29,7 +29,7 @@ - + @@ -69,9 +69,9 @@ diff --git a/doxygen/dir_d44c64559bbebec7f509842c48db8b23.html b/doxygen/dir_d44c64559bbebec7f509842c48db8b23.html index c2bf26c144b..27c9c309c4d 100644 --- a/doxygen/dir_d44c64559bbebec7f509842c48db8b23.html +++ b/doxygen/dir_d44c64559bbebec7f509842c48db8b23.html @@ -3,7 +3,7 @@ - + Caffe: include Directory Reference @@ -29,7 +29,7 @@ - + @@ -73,9 +73,9 @@ diff --git a/doxygen/dir_feb0d617e78aec1d705c99fd9e400e0d.html b/doxygen/dir_feb0d617e78aec1d705c99fd9e400e0d.html index 511c638bae8..8e4ca229cd5 100644 --- a/doxygen/dir_feb0d617e78aec1d705c99fd9e400e0d.html +++ b/doxygen/dir_feb0d617e78aec1d705c99fd9e400e0d.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/util Directory Reference @@ -29,7 +29,7 @@ - + @@ -69,9 +69,9 @@ diff --git a/doxygen/doxygen.css b/doxygen/doxygen.css index a2cf15fa876..4f1ab9195b4 100644 --- a/doxygen/doxygen.css +++ b/doxygen/doxygen.css @@ -1,9 +1,13 @@ -/* The standard CSS for doxygen 1.8.12 */ +/* The standard CSS for doxygen 1.8.13 */ body, table, div, p, dl { font: 400 14px/22px Roboto,sans-serif; } +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + /* @group Heading Levels */ h1.groupheader { @@ -1211,6 +1215,11 @@ dl.section dd { text-align: center; } +.plantumlgraph +{ + text-align: center; +} + .diagraph { text-align: center; @@ -1506,3 +1515,82 @@ tr.heading h2 { } } +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/doxygen/dropout__layer_8hpp_source.html b/doxygen/dropout__layer_8hpp_source.html index cd66380f5b3..e9b04862e81 100644 --- a/doxygen/dropout__layer_8hpp_source.html +++ b/doxygen/dropout__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/dropout_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -84,9 +84,9 @@ diff --git a/doxygen/dummy__data__layer_8hpp_source.html b/doxygen/dummy__data__layer_8hpp_source.html index feb248e0d14..d80bff75727 100644 --- a/doxygen/dummy__data__layer_8hpp_source.html +++ b/doxygen/dummy__data__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/dummy_data_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -66,24 +66,24 @@
    dummy_data_layer.hpp
    -
    1 #ifndef CAFFE_DUMMY_DATA_LAYER_HPP_
    2 #define CAFFE_DUMMY_DATA_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/filler.hpp"
    8 #include "caffe/layer.hpp"
    9 #include "caffe/proto/caffe.pb.h"
    10 
    11 namespace caffe {
    12 
    18 template <typename Dtype>
    19 class DummyDataLayer : public Layer<Dtype> {
    20  public:
    21  explicit DummyDataLayer(const LayerParameter& param)
    22  : Layer<Dtype>(param) {}
    23  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    24  const vector<Blob<Dtype>*>& top);
    25  // Data layers should be shared by multiple solvers in parallel
    26  virtual inline bool ShareInParallel() const { return true; }
    27  // Data layers have no bottoms, so reshaping is trivial.
    28  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    29  const vector<Blob<Dtype>*>& top) {}
    30 
    31  virtual inline const char* type() const { return "DummyData"; }
    32  virtual inline int ExactNumBottomBlobs() const { return 0; }
    33  virtual inline int MinTopBlobs() const { return 1; }
    34 
    35  protected:
    36  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    37  const vector<Blob<Dtype>*>& top);
    38  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    39  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
    40  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    41  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
    42 
    43  vector<shared_ptr<Filler<Dtype> > > fillers_;
    44  vector<bool> refill_;
    45 };
    46 
    47 } // namespace caffe
    48 
    49 #endif // CAFFE_DUMMY_DATA_LAYER_HPP_
    An interface for the units of computation which can be composed into a Net.
    Definition: layer.hpp:33
    +
    1 #ifndef CAFFE_DUMMY_DATA_LAYER_HPP_
    2 #define CAFFE_DUMMY_DATA_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/filler.hpp"
    8 #include "caffe/layer.hpp"
    9 #include "caffe/proto/caffe.pb.h"
    10 
    11 namespace caffe {
    12 
    18 template <typename Dtype>
    19 class DummyDataLayer : public Layer<Dtype> {
    20  public:
    21  explicit DummyDataLayer(const LayerParameter& param)
    22  : Layer<Dtype>(param) {}
    23  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    24  const vector<Blob<Dtype>*>& top);
    25  // Data layers have no bottoms, so reshaping is trivial.
    26  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    27  const vector<Blob<Dtype>*>& top) {}
    28 
    29  virtual inline const char* type() const { return "DummyData"; }
    30  virtual inline int ExactNumBottomBlobs() const { return 0; }
    31  virtual inline int MinTopBlobs() const { return 1; }
    32 
    33  protected:
    34  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    35  const vector<Blob<Dtype>*>& top);
    36  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    37  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
    38  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    39  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
    40 
    41  vector<shared_ptr<Filler<Dtype> > > fillers_;
    42  vector<bool> refill_;
    43 };
    44 
    45 } // namespace caffe
    46 
    47 #endif // CAFFE_DUMMY_DATA_LAYER_HPP_
    An interface for the units of computation which can be composed into a Net.
    Definition: layer.hpp:33
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    -
    virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: dummy_data_layer.hpp:40
    +
    virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: dummy_data_layer.hpp:38
    Provides data to the Net generated by a Filler.
    Definition: dummy_data_layer.hpp:19
    -
    virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: dummy_data_layer.hpp:28
    +
    virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: dummy_data_layer.hpp:26
    virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: dummy_data_layer.cpp:9
    -
    virtual int MinTopBlobs() const
    Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
    Definition: dummy_data_layer.hpp:33
    -
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: dummy_data_layer.hpp:32
    -
    virtual const char * type() const
    Returns the layer type.
    Definition: dummy_data_layer.hpp:31
    -
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: dummy_data_layer.hpp:38
    +
    virtual int MinTopBlobs() const
    Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
    Definition: dummy_data_layer.hpp:31
    +
    virtual int ExactNumBottomBlobs() const
    Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
    Definition: dummy_data_layer.hpp:30
    +
    virtual const char * type() const
    Returns the layer type.
    Definition: dummy_data_layer.hpp:29
    +
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: dummy_data_layer.hpp:36
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the CPU device, compute the layer output.
    Definition: dummy_data_layer.cpp:101
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    diff --git a/doxygen/eltwise__layer_8hpp_source.html b/doxygen/eltwise__layer_8hpp_source.html index 4d392e2569e..cef0bd422a9 100644 --- a/doxygen/eltwise__layer_8hpp_source.html +++ b/doxygen/eltwise__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/eltwise_layer.hpp Source File @@ -29,7 +29,7 @@
    - + @@ -66,7 +66,7 @@
    eltwise_layer.hpp
    -
    1 #ifndef CAFFE_ELTWISE_LAYER_HPP_
    2 #define CAFFE_ELTWISE_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/layer.hpp"
    8 #include "caffe/proto/caffe.pb.h"
    9 
    10 namespace caffe {
    11 
    18 template <typename Dtype>
    19 class EltwiseLayer : public Layer<Dtype> {
    20  public:
    21  explicit EltwiseLayer(const LayerParameter& param)
    22  : Layer<Dtype>(param) {}
    23  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    24  const vector<Blob<Dtype>*>& top);
    25  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    26  const vector<Blob<Dtype>*>& top);
    27 
    28  virtual inline const char* type() const { return "Eltwise"; }
    29  virtual inline int MinBottomBlobs() const { return 2; }
    30  virtual inline int ExactNumTopBlobs() const { return 1; }
    31 
    32  protected:
    33  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    34  const vector<Blob<Dtype>*>& top);
    35  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    36  const vector<Blob<Dtype>*>& top);
    37  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    38  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    39  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    40  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    41 
    42  EltwiseParameter_EltwiseOp op_;
    43  vector<Dtype> coeffs_;
    44  Blob<int> max_idx_;
    45 
    46  bool stable_prod_grad_;
    47 };
    48 
    49 } // namespace caffe
    50 
    51 #endif // CAFFE_ELTWISE_LAYER_HPP_
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: eltwise_layer.cpp:100
    +
    1 #ifndef CAFFE_ELTWISE_LAYER_HPP_
    2 #define CAFFE_ELTWISE_LAYER_HPP_
    3 
    4 #include <vector>
    5 
    6 #include "caffe/blob.hpp"
    7 #include "caffe/layer.hpp"
    8 #include "caffe/proto/caffe.pb.h"
    9 
    10 namespace caffe {
    11 
    18 template <typename Dtype>
    19 class EltwiseLayer : public Layer<Dtype> {
    20  public:
    21  explicit EltwiseLayer(const LayerParameter& param)
    22  : Layer<Dtype>(param) {}
    23  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
    24  const vector<Blob<Dtype>*>& top);
    25  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
    26  const vector<Blob<Dtype>*>& top);
    27 
    28  virtual inline const char* type() const { return "Eltwise"; }
    29  virtual inline int MinBottomBlobs() const { return 2; }
    30  virtual inline int ExactNumTopBlobs() const { return 1; }
    31 
    32  protected:
    33  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
    34  const vector<Blob<Dtype>*>& top);
    35  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
    36  const vector<Blob<Dtype>*>& top);
    37  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
    38  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    39  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
    40  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
    41 
    42  EltwiseParameter_EltwiseOp op_;
    43  vector<Dtype> coeffs_;
    44  Blob<int> max_idx_;
    45 
    46  bool stable_prod_grad_;
    47 };
    48 
    49 } // namespace caffe
    50 
    51 #endif // CAFFE_ELTWISE_LAYER_HPP_
    virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
    Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
    Definition: eltwise_layer.cpp:102
    virtual int ExactNumTopBlobs() const
    Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
    Definition: eltwise_layer.hpp:30
    An interface for the units of computation which can be composed into a Net.
    Definition: layer.hpp:33
    A layer factory that allows one to register layers. During runtime, registered layers can be called b...
    Definition: blob.hpp:14
    @@ -75,16 +75,16 @@
    Compute elementwise operations, such as product and sum, along multiple input Blobs.
    Definition: eltwise_layer.hpp:19
    virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
    Definition: eltwise_layer.cpp:31
    virtual int MinBottomBlobs() const
    Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is requi...
    Definition: eltwise_layer.hpp:29
    -
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the CPU device, compute the layer output.
    Definition: eltwise_layer.cpp:45
    +
    virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the CPU device, compute the layer output.
    Definition: eltwise_layer.cpp:47
    virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
    virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
    Does layer-specific setup: your layer should implement this function as well as Reshape.
    Definition: eltwise_layer.cpp:10
    A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
    Definition: blob.hpp:24
    diff --git a/doxygen/elu__layer_8hpp_source.html b/doxygen/elu__layer_8hpp_source.html index b42b943421c..ed09da0218a 100644 --- a/doxygen/elu__layer_8hpp_source.html +++ b/doxygen/elu__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/elu_layer.hpp Source File @@ -29,7 +29,7 @@
    - + @@ -79,9 +79,9 @@ diff --git a/doxygen/embed__layer_8hpp_source.html b/doxygen/embed__layer_8hpp_source.html index f24824db876..72c4fe4272a 100644 --- a/doxygen/embed__layer_8hpp_source.html +++ b/doxygen/embed__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/embed_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -82,9 +82,9 @@ diff --git a/doxygen/euclidean__loss__layer_8hpp_source.html b/doxygen/euclidean__loss__layer_8hpp_source.html index 89096c9ca77..8e2432e418c 100644 --- a/doxygen/euclidean__loss__layer_8hpp_source.html +++ b/doxygen/euclidean__loss__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/euclidean_loss_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -80,9 +80,9 @@ diff --git a/doxygen/exp__layer_8hpp_source.html b/doxygen/exp__layer_8hpp_source.html index aa2d043c3bb..e47e08d5611 100644 --- a/doxygen/exp__layer_8hpp_source.html +++ b/doxygen/exp__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/exp_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -80,9 +80,9 @@ diff --git a/doxygen/files.html b/doxygen/files.html index 2a7f63aa553..4159bf66ec1 100644 --- a/doxygen/files.html +++ b/doxygen/files.html @@ -3,7 +3,7 @@ - + Caffe: File List @@ -29,7 +29,7 @@ - + @@ -176,9 +176,9 @@ diff --git a/doxygen/filler_8hpp_source.html b/doxygen/filler_8hpp_source.html index 024fbfc49f7..f562761b9f1 100644 --- a/doxygen/filler_8hpp_source.html +++ b/doxygen/filler_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/filler.hpp Source File @@ -29,7 +29,7 @@ - + @@ -85,9 +85,9 @@ diff --git a/doxygen/filter__layer_8hpp_source.html b/doxygen/filter__layer_8hpp_source.html index c800f38929a..18c05830c6d 100644 --- a/doxygen/filter__layer_8hpp_source.html +++ b/doxygen/filter__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/filter_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -82,9 +82,9 @@ diff --git a/doxygen/flatten__layer_8hpp_source.html b/doxygen/flatten__layer_8hpp_source.html index e0b568d56a0..60137585163 100644 --- a/doxygen/flatten__layer_8hpp_source.html +++ b/doxygen/flatten__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/flatten_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -79,9 +79,9 @@ diff --git a/doxygen/form_0.png b/doxygen/form_0.png index cf000715034b45bb0f67dcaaf1a00d6e9f0f66da..8f0afd2cff9fb2168428679bb5ba73996d39aa78 100644 GIT binary patch delta 188 zcmV;t07L)i0gVD7iBL{Q4GJ0x0000DNk~Le0000Z0000C2m=5B0N?%eh>;;%e|$+q zK~#7F?VUjm!ypUYu=b%3Ob6t$-wSFE&_#@PM=z~3z?Mu0C4JCq;LtAMtd zP0i8+U!9RYqHc64X~euFN7d|NHkbjpy_PS=+v~ZdEQO=mKeG%Ur1MK#8jSf}$vIb# qCClT9RYLVm=0aig0o<*l^$nbh5(18yUT$~*0000ERLtqy>POhl3eN##o-+JW(+^C*0G;F{Fa=?c9UB z2NZai`87HgO?b0Ew^^X|-!6wGKN4>~7iFmXvouN}lKb?R`@BZmz8o61q=T}GtL%$*8T*EnB2Z2^Gc)I$ztaD0e0swec BHfsO? diff --git a/doxygen/form_1.png b/doxygen/form_1.png index 5188624d64f21f6cd31075f253d41806e056cca9..cfc936b7d0ca8e63494abffbdd82bd81650638d2 100644 GIT binary patch delta 351 zcmV-l0igcU1Fr)iiBL{Q4GJ0x0000DNk~Le0000(0000G2m=5B0D2BG7?B}ce;!Fh zK~#7F?VVY2gFp;K-)!t=?tj~;C1XS4*!j%|g(#$&=|$230RC4LfbY=&-o|)aDlF?@ z|1)rTZ>xYufVa`J&WWrE2Y9~o7g<1?4IOGZ)@P?DGUbU?ujt!f8s4D?1!gnK5wcysA+P|PB%;{=ID2{!`jNEtCNZ8 zhYqzvNnqG90lIZ7q;067yg0PC&M|r;9c|l>W=uaUjQ3^-hMRORM%%WdZ+l`^ zF)+F@^J8>!wr7&dAWPX=(rSWA7vYk<<~=bELy%{HYouvD7SSg(RtBSOHD0vjG+TgA xF`Tx#J?8s|9lPwx^Ww>O{=Dnw=cQd&_XVdG1((hc2(thH002ovPDHLkV1nRTpYs3! delta 386 zcmV-|0e$|j1JVN_iBL{Q4GJ0x0000DNk~Le0000}0000G2m=5B09~N7@R1=~e?dt^ zK~#7F?On;1gdhwoL{Jvt|NpkB01>DAGRtKSyqAb9l~g6%0pS1G4gh~(?w%f2faB@H zegeQ3^EvKtIe7qhm`(YhYdbMH*kf*(NFM{I_5EHOl|hSMSjL&Ab0izKu^u@IS>~7N zVHV%AsS<9Sf9!c~6#?e&#>50if3Ec#gL-6QX$C!c!tu65AT2izGTa`UJNn@=4)Gi3 z&&=K4khn?+p>`r2bV3T|*_;`g4W5>nU!v&>niUe2^<3n%Su1I(X+^4&-xIS7aW_>; z(hMpmrko@m?+mJS4S1iW9hkyB5V%RMkXzSO<=m&7qNQlsF*y_WhH1#pSgw$xAKGeZ zGT2mR2x(!f1?KY2f#J2tIKruH*I~T(7S8+6k4;uJ7wx6()7t@n@0<4gc$)z5OWT&G gw!D1+__1}I7mkDnaI=%5$N&HU07*qoM6N<$g4gA*-2eap diff --git a/doxygen/form_10.png b/doxygen/form_10.png index bd29111bb207d69b7946f0ec58f9d72df624a031..afabcdaaf83fc465c8dd72f52a60c16d9d2a93a3 100644 GIT binary patch delta 468 zcmV;_0W1FU0ipyUiBL{Q4GJ0x0000DNk~Le0001Q0000G2m=5B055ORMv);}e*uw6 zL_t(|0qtGEcEcbH6A&O!2><`Lvv44k_1YcwUfyihrm|!iI0L}{j{^X{9RB$?T5`T# zl0!`f0QN{JoFM_g7B-h?Y^sSh04#s8X2)dUOEPAnP43It*k%NPJ?zD5=>mW~&PuTj z0QP8siTYX9^An$}(qb-baEO>mf0pLBI8~@$P8aG)DTMB@&UZ91^5_iouOoVP&WaR$ zBaoMX?EQ0315?`x95_ zjq+_f+GmCQ9^VQRf-L1K)5@oQI*uVeoro)a7~RkA))+0#yfyCQdxHtVB`yC;xcXS$#43 z?P3aovywgnUB5@>MKDaaD$n!*;9D`zJK}H{0KOJWSATI|E5{FySP4su`n-1l0000< KMNUMnLSTYkG}cf6 delta 161 zcmZ3)@`+KgGr-TCmrII^fq{Y7)59eQNQ(e5HwQD2^tc{dI8iaGoFUQE#WAFU@$Fo1 zz9R-4&hZ@cCxxB*n;-q_s!rNP?uZD5+dp_1?!SB`$M>g)YjgUPohm6`oJD3Vzn!&m z@6ER{+k~d>(2{JtW>^%Hmw4+$U5)SRPwt{o)mryo^xk1vYjQyT-DYpbtz12^Qb1c7 NJYD@<);T3K0RS%fJ!Aj? diff --git a/doxygen/form_100.png b/doxygen/form_100.png index 514ce8691fec66adcc8a1f7d722b62e2a6d0fce2..11a914aed66183fdb4c0b9578cfa834ab6337b00 100644 GIT binary patch delta 219 zcmV<103`p;0jvTciBL{Q4GJ0x0000DNk~Le0000J0000J2m=5B07Z_*{*fVDf161} zK~#7F?Oh8FLm>#Od{o{G^ZvJ8_07yBy8>Z`@^u*w-1T?2q9_}Rwwq2APb46*DRdF|;hefICf#tN0F%E1q z^jA3%z=3LTdfQ7pGez-&-X|9(F+Jsu&$CO~*S2~7PR{LU9(weJ^tp*2T9mIV#v8l} V1G!X_3=jYS002ovPDHLkV1f}gSxf)` delta 124 zcmZ3(bdFK6Gr-TCmrII^fq{Y7)59eQNb`U&2Q!dNT)pP%M8)VJTTd6qkP61Pa}RPJ zFyLWce_~y%)A#u8jLwhzcO7gz;IvPcp>9#hj#t|zu1^e2Qd|1>W%=c#sBXItbGmi~ Z)#xiSbe#+_E(RLN;OXk;vd$@?2>^tREXDu; diff --git a/doxygen/form_101.png b/doxygen/form_101.png index 131d57190458d5231fbf821cba135027746a0fe0..299f39c8efc9e82bc79fa3238b6b38a764d35bc5 100644 GIT binary patch delta 147 zcmcb`{De`lGr-TCmrII^fq{Y7)59eQNb>+OKL<0Ad~ScQdZJ=fCPT2Ni(^Oy={I0OiDbqi`q}{v9 xLV4Y-7-P+w2UjiH_AP|%=&oMhM}JN~Var^~sAnl)rvkKx!PC{xWt~$(69C)CGJXI6 delta 395 zcmV;60d)T40ons0iBL{Q4GJ0x0000DNk~Le000110000G2m=5B0K18Jw2>iNe*sBJ zL_t(|0qvdLlB^&Mgg+99;`sCaZ@U3hbjm$5=XR@7G{pdEIt|V>z~4ax_znr+I}8f& z5kty~4nEQ`5&-^%FabOwT$0Uy&X5Jo@fAK+I0?Wb)VcN$FDbbI$@iq_{QAVO>A_Q44}74I~5^I)pisiW;RaVRoYnW zTTj}4VT&9YmiOo;%vFqAB&^z#x(V6InyO~P8M6k@0C+>8Ew;r~qpq@vVLZ`BFRNbo zTgAcBZY^+aQ#mXS{=!YL7_1-OX-&#YD&Fih9`mo$HQ?IhdHVJ_RBM~;`x}jB$D;sl p?Te51v_*a+0eHiI{C`}x{s8o%24BGUMTGzW002ovPDHLkV1jPTuYLdk diff --git a/doxygen/form_102.png b/doxygen/form_102.png index 51fc5a20b8b4dd3ecc749a6f16549344b9484b1b..d4c8845c146ce96bc21996fa5502d1e3cd98241c 100644 GIT binary patch delta 185 zcmaFJ+{vWa8Q|y6%O%Cdz`(%k>ERLtq~(BEfP)!Gnmw_9Fi|n8o}t3i#WAFU@$K9| zK4wJ@7kAASYuA3?|CZ@$Z}zUgA7`g1J$spOjGN)Wyf{_{vDQgd>0b`o7`{KQ8tdwC zp0PNOJCE_lihZu!d~NrO+H3bW{-5>xa@3xqn$21PpNay7HmYEjqe`V~3i77Wp4rIwrO(zagqb|{(c<$cFxJk@#dW^>} zB}-DO&{Qx#GTo;Uc_mGZLUvN-N?HM4;iM``q48#&l;%MX(u@2d^+~$MJ&(;}yppye z7TINKQ?SeLjq*o*M3<`8JV}=n{3yT$spT-OF>W=8v}`%bSCi4vyFW>vXucO;*V#6* zXHW}C>yCPLlMex=lK_c!`SFzxlK`;KeA@9F_Qf}Q?Lm+O99 wepTYx06xZi-1>64;D0O*IM3f-9o{PV0enOV4ZApXRR91007*qoM6N<$f&g{1tN;K2 diff --git a/doxygen/form_103.png b/doxygen/form_103.png index f7dcad0e81a01252003d9b7d4cf79b6ce1bab45e..72634462f0dc5e730c67117b573881737907d2e5 100644 GIT binary patch delta 168 zcmV;Z09XIB1o;6WiBL{Q4GJ0x0000DNk~Le0000I0000F2m=5B0Nz+{Adw+jegJ4m zL_t(|0qvbp4#OY}Lth$j*eG!S+YYJQ$||ilu>9n&ILQqF{;&c3@GJ(bPLKiaNUBN| zIIV3!o5PFZ0bRi9J!8XMuJ4jzl!98Of6g4CnAx#?shaXi=-t?kOpeF#*etz%bJYvW Wk^#D}=4Hi%Q#>>$9@hY1Nobb^vby{x>-P0QiCc@CS_I zoj=^uL^goWnCdGL;8*Yyz!k}|RQIy) zu2q|M=HkQ5dh;X?dgUt*(2uoMe>)@(Q+6)rppcv-OzxO$H<{>S()-@3uI^TOqBz#p z-Mm{LF(iLvWJQW+k@^!gYEz<~TYQmXRo6tF(vs)2_tBQ#PT+QH587N0a<8_SvkRTC z!EaS*%Ue=QZxLqt5Z|=Bk$0w598th)T*zZe=|@qwQ;8v1O>>R0yzAU5e+U|4X8%tT zj>%U!qEcNDYF}knq0tWeuvqD}^2mCYUD$lv`5(xCywfOv3!02mQ3m-14OgPG zsYI1vIc4#i6cHmA+p^UGoZ*tK7Jv(8OJ-`{$&o4Qi^<^FWHOStt9(o_xOTK?=;4u}1C1^9@(9UEtuC{_V~m+JH$z#s5h9oMhT b;FI$Y$?XZTGicT<00000NkvXXu0mjf^(*D( diff --git a/doxygen/form_104.png b/doxygen/form_104.png index fa0ad449ffcc6ac68db45f600cb8cbea0351cf70..f962d3e53c453e65282426d0f21b3389facd178e 100644 GIT binary patch delta 497 zcmVRbr(wSdKu1Ux zBn$vOp$n=2eGx-U0G+XgT?T-z$X0Owa$_DCb9ZrN7vKj(0O$-E&j9#7>Un>DT61tE zQqGsmH@u;)eB64T>>ND8pP3ZCf7DuZnd;&T`Q>=cZ8o$5pgscd9>cKK^-)d0M$+>6 zOA3Hj9JI#oe6)I#o90tJf3ujn+3CyM0iJQtVr%_qm&q9}TFe`8UT(1bdf3C}P!%)Q zI5yX4ofdtqVzx`$QSu@qYD%f8e^x}2P~)iK zLObs(jMAs`^vhjG(>es)>c!NFllljd)Of9S+=UXmX*~Dcx>p|U9(V{sn&kX!i;J7`EI*00000NkvXXu0mjfJI>|B delta 528 zcmV+r0`L961m6T9iBL{Q4GJ0x0000DNk~Le0000_0000N2m=5B0DU*&E|DQyf6hrn zK~#7F?Va0_+b|46k3`+=c>n)z3;L3^Q}1TBolc)LM#hX}2!u#I1N>LmIS2rMg&K*a z=Vy4Dis>8yyhrFT!E&ffPiDQR0q`xX)L<=G4JDTns3L0c$fTMSJNf70w|rqHPSmO_ z(?nbtt7CB{)0&f?Dc zTd~RqMJs-mug)^XJV?WA$&w`=+8BeJN>;i-%Aa(7C>Q@IYnO34DS%h(hxa1kwnB=u z%Nu{qs}~vo7vycf;7NW;+5`cYC(i^?0$eecWm$fL&CWUFDZA9R4}e=-e-y?0hI<6Y zo=4aRz#X(vD*fr=?#o&_r5rBRRyO+pzD4xr&~vEVN^uu`)Jx2m76H7XmToqO+=KRP zw$`7@ME#q3?F!}_zFL@8#Q+z?hoxDiy!D69Z0!$Kff!m%3Y4OmRWsjc=L_Xh1ZVT7 z)k*hj>$k~6wV=M1>6?MNW+-|oCq96C1btLPkG;7gY81Z$^3+D`66@Zb^DSEd@Fk?h zirOyP>^Fm-hxF*5wAQlbo_v>e8c0000?O|bnFWN+|8vD*j$8f8EvKgApWwePlQpiGw1KsO)Zuwr_HGl{XuFm0#9* zeN2WxCc+p3nFyA{pBHf%VhE~~=dDBEj`D+nP)uiIAeD*0aXNpk6qSiUtbVDZgF2%H zzcBW6k-;M6EOJ>ns-41`?7EaAmmA}y6$_;`c`#Tgt;zImhG(IAs-5p@aPNT5(3(>& zJwOzp0(ZZSP@3Jc@dAK{t?Yh}8GAVn z@4rl-*Fd~$%A;M1&07*qoM6N<$ Eg3>X#n*aa+ delta 576 zcmV-G0>Az01C9kDiBL{Q4GJ0x0000DNk~Le0001A0000M2m=5B0FlM8W04_SfBi{B zK~#7F?OoZn;~)$ZV9XLo{{L^UOh}WiGjn?9krTCKlZ9-PR{;3$Z~*{*3C~<2q4H0w zNGt&G1-$y=8Kgy#WnRnVPCzp52moIo2KdG>>xE0ABrc#uC>#L%H9Tcaiz#x~FR~4- zH!kyJ<%3%+x5okC0e*XS)@(g)e~$pBy$~&%;(ct4)5nsW4<9o9Y+cmL$zpOVuT&wY z<$2yE|IPlnN&t7qU4fl*3cXZ`y}u|t(>m-wxI$J+^Chu*7#aW`kV5EAsl!)kT79c3 zopOx@S!$}}cJzR0NTxa$k&kA_GRHV07vJJZcq3gO{ zj#n#Kw!ZV1OldoRR*bHpW}ewF{=Tm3c^nOZ5ZM!VLGv7YZMe9J@k<*GIQfTuu3*v} z`r}g}h#);&baNbK$P|%3@2i{qgK;s_#>+F?1@5N%kni{G0KhABRfYBivT@bH)iv=f zpfP+)TB3!OSuc!b6?$LCf08yxDkJ#-@CGK)oq1%`ORr6fi^Q%W`?L9kvs}Fo&HrH| z?c|7;roBwv+!^hW%|%k(T%v(!ylj>Nzz1kbR|&_ib9R%r&Lwll=|y3JGBot3G6H~q zgSoeOYvT3XD%C_eao^M1mTJ0PjGqby0KP(%{Oy+n0N&#_zqkPK77jmh+YLSm{I#e6 O0000! z4F(*}-BM;T3%>7PD`5ORyNv1H@$A!*3=fXS3U*z-nKCP*vw96zf73cn;Y0Zhi)U8e myeod!_{u@MR*zKuM)ox)81F`~@4^J1zkP61Pa~-)F z9C(;F=f-H3z5QRmdc(_u-S!e1DpO8MGdy_CXC749r&RRjkxzo}-bXB_Li3ncv&TI( kN?o>n!_+oyliv>+eVZ6LS(!7Ufo3y!y85}Sb4q9e02os({{R30 diff --git a/doxygen/form_107.png b/doxygen/form_107.png index 098c7ba4867ad88f62e8703930261f67ecd3946a..4c5d615f8f2e4f3aaf6809419fa01096bbd357c2 100644 GIT binary patch delta 185 zcmV;q07n1y2Z;h9iBL{Q4GJ0x0000DNk~Le0000e0000C2m=5B04E&}e~}?te*kz% zL_t(|0qvbZ4#OY}1cxReaS8bUzl{U6DkxIbLys$sWwMcXp8)U&)>0x%);$1>Y^ChJ z*X@}ACcOVcANPm=6RO*y)ke^1@XKuy6_M<3+p9cK&c4L&6&KgHid$@2$BIX`V=?Ig n@PWA=9m0L9O@JQzUX2US<^x#R5B$mN00000NkvXXu0mjfzU@gF delta 939 zcmV;c162Hp0`&(WiBL{Q4GJ0x0000DNk~Le0001_0000Z2m=5B04?586OkcWe*pk|3B%Fm z*$f1LJ+y?-6f;RgwcO9qPktc*e>2Si+<-%p##jq*09zEU_{KolYzgVHs(UEayTR%X z;1;Y&8e_}`+X@-vk2&3zqUjgnH8Dl7_ z`=}%Vu49+(SJz*Xj1fJ4h_dGUQH4S<$PEB)z=mY(UR7ze)sGlOPsnb*f0p}*Vx=o@ z^n3pWcn8}^%DDii@Hvxmnna*NFmckPUfnL{;P2!3l%yY=d(FVJ z#4Vq=I=~5BIqp|lqN}dgyxRIii=?VUzIyCiX4h5&tYNDgEG-LQ54Cl_Zj(+sbpL6| zWpms#0p5VCt|XtWTK(Frf0UocL{fFz=C_JLwzt{wG(xVHwd=U*ti8=~dnRywv;12< zNf&i_amGOyY?{Y>yc+N30dNZO*xs4GB&YHiMoY9w!kS0y7`*EN4q(63yRKTH2~~ck zMY1TXs^{0r6$wQ7^R(Ho%_6vPL5A*hSIJTBOu+JEBTn36BH6r6e|x_mSvxMk4l6TH zRyGHCjdr)wU4`UAc#kS}jh{T^&`Q$EVV6nP1)r>zrk^Jy0d}x$Z`0NKt|SL>I7#~@ zlDd(6(Y##@azt0E;s@h{gwzJ9S>OARY~R_gGty7J1j#zzDT0q{&r!X%QaIw!rgJ`e zl}fbz;8Hn={*GkTfAK4l)jz7Rnxuvx7i-J1Cw4mGb8AvlSmZ}kp}zb@zr9MbPS?gU zk!;$Ey)h}z4Ykz%VZ@z1>qzPI^@? z7d`ruP7d%%tP4kM67LS@Ovm<%>}@>BmWh#1o(FR0Wa?sAN{KiLjV8( N07*qoM6N<$0fG;$!&m?S diff --git a/doxygen/form_108.png b/doxygen/form_108.png index 512d21828910e8cb37284f59f713033075d3da31..e533478bb06e1e1b307611785cad2d1d0b13858d 100644 GIT binary patch delta 1468 zcmV;t1w;C*1A+`8iBL{Q4GJ0x0000DNk~Le0003l0000Y2m=5B0M;wSzL6nXe+6+# zL_t(|0qtFFle8!dY+eO?;s5{JCkZO3%=%o_tz*@lHJP17B~7Q(`3eC42LSwTm|%dx zX#jXS`nkOg{G|ZkeUTQxS^#)Hy17+WP~j`}1Av?Gvw;VIFGM%DoxWB+0QfnqCU^q? zJRkksF~kG_uM8^gY`#QSKlc*2e;onfg+XX-CdUPUr=y=clfd38FF#WuCjfXp`nhA) zF!`nCrM@Wper{QPPcxb?3f+X)jywS9gfiR$8~l1bQcoMn-G9ohnpFV!)zBr627u2| z=~8*}a-}7Q_8jCMC%n2dJO|mRKBnp(0MLuD)78&yb68h%odL|D;;;U}e@rbw%~S3G zz%kl~?J`rQyRp)!%ag6Hug=Y)qiu6M=uKZ|yOqo~RRH>yuS!=xHxkXowHWmniK!bH z766>X?yuA|vUP|ZzFf0Q7Bmq6&S4^7e7~WqL1*{UIbPFe4DDOx8q0fVdTH#pbj{t+ z)y+*uDBCih^+{eE769nQf8~Y}rb&!Fg6k+&BmpAy#!e3h&sQn-!O2^CI~V;hovPSw zrTXgX=H@zG&nPOGKJG10_oC5{@Ii+K!cLFN=6>!Csd&!1`4wFbWE1ll9MPqt^|b7Q zn}{npxgQ4?>kg`ED*!l$OR*7BCpY7}w7trf5Pj-Jq00t4kh?}dez-t(L*ry)Oz~6Kxd+&6ZOf2wkq8R_V= zupJ``+`6gVaM;dG&-2aMu!HcH{GS7PV`z%57%&%U7Zi)u_Iokpoa?8}dKP(OUA4`H zE=EFk7bA3)o~Gwof2-~K%irhT!~~%ERChSke((IHKuAe3T^kBb--oHUDu1Vot&2A< zt6{xX^((q8&tpwr2QUEIPX%Y&LATMhz$eEkMuyIqQX;?5<%p}gw%qHvCAU>d-{mgu zb>^^IS6e?sr?#Ypu80^0u7;ps@nxsXK1k;BYo|+efwWeDe=+ja4h+`9c7Kz8V@gRx?i z&34<1*Ig7E&*}Lu%`3*rG{2(gw#`(j| z&#lO%f1>WW&24g7IDG57~G~( z{F~f=i|BLL1HdKz;p0L*SLL^90f0_uk>Qt;1Hiu>#+LyC08fYVi!iBZxU|b>8vuaU zL>VOj@O;cgc!!GlaGo*%@U0+Qbc9D6xt^sO7ElYuxu9{m5`*0Pgr+Gd+xdtk;a!B~<7dk29378wA(M-c${HRi1s zpf76cZjp4l6iuAkGs+-+=IP0RQirT(N_DVa2o3;mV;Zi96N^^^>Qr?wxQKp8DaQAi zyNu?%m4pkc>`?t=4v;x2Rd(Bne?+Rzi{$g}9|S3^9k%-eB*#XcJM!jBSyVU6B{$8h zkj-0E^3kDpAlMTs=}epL%c_OqE${L?6Cii(oFH~~bH1aCxy5gQG`EdM-PmaN4kQh^ zaaK&Cgv3OP*|XVK9Xpj#$aNTNZz!kR+mYJBoVa3SovltPB@|WVD_WjkGuvzEiN^Jn v=kc+9c{4A@ubT4O22{+TERLtq{V@lpMx1lS`;oxnWz|5&rs&+;uuoF_;#*0 zAB!S~i~L%rUyJYj-_~r~J<;d8phu{#&nrc9hKjFYUOSx|T#bIQEf-ffY5M3^qsm9l z4{R!?{AI-rPZqC!WtwLA&F0~6Y_oZP-GE7cj`G9$%d0!0Vx!}eT-Ths j-}rsGVeP@AH4Mi$Gc_Mcp3EBsbPI#0tDnm{r-UW|8;(YH delta 545 zcmV++0^a?H0`CMNiBL{Q4GJ0x0000DNk~Le0001h0000I2m=5B0HjVPv5_HKe*xY} zL_t(|0qvd7(%T>m#8*iC$L9Ut_FIgdxK7ffog8|ohRwt?u>6n&X8`yw0QeheG5~m^ zkO1I|a%l#T900sk76AC7vMVBf6{OFcKb!^tpD9U(xbRH?$6U(CoCCnZ?yS_CN<0S; z6^{Ae+yXQY0MDg+%$<_dyzBsee=O|)@LD^-VWM;YC`&A5&hSDDjw{0L+lLu*Ei<6? z0PqcNeM~}a4*<5C%$q~+E+g|>#4=pm&U1^C$+ZM(m_5M6#Y_hP=iw&n?|NWxAF(K1 zbnTg3k^c~kOtt6fD|wHZk^wLdxj8d&Wbh~U)7HNL93}@Vxo>2P8!kFre_DWavU7q-!;*hchrnORS0nHEdZxM=d6A_^;{YzKrYZf27qlRb=}wq&0EmL zlzVr7D-r-aC=|~(WIJ{x>nx!XK;;AwUR)*sxN4fQ0^8g8_K7<^Yb}_yh0rm3U%e|U jn{x5FU#~U*{9F0~jKvJ#z7v0`00000NkvXXu0mjf=H%>0 diff --git a/doxygen/form_11.png b/doxygen/form_11.png index 21a97d15ef077d39bc524f761d7939bb7db9e116..8a976d4215dc361c5019f6b5cd64371009aa1bbd 100644 GIT binary patch delta 128 zcmX@Xa*@@t-Y e*!0)T`Fqska_i?a0TGb~yk5H%m2p9JPGbBAbEEVZQ`HLHM|$OU-1^(ZcoOiwA(; zMp_7MQD0AJ^zA83&#NQMfCNfEf7>Ky9AVKl(ZZ_kFaxY6UC7NgCyi9a?MmQx7_)C= zwNYe<06m*=_EX}7^Aw?s9FL!!)-f`72JVy`UXH%;D%V38s^m_MuBRDLy@XV^mnk8r z6m?ROES95Dvh@h~f<`-Y&dn&lhY|bmbfY^RD)iX;@|&qeU0&&}-Q}|1f24i~U(g@z zUSTN3MbX7SVza?UnM+*!MY&VE#AAJi=akE3SnbvUwE}KoNJY|>VyX@7uDNoKBTiA< z>;RS1=JBxB?d=wc;M()m?riP8g-Nd^MBN8=D6D&HN%FW&rOLBzZQ8gEL1)#IXjf3|vY^0QCe{9ysP;HMO7ElYuxu9{m5`*0Pgr+Gd+xdtk;a!B~<7dk29378wA(M-c${HRi1s zpf76cZjp4l6iuAkGs+-+=IP0RQirT(N_DVa2o3;mV;Zi96N^^^>Qr?wxQKp8DaQAi zyNu?%m4pkc>`?t=4v;x2Rd(Bne?+Rzi{$g}9|S3^9k%-eB*#XcJM!jBSyVU6B{$8h zkj-0E^3kDpAlMTs=}epL%c_OqE${L?6Cii(oFH~~bH1aCxy5gQG`EdM-PmaN4kQh^ zaaK&Cgv3OP*|XVK9Xpj#$aNTNZz!kR+mYJBoVa3SovltPB@|WVD_WjkGuvzEiN^Jn v=kc+9c{4A@ubT4O22{+T! z4F(*}-BM;T3%>7PD`5ORyNv1H@$A!*3=fXS3U*z-nKCP*vw96zf73cn;Y0Zhi)U8e myeod!_{u@MR*zKuM)ox)81F`~@5#k|SeJBe6_)m*YoL2|%V3yQ}i(~Qn zbqV0XmO;AGELT>GhCSrGeL2>Rbf{xhf<#waegk>UpA*ziD$ig{E@}-WpFv+$X%F6k z(SHh6$S}1Iuu65jJ2Am9hHcE&eRHp%`M1(Ln6iz2$+1BbSr;%`b@f>)i)3uF@dU%# zREoZZyo46&;}-kLz&<~f<#0JpwaB->gA+MKiC9^{VQwMYcI!z_8qG5M0^n>~;<*9# ttC{Tsa5djrm#@VfPyExl05=v4{{iZS1cuF+yWao+002ovPDHLkV1h+if_ne} diff --git a/doxygen/form_112.png b/doxygen/form_112.png index d0d0ae87f5ffd2446ba89a0a86f7969f106d7fe7..3a0a5e206589eb20d81596aa046c2686740f5c5b 100644 GIT binary patch delta 233 zcmVCiMyyA(62XlM?_uMp1yDFw-qlY-Zj*T;`}y zd)9vIJZcL6oS00000NkvXXu0mjf%j{@$ delta 290 zcmV+-0p0$(0`mePiBL{Q4GJ0x0000DNk~Le0000u0000C2m=5B006U&mysb`f8t3* zK~#7F?OjQ71ThE`cz1jG|8FC(r;{9V&qdYL2#jR#d;kFcPvp|$VWScONX4=gs{+7Z zkrlGpZNlFBRw=zRsa62+^Ak3|n2lkbP|AZ{UM(H+5lV^KNgQ=_mNSDHO}5!PoVc*< zoII1Q@Y($^&S$*cVSiZjQCx^;cvC_2C*^dmmcWX|#d_&H&c0*PxoxJMd@{eSFD`~p zfsc1t`WDJ#d)jW3w(1Qonzh-{ojgO{S2;gwr#@n?A>L7s`}qs_2t-0zW^O{MYtgJ_ oiN^=G6Tq)eh)dO%y@g=bU+4S{DsCKD9bBgI5t{c+&K%Mj zJ)PEd9cLN4cb+KC>X91(dHaxRe=}*_82x6iQmgS24B0G40=nW7%xaC5Mism)2U}d6Wnv zw=^H^=~6sG2hK0n=a_o2l3&}}e${@HlCRGrMxWx@i<8HB?`s_uRA11e?ePKp0uer& zg+uzds8HgeDr@Db5%}&3!H%g ge2ROQ0R9=i0LHHf+3XC2NB{r;07*qoM6N<$f*bnZWB>pF delta 798 zcmV+(1L6F*1nLGMiBL{Q4GJ0x0000DNk~Le0001%0000M2m=5B02ObQ2$3OLe*)P_ zL_t(|0qvdHa^pG-L=Q=D(f7(Iz&i!P1e$%xe0)EI|r8_Ne zerh1?EO_^pXie4YMhnUpmDW=9w@b807Z)u1>_-dIc=*O>yW92_fAPh7%9H!57K^iY zJDU}))uJi3DbZ46Fn#IQT59GQlfB0pkxEgabIUzy)$$>mFIF9#Y2{*7;@83NJ%9_e zY~vWzR64g3nD46Aw^fyHxwn!dNH;UUf1)eabEp%wF~&5<+go_hxY-FN_3P`M3?vUpnn_yPXziUxQ=@zVth_pAuj+q`Oa{dF{e{}-i}pPK~WLrDLi cRsbKuAEM?HMZ}J5od5s;07*qoM6N<$f=y+J9RL6T diff --git a/doxygen/form_114.png b/doxygen/form_114.png index 0c148ecec97060e52a1b2844dcc9bcc87ea109e2..94d034f7df9219bbc7f4ffabbf54d14ef10c8e98 100644 GIT binary patch delta 363 zcmV-x0hIo&2)Y9yiBL{Q4GJ0x0000DNk~Le0000>0000G2m=5B0BPBB?2#c_e*q~; zL_t(|0qvc^l7t`(L>q933d;Zg?WO~gab^x%yL;FRRY42vm!!cv0Q}!r0N^+Am~Rqw z3ZH>-KY}K!djf!$SPxm&qB}{(O4v1|>I?v{kd74qI@RP`6D7e*`USbputD6U((%S5q?C*;o2wvIuijN|1(Sv_P1n z(9Fcj1-hzV_dRDps-KG%6k4+U1Li2RONlIcusY<4we4;--%9VL>kHd_w#)n+thXMu zLGx^~Qk!*ZgXWpr6;JDbu#BEc9XDvDP`cSsHhyzn>c9qVvJ{e%lx}4|K|t^thO7es z?y=-d%-3IJ zL_t(|0qvdZj;lxvgulK+2RiTnwp(r(U;^Y!q}^HRNT{6%Xl$2VuKo+~_n8X-?=3ih z|HVEI9b>5a%QeO{0$f=3C4;Xy#_4(uaaeNE)+%B%Jyj2VB??%zl3E{#dCbK!cm-5aZI*>w;vdVG zp5+?RDKv0c_En|#7~sy*f4E)%7nVhYGA3U_Z(+gcu8edj)_x{l($Qz96jLR&sEJ?I^Jf7<=C12UmGcgVbj zy+Z(Jy9k|bPDkLd{61k)oAUBapVf^9OIp&VueW_fRj&TVa9D;0$lk=_^}9LT0oia* zJ?t9|Ifou`Ybbz|ts8^)+b&7yI;H^Eru7*ed&DbLfe_6G+5z_+!%*|*f6 zOwS%5ra1=@VLiNK&ITfmWi&qvpd81?m)EF`L-jsP2O0v$H7c7qB^_a}^mj|O*I)p5 zwgK7|5a3TXE6=A(N^a?Z2~f*AD~1xC3qiCHCh=q&wMmief4F-m<~HSGb5$RWu{*2O}KE9oDVXz$=7mBFnqI+{NxMJtE^l z5$$7Gl%fO5IZjdy@R{Y3KcWl3zhpHIH>Xjr@FKVXpV^`)0KaaxdIj(o+dr>n7yql~ R9^n80002ovPDHLkV1jd|+;RW_ diff --git a/doxygen/form_115.png b/doxygen/form_115.png index cb0c42e996dd9d463679cd8f9d58e8967b48759c..a25946592afccd82e37372aec89729a7daa6f788 100644 GIT binary patch delta 165 zcmey&_?=O)Gr-TCmrII^fq{Y7)59eQNJ{}R4+k@l^p=jTny46Eo#yG{7*fIbcCI7e zVFezR8=w5&zgAEo(${b2`iKKFWRLJO#91w6`S8GbrL;g>&rvOnDGnQpbM)-X z&t_$8t@@R$Ym}ZHe&j^_@n`GmQWdZ4$$B)ozopr0F0eJMF0Q* delta 161 zcmey)_?c0$Gr-TCmrII^fq{Y7)59eQNDBio4+k@l+|F0FVWMJmd6K7#V@L(#+qrjn z4;yf_*mrfVly3dIeQl#xc$93nkHS4>=2K5@oop%{C9pBfc18rsS MboFyt=akR{0Cx{PV*mgE diff --git a/doxygen/form_116.png b/doxygen/form_116.png index 3cffe53332b8cc17bd1e83bad40201d6f35f90e0..96a97dc25cf30536055bd9a83008536c375849c9 100644 GIT binary patch delta 391 zcmV;20eJq-0oDT{iBL{Q4GJ0x0000DNk~Le0000|0000G2m=5B0J37(&XFNne*r~F zL_t(|0qvd5mct+jg|9y`iLvqh-?m)9m`=Ny)7i`-r+8w)j|XB({On zC|?=BFm@pI>*+IOQ?Y%K{9=5Vf8&N+d3<*tVZBJK6IosyS_%x=wcdvSlDp1VB$<<# zl4wEJLX3G4Q#NE|83JZnV>x*uv9^myd7&q*%$bA8W++lyDPX2`q_J+uz0PUy?XYIq zL=M)j$#P0P%f`G_QyKEDaH(4Rc_9-!KZw>(6&!*p(^f7v5l8AK9nCM*UB>gP%_FWm z&!1z)fl_qQT^5yL=_1z!Mc2h!9Ev;u@M^gf(ym(r;P#1fCM2HJD7|s+nVkZFZ)}e4 lj+RHvX*uyV)o}u93MkV%7ITu`?7*8~xmHk%u{Hcum*!nW- aPs|##8TQ;WeY_lKB7>)^pUXO@geCx!%qeUD diff --git a/doxygen/form_117.png b/doxygen/form_117.png index 1dabf760d1447e78018c308ebbef6e1c8647988c..2a7caa0a2b56f000354785f394c0e68902a3d55c 100644 GIT binary patch delta 380 zcmV-?0fYYN1-@lR6jx0000QK5D(H>V*+MeW=<`yhKALk- zz6i0zDK5Kc40=^KL-oPD=5prhm%qj%3-Gn1m$JvSpKG0NIWn+vkEu&3OgHM45O zR5%u4GmO(?WpD*?!`mquatYq!p1f1^0r9~B(7)3XP$-YbVxf{d#Sl@`f9!ev>d6}T z(nqB~>ldjjV@e{LU_NDfdS*98PZV{PYNHrbb&mXLeG@U})_(x{<__WWoyWrEJ4G(* zubm=6I(-_b_yd(aZ{M9WHcn#XkT?iVj>(f!_IS6sdRD zz#jd1r&tpKm@=j>Qt?2yf8*j^{rD2ztJ__mtAw6Y_Y@b-Y{$h<;fm&}jTDQDZwvq@ z(;8)3LU?5%#q^4S`Do0i;8+t;_+R`zKkS9*e3@zQ6hpOM1P4H^N+=CaPJ425VL}$= z3@1{B!n?0wt7>BDkoZ*OOxYMUkz^riFw*nrHFuL2i?s%eajYr2aS1U{l)b_afXSkm z@kE>OkT!_P*|qC{=bSsa41Fo3>2U^tk8H13y_)=e=>~AL;RZ;jYPuCldNSTd0Psh9 z>`3Qp>n~j$FTgv8e{@M-uIJTT0Qkc6{w8X0zW^D2509EPxq$!x002ovPDHLkV1gX} BFR=gs diff --git a/doxygen/form_118.png b/doxygen/form_118.png index 6a193d997e67bb1b7a0ebe7060fddcdb51ede420..8ef04e999bb849c5b179d6e23525eea2b2dc2f53 100644 GIT binary patch delta 272 zcmV+r0q_2^2jBuBiBL{Q4GJ0x0000DNk~Le0000m0000G2m=5B0B3LvgOMRxe*n)( zL_t(|0qvbplEWYjLm!wzLTI@EZ41WGrrYW6*Zwgh13|K7$N>QU0|DSS1hgE3DvRG!X1gleV47e|FM>U*Wpe~axd?t(YJRkjC6GEQPJuQp zN0G7J`lea3nJW@C7e<|Mc^TzQqH@ WCj;|4swY_h0000( zL_t(|0qvdJlH(u@L=RWv`~Uy#O2&@CF_~m%r>6FSqO0r>LnF0XuK@oGVh`|pn19=hH1PStd zT-39MA?tTJkB2n<90AqGkpj8C1ZT1W=Fp(ujua*=z&g2VlA=_qHMU zpbuHQZXXYpPtB*aW`Mtje{s$gGsnlqee8!#*Yj<(YU;A!eY11{zJ^plIc_hOrfc5B z-K`X&U2+)%d#V?PFQwB^>|V2sdsh$jeuS^?;3lXf~aPEyBFAH zS&Dg0LP_A!b5F@~ znc`_xg$6V*UNaBy2A&AW{TrW~VF_^_^Qlu8`y*D}SOzWher#(Fpu&}aO+Ktf+Nb@( z!d~>Rk2?HXlQnXCzgjVZ^g_7+{|ZZ;aCKlgTCC%#PXYV@KI~eFUV5-vVT|?z9Rd73 y%v8m|CnaQq^h1E(!sLbzgbeVnaTPYeNB9HRH4`)!y_XdL0000YT$B+ufw{rve z4k&Oqb8BhLtonc3Z?W67xs6l$#WNmqFnoADd&{g-|>pI`6OfP<7M_;K&u!$UHx3vIVCg!0QhD# A5&!@I delta 1048 zcmV+z1n2wb0pbWDiBL{Q4GJ0x0000DNk~Le0001p0000h2m=5B0F>-7Adw+je*@7; zL_t(|0qvdFa_cYv%pef0AP==SeQ<+pDW=~agEC0*b5f7@}cp4$=8 z`V9}W_?;qY*oeH-VaHvRL@t&vx|}QLvVg;}Cvq}^%gu5jY^4z?PY|-mT10>&4n*8Q zTCEwJEcORDU{6G>?@E2Pi|tIsDiK>$QE~Kb>Zn*q+&ce4B=y@k*QeThMNJ+>%{p)1 z#nid2Ak+1kV~Vr7#m_Ref1xMTy;m7%`VAsEm|*l_;Bb_k9tBh8l`L{gte0{Os>tY@ zCljtlL_fxiHe_cj831rXZ02qjrmYAM@E%+W>J{5W?U~ipD$Tssn}!<25M#M1mgocce_`0LtmXf<+SW_! zxFRaR_YsC+*d3P$o!oWJcoU|rebnI-l=vGn5#R;Z2HMyyzFvihmoU(TC~-HX$F*?* zz5$Wxr2sXwb6o8d5uG1u)PU6H!*b&nv~qT8L4X?UczmB#V#UB?XsVqy<+C*Tg}+Ra z)n7hH9Ff?>y2#`4e|05Ed*wfBgPEEl#p}JTUS5_CLO)N-B5}&ry3W>RJWW>hj8jo2 zi#+X@UHWc4mUrCTl)f`1CEn?!^vrZ8A~BU@uw5fQ*NB)lYRIpb#Yg`L_qasi)CbFS zSAqebG|u}=^Sl#!02LIeS4E7_$4S5wl~jIPnlhB(Xv93>e{mub`o7;Cx5GzO-x1MQ z7hmm`pD(3hBLeUWCq;}dDW_=x++a`SVT7%v=7|xu(g3`~r8G9!=0!j3iHP-Gsn1HI zeZ-m)(c}ks3l}0@GgmtgpaPReQM1lFb}@Bs=?2qiU~key@{4i$LJ<)iKE8}YfE$#W zJ?f@+tvANwZWGUX1mK7>k)lS^dHqv5AK*hc6VZ@CRgaMu;Q;WHI1_0#`*i|zrknvj zh4y4@lcr#DLB}V+#~`QpU8i`-EP&6Uxg9$4ES~`W1JY?k1N;u``*RrJkK!Ky3>WNo S|DnDB0000Iqs1BV1i*ljoe|Lu`$+U-fbCs??t02#~+03In7;15;nD<6NUT3@+* zy+Moox3kZ@W#eWza-=NlyTh=^?gJxhJCqMn>YA3hOYR&|yQgxArWOkD%s$4r#j%Wt zsMq}d;%kItaOREP#pcNtyiJ>G lc^Tjq@}9cDJ){8q!ykP41L9--*ku3!002ovPDHLkV1l{tXE*== delta 501 zcmVcC$iBL{Q4GJ0x0000DNk~Le0001c0000G2m=5B00AoS)R7@te*v;d zL_t(|0qtGemV+P+94^XDm;e9U%_NA{+Q;q79#2UTCS)=RJ_Er29T5P&IHH@=6!_kn z*mW=G`uXI&c%ZaZJ!@V{%m8p33QK!^&qWpkjl;4@gc-zDbL@0U0Pr?KCoV~Rpcc-% z(g1M%DGXg<0It8zXlm5mLds!=e@%5`;s>E=l-G}>yXdqK1?;wWgY9A#B`}xAW*6^B zR*@n@1h8YQ2EhxhI5@i|o1RrLNWrQ;lA0k*@;i*Hnu4BBk2Vh6C8 z!fxfR+nm?xR?)>j#^z$rX9xL4JO(cQ&v}T3kUX=h<`}7jqG!I0j zld~wP#XRe1on4IS!SNk7dQn4rtNFY|c9rh2Lt_`a$=NZ48u<%7JGia$9LI(Y^ESM} zLLb*=wAt|%Nh#0z9KA+vOUtS+Q=;qR*L8KYMmm-J8Ro=1?~=oDi-gzE%0GRg0O0S& r{I=LP6#%|AF4@`_3jn?|f@=Q@fb0tc%gx;n00000NkvXXu0mjfk;mqP diff --git a/doxygen/form_120.png b/doxygen/form_120.png index 36b8a236e7feb08a98cf713e12dd31f5e96a308e..a16becf0c64d15f3dc90f5aeca802413acab241c 100644 GIT binary patch delta 136 zcmeyya+6W9Gr-TCmrII^fq{Y7)59eQNb>g24g_Z$;qN_DH4jhCy6w;fOv|boB{X- z-n&UZ!sNYVfD;581K25epMRk!fKMd7B|@wz1mFm(zc2dvtX2JCUtWCFc4i@Pbw%** zX|M%v-$KL#+#rqcN>tHmpOW=2f4~v5MYNMR%M5JWR0dqWqPniCM_pQFB}6MV)}8Y% zk5-K~?6l==Wm^rD$5jBI2t8iYyrfZ?06q~ar(GJ^S5o!TQ+H{43@!x~-sY%2yJ9+~ zpmm2yd|C+-^_?lK4!uazLtbeBJ|Vd;fFrESsWKT`_h)HFh^ARh5K1Y#e|_4|QcBr& zJ^Qpwfz)^(X=1OfnX842G%IhSl)Q%oGsU(714u;!Sv1FBJX&wdmeT1lqjW^d>FtLsS^Ufv diff --git a/doxygen/form_121.png b/doxygen/form_121.png index f3ab2945c0e27e4646850f140cce463ffc1d725b..7270c49801643aa4fb6fcc38e92fc8c55516e6e9 100644 GIT binary patch delta 155 zcmdnP{f1GoGr-TCmrII^fq{Y7)59eQNDBZl9|tp#6#SU8W1?bIAw#sMi(^Oy)sk^zB>8eCx7FT3uUuoixnIe?Baf~RCv}b#scPwsy{&c7(8A5T-G@y GGywqREjP&k delta 1397 zcmV-*1&aFY0lW(#iBL{Q4GJ0x0000DNk~Le0002|0000Z2m=5B0EZoyuaO~Ie+4T^ zL_t(|0qvdZvg0TWgg@?>*vb39?Fuly#Ky^-+010Cma^(3IR?6=R_iao{{irmumB&7 zPoEF)(-<_sM?(9-$ps$ZDM*DHhsOYXE*{r~?WJaC;QEZ2$>jB5eChY$ zI>!LN5$X+3F-MSg0_aBvv-Gm{!=mNwTi(}ig?vn@zN9a@>mBF--LSS?=99Iqmt?Pl z%p9G(wL`lv&9VeIi}SN|HZply{hPQ~*2|woVclW>4s>Aq*s#l&pz(qrf8^br(UlSA zI_DbLrhyl#pUDS57&9t2s1SWLWD}I@Ws2D$4DzM8+9mna<#mMq${(bYMwbD!TsRx# zHu=qW_j+r@ck~^*H0ef-=er7IJsCSs2DX(Q6_GLWF_ksL;foibkBM#6j zrBm`&i$+H0@ArFte>HZjJ(Dj@So;v*ET#qa75N5NmdvHH#QoRhy)kC@oRDu9s0OR& zXqELTc_&>q|G(tC9GO$GS*Ig)y5H~XGq=l1xqTYyYDp>NQ%dRA;(|P|eU8xUSZL(k z45)IFu^{HKCtrK*X=M9(+eW$8J*9hE8{j?JFEs$x=jrBCf7!QjVjHa01NPAGec3aa zY7S52#fORo0`wv(%8=R|wjjJ3bpZPi$J8M%hh;NqIq<&j>GeFoKAxbYG}uxSp+iw1Z$MWfo_cFRT`FO}=Mv z4f;Txk!^efJcW(8^}nVWla;Gt(lUp2XPydHK{+`W!t5zsaXph)59@3_+qxtQ-f8=Ia4G>@-IrmcON$KST{T6vs zo4cGnIB}h#OdZIy%Y{PTO0&z%>yZy#jm^;W!Hr{ABz9BT)g`5>F5=B}F#U~K-E!{(d^F4s;|twClUMWRJ^8A4VDs$B_f@}~+?OoC zN5c09O95^6xdM16#3Od(UlktUFT`|NdhzfdOOe;b_?H!579QZwhw08BfPW|SAGibH z*CWW>0{CFu{z5+kyb&K~AHSEoC?DX1@y*-;{800000NkvXXu0mjf DW@W-I diff --git a/doxygen/form_122.png b/doxygen/form_122.png index 6a4c1c1255a7dbe753869e21a481f2779a8802f2..9f5e107c2cd3565f44319a773cd3129bb33cecdb 100644 GIT binary patch delta 228 zcmVOI$(sMa9Z}iVX?r1ZRj|M|9{|ALPuu`}K`M9vdKR;x$;H$o z{wqq##c8t=Jr`>-keJ~Kv_tz#u13{LtP_HIaWPG;M;o_3tnjhu!r*LNB9ch3`^n8umopjfClr<=fv^&o%e7Q z;0z_*xSlCrtR{r;iszVo4o~Zge~oP1zLI*m7VYwOyL#5piCG6Tbi8;l!)$zvpUY$+ zrqgt-zAL)No(>!C*@7AJybMCbiZ1Dx$`SzRprShnW(VOc2*4*1+NL*TTL1P1^}gOoqk9D?t3R~f z_r=e8m#0ClOuL^Iy}mncf5Riav(3S5vy%OiIHT+8opd(OmrC!pj{#bo(RKAMJUPD+ z-qO3nVD|Jb(!1oz9lblHtM%^1H{I8}3v`v<wuU#xJ|4zU&`yVgUSa_yrYg47_3CV8H+Y002ov22Mn-LSTZ&?-6JK diff --git a/doxygen/form_123.png b/doxygen/form_123.png index 67990576566fe3dce66790edcf4b29a2a5ed0283..1c3823d11b038e24d490215c59f387d691f37b61 100644 GIT binary patch delta 233 zcmVN0Kan9@f2m1C zK~#7F?Op46#2^flpO6sB{@YeGxp4gG2>xuIvLu)Q0RAZp1%R#GQG!<^+}jIONaxfc z@Xujnx*sFsqHkqj%bHNZZ+j3gYF~*jU zgG{yB({KUYPs-`GaNZnQ2JyB_?Ixuxw=RF5jRPUxwVvV~*) j-1Cf^|3(5>=@ak^Z`%Z46Ecdn00000NkvXXu0mjfLW^X! delta 152 zcmdnR^omijGr-TCmrII^fq{Y7)59eQNJ{`Q9|tp#WKz@dnWz|@7wPHZ7*fIbc5Wb7 zg8`58{W-U$DenHCd$;|P2J^xH6CAD`-zCfVz&*?%=5e0b?lX6*gTe~DWM4f Dl`J-W diff --git a/doxygen/form_124.png b/doxygen/form_124.png index 24c93337d0b19f9a19df336aaab0f509be0e3d99..60dc922ee168228c4f777f9992c6171dbe9378ad 100644 GIT binary patch delta 516 zcmV+f0{i{m1JeW{iBL{Q4GJ0x0000DNk~Le0000~0000M2m=5B0BI#ll#wA@f5J&b zK~#7F?VZt%;~)%0FJKG_N%;T2-D{vNbhA=MntepE5)Q6yj7?tw;D1U0fJM9qfJL66 z_mcXJtKo%2VXWh7WC#MyWvBpl~Aw zi944_e}LrZoW5F=xzIsQWAoS}e_VC&RgPEIo}m0OYR+~>PltgnIUGOT*sBB>98Z-L7ahe;Rx%jcL$D zv?VKuFLa}IYcy)q3o=Imd8&rQ>jsD2}#-j*k$c8Rc_g0+7ymW?HLGLCj#^giz> zP?gcoh;wVnhKA9TKePU4pRuWY>FVq~SUxgaI(5yCSm)tfQ7A~MBR#uOJ2ZNXw0-f$ z8aKk_vDwXI)6#?Qi08@qT7rCW=L^lJrq&pc0Jrsoxui|WqAjC-Iui4>q99DjKmhP9 zu33MdL#wAW?#^i}sQ5&+8!Z61k-z_B0N`8VKVt-dUy(mZ)e%D9LyK(y0000*&@AOu7m?tk0ugmJ{ut@*yUeX&T%PtxghasUAMOQy8|!2ekc0C2OK z&AH0ku5|4oj09V`i6f742{B9-pH&|Fn zl!ss!0H#%m#YBUeNRpfY;ARD#e@u)_CZZ$vPd%aXi&!LCw&Ikdpyy`gaR2U%=VF?K z(jj(Q=v%iLEbsbSHRRTsF-cx0cL(*bs+#06AH-Nz@|1R6_X#ZWAd^r7jDK_TU^<3P zh58INXzS)=chV!v6O8kKd;??E)#!byE7rJ!8B%vJ>tdQ4VCdU4C^+9(kP^UU%@qT{7klD!%5P%)08v{8qMb)4*#H0l07*qoM6N<$f~ps@C;$Ke diff --git a/doxygen/form_125.png b/doxygen/form_125.png index 27b1249cb8a23bdc5e15293c41a4006d29cf754d..8d19c88d657b93d2c4fc8368acac63c086bbc647 100644 GIT binary patch delta 328 zcmV-O0k{6@0ha?IiBL{Q4GJ0x0000DNk~Le0000-0000G2m=5B0CVM%Vv!+Qe*p$b zL_t(|0qvbZa>F1DMIXTq7)ZJQZ7U&zA)YRpZn|OeajX$f(hu1K{6B2~A8K>sYk0`! zet_)&H*Gn~{(Kz{`Pgzv6pHKst75DGcg3o8!+E@|r0o#s*k+@ delta 153 zcmbQv{EAVrGr-TCmrII^fq{Y7)59eQNDBZl9|tp#6#SU8W1?bIK0~CZi(^Oyr6TE|YWS+^rUKIZ$n^yd6c(`No|Vy>xWT*ky$JyYjf2+%eLPgg&ebxsLQ E0PHV08~^|S diff --git a/doxygen/form_126.png b/doxygen/form_126.png index 94cb048d4008ace661bf95ed8a96c0e41001ce9e..502466f985b7743b58e034cb74d45cb3268be9d7 100644 GIT binary patch delta 706 zcmV;z0zLhf29E|IiBL{Q4GJ0x0000DNk~Le0001g0000Y2m=5B06}y12$3OMe|||s zK~#7F?VZ=I^C}R9KRU*R_kY_nU~J*p;f#5X2EuI#z z7T_NDv%v%0<5t^=0C0~>>a)2KU!ZLk3Ig2VepWC6+~Z2%0e-wl!|Y$9QH5j zpx3P~wCuoFdGgiLl4E=HLJ3!Oe|ooTJR-NtESn7%1@7|qdE3>_4S#ylA~jU_)FK2p zc?Xy4;`%*sy3A0lyzlTy`Ou-3&J+Gn-#FA8k@ouvl@)T7FT}jZCqEXe;;T&%%AZyl zfY-i%;Ig@9cSxZNz+?w>SHX|oCM6ZOlN;9a;>X~IhcBP;leB-sx3%74e;3*oq-GEJ zQ93O{L6{I_w;*@g$c>Rfc{HvIW-n-IzkOZ)m~%d^K9lK87r|d-8)@YbiSlkGgz&`f zTq&gJ(%SG#`&UITg^kS`uauZIN*OIbZ|K|b=ZcR_Qhh0X;k}mJQ^F|Svg;*#!*?~n z)FLZ@#kzx3*lxG?&Bljwe=YbyLUJQIvRZ{m+-n7g9x=m${l8iPQ7;eF&8+#yfxN+L~}Mx}1V=F>Vg}6=nznPSbxkfKUAxU;v-Gk(&L# z6#&0-<1cj{;EUeNE5MiCMDK*U+En{Jz8geog$_IYevDtn=A!S*U+~Qku)dl!;$aX2 oeAAWW><;bF&Yz?K7~l{2e}}UV5?mY*bN~PV07*qoM6N<$f~JgFRR910 delta 713 zcmV;)0yh1R29^dPiBL{Q4GJ0x0000DNk~Le000290000G2m=5B0BSmUqlArRQ{^8bJPS{Sc!Qc30V4nw(Th=EpXLB0aO9{}J#h62DXljJ3$qH|1<=z+o ze1w6R>GyQ&yX}GM0N_)IJNufpe_!9m$Y9Vt0Jx%9NG2LxLMn`hmJ*Z`Cl@E*gT#b- z@R#83f!;NXrOk|%kWxf6@hPlGGA^ckr41=^XZw-cTXVlgW^nN#l{OYLb3`7v9$`I< zO5)7K2_n;^^D(i8G6a89d8TL0VI-Z4t{Zw1%n5PiloXsQ&vYJ^3+-6Uf7$%hS~42= zhTBprJZWS3MSqlKKnhJTXUh-9f(f{iD;7V+mz!qgcn~$bL#AerN;OnyehihvxtxY) zMw&g*a<9j;o!ZL0D^Pk10MBsE&Ta_3Rn3^4Zqa;YUp0G zPfxTWUOnrnP4l2KX^`7c>l`JIAxuT6IZZLJrj11&yl-S?i2nzlmyT5znQTullk!~8 z6T+;y8IpboN=lnm`cB+HoRxR+LOZ682Kl9_r`9{@*O|`deAhY>fAh*Gnu%ZRsKKb0 z4Yc+;whAxa;D5xpMv5>vPrm7Ol2zCy7DMDvlCydk1``^fod~(ok~6x{<N5S0|0yr+1vS< vw%!2%_z8zV12{e3AEgYy{>baIOUwKR5-Sk$2pT*{00000NkvXXu0mjfd{iOe^E(9 zK~#7F?Va6{gD?n%zd(K(Th05w?UEmjcI@uXUhWJ7F&c7!1MM}y|1l5nI|~56vm^jN zS_)awWIKI$9Kd(x7JyrGr_0gc%rgs`{nObiz-L=NC#&Yj1~B)%dWbyVU>l+I zipU+TH?~^C-zs)73~GV1E;X1>HsMxp^e)ce6E;enq{_{xasU22SOd-~_n$96heqvn wV8=m>`%nNEO}E?tQx96?69~YY{qe8n3-|s8U-A$a7XSbN07*qoM6N<$f-^?6#sB~S delta 355 zcmV-p0i6Eg1G57miBL{Q4GJ0x0000DNk~Le0000_0000G2m=5B0AMoGmXRS_e>;e8idVnv{r}lHoI$l@l z$9*~HFW<6^^H?62+Ll;N#ll=w<^=GL?$zm11^5#O4HVrh+smc`W3_b>swP0z1Y+_* zYRKO`|J>C?@7$zS7CR?k^Oy$@f2w1c0q&R%EiWI*xzgk*VbG=OMDYpX6P;hw(vTf} zz1WxReQbm12F{kZC%QL2WvX-2C&_Bc&gZeI97%BB^NW^qO6Whba19lg*0{#9Fmu)`RgLMWhX*4XiEzIqt|(&H%rm zmk5#`41c;ucL6>^t7ree0eppvs(XC_e2#3-^#gTN1v2mXWA*?5002ovPDHLkV1jEq Br9S`w diff --git a/doxygen/form_128.png b/doxygen/form_128.png index 3ecfb782c38b68acb28cbf24b17ec3f12412704d..ff0801dc3ba4bea7d13c8335816596afd5f0034a 100644 GIT binary patch delta 1002 zcmVdQ zL_t(|0qvdZlA}5dgg@Ugf%yI3_OuKECV}i^>&$M|R#8@F03)fTR{Jl&zh^E0ytm*0 z{)&AZI>s>SPab1T1Hg%8Uo!YH$5?*`+NIaeLkmPMP^$h<0I%lte%9Y+_{rl??ivT#jA<{zc7&icS?i#qtIz^qmS`cZ)6u| z-R~bHb!JvNEmai*;MFEiREf%zCV&$&(gM7CWk>6d zBeeGE*P(&qG9<}5vNx}_c37vn-C8>=Wn*=YW5ha|<+C4TlM(jbn>?-+v+VBUBfI{v zW9dKXD764*)>=C(eHU75?ZTFpt2Qx*&gH#KeO7gC<#RdvZA&mle~0^$km-R9Db4O% z2Xs7C_70ghN$djG8IYsA$*U7!J$O0NI;Z zjC`BJ9gv}(`e47&kk`-^w}t|Ev2|nce%mDpUB?vQ+?1cG=VKI0j(%Er)n(ayg_>g+ zi%(;z#=~boz9bV3f2-hyngYCQINfQ5%QqeYpAabJd(Gn>i&N zVbAn;OSO*@3~*u_AoooLTdrAoHqxa0mX0XYJxPy-95p#Xf3y%LIp4I-sAI?7J2AH@ z7b|DypELJMU0i1#z@>c=2Y_!`KMVwAX64VMyu0++Q7q03+32CQ@k`ZD13Aq8T1cg6 zRgUIOkOBUPIZ;An(!}4Fib%hr^rz}YFJh;h&$eUZLJ`$mbZ-s@SM0o&9v%f5;OEWv z%Da>vWRKD7K#2A+EK1PlasU7T07*qoM6N<$g8g;l?*IS* delta 122 zcmdnOahg%FGr-TCmrII^fq{Y7)59eQNQ2ls9Lzv6XX~9w6BVNZ7_2;9978G?-_DKZ zVo>B^UcS_>Ye)6}+rJdoDpa&9I(xih_;5gXD|1Z8)eFnwx7BUi-*QvsSn3nryBis# XS1@$SigSMk8pq)2>gTe~DWM4fqe>}| diff --git a/doxygen/form_129.png b/doxygen/form_129.png index 7e7ad121a8236a49dd04831dc50687660e8c54f5..482502fb17c5c535a99a90132d55176f794dbc93 100644 GIT binary patch delta 162 zcmX@a`I%9%Gr-TCmrII^fq{Y7)59eQNDBio4+k@l+|F0FVWMJG1w)dji(^OyRiUxK zlp6g6c1!FweYg->_dJ;AsDcCBf5Zi;QB@c`Zo&umrbuWMJptetv0G~H^m6S-tS(4R zj-cnwmNLTw>=Dj?OzBo0MR&;na2GG6N;GRPPcBi_@O>k(eJ9nlD#6q&O8Jx}RVTTo zdz8*FJ1+nZ9Rf6y=t^?IvR zP0G>CG~7xiS4s`$zLk`_FyS$&-g<3S$vG#A^#RzSCbe`0@La3SHSVhNiOj!At>&?E z1vtQ-RI*=-hq+PEQB9B_0~2e<`A)YEUs!~&2JP2@rqnz@y*-fRUkNQVnb;q7_h&=M*@c_GJhSkLK zqh3FppSf$^O$GbVk%xLDXFKLjM%;)JCAC@VV05ijpH8i;Hnr*3e>?q5=bZv@8=)lC z(l=RqZ|jM$K3fZ&^K~U#_k`4CTzgY0fKMT5c~+L)mkQ`KRd0oI&r|^CNaHx}7Qh?w z!I+d}1bo)k%T`)zb%5`I#COTpuGpr*mfu_Fsdh%yzBo7l;5Sel-Peb9HhzKU67i!$ z6WVKN0bJrR!T^q;e=fh6E}JmZi&-?xqm7Iq9+Y-R-on1WHT^@5kNhf8+ExcgzM5ZJ zraf_cm8g0eQjvO)0qhWL_V;&EReObYX4R-ahbWXRTEz3?UlM&DOnM8mls})CE3t!d zFh6ZmIj86@nRR~zI`fDOcW0jlQqIaHjZw<^FrIJSssvNBe<r7R9G-_C#`f~~byyI>5-R?L|nN6ug>7B*S^VhCfeKY9W7g8=K8{HDDayr5Qj<6@y z48u^bD_7N|981c$-6SnbYY*nW_lDRK9AJ;v^0^S)^8q+RO=_+TP%o8gscpBF58w`7 z%a?+jk3-Wqu1wjr({h2_<=)0onA^%a zt1FdqeQ?&%0Qc~wlt`Oga_U`xb69P+0-Js9&-(5cvE|Ef0jl*vN<+>~KDEJHiUNFs zTt0j|zybE8%o)n diff --git a/doxygen/form_13.png b/doxygen/form_13.png index 54af190320f8c4df96ff7e4dad32824c1a0a3666..239f85c59a7e4a3bdbbdd5940c7948396e72cc56 100644 GIT binary patch delta 135 zcmcc1e1lQ3Gr-TCmrII^fq{Y7)59eQNb`U&2Q!dNT)pP%M8&9B26s;v$B+ufw{uVP zHW=_6ox`80t#PwHnoo7=4uiv!=c!h+H_YGJ{PLG0*JZI8_a-duZ9CtzvL~)!=9AeC lM>bBjczOF%2iu3c%wEonJc?T?3xQ@cc)I$ztaD0e0swEQF}45z delta 398 zcmV;90dfA=0o?;3iBL{Q4GJ0x0000DNk~Le0001z0000G2m=5B0LtCgZ;>Hde*sKM zL_t(|0qvd3l7t`(MGtSaQUCvMCpZcSOi#}&des!S%BpM3F$uZ__z2+tddvWClU*#p zQ@xi6j0bqC4^o9>rG-WVG%85e1?R?uPb`3uehSG*o?Wq;bm^vZHAu>`2KPu;z-?zs zk6sF(Qw~wyS+sW@lF=LN=iTROe~={GmNNRV0JnWv!A_kAFwhkOOOP^@0V<7~C(H`a zs;=!fvl*pLmXZfZu>oGuS%FO}Ulq3?t(vn{em+-&WVMT_-UFm;q0T&&cQmP+(-N}V zz4i)HG-^9W3ApWy6vGsc`+KBpv9!ZvgfYla#AcFnhycy?0}GN&S@(iXWaA{;k#Nws z%bHSA0DjjMG6yMb)$MZP9#`Lh+wRV(UdH82-Cx%T@CTV)raQ*Ml##6WVga=3KONUu s1h^|7Q-BwhLh7(rzTR*C?arwMUyvUMLu!RN8UO$Q07*qoM6N<$f)_Qf5C8xG diff --git a/doxygen/form_130.png b/doxygen/form_130.png index aeec9f096b36f8ae0c91891b7e2a93b4a99aa346..15c4934eeda05c95378ea7e31f686c85ff4ddcab 100644 GIT binary patch delta 716 zcmV;-0yF)#377^UiBL{Q4GJ0x0000DNk~Le000290000G2m=5B0BShOltXMZ8a=%Qfd2vj|FA>=xE1;N z2mszn5CFIp{rLz0K9IptQUZV%v9Cy9zAkTIhrcA9jK&Oc1b`QLe3FiR&4fB=g*UKr zZwvrFl8Lg?@8#Ba>w)ro0Ki8gf9~whu;ad~%3#nv0C<*SA(^N;g;W@iSW1X|ad2_) z9wa98$Z70>?wrNaVJ4Q4l8T!6E38N|9;W;Z8Je$^0=0k?g0B|S7@ec_RMys5$cFvdDXyAvQ7X#Ns@dM|ZddXCxER3DA z*YM8y3R{gf4|dMgI5RuTqUk5tmm*4A?LKDz?wD|dGLtkQVVDD8BzvYpiFk{ z_|T`)QO^s)8gnxw<0BB9SW(77!jeT-HjRh(3_GWR2GO+k9`tsmf3rE?jgG{;@=-JK z#?}~&d>z>VIVZeMg8zu|j1YkxOSGF=CpiigH$%jT1ZVXqUpYVAjzXSciK*3(s`Y4H z#=v>=OvgY0fZxk$0y7SM<(l3%cglN1=d11vTeXfmg)Y`k2Y_#+qxY#>!+DGb0Qgp< ykMk?+ey;<-pUazYB7K)K0R534Znrv>{r4A*qY%=qg$}s@0000ifTKK&qIu%BPDxm&_zQ?b#l&EP=)1Ux5En59Pg<50gj! z0`N=F3gCz6VUUk5C}jh{uOW?ld`#TOpEzivqk~Cf{K4w_p=4Kgzl7? zh41Xr$wVt}=%VBR;1<^9xd6}Lf9Cp^pEqro`@<%Ith57xqkK~bA*!1knSOccJw_%2 zJi}WM`f=Y8;0i{#x+ui*spqt!2RMi8Wo;QbKGRR?C$_g!^R^Q}14*3QIgG~2LNf>B z`a?ohw3u;Nchb)4Ch4xanLXE*rI}>c7PU6e>P2iec>6S z&-z&pm@4i$PoME6>=Fj5#}G@vl>D!Jq>T3~W=U>(5M7N$TYjBYg}3D^mY${Mg0-(i z0?l*a%Y3EW<=B#9?|uEeuc-Mhg$cYKo6;H+Q|m!0DM;*HuBhjHa~T1=Ll-}g&@Oi1 zw{QWxqvk99L~7Uw$;KX5f5w^byc&$MHWx+b<(SKsdC>2LyTl|K6w$h&Y?b%Db`U>m z)urYA=u$7?()uOga?Wy{5HYz==730CCkfW<(`C&c_~u2s?raKayQuO;d-!>fLX^pC0%VoV+%EFw+-8T;Dv?&JX6c>kX?**AVv?-HV1-?ifA|neV0x{_WJ6*N z4!}JIv-pBuYxJN{kw$J(MZVXaW^AtAuQ}FX&P&D|OVjv;DyQ~xhtZhi5N+Of?mctc zwBms$E*PQ{iR&R**In{eo7mUpJS}6M<+e#u6EI6af$EXBN+LUA67CsafS)6zWvmxa zw z+f^!+Ud%SOTYYkt4cXuIwXXp@hP5YN>ei05#mv6<9)N!aQuw7G16-r{0KoUr8VkTJ zth1pLjosI8>%S(rn*s!QgeWDb27g*JK>Y+4mTP4*n}X`afAnQBz$qHOGFwU?;4^r! zKsok-u#**!+ALE1vGe4He{BN|-~7Wqi3-3UaBN^}3j6v+VOj1a-$cIBUni?BdiR0v zAV19K6{z}vorcwytrL;e9&J+E@~sQsasd;)WL9}AUZ8VN1~{VOn^%5;FIG0);;SrU za6&-8l5G08e=shGEqt3CNTUZhLCaUd@D0A%NH@O1aw<$sElSmulwa@#xIn|V|BfCS zzFC@uVO@Qui-moq2Y?4?_sQFs$1`&m->R9BkUqxtV&H#_l`tM*=wiAF4 zpt{+baShuL;$S>V4_k|sYJ4fZC)BkFaEmYjug89)LtUUGVi}u&a|qJfw}g8$)jn|P zdj9+sh5+|S?(@Wz`%YDQ0RHs|Kg$Tfe;t1Tf~y#jCj84i00000NkvXXu0mjf6ksjK diff --git a/doxygen/form_131.png b/doxygen/form_131.png index a295b3220ea3b91488919366fc8df7e1a4f780e4..5f77b30a404a4aa982bed01cbc662b7365d55a2f 100644 GIT binary patch delta 359 zcmV-t0hs=t1h)eriBL{Q4GJ0x0000DNk~Le0000_0000G2m=5B0AMoGmXRS_e;P}09}Kyst%&9d@H3{TD(+8!w{gKh*2jjFPZ4Zy`(&v^rRe;8 z^F~F!_8xVPaVmk?u?dI0oaBH#f2Zf@Hb?PD8^HHiFD@>_7H97C1lZt0Nx&Eecn9Z& zEcr1rE)~Xiq4uYKV7!4b;&}(x@jR&!W$*k}08EMEr`6I(s3 zdaJ3;T8V8(fic>q`VkLR5B)|2iLH~$oCciQrJp7C>NRGq?ARos^&=a#J+#!t?OoRC z7bAc%RKy}kUGrzUbr;}Q(eE>By{-VC#0#sx_&O>PKG*oA2$p&s7pUZV%FNCl=%vu3@I^%C@_N}fR^Xh zGORnGp;Q^JqW=oA=nn(jxv&Cb`rCOK~B|i!P{>t2%pYK-)0DjpN;0yYF2|nmk&5i&7002ovPDHLk FV1nK8+5`Xq diff --git a/doxygen/form_132.png b/doxygen/form_132.png index a430728ec0a1f514a6d3ef253f466d1d0f262ffe..3ecfb782c38b68acb28cbf24b17ec3f12412704d 100644 GIT binary patch delta 122 zcmZ3_a+*=GGr-TCmrII^fq{Y7)59eQNQ2ls9Lzv6XX~9w6BVNZ7_2;9978G?-_DKZ zVo>B^UcS_>Ye)6}+rJdoDpa&9I(xih_;5gXD|1Z8)eFnwx7BUi-*QvsSn3nryBis# XS1@$SigSMk8pq)2>gTe~DWM4fp9Cp~ delta 481 zcmV<70UrL#0j~rhiBL{Q4GJ0x0000DNk~Le0001I0000I2m=5B0C8|Ixsf4Se*vCJ zL_t(|0qvdJx}zWrg@4WnTHpU|_X0fBT|4dE&BgE;Kuofdtl%}ke*pvVm6$J7^8#=q z*#dl&=(BV`1Njx;Rh-NLK1kFPF$Lg{k}ANfygBZfp3!?HJtc|T4y+Dt%eW{aMc?(z zuB|Z-GdFCUZO%`2oBU0Y18i*djb` z1i)2#gB|o-Zd(j{hXdS-HyCC6b?3gc^|00000NkvXXu0mjff$Q7p diff --git a/doxygen/form_133.png b/doxygen/form_133.png index ae020da523505e6dc1e174b8b470a184c08c7164..515cc3c06a947528cfd4b2d2882b0a571dc7d150 100644 GIT binary patch delta 1139 zcmV-(1dRK&1iT3$iBL{Q4GJ0x0000DNk~Le0001#0000h2m=5B0I7aaMv);}e*`N@ zL_t(|0qvbxcceNHgFo+PYySVgy(*RtbORx0`p)vev67q_gJqRU^$PHhBYA+o3w;Oh zcj1DQ%ek16CB~EieizaRa17BcNn4EeZza|D0LO4K#TMF3QvnX(rO=@I zjk&1+dqlfUA1;K}o`rcy5**+re=bNpq{85FBR;q{MM5L=1b|~CNjwRz%e6mZbwO%$ z1buI^lo=jik8u7nwOe$eYF8Wp?&5`1RjaLkmzt!8@0*y~cT!C&2}W(0DxFKr%iohY zUzAj19dTV|V7K<9hDfzwe>MybKvw~}%fCOjt9tIOo1H92!5tk2gW2c+h%0KQgUY_7Q5lrP5Vo!lyq z4_f+=RJONcER#Ka_RU2MZAkg37A2|Qw$xKM)5;dY%T5uoDKQ;z-jF*|v5DD;%?+G_ zTn=!EIu_TC^KDC4`e@F1f9%b;l&TM|Uv8&)W&Grkd|}+ZR}@FKb*_caDN46=9NSJC zo&A`$PD^(cg_1$!G4%g<&jeCGq*T>zfGi`mOA%&Sep%C582eFU+?s@e^{ym{31fl($Y62 zrsmlbVSS!0bk5h+V%-yRUvL-m1mKsDUP7naj0S*rXqw7fq29?nfGgB-9Cz!mO66co z#%u(9$%-p`$yy!Y6L3moua;e(T~|E&vAmJ>*0f8Xq?`5zxQFWKzW-?V=3os1MW7Pe zE3^PEaTs9$$B@e{f2sg3;KvuUGzlf9MzalPfHOo3`~KGS4<#-6Ra0&n4UT*@zf`6@ zaXTtXJ%yCm0h}S&?C;k}0&oWP3iIG<c)~zI1b@sW$f4tS))%IDSUPsJj)=ZT> z8uy?O%Xvh;&A!_m_t+?vsl5i;_HEa!v}^*;q+H21x??b7T-a()su_l1yRKZdCFPh? z#%(95t8;4)=DzoacqTZ&9(z(T=USK4x93W>Evcz8z;?N&nY*BSmJi?#Udxw5Jg+tI zwKk-DRIaIAe^dLs{a5wK63iM1;2vH{N$T#_oU3DT?Koecbfvd(WU;%nW!)&(2WK4( za1U=v#nfh}x_vkDY;rxvm)X~Tt!KZ89ls41V6$FGDdgPfavQt?;fJ4+V)e(b0K8#O z%B?_mt^hv7feGXVb@{sU#$8i&V4@<0Fp002ovPDHLk FV1mLGFRlOp delta 487 zcmVi?9&}o+h6aYTt&a#vS z03V`m=BqZtzuKNEeP#|ycX7@yf5~K(#MJAsvp{_?eLM4A9tr{V)Jv+$&?*ynd<+uq z5>wA2n@K@r*wF&Imx*r~^x+s-u9NvF7YA2l31%#`_a;GFT?rC#Ff)dO6@ zj>a#-a}D|A!J6@LkQxBIgbzQfe@A0!+S$@(#Lm!=4FNG_GyVtHbFE6?^ zxiCEy)C?Y1=ADxbUiK+lIZn8i7m)#Uc;G7(E`%EyW=-p%yQ+e!c7Ps1e?FQI7LhWf zTiI|+6JPz{M|>G>5(b*>*gV6?zpanxdJIt|dFVlORjRh){#29Rp08NCN-HGq!(|9h zd|9uQyB%ATJC0+!AHUx6-5L|P?~v1;6W8iNIw?u+gLc&We6K>Y)ej`Kn;pa>T>y`0 z`N}*gnq}Ykrr1N?7%Sg(e>WHzJlYfzy+84sEB&^gZJ*0=QPGCEeoDW4?I5vOGv@7n z33-xqS$CIkJ!cCi4LF^Xnh?or5kagmzZh1J{&2H5InC#ok3dayHp+!5H8I9kg8+Dj z2vHv13m|WKN%6-t~i$iqRsaPsy*~xJ@CW@ z)1W1=bM|4pW{b-GK12Y%jJ&Ts08?HZX1&v# z+$7wrG1yW5d-h`ff7dz&co(sh(rti8^w|YC!KraM6^;#30g`GQ;3G(XrW~7foU^YZ zs!z`HN&WpMOn?vIz1lX=?y$2z&hU@32jIVfv`L-E0N1EK0PubE#scsXKEyPN#=`X+ z($48>;L=yReGp?Zb3E-Cpxr5?Ei5&&5@pB@lED+ZJDV3ef8E9}5Y}#yV_zm}_bV?R zby%eM;~3F_e{BODU%l|}WCh?~Fmz+FDdE)Ks4Qz-@|Vb0=Ii3k#q56KJIjUpyaUZ7 zV`iE6&hSA**3KN4^HFYF`PKm35T&vvdhr5L1;80PzWU}D_|_3}I zZ}b5020Ff4Ht|4!kI?e#o n@h(ky0RHz#KdT79pN@Y3Pf-~n>K-7e*n-) zL_t(|0qvbp5`!QRLm!}`sOA2*?Jg@QGq&}se-2?8B_6KjcHS<`lmJlm*E$yyY&@(b_~al+$sdGhJkLpu0?!p zsR=3Tmcw4;gMFJtEMHo3B^ZDnXB|nm=ea3~H+2Zm!$@W?XzVc`EtP&sUjQ90q_FC- zxqO0;>ZdiBL{Q4GJ0x0000DNk~Le0000^0000G2m=5B0FUswsF5LBe*qdv zL_t(|0qvdJc7q@gMYkX#sOA6vwlfYF+tRMp%R^sSIRr!8bLL3$4DjEz0{l*k@5|`$ zM@m;tIRm`YdK@xuS6To*)7E&4Fp`5Jn&H@s+K&KVNNeiIg4x7Gk#(>Fk6A(a)bh3X z+r5W9yO+zhlip*FqdG}-8}D6Ne^{mHeWeYA9pJ5ewf9or9^DA9)6~|Po4K1eqcu*W zYIK8lcAAD33WMO!DXrlw{yVxpQXXD)RZ@3Hm_Gl}r2#a$P79WwMW;wfuhI7A0C>JC zP9KHyC69x+Yp2ot_(Lz2`d#TlJN2ms6!21L*Unt6p`3M-0q{Y=KA#_9GChx?`zH}= u+HRgKz<1P+F>$mB@H2%0`GdazW4r>d)CEX&Dx*690000f1E&HZiBL{Q4GJ0x0000DNk~Le0000R0000G2m=5B0MO0!q>&+7e*l(A zL_t(|0qtGe0fR6IJP1LhHSWJ{Az-b3b^)GuJVGV_fd5qh{0g;ixI`#sS+{QlJxNM% zIi|DeUd0&~M{d=&NVF%nPs{T5yvdkotHzOSST$@;F0e{gABPS}@X58of^Dulxpd8M z96mJH-8i;R9*`Uoul2lc@I$*QErG!rK3-PsyaK>o&)f6Q09?{9qy{`b{{xYF0~NJg RWWfLc002ovPDHLkV1j2%RLcMW diff --git a/doxygen/form_136.png b/doxygen/form_136.png index 3115e9db66a2213e592fc76ce8a55699e84f52da..d398e9edea283e129e73279a77d49786e96972b4 100644 GIT binary patch delta 136 zcmaFIbc<23Gr-TCmrII^fq{Y7)59eQNb`U&2Q!dNT)pP%M8)VhPfr)ekP61Pa~=5_ z95|SFvtMVu`0xLAF`+YYHHTDKW~EgyGyFMMINR{dd>(EInFBKuS1l=HeRzFYU~cfK l@A^~If}bV5sMTK7C!Qk4X#FK6FA-=sgQu&X%Q~loCIC*-FP;DZ delta 285 zcmV+&0pkAJ0qz1JiBL{Q4GJ0x0000DNk~Le0000t0000G2m=5B0EMg<`jH`9f89w$ zK~#7F?VVeag&+(>4*^l}wg27TgosyaoGHKNkFrUuN{7y40RaDx1n?5W*BzsAOYt1r z8~}bp9Ge%MFdo$uHvrF=<#dWW<6-aQGPiWM`+lSaZ2p^8l^)aH3Mi(2X~}PA@9fBw z?f%MC;uDR{HN>TwNhNBtQp;wzad10IzY)-S-UO j4dmLhZdU>RgvWjWcBljZb&04#00000NkvXXu0mjfLIQpg diff --git a/doxygen/form_137.png b/doxygen/form_137.png index 97498c1550ff231a1e978351f24fead0aa91e1e0..e2f88a07239bd7a0493c17073c367f15ed67f6e5 100644 GIT binary patch delta 144 zcmey*^oUWhGr-TCmrII^fq{Y7)59eQNb>_R4+k@l?3yEfZK7gyTA-(kV@L(#+qoA7 z4=8XrPhOR=n*Dcv^c&H)@!=i{cbLN%8sbw;%QsGbzhIV6d_xF(gjoFrA+HMsJNo(G v#Tsqf`|i@j@4r6lCSA^+CO0#ty-~XQCS$}?r{xtuOBg&|{an^LB{Ts5KY%r) delta 303 zcmV+~0nq;90sjIaiBL{Q4GJ0x0000DNk~Le0000#0000G2m=5B0G4}K4v`^Sf9^>{ zK~#7F?VZbR#2^es4`4iygvtN^ZOtn|)2TFFbkT*ymC%KQjY;+Z|3sQ2a1Yr8;A15R ztRpDE$ND>7>>|MfyhtQS3=8k0_&D1zdF6DJwk@U+ZNUp?+_KGT>dGr6>C;wfw#f%? z&e`W~L|+(o+Uri^&1iWZlD4J(f1C&f;G2e>25(Uhbmm&g7hgQ1V$CCZ{q5w1cTNng zjg{oiN#0BP+cqJ9+S*P#?L}`G6L%0!em>Z1fd6g}fZv((^JiKV zxozU(GdqBbm7KRd=l#p5aqwJeueIv(1aLK%A@2|Zz^A6!wBVYYfQoD(4#spS&JE>Ib9V^cYgz zY3s-UI6obyQus}EaeYQh9Zo-{IwX=dYNcMzP74$8lESL3U3!cniG|q8JG{|fCZmkw z(7(SHXh!t0X{xY1{M7UQMIsvjeV zy*;cR;0;U%@Bz1y0sa8~>{zJYbZf%+c@ii43~-MNG4zsd>u}mnnS-|nQNxYcP6A@X z@}^DM&&(Y40o=kY06!yb-(w0YuUDIr-P-RWv-fQnuf(wI?(Sduntt_Vf7?H8w?#*_ zRu6mgju?iI&Hbnk;2s}Jy&KkT@|(m$E5CW3=BnK+Rt3CiI4{K5FfdxZQFo_KZ3X&QtSF)F`WZF9(b z(KTYGdUs1q5KTcu8I@qhe;obfd=Tq=@}nWnv(&MAQ}o3l#*n2AXy9^`_?tM!B;MKH zcd6LpV~%0COD{RFRnjDJaQcvsjcb$^vz3PH*Y#=KG>_Lxk*;7}-=SWtzDp){d*mB2 zt2KAT1ZF1&*P&T$%_2dzj;VxI3b1Cc>T_zofjn zT@JK@FT|WSYK!sm2XH~REX(0K*3WW2P$i0y#jQe2lBm~Qjl%StL zl@B{HDp=oySo*jZ6$gE?N3`T5#VzkNIOSk3(b1W!NTOBfzN#t*wy;fFN>^fRRaKj# z>(;gAo)(-e?~Sqcf0#wurcSk`I@GG-Rv~5*k!>n`l`%Ty>Lj@mBMfWC;K$0~u20#J z@14|-MnP$)86ao{h5_NAU1_v5Vv& z%PG#+Sc)x>HM8DyCVY&|fbY!PdP%VYd+{ q_{-;;vYlN4{Nk7FPyeH-KgTC4iv(qjT)PGU0000u0=5GoiBL{Q4GJ0x0000DNk~Le000160000I2m=5B00X~L50N2Se*q;) zL_t(|0qvdJZp0uAL=V>h8_56vZB0qCSr($L)V@@*G!lyOi5bH?z`v6Q1Ms<|;;qE4 z7T{IJLj<^$%NJNsgOcI^UiBH9?Xn)SuN!{GHszMBjm-d^PPV>tJw#Jop0JbGB{bR* zFYKC^CBQ)Wq0%|5p6#UP(rDJVe`tGm_9YL{Yg2?YW0z%Y_rZS8#}?mbt#+pq*R$ov zc9n0>qA0W{yXLbfIzO1Kk)AhWf_Js~oo$!c4q7y882Neh-SRGL1``*y{L)2F?Qdr% zR6D5-UWLKaIoL-&qgQ}VZmCbB&g5jPnai{LZ6jf6W&w1{n1>`!zeo1XJ=t2J29LLe z5__Fo^Mh^YcXnrs5z|Hi-c^xOVuNW92H=;KQu;G?i!YII2W)gGzgz$S002ovPDHLk FV1iXhqm%#u diff --git a/doxygen/form_14.png b/doxygen/form_14.png index 63793917eecf9c30c6665eafec1340749222325d..e843a62b60be9ce67eb2bc19a76370238748a893 100644 GIT binary patch delta 588 zcmV-S0<-FQ_5CPzq?46|= z8-J{+rUC#rOiZfK$(&Rj>Vr(nK(73s0N{qD2$|_-J+U-drms1{5CGt>P3#%sec@tB z`_TGiCF)){v8T#a0Ki9+{vO#!e+2yTaNyd@M6JaYZ==)CGL{r1{*dYS(50t*j>+XV z-f2pv=Xrlh{xkd+=?zTThhn4HQc#VAc`)>P>l0KQp{vIL_JX*#DW zb2D8i*C{C4a-+V$7%&alRhO#zW3a96V_cENw|Jfng>j8sJ|iJcq_i&Ce{~IS0Pt$1 z_kKD)73kDG|K!&~XVc|vFk7U*lHuBuFluy#Wuj? zd$ITm81M(*31+V>Z(!tax?iRc$LHjiEkBV&@&|G9ppBRJY*&Qc;jv}NmK^~2WQ(!D zY?+{aUDp`ent2t;CN*14f9_WIdZ90`(APRnwnB3r$p?T7bBW=|qn)R>y@spWoMMrq z`FtZPRU}UGhmCY0nY5=W%9wfELka*tnB{zy5RMvu>_6VQBriB( zQJJ6ui;JXFp8~+Yn@4XFZ{qdXD$PX&4fpX}z|b91x@b25xNl9%BHb?u09@N|esKZd a%Dw>k-VI&1@Dm{cJYbeqz4B`2b?g?+ z1xla&;<*(OcPA6xtIluYonG~P*Qsv@#72l|T+?pKN%~c3$x@EB=&AwyMsBU$dNPwo z;L&E3%j~2@g4_U~_H5_=G*u2 iuytMF-r=9`Tm1oKO9RDD7@Fq*0000e2G!9Gr-TCmrII^fq{Y7)59eQNOJ=*4+k@lY%brvW};$LID@07i(^OygTe~DWM4fH~KCs delta 350 zcmV-k0ipiV0j&ceiBL{Q4GJ0x0000DNk~Le0000?0000G2m=5B0E-1_m60J@e*qjx zL_t(|0qtE$a>O7EY!lB(3?l8XufZmiY@cL4a$>H*+SddyvPLRbpV zp=JXB4_*HPSR>VJfm{My?2tM2ge1TL?h*oh=K*je=8*{@tRknb@w~)vc$kyOB)h}u z#TjYTHY-%MZqBla?+#313oD7=f5;wi%?MH=5$0VB=XaemFfm(3TV!|Gr+HG_#_3_= z;AktEX$^Uj-C#!%FSdIp6Bn+a07*qoM6N<$f&u7_J^%m! diff --git a/doxygen/form_141.png b/doxygen/form_141.png index ebdf2217bcd6acac747e611385b16ef710c8927a..eca18c0bd840f49c415c0624cb75de8fef730933 100644 GIT binary patch delta 245 zcmVJKwp6tbfWja?TYZRnT^c@G;Sl6%ZToKFWvW9gZoPY_{!mryYH2;68F=W z=-cW>h$AljxStK#&*80R*~dm~OT?Ky{IY2~<&wNE^){Pa0j@}uIMyhwfui0|AZ%#) vJV|=Ht?p~}uZZUPRydZ)=0F zdzvb?Q@q0zYPOaz18{UR{l95KIqcUrTEyen@|C*jmVwf3Z-ezX+O~bNo zOgE^nO(;~ZY3!^@W9LGaS00KC8AFVT?{PfRlGW~vZ0bi4MlAO4RlC4AJQ@J!PpXaQ zPO_|U?iYGEk%or=@NJAs>z@+^#+@tFd^H_;h>0MuOucHZqrGynhq07*qoM6N<$ Ef=dFSm;e9( diff --git a/doxygen/form_142.png b/doxygen/form_142.png index a7f05e3bc2779e7584bc19fc0d67a263ecb02245..bcb2cf11c3821b450c1e8bbac9912e799afe4329 100644 GIT binary patch delta 129 zcmdnRb%{~2Gr-TCmrII^fq{Y7)59eQNb>+O7Y8$t-2Tb`#6-oYa0W+D7srqa#SYxE1w= fXH6{4Kfh$v|HE+gc>Eq6ps5U=u6{1-oD!MsKf delta 1266 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 delta 121 zcmdnYbed7IGr-TCmrII^fq{Y7)59eQNQ2ls9Lzv6XX~9w6BVQVtvp>ELn;{G&W+|` zP~>4=zSOR3NA>^PzZBOhRJ1EPd%R=#a6oq}b4J#3(8yTcm WFm%d_bAJY!#^CAd=d#Wzp$Pz&Zz+iY diff --git a/doxygen/form_146.png b/doxygen/form_146.png index 0245eb2be6462908e5dc62ecfc2e2d7b42c6d167..bcd93217154d75db33391f9be7dd7366727dc7ec 100644 GIT binary patch delta 157 zcmaFO@{UolGr-TCmrII^fq{Y7)59eQNXr2+9|tp#Fom5WK; zGP2&XW!}QL=PNGDzOV4T{q&Lk?hHEyHkY$kZm)mi$zZ*w(3ElC{%QIkdl@`k{an^L HB{Ts5{kk-O delta 541 zcmV+&0^eg(LVPFl+wYl4RQ_dfwT5F@~CbkbU$dz6Pc zU&Xqm6`S75X%~~dtma{5JuDs4f1}^B3AE!At+yT3l6)V7tV2tEJdm9TG{b7uNw#O1 zCA9vH7XMP`J6dnMWebx{K6v#&^~n&bJ3Qh=%~ZA47XMbqO;jC2`hv=)Zd`!-k zs%}D_Cb%5PO+sE1xr9=Jet%8FSM6u*68D_vV@Q!nKiy?&jUgD_W7Vpvp*;wrV6<7- zHer+Bm4t?eOG{`h`}0QFbFPVE_1y;=u^dTf?GpEbmsW4mVD^w59!7U;VgO%bwb!cv z;0o>f1o#pQc1p9}k2YdG?Nq0)I{?7gW1Z diff --git a/doxygen/form_147.png b/doxygen/form_147.png index 5116333bbd5260a21cf8ac3d9e1456618236fec9..a0f136d3aba0560f5bbd9b3f4a3f154154bf89c2 100644 GIT binary patch delta 218 zcmV<0044vt1F8ZciBL{Q4GJ0x0000DNk~Le0000d0000B2m=5B0Lv3(N|7O2e*l?D zL_t(|0qvbx4#OY}M8_*j7VdxB4vCa>k=mdBA}nF>8xKAK0Q@`BGfM!#*KozKUI5@D zo@oWfooyH1-s*U@o`8$wO3aK&uL6_#%IvTQHg&RQ6`cyrg5WNQXwXHLvu;G^3+u)r zvn|!59tLDJO#RECP+!Uv+u(%m#xM5=NgdeEmb)w?T$?UJ+gZ}0PC{? U_2(Hy_5c6?07*qoM6N<$f*T=Oi2wiq delta 365 zcmV-z0h0cz0=xquiBL{Q4GJ0x0000DNk~Le0000`0000I2m=5B0Q+C5_>m!6e*r5= zL_t(|0qvd1j)X7_M9bMX;Q#-2>^KRa5eK?8hdCg*6OehSsy253_zy(@@O9a>b3vEp z0N`zz5_J<6v5s~30Pwm>o}1w`O<@NBysxFh4XI6)TeqD}RSwH%DwiwCQ?Ds;{FY7~ z`(-J??CJ71F)=?RP%Qjx^@ZxGe`D*Ottj;TbmyaKc2a%fF)^(!R+r^Q-y6UpD%t)$ z!rUH*$;;8BNp;*5l2|^7r-opYnXO)21Hi9hzwBBG9OVH6r|&7SXSf@*6yVzcir+~L zEJJ2((`o4W4Pp+6o3+MhJ|oS_5R(G&_|Wv(`$=ys!ve#y9;PV$r5H^TLsm!880a}Z ze8o7&0RUc92d;t6D=hl#TY>8z%lu+k7yx`;AxUcAQf>kP;E(DDh|LAjOau3G00000 LNkvXXu0mjf87!du diff --git a/doxygen/form_148.png b/doxygen/form_148.png index 302112f923561066e9962b036e1b0744fd4d3f51..0a996771dd5f20480059b4be3b552f52b622007f 100644 GIT binary patch delta 401 zcmV;C0dD@O0^kE7iBL{Q4GJ0x0000DNk~Le000190000G2m=5B0H|I#K#?I@e*sTP zL_t(|0qvdJlC2;NL>B=fxK;lDZzm$Sz0El_m#3++Xv?%o8=CkI@F(Chzzwfw8sMMM z7jRhl5_cNlJ4gQB9a6Q_+x73;j za6{eJww0uZt+&mc==o?@H;0_oEx4(*klVG(%Q{s7zv$lZ#@G>LU+EO{Kq!GY1|&xt z@+M#0q$rZ6$M&yjs^z50%ToPmw*}T5|R{x!QpVm=1j*DtAUyZhhSs6lPuxJY2vM%z|sq*Q! vs`;m+I$j;`ry5=4^?8i@5d(Y$I@;|6Mx_UJgy8uR00000NkvXXu0mjf3h2EP delta 217 zcmV;~04D$71E~TbiBL{Q4GJ0x0000DNk~Le0000h0000C2m=5B0L&`1e32nqe*lHqFwAmiYPQ0G2(OUuDc#U<+J; zK~#7F?VU|_!ypWV#|VtUcDVm-tC9Fg+N{zpy5U6*7U5$w=w%H6|34xC{4&y-<^VZM zxofEv0KP>$Pkrup*#O`*LcR7_PF;~aa+^X*0Gh@-9*)KW=I;TlPri9#(+3eYs!sNv zbk#0o%E|Sjz<&Dc+I8^RbYCbvf5j7Yy>OE_fLh9ML?pBgu^%riAsNL;w&P~<(Nq2V z@l=okCyv6dI^-E};R1_NDpzk8Ep(f?QNIDNbzgc;YM2O!*SPFcD)$ba-+|dTN2yCK zXRS1D-o*WQJ=00000000G2m=5B0BPBB?2#c`eD9?QS*SO7ErX3)_6Q%lsUyw;r`Y z^K7zGn{{e~=9$|SPwRiMjGjszH)y3$y4g`Sesf;xzy@uy6q1sZZe>3}K=2xdtOEe< zvE)q5?CN&8D9Phct~(Lk4FLF2Tz3`n>Hh$LZ%6dQ`kR0I3l*gXE@`7uvH$=807*qo IM6N<$f`F%@YXATM diff --git a/doxygen/form_15.png b/doxygen/form_15.png index 5fe67492f25477a7692136a84193b412359a97a7..0299f3708e71eca0b0c411ff39e1de1e0da335f9 100644 GIT binary patch delta 89 zcmV-f0H*)f0oMVLg;D_uz%U2{GrLeN)&BptW2{p53n7P>ya53IC)dgMV)?9UMS*Uh v%7#frw5*J?Ceb1#sKJ@zP7L-9Z{gD(Me6|+{#}Rg00000NkvXXu0mjfP}?ZE delta 89 zcmV-f0H*)f0oMVLg;L86fG`ZjoDXRbwB3JO4kZXK%U z4F){U#@SmZr|$iqTgn&x(vF-|_+dT#>I0tQc4KbLh*2~7a;2Qf_m delta 165 zcmcb|_?=O)Gr-TCmrII^fq{Y7)59eQNJ{}R4+k@l^p=jTny46Eo#yG{7*fIbcCI7e zVFezR8=w5&zgAEo(${b2`iKKFWRLJO#91w6`S8GbrL;g>&rvOnDGnQpbM)-X z&t_$8t@@R$Ym}ZHe&j^_@n`GmQWdZ4$$B)ozopr0DlxdFaQ7m diff --git a/doxygen/form_151.png b/doxygen/form_151.png index 96a97dc25cf30536055bd9a83008536c375849c9..c1d18c02cd67283a2d8399b10ecfe6037f6a1265 100644 GIT binary patch delta 399 zcmV;A0dW4-1K$H7iBL{Q4GJ0x0000DNk~Le0000~0000G2m=5B0Ka^wiIE{&e@;n6 zK~#7F?VZhXgD?z)KmQ3s0Kfm+c4Zs_X%B6Vo$+Wh#&jal>rkj=CcV;~e=V4paw9K6P=KZvC#g}_e&VrvBjc`OhSFmlUph>x zRIaID{$zSg!}Cs>7>PVdnJ4lF@D2s@UdS~r)=6nE(p&kX)EDU%nU6R&kM&O4idZC9 zPP?4F{N5-(>MMFxYR!vuO`-iX%&FxdP2*mJNXuTLbTtVby~k7S+N?eaWp%cl>=D-I zJOnF4Qs836EXlH22*qMf(L|{E>?5UayA;uXg6Xbj-EX|+$5Um1U%@W_rQ5il!>>#{ t8o;kHpHp9M1OCV4fU9{^0PZ+WzW{cU2nl}Ebt?b>002ovPDHLkV1iH_v$y~N delta 390 zcmV;10eSx41J(l}iBL{Q4GJ0x0000DNk~Le0000|0000G2m=5B0J37(&XFNoe?>_| zK~#7F?VZh*!ypKSuRk$~vGM)iwp_rNPP>`Y*~}uRcw)hi3)rp!;J;V~fbT7&>vfIX zf9A&e2$Hka8Gd^<3uz_qhlG_86sp+TWCehqR?eMS0pQJI7mhd|thCE=xT8`ewt>_r zUm3qJb|CfZ=`&>QgqQ>7L{S?BG&~)*Tq{LiaY@DYPl5Bu3H1(_K9*PB%ahLy>afDodSSwY>w{Z kj|~8RY0Cut(cgw~o@&eo14{Xav;Y7A07*qoM6N<$g8tpHq5uE@ diff --git a/doxygen/form_152.png b/doxygen/form_152.png index 2a7caa0a2b56f000354785f394c0e68902a3d55c..f51045c47eb1c69ec774479ffff0c9e7d33f0540 100644 GIT binary patch delta 126 zcmX@je4bIUGr-TCmrII^fq{Y7)59eQNOJ=*7Y8$t4Al$SI8iYwgu%|!#WAFU@$KA$ zoCgeenAc}Y-A*|1@3xy_ov2aMgOuV7jt1`Yx35T-O10dWS+v=0m*KhFlh1p%M@Mep b`;g42wwz(pa+!oCppguou6{1-oD!M<6#Xh| delta 380 zcmV-?0fYX}0m}m+iBL{Q4GJ0x0000DNk~Le0000-0000G2m=5B0CVM%Vv!+Qe*rp4 zL_t(|0qtE;w(KAXiztq@w%z}3UxdDvx`O-T!DERK3B&vYz+c<@=4Yt@@Yx+ewAG(E zb-%xjh8*XIXWJUe1t8e!drnI)Pa41{D34k|DgdvozUM?9F1=4*ZKfOmqOHE?1fHbn ztG%70Lc;S&RiaOhBFS-@lR6jx0000ENE!aLHYl`-D(7tXf~7NVPDom&0)9{)fbvq0Qe68_$LqmxFG_- z4-f$02KRgj0K9?Oc;iixvvC0U5`MbctNhXE0Srxlp)rzE6|w*rnoV>O0Prc|dinF( z@w#oX2>|#3GEp3`5dbdjBu%$De*kzwq(>)O8*hrV$0;xs3gVeL#sXf6HszWy$K< zX|t|<`#%l}V@e?sp|)gtS(;am4iaT|RhQ^RWC{GKV-t;A>i9`$hYMlrO~=aZheU2` z-6j$9gmBH?<1-pMjEsKKDiP(BI0U+dp-Bv?nu&dy@=Vx3*t=a~9s&(%db&jVd)|GZ zbNfC@ERh6EjvyPQSfJ~5f3cxZqYLzmHAXpoXA4XY`kgK4Z-y0^OE!)H@6~qArzjdMf{7)tk^gvWEQS4 zA;o2__sjRH<}{uz9*Ud_8>8l2R3F4E1325|1&Bj6?S+z-Twfyq_!9HM zG(KD3G__~cdH!hduO8{=hyQsL0RE0oq*S^;r6vzgc9iBL{Q4GJ0x0000DNk~Le0000m0000G2m=5B0B3LvgOMRxe*n)( zL_t(|0qvbplEWYjLm!wzLTI@EZ41WGrrYW6*Zwgh13|K7$N>QU0|DSS1hgE3DvRG!X1gleV47e|FM>U*Wpe~axd?t(YJRkjC6GEQPJuQp zN0G7J`lea3nJW@C7e<|Mc^TzQqH@ WCj;|4swY_h0000G7P`u~4>3PlB5?e5vLW8ypzWON%SBw1NiuK@oS_yq9pFm%;} zbq?SLRu*;YJ-`FJwE!O?_4TJ7Q}Y4pnPhD+=6ZXTSM%sJ@g2u%%%*-&FbM!|FkUa4 zK9&VN3mE~xC&*{+m&gy}EqfI$e|}Cy0BenPdOv=D%jLuCT>&0YziRTg_XKbv@>tH) zmf7{If2ZSkh{Nv@$o|+uAd%a3HhnsFiQ}=Wb?=F^1Rg`s5Rj*Q()K^4q72~(f!Ly# zKVh^siwE$EMy&iWZ#x0Bs0nCN%raC-uzr|jEGCq!brPf)QQT%`LmsEz7x1Ij zQ!(DG22UfF3Z<~veB`2l^GOJd!IUL{Gg`Yi_wcIn-dMpJUOE2eR^F||lKhOK!Ym&G zT;mJB0$d`ls1uys3&RLiL ztll+c>@vMHpSm;y{4ta+_sXaPkFuMYFl^m?PD*+B!-Is z^s*X4ymfSmYqVYAsI(z#32=j@{2!web953d5y7-|ZnbdT3o227e`CstTRBZuOK)fjQXJpybw?^a^nf$tIZmhXwN;$gkaNktIx*O&iufuWkokGm!S$FkGM<=f7OLG8tK|{dI z^IXld4{HK@&pj-^f7&fBAz0s13qf_0PnRK3N)qv=wx0+%F-w*4n*vL5|DwR3Lm*w< z+R8=0x!q^;nfDiCOKvcW=Ty>N4W51p{1fN{7K%vtdoyV%1o6SS0DlWp8}M9#YT$B+ufw{rve z4k&Oqb8BhLtonc3Z?W67xs6l$#WNmqFnoADd&{g-|>pI`6OfP<7M_;K&u!$UHx3vIVCg!0N*t< A=Kufz diff --git a/doxygen/form_155.png b/doxygen/form_155.png index a16becf0c64d15f3dc90f5aeca802413acab241c..348356a8fc1ef8a45c8919d5a72783015650b409 100644 GIT binary patch delta 1062 zcmV+>1ljx90q_VRiBL{Q4GJ0x0000DNk~Le0001p0000h2m=5B0F>-7Adw+je*@o1 zL_t(|0qvdJa^oNnL=P|w=w|)@-|nD`b;Wj4*=+5DidHI?1WnU3{R;5kA$ov+kG=!= z_o(m?%>jH;k>mjWHsT0yfp1{2zoU_eze1$%0j>}U4~HA^?%qPq1Oxaf3@yL~O+-wq zIK-k0upimvlBTsgzy)De&}B≥?wWh?q`d=4lmU1RRE{eOFUT+Pr9O`?%jFzyD&VP{am^H_H81AZSzs49EM>Vf9KN+J0f;| zkEdDoisUlSLgbSQJFa4KPLfAe&Dn0#b$08X$jJ!OG|L0sj>cL+Sw&ls^$-D$I1up< z@@h>DQu}C6M11Va`D_onnTj_eHs2(U&1RKc&fSU-;06aGsn@5>_EmSUsB1?tv(Ah6 zDfeMJkm>o%F{fGG;%A-8e=wqT?^PO_?LlIzPMv)W97b7bS#2^&CB4HE>#@Xz%`(R3 zMTe^qvCX*AX&Zbc0{~7)&3v79U5sM=+0M!NP_^xNPtrmLXJ0>vU+L2T7Z{PJMXFv6 zl}ayGYXiQes|XM98A4X`if@v{W_7hmGhgdVj~Ycysl1fp7rHdSe}|B@H7x&kwFF&D zClpZuzK=YP<8Iv6Z@Ol@(`o6LtobNjKj?`7ui%^$4R)WdMexPfs}Sj85le^?cd;bJ zwQvEx0g-7^fEv0vu6Fb#mP~6Esr85D#V=?T{8WMfHTdy3pEqKIoz19CwbIBYs5I>x zf4MBHzoJHcAStD~f5_u;x{{=W@gJ?gTuqVU^}$ykFPAmKICsk;ac;a1ov+Jy>a6CO zV4_SGd08*J^xbN#-Ej+3`p%S$cyEvLE7P5bq+F80_l+e@jfm@#h5Qm|mS`zH!#yog zIMu<@-Ho7PZ)h0&l0E=uR6`G-f+F>*h!gXaZkA8oLM4~qf0m-u(j1+*7d%cxbQp%+ zcy15ajj$tPQx{(y=9nJk$3_I;9gakN>AKC@ezh{qp2*V(TS?7lrrXf~yv5~cy!z%% zJ?x2yk9|3xmBxB9Q*2uD1AK%Fk!YD~l?PCPYezA&&MWpQ_hG39*EGBG%!$>|0Pk?4 zNR-iPp|nGQd>fR&SVN181oigG$i0g#Z8m07*qoM6N<$g1LtV-~a#s delta 136 zcmeysag$N8Gr-TCmrII^fq{Y7)59eQNb>g24g_Z$;qN_DH4jhCy_RHwQD2oIX=MZ=zy!vY)4mV@L(#+qr>! z4F(*}+{r#CdA{#oTWWa5-v2_%65jQXxfnitzjMcZeMVP~p_cZ9(=o0-d>>Dq4Q5Yd se)LzVdQR`Yg4PqOgnzxbp}svYW(A}8k2f~ofi^IBy85}Sb4q9e0BRRBf&c&j delta 154 zcmcc5_=ZujGr-TCmrII^fq{Y7)59eQNDBZl9|tp#6#SU8W1?boLA0lfV@L(#+qr>! zM-@0&+*^N{Xno(G`!d@nqngd=H}me4eufXBehv;kjU9{=_cVCOR$bX4AuFfmePR#a zL)Y&f8;kVo-WqAXI{Duxf8&x1WwT?86&x1q;(oAHc-Ab&0_KXUKS1jkJYD@<);T3K F0RZd6H{t*Q diff --git a/doxygen/form_157.png b/doxygen/form_157.png index 9f5e107c2cd3565f44319a773cd3129bb33cecdb..0185d289ed7b3d658368473c5023eb647cfc648d 100644 GIT binary patch delta 823 zcmV-71IYZe0)hu2iBL{Q4GJ0x0000DNk~Le0002Q0000G2m=5B0DjjXV38qOe**DI zL_t(|0qtFBkL)N6EY1Kq`2YX*RRPl>$6L)vBdu22sO?VEV7tl(Ujg8M0f7Iyr0f9T zUlWs;{^Dx@fFH?n^zRIWZ4FW$ZY@_xdF%p!H*xE>NJXH~2mpLXLba2R@m&o7{DXJ^ zxXK9vdy!%w7_6M$RseX&8A7U3f7%tMxB%cO=8RIOZXnFO1^^HFLi-M4BM4Ka?qn7r z1AwcfPdJNQ?^1XC0B{xeG3NJYY+?0bE`z&0dmM?mhznzM$%dfB95zJ8A`^-6MQ@j^>f9y1NSsFv>!kut5JyG|i2e82!!~gOFE8OK%h z(KY~yyLPVAv6dT%N+OA*Ww5iM9cp>LF+4lv);i~kry3wwf&?)oBDZ(`-HTkV84nM{ zMAhtyyk@dwee64( zgxe4ZtQv+j__~9z^Mf8xG_Xz3f#`Ai_Ba5@mpcpqej+a>y06(|>&6KL z06fK9&H%u-OI$(sMa9Z}iVX?r1ZRj|M|9{|ALPuu`}K`M9vdKR;x$;H$o z{wqq##c8t=Jr`>-keJ~Kv_tz#u13{LtP_HIaWAyb0*wVBiBL{Q4GJ0x0000DNk~Le0001n0000G2m=5B0OXkW{gEMBe*yeS zL_t(|0qvdJlH(u@L>my|Vq^aQZ?|Q9VVrDLb~lepSqT$BI!GB6MiW_bWbaT@UAOV=3c!xTV-H7>* zF(d-O4|`%r=N|C@rl-F6x9wwWe>c&EA#))A3@Uxi9$qs~YIac>EmRRZZGIak$ylCI z``Ggqqf0!YPmCI&_lC5=CDjl2qZ25>uxK6)ubv|rX(??M@hf?8-u+I++)~|5g0_;Ig%3Cef z2{GKF>bK;i2WSs|$@FChf0%sak;@LZ+QT?@+pMF8FBsK(9-umkUJ~84&)uVk-0OQW zS~se&`l1?`S4ZP?U<5lonw5o3$tNp39JB8tFT3DM^VA4j^~7lY@!qIc2LZr`cKbcc zw?x)A)Z16ccegxlxQeZP{1yd(_x8ZJ#P!=h08G!m^aYIcg@0}47UCB>a19l%7!eHs O0000N0Kan9?e*mdT zL_t(|0qtGudBh+Llb?_f%KqC{G`Vp6=m`F7p0XsE0090e3k86!+);v8Bi!2yR7mI4 zA@I*(WaJM}o7L5Q^56iv8^t<8 diff --git a/doxygen/form_159.png b/doxygen/form_159.png index 60dc922ee168228c4f777f9992c6171dbe9378ad..3ecfb782c38b68acb28cbf24b17ec3f12412704d 100644 GIT binary patch delta 122 zcmcc2a+*=GGr-TCmrII^fq{Y7)59eQNQ2ls9Lzv6XX~9w6BVNZ7_2;9978G?-_DKZ zVo>B^UcS_>Ye)6}+rJdoDpa&9I(xih_;5gXD|1Z8)eFnwx7BUi-*QvsSn3nryBis# XS1@$SigSMk8pq)2>gTe~DWM4fuq-L7 delta 517 zcmV+g0{Z>S0n-E_iBL{Q4GJ0x0000DNk~Le0000~0000M2m=5B0BI#ll#wA?e*wZt zL_t(|0qvd9j^iKzujw~Ep)R|Mw)#@u@VlhZH!G{0pNd10Dwij2Y^MM zq4$#djjQ2^B6~*~B=eQCNQyr}Ekuhk2Ka-vFZ=F%0}7W8o61w<$A%AWkw&RN+MsYF z28lbDNPmFj=$yV20sMo))NI?D~)N; zMYJU=h%a=bb!#+g)C)348g=7Tug^`>k*IznpWc=yqjrg~o`SW1FP4oZb~283UGzTh zC{UHr&xmtt$%cl}lRvZmXP>dDeCg`!Jy52zkN~&!gt??m$)YWzemWBKwW1(Q$Up$_ zEv{LApF^vsH15u6EU5TIwHqw}xRJmAWB}k>;y+^qfM1b6NYxQS-$RRS00000NkvXX Hu0mjf)D7^a diff --git a/doxygen/form_16.png b/doxygen/form_16.png index f497b5ea507bd4d8e11a0dad30b32c84e7409969..96dc165d98d1216c9aa225508c0c11bea72ee5b0 100644 GIT binary patch delta 198 zcmV;%06G7)29^RLiBL{Q4GJ0x0000DNk~Le0000Y0000C2m=5B05CtFwvi!Pe*lF^ zL_t(|0qvau4gw(%0|%DnfD`!tZ#`f&QPlW>CX2d0|r1J_tpU#$U8B_Q2*udlk#>E$pCNA|7Nw~7ZH;HzQE9Wj3o>JXE{)?1C&uZdC%n7r3%MkgTsOSIkz5>T#uwaxzgXep0BD|j20#xs#u(42Cfjp>{d^wN0pN^EvI`-E20-)NGXQ!pA%t*7RnPq>hi%)c z=f}l{Yr}Nq-bW089wd~ie+1~^M~1v7!20uGY9wn@%-1D)!?4;fQ76Lw?$@kcH1_r( z<0$mH)}4F1)<`zarhv1$r2sm(V`y|lk2?EToYS>wTsa14F`PcO%qO6FYOar%-FjJq zlDe^M82!l&(1Fn?Z_$~QvihSD&MqE>(!-cKeI%a1V)~B9|YgJIxtjkss+XSJVMe*ttL3;>VONo#qwe$BG9 zvF*ONII9D|J5;J=EgnWU^&4Y#f1L+-#~rOV9a}q2UT9OwP=}|%4@7_iE3x` zOL?0NnI)v2NFjvc<@akEu4+F^7rEy=7kpWLTzmSDyh$S{Ia8!mRYQ9b291(rJ|Ds= z%@v3G!N$Fu%K4lL`7=_CZ7l1CMsP*LNxI0r;N|X>x!q((4TC)nF@WF3X0E#c;0kpg z0Ult*q_)_vHbTAa#0$3XuC{#=IyETC=Hfz|3+41q0{FYobF~sc2Rbi$fIkL%7y#fK Z;}_zp3^Q-Pr9=P#002ovPDHLkV1hDr@q_>X delta 327 zcmV-N0l5C=1eXILiBL{Q4GJ0x0000DNk~Le0000-0000G2m=5B0CVM%Vv!+Re+EfJ zK~#7F?VUk#!ypVrAHfb7NV)%QDsz?*m6k}itGTZVypmn#j16~dAzNp?GXE`;d>F^Icu1ZiZ;~FpTUkLf6!>~wQ>|RFc(Kb1EYzhG+(W|UAHXj)9d+@S|EX`5 ZeFH=Y1x-al%}oFR002ovPDHLkV1mZ=kGlW> diff --git a/doxygen/form_161.png b/doxygen/form_161.png index 00c010126e7ece115c42211323cf08af34577332..4a94733d77dc56abdceed2f8a721bd2fbefb5fa3 100644 GIT binary patch delta 368 zcmV-$0gwKx1Hc0ziBL{Q4GJ0x0000DNk~Le0000`0000I2m=5B0Q+C5_>m!7e=kWy zK~#7F?VZbx!ypVrk9h@>H2wd-9fN^pR7IM!t63o3LJ~M!Kh!nAe~_5$>+|6NZfgKpd!%_7djj0o^btCFH|IXs!c5o8$}20Uk?Y%-M*6+Hd>p4~ zP3{=h>pmrx2=K1e6LVk3RkoLpe@Bbi*B9|&)@AIJ?TV+wJa?(PQhnID4qU5C4dHhR z%YNBR@ff)%TF+A{4Jc}kr)bv*K98>@)~EsAr15IhMrb}9!Oj_w3e;=%B@y=ytnm(F z(wx-Rcvv^I{B>eUEW7v4S$-<1SJdSsT0ZG_Sl5d^c!ec}6}!w(_AATcMq1Z3l=Oxk z?W1E+mjJibfU}{?OqN_$7T{W;G|qhf(AGSjx0;Pp8v}f!kN#8u{-7T?vjw<8ANM=} O0000@<^TV-GY%Kq(yrCZLtj`q1Vh|&=1B4k@ZYrp{7#GS%job& zN>@%f1H99E95QcLS^z%N)_99Bl7k|e;n<7Xj{sjtYwE~?*~CPVb+7`DSwZ>K^0oNe zy@x%!m&>-3-eZoVI!SdK?_F6~f2HVsr457~;H`YM_fp>;-3YJK)Yh4sxtlkmHBO^y zbc1(xnuZn%gW%68t>G;GJGwqn9$s}-Qg=s~KL63B0W`W!3znZnr$|Y!(e~y5c)lu5 zABFQJkAt{tr_ucQLob&4UFkwQ^{ECF@KR{k&RngboOP1{@Ik>opC4g8F^{7AClPDf tZk{Z_chrtCakL5WGlc>9gTDY{yaKP(1xR%&qdNcq002ovPDHLkV1jeypbG#1 diff --git a/doxygen/form_162.png b/doxygen/form_162.png index d398e9edea283e129e73279a77d49786e96972b4..657d987d6ea9b3915e384e9b8861b43e09e6f231 100644 GIT binary patch delta 216 zcmV;}04M+20jUBZiBL{Q4GJ0x0000DNk~Le0000h0000C2m=5B0L&`1e32nrf0#)` zK~#7F?VU@m#2^d=3qy>_hur_RV~AfC(I~Te%N7kX!tD|#0QfgsrT{#>EMrkJXk1lo ztCx^0bag7W=MzmG&O4w)Yzkdf#%vsQr5t}x^H&1bF~@bGji$*UB$=@-4<7$2`$`;{v>RQ}#drc(pF|;s^NU_(DDfxdPv- Sts0L20000(EInFBKuS1l=HeRzFYU~cfK l@A^~If}bV5sMTK7C!Qk4X#FK6FA-=sgQu&X%Q~loCIBibFIfNp diff --git a/doxygen/form_163.png b/doxygen/form_163.png index e2f88a07239bd7a0493c17073c367f15ed67f6e5..11822c866930d33ae92f1347f14a0e1edb1a43ee 100644 GIT binary patch delta 1115 zcmV-h1f=`o0i+2biBL{Q4GJ0x0000DNk~Le000340000Y2m=5B0Bnd%-jN|%e*_ar zL_t(|0qvdFlB_TcM2{n32><`LS8@QuFroJ8Zm}*jwF|Z+w_2@NfIkEHfw|s67c9VS zZCt>6fcsjU9TDKZ=B=OT0Pbr-f!W<01G&CmMHT^WYH>C&0o>P&Kmc$rb0fg5%{XO$ z#baOfrEwPEmzmuZ&F1TTxWtZue_5xP*0`*FdDq7$fi&UL634Ijwf@F1@BB7Qz5b--ZKFu>ulV}%XiWMwy7K85uX z)Q0ExIm=-OA%sKPYfAPqvLqx+zc&~#u3N~0#svn#4SQkF$eKxf83{Pq%vgR zZBltXG%0h9flys9UY3rvEp0s^_4XS^CbqhQfB)D;9xuWnN|Ha@|(A&q&88K zKU{Y9f(O9<^m5@X?XbGfs^5)mqq(&Kv|!-lBYG`EgMl4GE@5SH83TzWp*As55tOxvf2FUbh!umblq2VP zI$1GD@5a$627AX=42p-0trZ9xt!XhR0+N-<^<|arHOB1EvoIepm_+YZV_X%=iorr0 zLw2uejH5KJZ6M#!jIVj{bn=M7z|eP!Fz7F6<=kf)9&rdiyIqIG+rw3>^O~m105`bP1 zFBlBdENpqSVg~Tu_8XL7;>@mHlxiygNwEAh1v5q!tbSdVNq0_T6owgjcZET^h#BVj zVoaY;raQ;^;jDa+H`B5#0#jDraUIXXtHAUsgJ!ZhKb5?ze{lwIHX|`~aJTZZjr2M! z#FhSoH;iB`HWvFmk8r;{=Qfc+UXqF%i40pMiXO}Z9=L3iuU zZ!z%UQ7KlvRkE6)h7@OW-XqzC?uda^4ruwRs0r!D{pPJi0$kboP`BgkKv_5BVD3Q3h{FK?8{wHxFCBtnY;n} zY0r)e3gSnVA7U0HK z)E3|_CfcJ@&bqYji9wLLqH4NH;tes-DY4jl^FT0gF++!sX-QM8zjG=A{M3xpKG^MF h8)5+XGk{-f{{VWU8hgyRrjq~w002ovPDHLkV1nxX7JmQ$ delta 145 zcmZ3&`G`@mGr-TCmrII^fq{Y7)59eQNb>_R4+k@l?3yEfZK7gSIzynRi(^Oyp7#iYJP0Ken2^!o+dXlroBWz>KwB6*UHx3vIVCg!02p&MPyhe` diff --git a/doxygen/form_164.png b/doxygen/form_164.png index 09eed5b79e8055b27287425b223a5ae48aea1a0e..ed8e24b37caffbee7d936cb103c4f4f2cfab4928 100644 GIT binary patch delta 358 zcmV-s0h#`^1GWPpiBL{Q4GJ0x0000DNk~Le000120000G2m=5B08~p8ijg5(eMiPEt zRJm=b-26_+tpj)QI+&^BN?m)MsVfzw$1F`hZq$J0F{Kv5g1QcfK}o;Xp)S(8jOjrK zO35-}QIrSYLYCvKOM8D$`g+)G&9+D&twwFvced;t*Z?839w5Do;F_F(ifkbc#&jsT@J-wH~VJ|Z|<#k%qs-Cu$TiW1s zs#Fsy$2!-f=|fw0@b+8Uz?l-NLCrHesZ{G7E6)mrVmpA#V>o+x)j3J`Ce8Y1Lt8g# z>&O5&KOLu1_)T?jeMU4u3RS5@Z0H8g0Px?tIRLlE1Hi*mCII;I zu#K_j!{k;H>bUVLfbl4vPbAj) ztbFhV51FZu{{XOXNmZnvE1Vjw54;k@2HrcLI4#_Xa73>imDMguq@Gq&f8!H5agh`c zzctN2e2(E7{W2uI;jw(1ZF$R$0C4kSklI{JVb$YwKQIPFm8ir-2IY{x8HlH}h^?p*b zQwf~@A#rc>-j~=cb;ENdc*FS{H3CSVi RdIkUh002ovPDHLkV1k4W;r0Lk delta 292 zcmV+<0o(qm1oQ$SiBL{Q4GJ0x0000DNk~Le0000p0000G2m=5B0E|bsfRQ0ue*oi2 zL_t(|0qvdLcElhEgg<|hESl8!f7^n%CTV-xT=kB#sKFUva328R|2zXc@EqoGi=--Y z6e$JZi|1N(T@MN9&n+lWA~f}%IJ}xQvJGgrqS#f_H9aq$<+2*O>{h5_NAU1_v5Vv& z%PG#+Sc)x>HM8DyCVY&|fbY!PdP%VYd+{ q_{-;;vYlN4{Nk7FPyeH-KgTC4iv(qjT)PGU0000ERLtq`85Zhl3eNHkWT-Gf^=*%+b@uF{Fa=?cLj) z42B#o7cU-RpOoo~^v^EdtSKBmbA>|#x}Xa9X7 e@_X-#oAUMn4F3hr7nuPKW$<+Mb6Mw<&;$S=9nx-?_n-Vgh_`GOK9w~l=!C|0q|;?! z8te&Uw*!47OKkEjvTLv>3^~HLae);vIkA@_(HwF*PIP^gIg+#8JGL=dH70T36Jsqx zJ4i1vJkBxt0I`002ovPDHLkV1gyPci#X2 delta 244 zcmVuI$iBL{Q4GJ0x0000DNk~Le0000l0000G2m=5B0I}89=8+*=f3!(N zK~#7F?VV8$gCGn*Ux5~MqW8b;itw?Sjm-lzd6DX?X{!eSxR0s;{7VXJ2AHB|aU9n_ z-ku87;n@Z-ry3NmX;BVO046l0ti4q10Jvbwi0*qY-S=68`%41&%HfZ@@0GC<_tTf? z+v-M$BQE{8pAFg1;jL!b$3|?#N|`#jC z$X*iwxE|ss(Aoj6Mr3x*0bCEkPruV`yoGrLxEyv48vi3yGyl7B2H+F$-j(f>(fe># zOML_2!_au5;}VB5w*ap&Zhn+%f0f~@0elBONYt{XpzJ-}%r5qjrCPe>yr$DQuM7nE zPq=kNg4R3hO%B5sV$sDW-_~E6Z?)EuF}=%!u&m3vVAh=P7~M^PBlNLt-bTCqXu_^4 zd(tw1XQ(PJvA1@gk4+yNDfzyB3E)j6O|)!&5>3|*(TAZu0oWmqu@85~Bt@4aniQ_i`&4m;LdeXVX~_~S#RY4=X! z-I9KLwDT@{VT|$O^l!B#&9vB3X6IU7=ySBS-^zKDjkU%fvAua!LCaClX_fcHUA@n# z06bx*<#k7te<>NCy+6{xf9gf%XzI(`2b{%}mI1s4yRoJvS8i>NIxfad_yd+SFC}n| zG_1oMB*+~fV>~&MjifMiqV*tbQzOxJbw>4HWOT2LTfEwxP{(VX%Cbjku-4t|iM04| zBR%pO*ED=y7U&m>G?s!aDZXm!;#Cm}v1riR;z^%R`g-?u;OQCyf0J9AAM@Nyxxa2q zbP~Q0)ScIE;;mDlXQ#N?hO@&!do;_odL`m16#?FaMBO?ajnmLYs{OamOMp*877_tm zj!h&0ei(iTqNTcO+M_FDhuIbx+o*PBY^A)N%ERLtq^fC!Iy-0opOIf7#xWr@n+xN>WJ4lKQZ3w%JSx*@-J9$)lnX`%R z*AN$1+TtpUhqo1G`jR-~q0Z!u4Lxa97-&Yce)}Qsa?X>&k5lbZvYf_ge~&v4Yxtx~ z%f7 z3bqicwv^ReAG{6?7Z<4_MlL3yJAflXwr&A9VYDro+E;Ri1T delta 183 zcmdna($1vV8Q|y6%O%Cdz`(%k>ERLtq-B7ZpMx1l9+((Ed7@%eJwutNi(^Oy{I)$|Sl_-~}%q&@Bv}u6{1-oD!MyZuI^=Uotc&*_jLDZ2O-b-_!skq}1yq6C;#v7VaB0kyVK3PE?8aai zPMQJ~JiTipB%P>tbF21Lw+lava=|cND9uDFen`?rDmu~VwnukztiS6lPlK!hZ2HZT zIEcY{@wpaJ-q?5P6Vu1ZRG9%0000> delta 505 zcmV=a)iBL{Q4GJ0x0000DNk~Le0001d0000G2m=5B0OR)St&t&Ge*v~h zL_t(|0qtE$cC0WAEDvpi4e0*2jRsE;{_^)GFE4T%kW{6T>@@)VWs3mtO^a@9bCBm+ zc}?d&-!Fgrp0-r@6T2mZdSoYy>=IDw2LK)xJOKPMbsZ?K=+8zXKn8%P`AhO-lKr_! z>>&ZdR+rC-YKnA`mXKG5bQ##*`hEvra=n5FJ*lqMC_?o`IGyaT$0-yZcAxc7a&{g3h>Zev67Tbuf*M*P#H`-~z!6sezv$;$viefS2Z>tF91yNTXceo$KJoUA z;yu6((x3;eV$qJQA#2V6N6Z$lf0e{J%)q`)>43}S3UG!pkFqq&(h$wmSa)uQ@Mzg+ z!A?uwSGL7Kd4vM^gmk{jY@@kwfRvv0(S+Ab%DnWhJDJYGCDFm#9DT@FosLN~Z<&Hm zwLw9BXP#7tUdVLHCIj#Z$$bGFVO>t8ld)BQCNn51Q%#W8b$!{Vj$YUGe`S{xpO#rj zt?xr7_S~Ae8fC~}jPc_1T34?o_0lk1F0(oBtpCUpf@4 zez==Wr!?=hUo7TkP;H{k(j$vUm`mSF2$PrPWQK#X%LECc&v%UF+yXd33Tg}O95tdC z=Hkki0)e+ZC}G6(T64f@%L9Xz|Zgxv~&!HqpIfe00000NkvXXu0mjf&BX)1 delta 219 zcmV<103`qO1gioeiBL{Q4GJ0x0000DNk~Le0000c0000E2m=5B0CXIl$B`jge*l_E zL_t(|0qva$4ul{K0H;*I1N8sD-73XR44d@>O(vEwg%&>m@R}F};15$+Gr$1NG4_1@ zd6sOp+r3l(M$D_-Rr}&d00W9?dbGSs^6cz$@z86_>Rq$;gJsJE@SrZYb_iP0y=kHz z*I3*4Qqyum_BL)v9@jG2q}f!9F+5M_Ja#<5gQ8M`KhF7`O5CP!T!i}S(@gv%T>QI}rCoF9TfOqCH09;#A{^1A# zUu*&Ze$gHPaAkSyt1l>|)9Q5ke@U>p8UQ{U)A7s@Scc!Df3E}Ac{>vC^dT+IngPJ~ zCJO-ESzu`o(|7Gs5skh?Pis^VW!r*IAUM)G(s3~BWjWE;wuUK8Kf(hzkI+I$8r>F( zCc6cD(dFDq^5_^wzl_RvfBJK408XRD5ESTPXo|HJd+E2cdd<66@JxRb-B~CxF-*>( z_M=tCV|-))`J@W&^xcqLF50AHiCUS}M+;;04@nLB&u$VzxQS%fN`LQ~^f7O%JY|Wj%P8~Wv zWwIzWJtkf=LsONk{P~DW1!Z|=Hl(B+2DogAO+}|Xopz-K0G};q5~~ZXQ1rn>@?el9 z%c80cg-e{@maZP9HnVN?`(f_4W?X#sBa=uudRHo3t->@Ja^g20yKEQI7iQX)5Be&7 zt!H6?M1gJA69M4Xe}?F-|4xb#t1z~(lA~|Wa7sVUb4yA!Nf<2+zp zzO;V8C>a;EJ3Y@j09=`?`&e_F&3+g8peWXJMql|Uj0oKSwnIgiu|@O%U-FX1yqLE1007VNUI6amObP(k_|r)@ z{w^VH zlI9?#Z&`Z=KSb9mx3{^<8DKip_WA#(JYqylk7wbY>8;myj&;$nEaMc8et`8 zuQINLojMc?jl_~W`IX{5U)*Ahf6zRoKKYQ=`NGhth5qaH=h7b^c+VF$Jd>zZQO|E< zagtEfG_zwq<7fH#S;mkmv8wL<_?(BO)=G+&yj=0jpLC^qE#shF)p|K8fX{dw-lr5^ zI>b1-Hsf<>;SazKY3?Vz$dB}ALcs0y{DM;g+|iEXIDUeCE=%NTBwHTOe`y#IksH!A z&>$k$cdpum_Ne1N0C0zI6sl&?#e?>OFB|K~7~qDmX>4xg*&lK+`h!%QVX^3em#C^)wQuy` z6T6wFom5WK; zGP2&XW!}QL=PNGDzOV4T{q&Lk?hHEyHkY$kZm)mi$zZ*w(3ElC{%QIkdl@`k{an^L HB{Ts5`{Oiy diff --git a/doxygen/form_173.png b/doxygen/form_173.png index a0f136d3aba0560f5bbd9b3f4a3f154154bf89c2..9dab6bf11abb4fba3422b290257cce179e09dd4a 100644 GIT binary patch delta 1409 zcmV-{1%CRf0>}#?iBL{Q4GJ0x0000DNk~Le0002|0000Z2m=5B0EZoyuaO~Ie+4&5 zL_t(|0qvdVlB+lrgg<403Ge^5dlX0pF}~jG8gJE7^bEFz)O|vqzX1OO;2l_i58~7N z1H6k)1AGM9cTNuQ0AGn-=mC5J515Sn699Z2tPlkF2qKIUTQvcEA!dLke2i~3g^96r zx*qa2J;2u?b^uLuN&);il+Ai|f2bjTa~puqVZKjnD>MfK*H_9+60bYsbH8`@F$VY- zP%n6jIg@lFKpPFt(#zI&Yc20r`A|M(@v-mAB7M_cuTTeQ!rFY8@2z#h4B!N>gUlS= zduzKT41Fz2fGb>!*U8A_Uh=;b_ojONw^mql*uO#@*xxoB;w5i+VUVNVe;8efVajvL zfnCJ^Q1w-O@SQP(a-9lM9!VxB$IBG6o$usBcC}maeY5V*)PM2^>7>CW0!u8M4|1A( z=bP_J#>IE^gk76-SB=+iWy*RqcECJ@rbtpVLtgAUY5nL^AZ3}!mposK_swZ{qONis z-9#XTzsE=!m)4cjNBJ5I(NPs>)o?#|-vBYS@8@g!;Hkv>|B z|T5BvR6nRi(|ff4E0EC>PA4G|HFdO6LPS zA&Xa{FsM#<5i{a?Qp>qV>~*Im66L*6Ut;?tzB%kp)J<;uX0S>hf2RIWmAve*_D#by zd@8Nl@@|RGX4rS)bC#vbwAW^k$82~mm2e@brLNvvCv(xu3Ig*bm3YE;#Kmh@12dS`HU}$-$Gu}x=xGLvj7e_iLVE!g;w3- zM7>D56mPZE$l&}me@$s=Y*>3*nVYcmA;1;JmG+(Zg|1vOm+~dKqLAlb=#D<7@&odimv zF3wO7EZe*(zEbZfGjbW<08g+HxBY4sW3qBo?6fuy-I%AsRalPBg-|`ESzOQJ)oh(D zdt28_3`>CZL*{NdP#Q`+K4hQ27JuEt8+B`jWp2A>fBSm3-*rvlAan*v#_9n8Pe`$s zN*R@2chE11H>J7r-koDIxiWPi$u8qYrODcP-xMF3Jz1&C#>LT8Z zdixGI+*3Y5j_9}D=VqPk#7l~mse6yg)UqF96tU&NBD9pfAFjmrON{~?P^k0JQd9tM zzz30`f2?Y2M}_Rl*6!M`Z_TnpX&H%l-Fq}iqR^D|dzn(@z@6b4S6cT;{M_c1sbk&n z)3gHkcksdQl3>>M2RP$7Hld{TsV(cMJ6PILy#C=FvANXy03U@paQva}pT(>C@=^TN z9!K%*s$X|*mj=K`;P2zzn`5j1UV(VTVdI~SR~6tFAT|ilfOz;@;&nFu^|~8E0KWy( zoIwD82f8=~z?UJ&+yeL@9>37f052d7e}Io6ey{dxvj+HE_-5?@|5^M4fej=)X^W}( P00000NkvXXu0mjfty01y delta 218 zcmV<0044v(3#tMkiBL{Q4GJ0x0000DNk~Le0000d0000B2m=5B0Lv3(N|7O2e*l?D zL_t(|0qvbx4#OY}M8_*j7VdxB4vCa>k=mdBA}nF>8xKAK0Q@`BGfM!#*KozKUI5@D zo@oWfooyH1-s*U@o`8$wO3aK&uL6_#%IvTQHg&RQ6`cyrg5WNQXwXHLvu;G^3+u)r zvn|!59tLDJO#RECP+!Uv+u(%m#xM5=NgdeEmb)w?T$?UJ+gZ}0PC{? U_2(Hy_5c6?07*qoM6N<$f-E6fod5s; diff --git a/doxygen/form_174.png b/doxygen/form_174.png index 0a996771dd5f20480059b4be3b552f52b622007f..8b180e09d5484e3b319f3d81a7dc85255be70f3b 100644 GIT binary patch delta 560 zcmV-00?+;61O5adiBL{Q4GJ0x0000DNk~Le0001P0000Z2m=5B07660dyyeqf9**` zK~#7F?Va7SqaYB3KSX|w`u=absHmWFByKjf=fa|^j1}nVnPK`C;QvCS0lo#(OMovy z51CRafNV9>7h^vZ)2LEzE&TD^(Sldn0Gy$Gdk z+##iFr#8QADL?*EXfQvXwHri)3bWL2S~<#_w%bS-Okb0qM%=j3e2g z))dN~_iM)>!U;gSX1drZqX?DEilp3fgFJGClw~nh=nf#U!QIrumB%JxbikOtcy=NM*u#FaBYTjNiX%C8|r<(lSY>sFz-yQ z&-dbIzuTw5exyCmiqgHif4+uSerFFG_n4I|x5OP?(eI?Q`+Uj#uKgkLcXUO+3%{IS z2_O00Wim^Cw-CChU}N%d|-wn)nXzC*U%`4Xlb1k=hXd5q zu3bKgFH&L+eW~gP1~{$$(I#(}f7g=t`*!W}9zU;DvUOf-HfHN@r_~&AJ=(pu)S3ox zL*3T4m86HQx6PgC`Dj-+hn&_exT&>}+qKKfI#mI`=-%+g*b!u3=@j!oD1kTzBu5+a zCSTm7D3Yef_Or=K5j!E4?)}cZMzg|bP2`9-QNK9M3~RT^2NPeXX8d&SW;HmqmsV{J z)T+jakHxL@?3u+}5@ZtDyuSQa|DAiE)=@c*i)t`mjkbqb8A4>RXbRr4F7nf<^69s# u`KP2hULEhJ8eQb|d5rrJ1AGNK+U)~Ir3ZC{;Q0{%00003{rx-{z>&diI`ijsL#Nq|5ArW~=}|Bp0>XwRiB|oYV-Vw;Y%4lM7At1`@Q>rvwqnPwt1}S Rj^99W;_2$=vd$@?2>>0ixBCD9 diff --git a/doxygen/form_176.png b/doxygen/form_176.png deleted file mode 100644 index e626a8a3f8316c5c9a31de25ae914272533e128a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~e!3-p0EYEHRQU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW9`@Ur!gukP61Pa|5{=40xQ4v$sx8-TObclrQ?r zX>Jyw7utJ_84mQXd$Y=2+jB?!V%tXjoyw1dUo)@qm6;UXcxt`VJ+8LI#j_)O?N52c Zs86(GoP4_V-UN^gBeKHT~|l|QU(D&A+A80BoJjU!wu9RP!i-9 z%%JBHo8QnsZ_Uo5m+rp&@_$wOhW88%Odma6978G?-^OP4ztP~)Imcl6v5Kg|^kJ5F&jRZmP(kXSS4UKm5g2}!3_ zLAOMg?O=GI`K%{sd7i?VJ!}m8Kb?N_B`I?RFMXFHrpVl|dWpY9cg*{s@;?j(qTdal zeNWFx{F2Y*xr*C~Npw@_6W%i)IX+yUW&H-Z)LV z!%L}iN$Q5p3uUt^_Ziw)KfPx4ylc6XLPQgbp{mmM@_%=`W7bLX^B-}!`ljotQik0o4^xn?qnox)#OTP}C-)%q&7RK8$D0gzy4u;nse%#nYZq=Y*1|re|%_u*dD7JruDxb1^dN`=5Aa*t((s&_?N-I z!{Wg_3I8_SSR~qEI%`vuk@~kYn=W3}c(bmf|Cr=crlt*E)hcFBRsB>=n*|DM-&oIW zxh=r4Myk#9$FAlLPo{)v^Zb-jII84kG)ycP8S7er6{9gJeU6HY2 z{)xA23!k1iSU6!x@jZ)mF%Em~Wp7(@#?$}LZ>rbi2DEl diff --git a/doxygen/form_179.png b/doxygen/form_179.png deleted file mode 100644 index 9204add9a254323ce1fb66116b6c4d53c3363e54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 653 zcmeAS@N?(olHy`uVBq!ia0vp^Z9pu*!3-py%=rEnNErn9gt!7}l0cNb3^!1NKuM5a zFoT{)Y<@%kyfr(IUb_48%l}pB8{RW8F#hp$aSW+od^`8{q{j+8F46*zl9K=Z&)=R} zlQ<_Qw9LHUJCak_!OBDTyf(uhbA}&HPlXsB#QUsbI1qm`=y*9}(CUMBGLNF}>{*$^ z@ZsLABHw1F1MJ_rr1N-6iZAmjFwU4)(Qeg$x8rBOp$gLh{^}%;=W-tzmM!1+WBc3W z9P^8V^nf=hjK9pNyCn`1{6ZvBlmt3;lbf7JhHra`0(# zPnJmPvCjP;74l^xJ{|aZ>Z`4w0+VV(ekxx;_m+aerC-^*wc=LG5F}>x|hfmFtKGeNn-MSEqB}&u& zrgci*vM}6~xqw&k&5_9_6}vxgU$II%_k02OhizubGtxhL?-Y4<%Fxa0<#Lx}c~bY1 zX57(|o&7uKXNTtwzx{=!b~#~}-2=_qgC2HoIM2^>ZGFLArZ#awOVe0RaczQ-L2>EE^fc`y4o`nw-^eZImG^Yuu^zmNA;gtIdqXfOM1dwRRe zHS;UC!%viNx5?YlwYK(;7;D4#ZwGc9`Fh))!RP$GFRVRZTI+M4JrcJr;1yjbA;=3# NRGzMWF6*2UngD9u9rFMH diff --git a/doxygen/form_18.png b/doxygen/form_18.png index 2796cee4185331e9f1832fde2f4b0de3159b03b5..501d8b3b796fb67ba9cb2dec9f1daa2ca9e8d415 100644 GIT binary patch delta 323 zcmV-J0lfZ?0+ItEiBL{Q4GJ0x0000DNk~Le0000+0000C2m=5B0O&J2ypbVVe*pnW zL_t(|0qtGevV$NDT!MgrkpKVNlZ&EbJJYxGmT6YRuvxbG008*6j4=SfkKE?WQp@do z@!k^EeFx~^5~y+|bgn@GC|s_>sjEx?@R=hiauleCKw{O$(lXjgKX@>KL=OOb~@tPGzmqy z9+#Mhiv)mo4!@JPTh^#1(ZR_?-qv8Qa*Ag-jf=9Tw>7e#g@Mb1My$C#kk@>MpSMfV z_Ob@%!f;9-i=kh3?%)6LUSrJ4lADZ4w5hqqU>Lhc2x^NX0K7A*{8f0>85ypT`2(xI V2On$cMsNTC002ovPDHLkV1o3Tl!*WU delta 191 zcmV;w06_ne1CIhBiBL{Q4GJ0x0000DNk~Le0000Z0000C2m=5B0N?%eh>;;$e*k_- zL_t(|0qvbp3IibwM4y`&tE+hb+cvAVi%{CHehv;K@De9C0QkEl#R%}l;e_%7dKAz$ zYg4mi0K2O*(nqNWU2+-$@{(L#^SQ+wFbiONEx#GxR9`7&DO}xo|7Dbf&Xu+_81uW5 tbFLmsmX9Y^3DuL#Kw-=Q?A9^*6$G2)0*yd)wpsuH002ovPDHLkV1fj&NzwoS diff --git a/doxygen/form_19.png b/doxygen/form_19.png index b28732cd503d44b0f7b37182af91694699aa88e3..f4a23684e59e63954cb3abe906e3ed4d07726e4b 100644 GIT binary patch delta 150 zcmZ3>{G3s-Gr-TCmrII^fq{Y7)59eQNDBcmHwQD2bUmqSHc>Guhat?<#WAFU@$KAP zE@nj@R`qzc*zNcJZwp@$rS{%rsTWcvsPFt9d&k*c#;Tl~^*mSZVNO0j*;2boFyt=akR{0AG1B AJpcdz delta 350 zcmV-k0ipiq0j&ceiBL{Q4GJ0x0000DNk~Le0000(0000G2m=5B0D2BG7?B}be*qjx zL_t(|0qvbhcEcbHhCjsM+1&rO)ey&a+vjxK72*XM{y|dq0RJm8!1t&Ck1=d>fq7~A zdj@W6TMc*sc#Ll3*~qHl0Oy)U-v!_yYIilZ87XjCyPK0KPNn2hf3rLJOXEw6CtA(v zt+71Qn~qm^S+ zS)Mw|(e-Lz=(X)=geKD3N+{0`?WJ>!UP%X=X_8Zi7-p0sNQPIj1H(t<8 diff --git a/doxygen/form_2.png b/doxygen/form_2.png index 2c2d2f272afd00bedaf3b2cbb1ae6faff9a75566..0c0f44b71378713cc36abbbab8f9fbcef1398775 100644 GIT binary patch delta 183 zcmV;o07(C)1cw44iBL{Q4GJ0x0000DNk~Le0000a0000A2m=5B0PA=R?2#c_e*kt# zL_t(|0qvc^4#OY}LtlUrLe=vBf4h{>X;Uvd>}tu969=WVK~6@Xv(0$+FnH1(G04Lkq<002ovPDHLkV1nDnOR)d| delta 472 zcmV;}0Vn>40;U8ZiBL{Q4GJ0x0000DNk~Le0001Q0000G2m=5B055ORMv);}e*u+A zL_t(|0qtGOlEfegY#-5RlJWolc4<(Pap$;m*{Z1mr%1Yi26G00|8EfhzHHn5HwWfC z4)N(K4ggjwCGDwxc;xGuoiA7M0Ptq{s)5d7JBxE=#9h^6Z)`IIz-sJ3DY;sg2eq+$ z%SLb2HcWfqDwHw4CrlDlA+2>R<{(!+1ILi3E*ydmL-o|?7%j!r8Q$Z2O<5kWzVWv9 zYrb%>dN*}(Y+9XOBw^SFEK@Uf!l*^&Xb#DRS-GW?q z0QhAw3C@fA_>u5bWXggeF1o*`4*=h?dEf1O1^{2RM_2Fn3jqG!Z2UjNWeHodX7q9Z O0000ERLtr1^kYh=UnO#x%(@PgIP~i}ZAH45?szJ2#r| zhye$4yGl#W)Z>5iZ->3*`ZZNJ!YzsAn;2!hi2mM1H{H(XEGEX_4FLX!L>UXeWLDx`ePod25BFgOx{XH~>!A4UTnqN)7M7*jAjb<#7j|>N4E$03TRJTU>dH#*&_` i?|)MbWxN>RH+Nuv0ye39I+*|f3IG5}MNUMnLSTYDxJRS_ diff --git a/doxygen/form_21.png b/doxygen/form_21.png index 2688de04fe2ee009b6841d31f617a00a3639d05c..b9cc50c8dc3e0ee11e180bc50225e9b84204cd49 100644 GIT binary patch delta 477 zcmV<30V4j{0;>ceiBL{Q4GJ0x0000DNk~Le0001F0000O2m=5B06W~M+>s$#e*v0F zL_t(|0qvd5vfL^Rgg@~kgfZs*-}VaZIWtLaog@o3sZzOXMlR8&ixfAs8vc6fKtjlYQ*!e`}NOv#crG zT5{#gRQR&?8LdXWG_}h))9AgqjvPbvI)jZWBPZ>i8EtxrL(iO}4O1^|w-9{3 zcJ~f^KC&8=>ERTSG+UXO!&6`Bzn;yvPvKf{xlVGOE^pSX$AgoN_yGX$7ZGFyfVW^_0PrI& zx-C4rQvVD9PM9tMdDwEU9!6RA{YapCP#>B1dC>`Dj-2B0Keto1WWGw5SYXs7rJX0r z^t}0)=IM3NE!qkLyZe})Ol{bWHVCDqW6?a;S P00000NkvXXu0mjfISqBg diff --git a/doxygen/form_22.png b/doxygen/form_22.png index fb6e561410ab2a22ba508a1f0ba9c1580cba0e1b..b8b4427d5c62959e887ea41b38b088e7c42fceee 100644 GIT binary patch delta 348 zcmV-i0i*ug1FQofiBL{Q4GJ0x0000DNk~Le000190000G2m=5B0H|I#K#?I^e;Y|e zK~#7F?VZbRgfI+6FPNARnCAcgwsxG?Kq6J@bkPMGhvCXOeg)P5@ZW6%fX|w1fA>{G zoTse(Iu-!9S?Byic{$3{64K2_En)|Nn=!{x%!%xMOffh=2TfkU;nF=NW?l5EoUv@T zB2&Uco1xdsL|Vmrvrt%0abAl@f8&g0()yi$$6p!sWu=M`YVrzdm@fOVEc{9@cyBB+ zcWJtds6GN}n8umObhVu~yiHbT8jqU2v_Kp2;7nu}jPk@=bBHuVkFiGII1^bqle2u{ zb+mM*!)jwlJt&JZx0pvhkvHuO<&#c(Bn^Az*g+C^oMMg6vFv7MEe=5cGMmVP;)E{+ ux2XWYhpfI<*atZPz^|;!`42v6hWrLJg$9BFiaDkL00004FfEK*J;XN$&yvnTL|1TDnRx03UmB z^(TSf^-sR_1CtMc_x)%jMZqSI!&W&Zj2jW)U3cN?4=XUP@?5E4fY1EwKzoT|SwOX7 zg%^NF4=#j#rVjAx1Bi&`J%P!&e};@J>y2WgM65FTwz=2tMcsY`?pDh-?i|le>GDn! z5n8y)>OkOOO`wTJ<TT95HEU1lGm0c+W#CnSzICP5o*Q1z(}!O; paJP)9(*p1(zMb)x-!;JB_!o7%2K1?<4R!zk002ovPDHLkV1kQ?w*vqG diff --git a/doxygen/form_23.png b/doxygen/form_23.png index b6e76883a81720bb4f9a4ee9a2ea128e46d019fd..9595feac575b2753418acaea9470dd8e3d0e07c7 100644 GIT binary patch delta 114 zcmcb`e3((OGr-TCmrII^fq{Y7)59eQNOJ%&4+k@l%y8gYKT$EtgTctt#WAFU@$KA$ zoD2#AhhKRLy6*YAUDSj>eqDfv##_Eg^FnS2e{^wkHqtwt-=sVH)f_XWSqz)ocWx5_ P8pGh}>gTe~DWM4fu%05@ delta 395 zcmV;60d)Su0ons0iBL{Q4GJ0x0000DNk~Le000150000G2m=5B0HL**I*}n-e*sBJ zL_t(|0qvdHj;t^YM31u((m?+IZ^zDZ2U<)I_jM#hMYI)H%4MgY0sb;Pz%xXE&sg>n zpuCcP7l4QG3&3Yolj==GGHt0=)~4N-4d7?^>&b2%A0hY<@2p%KVK!AS z;QYoI&dMgWq}am8I3iGE>F2oIe{Je%NBd#a;mzujDCa^3wcC+uxqCNA^|r#BxRfmF zdXL*Kubm`Ys`&BXHKEL2SvX}~gl$o3iw$bc-sebYM79)q`9{!159-t(PthXk%yt^e zMHdl`#g;p$9cvy_+kIF@gFAI|>dlZnnYvSZx*@$73lHk5I=P!IIULeNVdJh7lCsXc z_Hmox;q`&5ZK#J0L5a;zfGZ@g^J2XXpXNl(antWXEsK|Ay_&-Z@Eg+o<(He*vON zL_t(|0qvbZwu2xHMK6LNR%QRY{Rv`$ik)@#Ii{^4$qO$DodWy|z)*ag0e&JThVw^E z07F@fCNWP{W1HVTIDiLnua_75J!%Y~d-AbjG28)$qWCX)E>IVe#H^cJ2?21EeNm4Q zfyIe9To$-5^x2wf_fBtj-mAxKc ztJ_rrs85FQ5B<^NC*x&GC69LjI(%~o2Ua{Zbz{>a-&@XS*HzAFlR<|{**X=gI=B=@ z({DqvqCfE`IfL17>oo>`jj=GR^KX36omt0X5(*`~+}D{>#mF3p*2v2w^OhBJHk8ld z?IWIV{H$0A?c8X8h^@ bj~wX_0s;x@T}gUn00000NkvXXu0mjfaFpLO delta 126 zcmdnYa-LDKGr-TCmrII^fq{Y7)59eQNOJ=*7Y8$t4Al$SI8iYwgu%|!#WAFU@$KA$ zoCgeen9r|!J>!DK@BG>BK5~uk6fBlF8#DZIo8NrbwDz&JLiS0v%~LdQOn5a_|J3yY c&fV+8wQCseth&mu7HA}cr>mdKI;Vst062Opg#Z8m diff --git a/doxygen/form_25.png b/doxygen/form_25.png index 2f6b880a666fd4ca172c6f4aced5204a54bd828e..d7019c968978d842f7329536e18c2dee3e3b9039 100644 GIT binary patch delta 151 zcmaFM`GQfgGr-TCmrII^fq{Y7)59eQNDBZl4+k@ljIlhsd7@%eE`oZ~MY3SgV``~EfsmMy#E4oup+;m=N{1MKtC1o_Sz$^JI&+@-uObP0l+XkK D4O=;R delta 1188 zcmV;V1Y7&)0qqGPiBL{Q4GJ0x0000DNk~Le0003L0000Y2m=5B0IB-cPmv*7e*|1f zL_t(|0qvdHnyWYrgnxqj*i2%2p%lH040=VT|Dw4UsK>?aec=%OZ3vkO`D6@kHz%A!;!UW*= zN+0jh3-Ba>RT^p(h4djQw+f2F;LY2T** zNgj6lv%%Tf;Q(+gKS1f$AG_!4hcoorQ^R)lBPjl7ieBP-vIp>AWZuIVl&9Xx|8aKG z+8a^;*AnuNw8YntdP{#u5ofwLkGmZ5*=QA%dAqv=CCE~cDrXwpBS$~?KFB+t{KFBK zMZIg06nk-sF=VyAB`rtgf8E7LOp2@<{g8@3KIRyvtFqF8qkCrMptpy75YaM6aKeIGw>m!wPs_C|>HG6&k z(1WZPjJj2>qaOQIxMWPlpVaC8N2y!b~e|EKd*5?D8HaS>A zDxf4~d#leVl$WfZvUT_50AzyU092}LI zMH@|$tP1K^Q{}*svf0|F1*O}}Y(&@(`+BZ7o7c{@?<8vjc|$T@YNijsI}vc!kAsrcHHz~I{8r2clY)*a zR@)UWc&)yAf9<@d_Ss7qbc!6C$OmkPk&E&l)t?;N(e>hi4s0000(XR;yn^rY#4WPfWq01KE>*H? z2MRb?N-@7nbr0n~*~z6?6S;6Je>foupmC4nlPj>Xv%($q#3~r!D1g>IkTX~|jdc%t zt~YRusq7E%Ko;;vE2t0L=MGE-b3;4#NX}qBJR6Vvvrm0+TjsjUii;a51Jt^QvWx>i zaM@@9Ko={?I!n#Kj@>HjxET)s4~G6h;A-~);M*|u=>Op(^ahjq1|f^=4uGKm0000< KMNUMnLSTY)3y4tw delta 411 zcmV;M0c8G%1L^}IiBL{Q4GJ0x0000DNk~Le000160000K2m=5B0M+KP5|JTVe*sxZ zL_t(|0qvdHZo?oDMGyPpIQ;+Lb}$fQ$F5STed~xTB^l;qHr@gLHOz+`0RBMg0R`YM zWDabt0FKfQJ}AvhpmH?e-?j`=>S|PFE+e7K6)}2wYGML)T~XgvnM~mS;Z0K z9Xm^F%Eg)t_Pake+cK#Cyf^pEE(ZPVv|%&5`URj2whvr2YnPP2HzOJp|F&!S+(3cd>UEm`-PRzmnQ6ao8%EtmT#K z&Dq#Bhu%ebSQp#9?@9CP2QK!_0`{{t@F{q4zWROGdVrIT`|Ug~U9nsC=q%S?Y^ep{ zR-e5cU_XN$xyxcCBNy-A48WUewi2?g>-<^)eobvbzW`b=2nA_uuQvby002ovPDHLk FV1iRPzCQo} diff --git a/doxygen/form_27.png b/doxygen/form_27.png index 82d0b2047c821a4739895a86204fc816d263e7d4..6bbb7836fddee36fe87f1c769b1ce97967621a63 100644 GIT binary patch delta 602 zcmV-g0;T=j1E&QciBL{Q4GJ0x0000DNk~Le0001F0000Y2m=5B0G>UJ7m*=ae*zXs zL_t(|0qvdHjvOHjMUPo)=l}mUhT5QJx;32yB`+2(X{N!~%eDOq@UPSk7NR!*{dC&E zIe?BDR!acrsLr^B2+&bAh}HH6QTr}w?E!jeSOpeD6v`Ef#htfN!)m{0@Zll?c1}{oB3;s$(t(pBLj4 zn|C(l)HmHZlm`W*u>&+G)~S5wjb45HJbOy6%M@trAmbssUrj0tO|lH>f0Wwp(h$Sw z;GY9_DQx?3Ns#rNeS*`BKt>V2rrkoD7E)>S`(lD`w}hCg8%$ zY;sc#GPjN76{L)^Tobhu#3knrN92&BB)TR1X7=ROVMRqeuy;A~n=Kswh(m!bg`WqV z5eu$uwUg>m`!OCC8W7ESf1PK4ZIYIBCx!D5k;%SV&x_G*lwVdL)@t&q4RsA!8K2`` ztAB)M7~*p{UAMHR#a;!H^So6cX6H6iBL{Q4GJ0x0000DNk~Le0001D0000G2m=5B0NRmS_K_i4e*sHL zL_t(|0qtGOf`lLp3s&VJGyMPGZXXntbxu2{Jry)ULlf#50RBs?0Py|T&c{eXa~wSG zuN(kij-28e%`dUixolbx8;+~R0qR_0|yX?mPha9lURUXh?^p4OElUJOKD& rjMlRs2mpLLE@%Jnp89dPc%osti>zS!{#z1F<-Fajp!}T^01;-B^i}qnlD}4c%PSvatj|0lXT| zZ$e+zbecMRk4b^%1;wX`Q$qjMJd*nNBkcqzU|qD5rCal&d{e*@OLBcZ|e z&6eGhh<_^R-VzyL2j3&nO2fj=<2qp9K1uXW4Z9l zA&WZ_ssP~jT@JiGS)-XE5gGzP+FKG?y^E1hl1*6Ho>3*FTj@2l{&Q}I)93;0!Tx*F z5>tykp}q_CXhc<93vl!5e^VE$9g;n%Px_0LbFhJ&Y7OdjeeKk=0d=jBbM~t3+Ld*` z(yri?#F_=!c<-G0F^TJ+<|x27V4}5>I2LNDvgX7^sPASRlQ5|PcrkLm3@eEfq4o+? zLM??B=j{xo@Iu0cJ5p_3_X{!r%&lERy0Q}3s+3$BxgcBlL*~P;&XJ?|mS+*L?pS*Pehh=B zTJg1-I1}ndB1EaQzngJV*r}Q9jVnCLGr%J(5`bMiY~p%}?}s`a3$;{PQTK5c>g|j( zb&@ZAKGnBd2RK2Cf9H<<#(Q_1YFT;a698xUqS;k-E*n+=570HAlGt;qW#Df}n1TU3 zVnf25Z}m-p2XrQDX|kldE~yul8fpdSCEV7qmcos)tYyLN2K`s_71+Fft!scgY)Gsc z0k8w7;#6|VjdWX6=c=|H1B2_PzSKC?Aiv6^lT*2j8{}Qif2k}1UWzS=*R(x~n4|U8~ zWTlRoP@vQzXXF1DT=5VOWAp!iTS;IiZOJ5Qd+H1`!mvn-w1Ce5@J}ok4*+jlDFE=; zo-6~v+WvxfRnjUjmi^e?;9WUg7)MVNiVs6Lv-HI5791{Tg=18oGjR7f(#TffHE#~S z9a4^LFmt$ba)r1vwg3{M8JHW;e@7BEcx_h**;EkY z7*@7+;~jJMFrlbhS-Qojj=712fz+-(;&}2BqHQG+Lym diff --git a/doxygen/form_29.png b/doxygen/form_29.png index af44d2e39e1ff2b8421f1d202c24a5f0f371456a..eb9f714bd9086331a3b0ec542a65cd8af20775b1 100644 GIT binary patch delta 379 zcmV->0fhd*1Iq&;iBL{Q4GJ0x0000DNk~Le0000}0000G2m=5B09~N7@R1=~e>zD- zK~#7F?VZVT!yphu8?lK^{QuvY9f9zh-wL}U_W7Cr}jDR_nW!ZCWXJSj;m#a_WZyXOp zyIx3?D}+#c2?8BRVLGPnS-JIVx>3Z_9hxWd!%m$CvN2UVnmS}oCUNC9VqL0~2zs!S zg~z3!9%Py^xih8qK(W&m@lrhfv{Sqk9XGQ{R&~}em|UW+CQF2U-QpIi~;s002ovPDHLkV1lV=rk4N! delta 368 zcmV-$0gwL61Hc0ziBL{Q4GJ0x0000DNk~Le000110000G2m=5B0K18Jw2>iOe=kWy zK~#7F?VZt*!ypJnFG!3U6aW8j7crXJY`5Kg+!<$R6!nM~>@xuT2iqb5{MsbR+1oP! zJlo%>fb$&?0N~j^!4d($Yy*3^;alTzoQHgZ9fzeM9!YGaOK%KE1$rq1JKxHE699cKFR>F&-`|LSbj@~{80Jz%^*vA?JfXUur|M*v9dH(`AXa;)?qN7;= O0000TWSlsBtaryk3jU zn~eogdWmb$b!1lTVPkSqwPD+$UP~@I^z^Anl&mRlid3KVBvo>t7tG`8rf($AE|%8# zkZN!PBY{Rw9djw#)!y!?yI8c@QvVABfV-G1Gr-TCmrII^fq{Y7)59eQNOJ=*7Y8$t4Al$SI8iY=%+b@uF{Fa=?c9UB z4F){S`YWZ{y;}cnU#b+cN8;e7rPXuF8Gg(*jnznBNI~mokG8{N1d8+_uD1)b~pUXO@geCyr>n@W3 diff --git a/doxygen/form_30.png b/doxygen/form_30.png index f9c8957d8900c28e5d1ad554fe34cda80d28844f..ade4b1a13becfd57b8a6c7427abc0ec908fe6678 100644 GIT binary patch delta 343 zcmV-d0jU0~1E&KaiBL{Q4GJ0x0000DNk~Le0000?0000G2m=5B0E-1_m60J^e-=qZ zK~#7F?On;1!ypV3kgz17{QuvMh1rtnsWXROcr{QF$s61O;G1m&fIrzjcEM8cJZ1Jd z831_L{1(9c#hiqiP7fCvWDY$k46uXi@V>nB0JuVWrBIdQ&@~(viQU7PIEL6Aj#)C& zsBKb65PES|C|h%2PGMLkeiM7Ze>oz!wtuaQgmfJvFw!PziR=z*5LXc7h6NzHlQA~PMAK|EuY9W diff --git a/doxygen/form_31.png b/doxygen/form_31.png index 56624540d57f625873c5786644fd22fba8976995..a331090ca1efdd52dbe24900810062b1d639bdcd 100644 GIT binary patch delta 357 zcmV-r0h<2T0<;4miBL{Q4GJ0x0000DNk~Le0000?0000G2m=5B0E-1_m60J@e*q&& zL_t(|0qtGOlEWYj6OcfFwEX|yu7wRG-JZI8=!F>*SKx- z))?AaUQoxqKj@)^U#bJZXEq+~dMg0%nNimN{iFW?z#|52Dy^ko00000NkvXXu0mjf D_)VIU delta 263 zcmV+i0r>v31J?o}iBL{Q4GJ0x0000DNk~Le0000p0000G2m=5B0E|bsfRQ0ue*nfw zL_t(|0qvbj4#OY}M8~oDg%a+6+u9)?T7lACS4dXC=EcLn0RZ5?;gbV^ukaZFW)aD@ zxaH2U&G$3_jKYfg(|ke_svk0(@>W__i(v)aEvEF0h_s1|AAMG3xDJ^h$oq_RPtTMv zWlCZ`+OUmFThX=?hD&Xt-Rf;zUCe8$Eqc(lC#g68^x!pO)J?IKo$S*C+O!vIE0a!K zqkbDh;@fe|!JJZRD=U%@ws7_$7FDhGKHljuT(|F6=1~63$oP$_EpPOj1k{EjiL?L! N002ovPDHLkV1nuKcI^NF diff --git a/doxygen/form_32.png b/doxygen/form_32.png index 5e565cda00c37c8617ed06cd6cc95f66d45092c2..0d269158e9dc6491bebe0d3730998c0f1373ce30 100644 GIT binary patch delta 477 zcmV<30V4i{1FHlfiBL{Q4GJ0x0000DNk~Le0001R0000G2m=5B0Qt%bBatCme*v0F zL_t(|0qtGMcEcbH93uw|#^L|}wj+rpb#hHFJyf_4kY;Ulfc+CG&P|)+_ z8n3(oz%7m|^G-e^0NjF!5pve_o>;UR7edqoNqu`OUbLyuu?gViPnzEQe1_}bk}Ck* zLK;bUu2NOf#>2mMfo}@XdZMUZ57lhD8#V-xMSxHGXQuC>-0Pt&mycQ1HkuUJp9)u1_0lRumNL7Eb9}slul6J@_PWXLxJGR{$)*)3 zV4vz0&fikgL;EE=SxPjK3%7z3f1&`I^vFK)2~6ms*uCCZ1>^SuXww6G2Hw2h>jfM_ zI`$WMU<>%G6tNDu&K)=&I2W`_kL(s~!hU}3QXTB` diff --git a/doxygen/form_33.png b/doxygen/form_33.png index fdfe59ee3aec6ce0f600b2f41e1307ab9671be1f..49e9096a4b933ccdace70b71191051d00e90af03 100644 GIT binary patch delta 474 zcmV<00VV#12B-ufiBL{Q4GJ0x0000DNk~Le0001I0000I2m=5B0C8|Ixsf4Se*u?C zL_t(|0qvbxZsR}ZKo(HUJwtA3?}&qK&ar}$YPO%zX5(7a)y)uUZc7m z!KrBtn?Ik`f6Tbv4<1+oObNGvlQw&`_AyZWf$E#O5Q!$ z1anSn!uG*7g2(fi>i#)zOFQU$e>m~el(=jdUEzAyTJEc8wA0C|yyds#<1BCWd|!2$ z?rC39WNlD3fY(Uf=irI>vqkh%BvKJPrTZRtl6%=xaqcG1KCof!NL30hYsYTSN>GT) z*6dcyizleo=%CM``0$WA>M$QtCw%Z^Hp}6nv;m$Far$Ix&7tS&byRUXe|Va@ySkxN z_9&50bt6|S!fI~rl`1VHi@3E{Q|HZdFFuKjF-_AZMOC{o4RyRpn&+lf(XF18uJ#7u zN?tS{H$Amu^U?05+@0B=#QId~+0mmR==Fu)hG1o&5Iz5u=*@oxg~-KamL$NCR72;d$50CRW=)!phg Q!vFvP07*qoM6N<$f>a*kWB>pF delta 698 zcmV;r0!96(1cnA7iBL{Q4GJ0x0000DNk~Le0001r0000Y2m=5B0Jj#g)sZ1ue*$$$ zL_t(|0qvd1dZaK6gn#d5F@FEI9kJMenjAFO zP@$8eZi7^I8F^(n*Y;6 zqpxx~o$GCqDg#{M9KE12OU23$pn;#J>F^xi$>$B_+&)WU3D-|tLSud42 z9Jh7u$UNyv9sko!OUt>^I2j?WmA&fH8Z}DK%*qxQ%E4i&Sll`?i|8OEyAF92|Iovs z4ywI>%DK|Ftdz~xT$#fXf3B(oH?99dNzn+Y;R;UFLD&8zyh=%`6r45VtM z83BMRxH-FkKbmO0ll0h7>CGY{8UC&+;F!S@6%111O6A2W0A67&f5KmikoSVyoYs}| zD*2s?_Mcs{=Vjs*v}gd1Y7kq3Y1ebM&8CjtHqy|@IxS8#GsN-{I+ANVT3??L(W zJ{+H;qI`5Bd2N>UC>1N0ND%E;)jrrDF-q~Mcc{vI7ffDT8LfG`P_r8YJOCMNG4R8< gySE>6fWN>W13nMq5FdV3KmY&$07*qoM6N<$g84r_qyPW_ diff --git a/doxygen/form_34.png b/doxygen/form_34.png index b9c4f9e394e1ce23c3f0d07895660e5e1673bc31..b466c92346e7bdf646b1532e98c74ac1df623dda 100644 GIT binary patch delta 192 zcmV;x06+iC1CRnCiBL{Q4GJ0x0000DNk~Le0000d0000C2m=5B0M-^%@{u80e*k|; zL_t(|0qvbp4#Xe`M4#BT)~#^=+b%}qZf!sJcjAx%CImbIz~8y4CWux7z{=M?r8b!a zU}e}#nTZMF69Mkb)3@30aNzR3zN4mk&U!iqZazH`d%WT5^Yze~NgP;xzMfy-LQm7c u;>*>%l8BjN}E7j#EvC3H=b@G`IjtBOS0$$MfKf|-}9 z>FFpaguT{8+sldq`+Q(gBAM-tf7nHmB1jBchog4~P;Lo(TU`pOuev~56^>j3pZ&0n zRCmq7CD){-7e*n@+ zL_t(|0qvbZuEQV~~E1e$XH+t$WFgOs-aZ@NPaMxbFlHU|LsB^H1`A&%YZm6)@v zw_|qz?-16uajAx_s9-+?xWcXiGLpqL-Bqf;G#21A{ciCv;oys7X%D$91g{AL(|nwR zNZiv9Qr0Dhqsj-n6Em@}jZ0SxX#+5$k*p3{fwB)J$xSl^m|-MKF9aoutHCi}023NX z3lXxm%{7;rTwi2}S4t$*C#`HG5s9~&*mYyQlvI1D=q2|r_W+;Ko6D+x0KUV&e#}2V Z>=Q~f18r&P_v8Qo002ovPDHLkV1naGaA^Pl delta 376 zcmV-;0f+wM0>=X(iBL{Q4GJ0x0000DNk~Le000130000G2m=5B0Hr`k2azFKe*rd0 zL_t(|0qtGOl7t`(?C^*nBLDxln}C8kt1~;tt)h&NKzEWRcm{y~V;nsI{Mk4Gz=H(> zfG_MF@FQXi02lieXk%J)oA`)00>H&O&^aMA_0@;lz#Lfa#N1Y%iA@OV_FmWQKt>_t zS`*E;6$NLP6<&z==x@X(5*J2tf1qgqtyzJxC2VzcDX4zR07+F?ml{~Jsz4d3&Z@_i zr6zsICA?E6BOPGXEL%B3sZ zq;3&M??c9oVydUKt?6Bnb|nBDuBSfkYCIhf$C^I?ob7?w?)wJ-FZS+axo>|$+LJ%O WCkBX&`zy`>0000ERLtr1^oEn}ZohPM@isH&HPvg~89$#WAFU@$KB3 zoCgeeoTvWqc*VBo|F+U~X7zI&61v%)q8J(e`9*F$(LLv33hM$Ji+$zmx4(0d4pY}w tIwQaPhU?zELXjmUPqr_)DP!@KA@L}qp2*$L`9LceJYD@<);T3K0RU5(GOPdq delta 692 zcmV;l0!#hh0e}V}iBL{Q4GJ0x0000DNk~Le0001n0000Y2m=5B0Ie!fTah7Je*$kw zL_t(|0qvdJvZN{yL>G6(3;+MOQz&3-Ymc!{&vE8~AR~Hjq)4i=l2?F#7p5~1oCbIj z!wl8}Jc=+GJiw!{#*PGlMHTt8IKGE3tIGe=b1*PO+yk&wd&Gl&U_AgKqukF0;19cC|k9l%rnf zW=}&UiLm~f%Yu;$tu$g`1Mm@bi+FJjmlg}SR=}PHKGnZfiO^_>zt^AuA5gZqG)-lP zN;;Hjm)|hU5IVk73+-Z#+ z136t6G_*)#eJAp2SH@>+i~D5Nn4`-FX|3#8N+eI>5oNV?N+_Yi!oMqjiDZ`1%=WC2 z`$PR}Own@m$|h^hx?eJwe^gzqbu^iK4mnPew&CKXnqx zZd_N(7SZ4xGnX9A#&q7je5&+8f1F7~ zK~#7F?Ojn8!ypI?h_te2z5i_oqV2ZN{r4$o5+vmW0Pz170H2G>eLOgLd!?>7f^L#5 z6@wz#h?qLRMOknmme%5;HMu?`OIMG4O|-1SYet2g5$BT|T#^H)xnW6gbIXduT#)TH zmx%>sc*AUWbK!-}u>q2ibKraoGUnc^DxrWia&%bb?EV0Jt^Myfp7E`(KFIH^6LbcRu}Gr-TCmrII^fq{Y7)59eQNQ2ni9LzwnaKjs|iHgwy)}AhoAr*{o=bq$c zP~>6eO>~av`*L5G-$SWu!yk#r$8rodqUuq8{}(uSZWWzvdPTDSVChB6dbJSc^K4qn W88*%MT;U2dj=|H_&t;ucLK6VuG$qUc diff --git a/doxygen/form_38.png b/doxygen/form_38.png index 118e1efcad4ba000df2a2d5bc3672911acbba939..fa21ae542cd2ce16e9af9e9e8eacc6364e7712b2 100644 GIT binary patch delta 147 zcmaFO^psJtGr-TCmrII^fq{Y7)59eQNb>_RHwQD2oIX=MZ=zy!W{9VYV@L(#+qr>! z4F(*}_ZtqzoGJT%TdUac<7r`&g%_R`vN!B6Ebjm1CcNyMLz%ikG3(m=M|;+?&9Xhm y8y&ZH>G@myXT!VM#l22uyh-vrF46t}1yk;9#zgt6#}5MSVeoYIb6Mw<&;$S%qc=|g delta 282 zcmV+#0p(_PGGSW2cgO@DAU> zUw9$_xcCD;C;(jiE6+KzKVm!)gO{9YCmQ93=R#_VSwP!(j(k)u#ym5`57>DQ-59k_ zY-ueF?Vix=3$<*qrS5uo;I*5da9ejKt4(@+Z^;vR@`ZY~^QZUk*7}^*b%f{st0bN* z_wcKJh0CLL5%mfiGuU`nEi;0ZP{PgpDK*`ayZ|zK81oOQNr8}fL?4DiLYi{_+pdiRO{8>H?Z^J13=qjPcm@st@c&2vU*hrJ7BOz! zTw`AYz$e5qcA+}E_4?WXe!*&|^h)297VWro9df7nJY*E?{+sr!v%H3ZYBJjpKaJOA z&D6!_cbiJQqp^Dr(eo%QRfA1Kbj^s*JKE$Ou_#3%)1EcCS*rjS96aw+60xblX|H?h z9)Zg@c$SM)t#5?X<{RkVj;t4T{nWmisd|nc+#}~eM6#^_R|G8)l`zqH5285&e2IDQ klw11%H<0`}&@>(Z0RGLrcL4B*A7ccG=b~=@d_MCAP@k2dOsCeF*kvemEQ(ou#7!ue*t(rt<1&BY2j7{ z91HWRX_Ucgig8*=0C>68*44@>e_^(QlEw#t!{4E~hi=v8fxK+8=noB9cB}HR29oC5 zWH1_N{se&E-e*s%+@{wMb|%x+xLOj?0wKIp~yAyc5C#MYThmTH0M;7i2(3+A0O5fE#!(b byr=X7&5Z{#mqT*T00000NkvXXu0mjfe&>;m diff --git a/doxygen/form_4.png b/doxygen/form_4.png index 602770c152b218bca6a9492e242a0820e48ae5d2..816bb49e95211270f0046723ce2b036649710cf8 100644 GIT binary patch delta 389 zcmV;00eb%D1Jwf|iBL{Q4GJ0x0000DNk~Le0000`0000J2m=5B05Ai3U6CPMe?&<{ zK~#7F?VZhz^B@dG55Gxh62Jf3e#QYpXQooCS$vws6<4hY9Bkuc4e-aD<*`+jQ^Wy$ z>>TZgn9TRFn0`)i#RgN8XZDwvcd(c9&a5U(E`u?1N|o*D}dtS~sTUYDRxOTRxmF-G6Q? z*8#vh!f5Bp3hC)}dDJ?e0B_sLwwiX48hH7de+u843gD%Et8|rB8kmPKAHLzhG@R?7 j3V`3+AJ$L+|IPmZk241M1zX(Z00000NkvXXu0mjf8X~i? delta 407 zcmV;I0cif!1Lp%FiBL{Q4GJ0x0000DNk~Le0001E0000G2m=5B05wxF$dMsie^yCE zK~#7F?On@~gdhy;fbtNT{Quuh0`hX5)6QPDiZVDhkWM-o&H(U#Yy*J5u)Y8CR(VpA z+2u$8aI>)&z<5HA28hW4z|BYlx4wNH^#Ci{zBc8U4my+x?s@}qJgL8yaoiE8%gV-o5 z2PBH|k`0nxS5~|YUsE0{yoFgsA?Xy2BbRks&jd+@r*cr~fjh?nTlRR#xj}M{=6K>z z?;J*ln54S=;F#ecD(_nMHsUd2TsW#$R(18zHIBO0(!V;lMZB0IK*rZuf z4~jIoGO6Q@uU?p8vK$C>a;th!7yhEO=`46{C>-*!yRtT#WVr^Mo7$&mDk$mvbW4yd zs>jy5W-c25e9_u}u-+vA@O3kz2R>X!0Ps62j^8+32ZLR0RIva6002ovPDHLkV1jo~ Bv(f+n diff --git a/doxygen/form_40.png b/doxygen/form_40.png index cf9bc7ff6a9967f987e5a2d4e7600ca386caaa8a..4ba885d45a897e37a05df8f3b503ef8c72b41854 100644 GIT binary patch delta 304 zcmV-00nh%!0)PV{iBL{Q4GJ0x0000DNk~Le0000#0000G2m=5B0G4}K4v`^SfA2{| zK~#7F?VUkx#2^esA7BV1q1^wrwSi<%+Dg+!7hPDkWPRshV`laM|0Gh0z{_P9fVU$% zVD*py-j2WHMK2OOz#~M0#H(PukD~tI6U|XWPxG{1@Is46(ac&KpQw5J(25;;@xiOo zM((DK!j$uAUn;Lc@3TqXm-)+ve^h`k5r&*6uVx22RdwW>ubwg{PG#Dd-(>4|@y=Nv zQ=Fc2^Jj3aUmsY#IUT&CldrKHU0~M*+`LP1ULROol=PYq1y70n;U)k8002ov22Mn-LSTYG CJ&Q>I delta 242 zcmVR7*_&@Fi--CXml% z(wZU}Ex?3vYaB^pC*^C%WdBy|H}9?#Q=C%2Elsg~-m&_za46L1)E#}lGFo%^d{TO? zv{m!W>d?bKE9yZ3Wj+AJZ%P)-NW8>hrHCzw7}{8?htsQy3e~r=2cKn(;9u;@&2AOY s&BeGM18Zlp^uDtFhI@)D0pM3W0U){q{Je?JMF0Q*07*qoM6N<$f>>N>fdBvi diff --git a/doxygen/form_41.png b/doxygen/form_41.png index a56935372f6c7ee338387390792a01ca180e5f75..8ccf782d581cced99ac3bece840ce00d406c738d 100644 GIT binary patch delta 612 zcmV-q0-OD-1F;1miBL{Q4GJ0x0000DNk~Le0001&0000G2m=5B04($!E0G~ue*z#$ zL_t(|0qvdJlA|yTM2~OSgp2?GZ>MEL0t1=d>{jj5y68*>3#rvDoL7MV0Qkp<03YBk zK01B40Psi1E5HfaTgu-j7Y2au7>(HQDX~}lg_nB>dDiDO7~p~l-~vnYZV%ud<9l8Y zlZ$fT^$G^~j+6necr?M%?yK|Q9|xYv=~7a&H*A6pRAp|$4`o|z!$)eGo)u2K#3Vcj3u#h~F5oS%vEXNX4a~m% zNmcQt%Yl{;)mQbYlrKAi*B1phhqtxQ$ab5cH3_}Xm25rLkVQ=)TZcQZe?7Rhs-6vD zZPr;y5onby!j?9zL92P<#h8iR3E*@oywe@DW}%Ps%4i9e!Bsa%nV#;+D{aB;^{gpI zbNn&yC6}>Rj+RubJ=z^Q^IE*A-FzIk)qS+vuNUj+W7o_3oZ9{mKFT>I(o9Sy*rwNV z_R+J3cA}km&B58z04G#8e-E0zOQ}$!&0`+%YbiFzP1Z2YH%$!cKz^*as>!zb(hZx* zgDb07i^i+Xz2Dn&gUuqq8BwebN9D7We6m+vBubVKYVV=%&FdR+eU7$gaIE&99`5!$ zxkuM0WHKG|c220H&0c`_xRJEYjKuPn=ii*GyF~}b-=3?Qzc3(zC8yS&i3jit ylyy@y+*WMe^@#=e8*E3)$G_Wm#rrALGJOFkrVQZL4{FQ+0000SORg+a1Q}| z!%*yg2~>^5S0I&=apnN-@WpHr#-^?mT-C7Mb-5*$q-{9mi2%P)w!P=vhFunORb8ll zoAllv%zvl3k=U-+y0Uj=Gzo!jfA_kWCgqyKv`Z&Dw7g2F$5JJUbC&UFNK$v`sj~`V zUw#XdMa%fH_R7y!pB9Yy-q)Edd)$g8IZY2mt28Ck-(_^e+IN~c&0xW=>}GcRK~}8SBIWzTpRlKL%kYt7-)R0000;;$e*l9? zL_t(|0qvbp4g(C6G#!9FAyc}C zW4o|>i2bZ2->nG*(E4F}!SDZ%*7C4y=mzNvp9syxMUdkNeqKdm6X yt~%#u6jNT2*;+*Q&`f=e3ABIQ8UTD$o=;z%vI3AyY1aAx0000O7EL>~fUVQh2%+eT8xzf>lvEVH024eqg;R-*#|{O3r$H=XZDy!HnK z@N2XRQ@;WJGL_d}b@G%ERRQ=C_Md7^zTG_!(_p{qz*6Osv-vhs%K*=q<~nNCVdcR= zvXr_652LOZ(b@uWq7$2!Z4C{jf0Mnuc#5vnzmgH!(-4UhV(DUq!_$FCmlQOgn)ZWZ zvC||hQt|ErZD*MgrD{p0QzLLa%_L+mFWX$ymAgO55LsJd-Va0SFfH1z#!7sAu6^p! zIKYpQM=r*8+@dkB&DU|zFoRC90Pi9XQyS^8=rY}XutxjkD8QRA>z(K}Izo>zSWQi~ z-uibl2HYMuAV0=j7n{LXVL0FXRssGT>307Bzr_bv90vT$?!5*80000U^cLVh03Hzl{sG<{tJvMo zM}TMK72pO*X9R%XDCf#myVt+qeW#r*QrRxm0DMNh{2nc3HvxRd8*R+Jh98mKxDHxx@0V;|n%hwQ zp!Fg$1-;or)0izHYcJ3Yw@9-ouk9!m2}{MO$xma7~C(ld5Kpi`kwdg-h0c zfIFgjg{+B&s#30=XeH_EZS+p7QPKg&>dmcBqf6pb-vM3z`EW?{(Q|-DR1>4BVsD%M z!*Ox!`0Jtca$M+S^yvfm09SM9M)J#YXs`|`_Y?7QPX4G5;D(X*(+mK7f^PQfpU60s Z{s3BJ3rKmLb-n-q002ovPDHLkV1lmy`yT)R delta 119 zcmaFLa)ME@Gr-TCmrII^fq{Y7)59eQNOJ%&4+k@l%y8gYKT$Etm%-fA#WAFU@$Fqk zE(S#o*1*kEZ>`w#KUaAM|6Qjqip3np)ysWif`W UcewYh0h-0&>FVdQ&MBb@0AfBQIRF3v diff --git a/doxygen/form_44.png b/doxygen/form_44.png index 8e3b84ebb3fcda834ea80c4a9f10907ce42b6469..955c7c60ad993d9c3da23d029bba696105f93ae7 100644 GIT binary patch delta 1511 zcmVb1WT&A0K40n@TPs|hVZSQrUdW?!vm?% znw8_{6>tN1Kw~bb3$We&043!Hf8aTaj|Jd!OwWVUu3L{}XWNI3Y%nKq+w3%J=yKiH$le?UZ-_itbqM}S5zrI z@Y0qa<6?+6NlQI-c{^%p)qWS+1KI4m64!qYWMk*t&Cz8)s(pu9$t78Nf4obvA1SvG zhno+hOg(jmRZ(jRQI~zZyF#4u%rM5-r}2Iw+`79}llFgwY}D6o)qEg3$8tMk z0`MMtvbn?&zc#oXSzpEWL6HsCaF&|gjh?M$M+s<188fSuS8m!mf0Er46{As?16lQF z>8x=a&BVL#xI}dpB3V$LH)u57e)J?zSe}l=Z3&3xISFqhRDb*9er*OCA!kl^lZxM!m(YsCzV7qJSANvo$ zFCcp5$=v-k>*s4Nuy4H@YJ(E(&oXH9@wo}rCT4D{3&3wdathxZ!I+n8*($%)s{nr- z8dNss0gkwRH>LpodJLhC0L!IiuHOUNs>cJo!1D$M@QCevf6e#nz6J1Kf=1T(q{I%f z_2sbvH?^WZXB;;X*@)H!;D@-fX>;sFxrZh{Yr4m7+&y#=8w)P?pQrmiRf_qjE&xA( zIqK1-?ds1Hx(>(mG+hsK_C6KQwzoU7uUlHXk3$`{b3{DBgw(Eh*%|>}z&CQ58(T?fv#+vdZQch$&;*q} zJxOJVUaRdc9)3|bXR@w%N+1^3r_AD|OR^=?CEraxjrtj)?-j$!taW{x?P)OKbpiMs zvLhBkU*z|;1g~0Kv<-2R%8;kvhwQpyJw>PMF2HM?f5{eE943Zb8Mbo{UXe8mY@n6K z(jh3{^-r+KM#qp8fgh7~)<}jlCz=h6!7bXtV7*e$GTRI-42|>E8`r}X*xhHcqbZnN zE_9N%6wE@_+0YsVb7Gug%xYgu_EuA1iuZb1+TIVz)~+d?Gg&QzTeQvcZ#i|XSEB1R zjMI4Ee+77nGg*byLX?_h9MT-etH>(+bA+>rn8`Xfw?{88TLu4+Y!%(NW=^+|U9`<) zlfqepqE}H?qCXop!2UjyjWV}wXCIT N002ovPDHLkV1k!F<2L{R delta 477 zcmV<30V4jb466hoiBL{Q4GJ0x0000DNk~Le0001g0000G2m=5B00_ZQu8|>He*v0F zL_t(|0qvbln!_LnK%en1rZwLGwgbjCq&2gf-S|n{5a9u$-2(gzz*JI+0DmH`Ywtl!tNoa1u-11v(IU6U}&3f2VJM8g{%d9W+TYnR1!oEq}l6vE6dvZ^A#8fAAME z55MrmXqhGd#lQN9)<*bMx@5}Nv7LnhxX4<=F0liAiRFh1oO26a$H`ys`5&f$nRQ>z z^0@Bw?bq^)04zWCakki9{f`|0m`f8@8%GRxcuf=j?jxz@SC564iS57Ve~iD#%DW97 zh;-8*mfu{GQz~)1H{il|yVSsog@*2YTjl%Nqx4#OIhDUJr;|UP{Py9kCG~**FdyR9u_%oT@m|2`JCQ9V)^EG z#Y&!CwI=##9oe$G&r9%2GXXG@Yx~RsHGGS-7c#bA<_dtB{Mx=pGyduSkEHYiC*%q8 TmxJXV00000NkvXXu0mjfV)5oc diff --git a/doxygen/form_45.png b/doxygen/form_45.png index 7fed84eef3b6a5812a2c2b8ab513efe321d2dadb..2d917751f0040e060ed5fafc9ba784203ec69d22 100644 GIT binary patch delta 222 zcmV<403rX{39bSmiBL{Q4GJ0x0000DNk~Le0000J0000J2m=5B07Z_*{*fVCe*m3H zL_t(|0qtE24#OZ6!uM0#Snq$^p{<=uc7<0=EP}!f0O0R3PXK;U5>Ar2nfdW>PE;Nh zB-qkoFyrR<>HxaOoBJQa8Iv6+;rZkS1<_r76; zfd?-HuptcoMq96l;sUUvnv_QAG%@Nt)-uY@~ delta 1169 zcmV;C1aAAT0@?{7iBL{Q4GJ0x0000DNk~Le0002?0000Y2m=5B09#|!!;v9ce*{TM zL_t(|0qtGgmZU5UEJ*mZmG^(!FF~|HZD;0ud$H>-V`k<=gjABM+ycNq1Awp1M+4&n zfc^>W<(C71XPPNV02%=O<6ZzsLIB{A##{t8fZ<62o&eyf78K$M_TpaBwI|GKj?jz%$KUsVcQ+m>R%AhR6#x!q^sSAD19+JwTuLTn_ve<5IK#k-`IPTlNS$Xh-iYY^@u~?O`jrwe$7< z6=|$F&37$AEynenaH^n;8I6fDVcB}!$lQ?*|2TBV8STpzgAU#!Y}>z8FbZXhbq^N+ z21~UxE9~3h7+cNOb6%&@e^}mYOtYM`XTOjp9{?`Q#yp;q$244e1qN@;tXv~KAVDiW?S>Ssu+B;dHNLN43;DAiI%#`{u`pYhe+^%8Y_;GOhv_o3 zQA2W~+^!1QQJYUPu=eh`(YzAtl_Sp)%*9W_@X7x~PYwrb}#8!T~TwIFF;2mMJQc96T{avfAW&DEM znw6-B)?kYaWor$uf8{b;m}{|OY!$B6ma$+!Mmr1h`lrF}SEyga*43u1ofVV3W>LUF z9sppp(L2JPWquUHh%zgiM6#4HMVLW~0CbNcsfDinQs502uB~zkb0JYGO-?bDgX=??b1)^ zHcQ{Mxb)s$AyMu5u{YAWN3d~Kpk%t#pfg!s7PGb4NxGFMLed|>Cc@-8fb+(3E?vY& z@BI~>>w^AriYYvKDhb^sZXNS!h+(Dh62HPc%mudR-u6AYXtejIEFi5GLK_L2uWKM^)f0nY0ZsJ7DBECSzhs!NjbIM_x&IT>heS?6`2Q11A!eB_@A^l00000NkvXXu0mjfz4SDN diff --git a/doxygen/form_46.png b/doxygen/form_46.png index afc28e71a88124b17745853c60278144b5e94f2f..e23738a975ae99939d4b2cf78f5c339cf1b747f3 100644 GIT binary patch delta 163 zcmaFM_?1zyGr-TCmrII^fq{Y7)59eQNQ(e5HwQD2^tc{dI8iaWGR4!yF{Fa=?cBS( zhYdJd?1c{;?L6}DHkV?Nq+a5pNp}lg=HN&JkS&F$w%z`sR|NZ95op#MNKw{$t!?kZE=Z PXfK1OtDnm{r-UW|VXr`= delta 155 zcmey$_?A(zGr-TCmrII^fq{Y7)59eQNDBcm4+k@lj5s6PH&HRVFvioxF{Fa=ZEQ4O zg8_$jwUKhc|J%DdeeCx-Ouo3LWt%%g!~FFt%4V5(U9$KdJe=d#Wz Gp$Pyyc{v~e diff --git a/doxygen/form_47.png b/doxygen/form_47.png index 8cfa8964e6964d0cfc9ea28fee093edff921d93f..350bf1154a05e92249d17f0eed9323df2eb8c277 100644 GIT binary patch delta 507 zcmV~6b22=otF%R696nG zw6IkG_-#&S>zi9;VyFTc9!TJ5e`~7){O#tAjyk!iZ4}u}pN4`_W(TdsO|Z90+ASdp zFohv!E0mf<$hk4ph2(+UXoWj+`(`p@ST3D-rSruNh1fv|w1mQ)m&hxex2r3`$d3B- zyd_GHQ4@gYNAL$4HK&y7$Y63qNeo8<_YQIm$~E6|*`byr;~Mv;ZpYc*f3 z?#B(~AS^fXFYMMyfjec1?`tcpJ~@kix~%QtaR7K2{!#A54e?;mBFzliG*`}kF6N{z zmDA$MV)eHD6j5-k`AfMMH^hr?N9n_kEo|K(d2cl^j@eYIG}P6i-KW7_?C+B(iuZ<{ ztI;rrd*SMaD3s!;Pv2|8QEm60sj!uO>%Gu>?j8Wo&%~s65dbVkH*XA^q4RR|_5K=; xT`M~k7686r<8DECWeNcQ%cg9<{a>O5zz;=q3hgRKw9fzl002ovPDHLkV1i;j?D7Br delta 183 zcmV;o07(DI1cw44iBL{Q4GJ0x0000DNk~Le0000Z0000F2m=5B09k2TAN8=Q%?J329eof2c=5Q;4W|GA002ovPDHLkV1iT^MuGqU diff --git a/doxygen/form_48.png b/doxygen/form_48.png index a3aad4e06db1467c4b8923db4195b5b60c2cc4d7..9234047ac0147398cb4f413c2fe893f6bbad3f29 100644 GIT binary patch delta 493 zcmVV{Bhr8?wN#V%_a@d z4;_SaoP?I`h)0#pi7FUmLyEn$&h!h+$w_>A)E@AV+=&FNxYTPr)yiToUN)m%G12Bt z`y~Ml{RLKY&dp_$)P>J>9eypu9ZjG@#cf9xiA*?lg4 zix3F6-1bAZEqmS4N%r&7aWxr*|DRiVhh1{B;njrVUXjoT&F`ev^GHLPrL#B0I1FbbW<;^?!0SjUtccZ?)T>jCk={jHl@W$|W%ecA# j@Y48I?c4t)Dgb@}Iw}hB(pFWK00000NkvXXu0mjfbByX) delta 1075 zcmV-31kC%p1pEjgiBL{Q4GJ0x0000DNk~Le0002b0000Z2m=5B00h~tl#wA?e*^1D zL_t(|0qvdZa;rEHgg;%7KnC>wZ+m(K90$ixiFZwEQ%lh{h(SziM%{k_{s+J}&;$G$ z#5n={7WnFc`{@7<5G+0qXCZmg6x)pcEE3=i7|Ta8X?F{JJbe|R*%hM&@D$ZCic{lW zf1s16eYf=|d|K^hfD?#M z_RH!k+ctLRGuY2QVwL^eJ~|#thPSf*Rr}8yFU*I89{8yD0iI)$6ezbQb+gwpMKS1y zt(%;_;w|x;MthR+*+;Bv(HzQH0z8GKVQO#M(`*9xcs^u(^h8^^=;HuSkV?^qhGllw zXRU9{S?_BwmeS#Jj<>-Ne|9;DOOX=nBbH>_zwIi3r`XygTOFR%;+RisaDeMzI=S(2 z+4h1N5Lv1YA%OZTm+(B>5hs%<3{5kt}9$xovzx z^kx(Lh!Z_Xt3Luff8eW3yR)ACYl`=2``i|D(YMqmkxN-)GK(xr2)gU~(lxaYeQY-I z5OJn&5#TdYT6!Dc7>jtG1ez%Ve8#E&0G#2AehS>rukdMp_u?k}Cw%7BngRBBl~2s7 zP4he3w5@}@TEYi8p6>1RcBM&TXOE*b)~-+cbrS=83x1OWe}D(P$frbdUi?l|c-uoI zX|KlVma3noFibAiV5TUaky}i`lmOtpc#Tif00k`mpebg&`X|ivwqb%i-#li~-wu)2 z3%xlgz&o+y6IL~EV`qE@a}d4yflsV4cKvF1)yXfd!E~EyEeunPR!e}l;Zx`mKI*g->;-=) zN&x>7j`*aZ3@6`rS#qETUHmS}=#+a_bCuHGQf=(Hnc|SLn94@4pmS0mfd3wDS2Z@k t1#nf(0PtJj=PPUh;41vG0s&lwKT$j#g7;nq1^@s62>?k&PDHLkV1h5s4`ToT diff --git a/doxygen/form_49.png b/doxygen/form_49.png index a3f3b228dfa8ce0056a5b07366b958af4b5c68f5..c5b9dd7d098bca2b11a228c69b8877d5f7a141ad 100644 GIT binary patch delta 400 zcmV;B0dM}51KHee@{t7 zK~#7F?VZbx!ypVr505||r2PNi4x|JKFquvlT@`VqNRI0h`$D$>Uje+YZ2|b0^r``F z^;sfN2H;j-qzXxg5h@ALs37UdPSXs~=_Uj)(r+ml$>0UMIv(e=8YH3Ft=ZxeaM?K| zM;`^yDW?cCX{5=f&PYl=z^Avj`w?{9Aa(FqynQ2rf|*4%_-W;ixUb`a9Q_(X3gM2wWHu* zaA#cLl3X9dcE;)Ny94-#ln?H9t}taJZA=IOwCbx&0KVe~ X5sU?*$%Zy^00000NkvXXu0mjfw4Iia diff --git a/doxygen/form_5.png b/doxygen/form_5.png index 416a2f999f288bd75e94bd2dc4781484e88cfe4f..37bc42ff1ee3aebcb6a3ad11743493458114ad19 100644 GIT binary patch delta 397 zcmV;80doHA1Kk55iBL{Q4GJ0x0000DNk~Le000150000G2m=5B0HL**I*}n;e@sb4 zK~#7F?VZ_iJxou}>qsaSfrTsOvhxn`myrNILjib?Y3&*M zqssdX@FCI!@E&{AA5}zAdVqU`0Q_IG<^g<*vJdULEdbvmT~CfjjX9@W?#`J9VN+EP z;Jix7=Zu3oR3qB_h|FFdc1~<&f0Lzc<3p))2TrS3`Z?s(aV6~P&1wco>qp^3Tx}YS z)?>3;I!V*iko+M@g0Op%L~4^QuvDSem{UvkdW?ib!cw!9uLLIAsjEGSE;SByL#l*Y zmn|r58M#g!nVV0o`7n8dje0osV#qqwohIE38O2N*cIsVpayMIHi-aMXV|Z<2Z8G!H z$K@Ct_j)7lW2oJREX3+3z!jm*$HjUXKFKMfE*^Kosl$|lzCDKz;3w4k%lmBQZ?DYd r?`yJ8_dUh47=RCO?-{@sScU%pgy05Cn@)*&00000NkvXXu0mjf+AX!1 delta 412 zcmV;N0b~B%1MCAKiBL{Q4GJ0x0000DNk~Le0001E0000G2m=5B05wxF$dMsie_KgJ zK~#7F?On@~gdhxTz!4A}{{L?`9iBR~H}|qtltBz6opd5+0Qf($0l;6#YplE@PD(QG zXEXqCmEC`jBAn3zG3@|w6GIc{``1wo3bkE%ab=Jr0NlkDntQXk8Y9QEyw z%#iz`F~PkhX?nY=2`)R^;G?She`Zh&+hRLwO`I(TTf;R;&RVip&utZBRnszJC(n&? zau7RY#ehUHUvfaw8_bHg=}U5L>#MqKLE>6L21Lg=b>CH+pux^^80~@Hcs19X+7*wt z*iDc;8|fPcy_YaM#3u66*0bWPItX$vl#Y1J7%v!=D@R^^87(4=DEYb;a?1w3s&O)h zGQ$$0v?jk`xWp{Y2+A-yop_GpLv37$W)sN)}1MhD$}icik~0000w36prcF=hsMLDrI$uo`0%z!w-=PpO0f;0*7bzDUg8 zhx_Md)A(c^HxXByegMu8!^_A#e+?M`eGILS;v;7yS6)tKzueFv8F;SQ+qCIdjw2h3 zb*t>$rb(6nzQBd`(dT@KlOnVRBKP1n+$b@r2(pwY0-Uhu1~={OIFAMR99Px{l7s%g zDRcLrYwdE&uEHQerN98r*bQbq?p6{2zQC3Bfn~ORQDrolxLfie=+m!Tq>df zTI67}#cYf7^XM`GdbqMami$QNN3pkDb5yPh+B8*JJ%4?@VgU4UVSOOkrP3DdJozv` zno7luDW%i^Xx4iMKo2gZl+LI++m8%0|2+5Z0B}YndCEEG20*jkGXQ$>tOV%c9_7;oD204dar`gT|)yWgDQyu=}{upMYxB zTupJi+hEopQnw>CjDF_^=)fw<+vM$>viylk<5W+gq2v%lyy0hJf3IU4J$~0*EMD2A zHz{gHGUvO{wd!-1^=PqTL`+arV(*GZ66c#Sui>*;A2?&$IWpFm0O z7M4gWmdfApgtAu55pE m*eoTd0e%lm-CY2F5B>m&R1=O*L^1II0000f}Wp3NxExjQWzXf%VTtDnm{r-UW|BuOuG diff --git a/doxygen/form_51.png b/doxygen/form_51.png index 07f206f7615c61723cbe06e4966bd199f4a740db..379063743fd26008bee9fe51447f744abd49bf2a 100644 GIT binary patch delta 1280 zcmV+b1^@cw0mup=iBL{Q4GJ0x0000DNk~Le0003W0000Y2m=5B08tt(xRD`Re+0Kl zL_t(|0qvdHj@&v7M2~h`-v0k@LrPv`_ZlR?y~x;5^>mLViY$`FSAZJ;e;clIkb(uc z0dPT{!Fzxk09VAx5dm%hT;Z)BNdPwhu8`81+|3WbQwTMF5s3!40dPW`42%H(D$E}x z-v~Vb|16@96Tmlc-5<^IKg$Hbe}8~k^fdr{0pFhoxpBt>@E*UD34s3%W?TQ-8tM8A z;EL|dk6*f2p1d>??e`++@+a4N5~xnAE6seTT-j2ESM>-6j()KdV#E_=)Q@kGQ?^Glfz=_^}rJpf2gH8l$}LG$oQn zWuw%Ca?|UjVzTfAw5uH0;>w%;ocIalSY9`+glt~>I`_N9e~GF$6=SZ0qv(%()V#~B z;(R1b=2B+g=#RcDWmxU#SgHJ!CJ}M4v9PcPqGU*nQbIv=LRg5(Ms*;Hg+;cPIg#Ci zYHSCJzoC zev%Rw^P)Nof1Fn8V&ToJvnJ0ePJ`>0ENUVqLzK$wXLYB{FHNmv-DbH`2kML%gpR#zU=aR^8+-i4~)*-^#kw>ldNdG3^tu@ qm{~~zxKSHSRzpdM;VvM6pNLodUg2LAT0000+OKL<0Ad~ScQdZJ=fCPT2Ni(^OyD5>}JiTzu1S;hy;KYZG1qv^=@L+hm4%5w@Eoi|@?Tvu>{ yr&_JVK7HAZ0)gFKzqYO}y1XY_XVU%omg*UY8FeLRhKK|0VeoYIb6Mw<&;$U#ku}Ny diff --git a/doxygen/form_52.png b/doxygen/form_52.png index d4c8845c146ce96bc21996fa5502d1e3cd98241c..5c3cd91b69e9603c881dcdd1dc26b909963c3412 100644 GIT binary patch delta 366 zcmV-!0g?WR0=)wviBL{Q4GJ0x0000DNk~Le000160000I2m=5B00X~L50N2Se*r8> zL_t(|0qvb>j;bNso z4z_d2QQZ`)Lxr8|k~15fAKa{!o;PEHce(k>wo@!N$-MI<7=RD8zNH?#Sfe>cqWzSR zBVF|5oL6>2l}UB*DvXj)*{!~y>v+KaxGCRry_3RLGWXEsyL{V7aHH``L|QP}$?o^a zzI(P-sM{nenalOQrIFhv8e5`RZWZ8_GE%nKV7@~H@Y_l${TaKge_KiiUCz|;FaQ7m M07*qoM6N<$f}dKfCjbBd delta 185 zcmdnX+{vWa8Q|y6%O%Cdz`(%k>ERLtq~(BEfP)!Gnmw_9Fi|n8o}t3i#WAFU@$K9| zK4wJ@7kAASYuA3?|CZ@$Z}zUgA7`g1J$spOjGN)Wyf{_{vDQgd>0b`o7`{KQ8tdwC zp0PNOJCE_lihZu!d~NrO+H3bW{-5>xa@3xqn$21Ppmr6;4_cdpu*OX8`ywwgbTX=I7VA3CwZu z8a~+pz-l>%6fyv;cFD84-3V|+w^W5p1c24HuN0BL0C2aIDgdn3+&;A5MdCSmIfX{Y z9Sd)jWFsreoSiFmh)1^wBcG2se`%`@yTQR7e0XaoPTR>^Mnc-B6(S1%++}O-v!yfs zT>e=G3Bl+HuHN-#jDavA1Y;m{cd~qBnYajFF+v%mvm|B*U_NxtV-o`LoTV%f)@|Wg z^I*X$iB{JvBY`g#vOwfAXXOrILXmVd&U#rT?S~4biuN{%O0BFL1goU|XLy2;cGIDQ zJjT+AO1h{5jOF|N+(o4}U7%RW3Q3Y6wv^p1fjYEIzz2Q#c^H)kD;q1pqJGrS>2F4O-ei0U8Gj0S=@k00000NkvXXu0mjfY+tTi delta 168 zcmV;Z09XIu1Ni|ViBL{Q4GJ0x0000DNk~Le0000I0000F2m=5B0Nz+{Adw+jegJ4m zL_t(|0qva&3d1lAL!aYB?$6ErZ@WOt+HPz&5E23z%lHNWKV$$8Ez@UKp#l6;)vCGx z7gajsSiT`<*ackN8rIF_dLQY=G^1?fnUo%i;XAh7ss?-|;%v;rtK(6QsoM94PrLxi W9s#+-+vbb_0000oXx_NA*w;&$%09{J93IMb#5pwUQ@qi=fuG z8{2c^?PvBdp{PkU!Z2nbkzFiw&t}C*;@~C3y^9tMx6;8WG?u2ld>6|++p+iU1+1Q` z&BTOwq;GOEIf#luWXo57Q(uOwj?O*go4!Z^JZ8aL8TaMO`w)`WD$3|OHD`AvQL-1Q x=ltScOetQy7q5l=om>F$*`DyGpMH0;EFX+!23_6?nqL3_002ovPDHLkV1jLFpsN4? delta 490 zcmVi{QfwFc=S?WB?e72+R0#L$pkBxVR<>@E1e?7z{IA0q{Lazdt`MadA1; z7`v4(G!d6SZg(CY^;_2stN)SLf5<+U+ug2C^v@6OZ0PkV#QSyVRfE)1ivhha> zfLByn<#)@b^{#H-uF2wV78AEQ`M@5P7OixdSghL0cUr7X-gBF@epGwN(QctcJzS%8 zlJ#AJ&VjxmZWhbyZCl*~;1!LQ)#|`Tuh8_#_NI4UH)bMDc9lc2NXD0_e>HTpTgu3z zRB_FGtnY`Agt%!I zz+0@X>?BZ;HnHn}h8HD&RDS||icpVY_d;6^H#=tSbgwc1d|giKz5&Q0Kb7|p~5?eHe1L_4y7MOd$Z6W+S5XE&O0^RAljRS g=6xO23IKnCUw_aF2}DJ0K>z>%07*qoM6N<$g2?aR2LJ#7 diff --git a/doxygen/form_55.png b/doxygen/form_55.png index 3ba11c7c4b67073b9d53d385156deffada3e9e7c..50bbf39b587515d678e2c3eb7b6707f6ad99fa3e 100644 GIT binary patch delta 372 zcmV-)0gL|Z1H=O%iBL{Q4GJ0x0000DNk~Le000110000G2m=5B0K18Jw2>iOe=|u$ zK~#7F?VZ_ZNRiw+1`g)h#HnG{xn2$O4O|D=k;#I8hW}27!|1;KvP{+1y0S$x;)gk9( z&WLd_I2-AXx?)WvUmSLZ_0QPAfA-ASWJREft9G1tY4p*PvATo>f-N`(SCEZ*$X$O#jkmQFnLPd`u$LZKih^diowR;dj zr>655?jnMzn{Khx)wgVuF}-m~Px(??2eTW>2M0;2C3e%+8z~w@d=}8`N(4Xdg-D)a z>}%FeAg`LTuPO0ZIjgQ=>4Y~;ckMc8jXqun0C=`vu=hO%0E>OXe)*}N(O!| Sn^GD80000K?y delta 412 zcmV;N0b~Be1MCAKiBL{Q4GJ0x0000DNk~Le0001E0000G2m=5B05wxF$dMsie_KgJ zK~#7F?VZbR#2^esZ!igjNBIB0t zeFK`?maJkt0LteE0IQjh9J^DnAlH3cU~`FA09eiY0sya;Pa!b}03PNqA$fT{O>>3% z^n=kd8~M>-tZo#p@8|)Z{|SF@f3g@!MO+O&7*6UtheXNosF9$KmzO z4YV~7uQlZ{yY03Bz~^n;!S*cyfRCG*WAXl*1OUIZ8u$zKxCh_t+O4qw0000vp0oVc|iBL{Q4GJ0x0000DNk~Le0000p0000G2m=5B0E|bsfRQ0vf5%Bg zK~#7F?VVi`!ypKR*8u*+81H}ELTnP-(P`fL=j4w=BnN9OcS&lGJj zVM?MlM z4F()6)304fV*c}gd($$rOq(B!LeCCt`pm}gV`IDI;#KCe#IqZV*NE$L#)1n x3!Z%)@+CIVUSx|%tn!nGH+Q#dY;Hfmy7my`gMX9mn**(3@O1TaS?83{1OO=zGz|a% diff --git a/doxygen/form_57.png b/doxygen/form_57.png index ba5d33ad92dd5bbd6ad775f6b5d97b8369af40ce..e5fac0a2a3318091a5890264b98468489739db08 100644 GIT binary patch delta 129 zcmeBYy3DB98Q|y6%O%Cdz`(%k>ERLtqqGEKolc$SgNCo5Dxt+WR z6nL0>6&jc5zS*BE@4E8lp=ti-HZw82S;bQ)Fy-jgl`K}w10f7UAHx(#r%djD+XiSlAF=4BOG}OtjBFnP;168)JrS$s0C1#I!PC{xWt~$(69Bh9HR1pO delta 1501 zcmV<31tR+70iz5diBL{Q4GJ0x0000DNk~Le0003l0000Y2m=5B0M;wSzL6nXe+80B zL_t(|0qtGea_lG!Y_0};;s5`3TVNaPVKO;YXJ@8rmsn0>W7KL%tyci}-vHp>H4_Xl zISl~swy|$-gWNuX2mpSzc>}BkfcM+bx5^4Cd?{O)Rs#TW$l22T(n3$LPWE4CSCkz6t>FqlJ^Mv2UBF{b_D9KsZ!#(*W>bf2O6N31IyY z0It?=w%bZi@x@r_s>_}e+pbN4v*WQjUYzO2*=~zxn;HQ9lCMVB*f-*Kj?ETE66z*_ z1ps%m9HjvID->cw92Ac0PN{hsij#@51Z_tb(uvNVsdM69-!b%G)iu}eVA`8`EYZz( zN7v9dLpWJ#Ta&n&&g}p$f7incRnA~BjtFj}Sjh}#ya4drE`c|6S8(Bup?sx}xD*`? zvSMG2k)E!RZ^_dm{9Lm9^y~ulOqx~*KQR!_Y2&gnHRk~E#HKWLd=1d$K$+O?;7FH_ z*7LCoZZ)Y!?&rx(?F7}e6#(4LrPvkHh#Ap>dx@%SiRf7`7P@S(e-k?^`e}AkNv-mW zw^u>gF`SVtl&&LVwE?(Z2>$~*l|^a=ob9P6goQ_i2!62gt^B9W;$gZ%-2Xg$zo_#^ zX0Agr|+e_gewxv!Vnp}zdy_a4SAf+RSKbX{_PW^=0$LQ+E4fkN|snR;8z z%}JLgpK@@08uryyzf5Ay9{}y@Ik|$f{h-_FavQVCdS|E-lweAU!l7%3l`eJo?&3C# zR8jH(wCnD>hH=-EGQbvL_Od@ZbvP|_rHB-YGL-yH{2)7Jf6hU|ZSvPi*HpHJJp*cA zT{+HD3+dXO%PoScs|DO8m(q-clBQ$)744FS*tB( zDlJ>2>+)*Vwno0yEv)+eeJOmAi4}gGc0sk#mi!+@5SNv5F%L7gL!KS>GH59}QSFE3 z*(lybo%)7afB86h(bJH(ZBaE#OY$sV#mD8KOFaVUu1T1!h5yX=-k|67-90BxP|F+Z zq(5HeeQZR&*Tf-++3ez`lvof^SFHC+SDNcoekJA|UF@BHk`v1rKtC>zoe0o4ahWOjb?sX;dz|Z}##vRb$_+_#df{#wtHKe+fZz!r8mKDCct=NIQ#6$i9V> z+_KzRgDX4pi2wk=-6$V2X8X{OK34JZ6vgbT8FwYotSnA!e(X<`=bo7dtD$o5l(0-L zsT%v1gLgNNbWL8Xpsjey%3D?F=@U@&jU2M#W5rEw$ty=SF-}gz_rVlQ zvT`nRe+mFsGnA_P8#Vcp0dq!%p9oE*q^4uw{|9uc8ZU zDgKXC7ox-RSY2r*gA|!iBL{Q4GJ0x0000DNk~Le0001@0000E2m=5B0GskRypbVVe*!N_ zL_t(|0qtE~lcXRJ3v`2k3jhD#ZW>%19p`H9@v4rpcln4RbQLkJw%Y*((72DWpaKxW|WS0QfHI(ggs(TeMSESlmTo0C0J1 zB0X#QF#W^=0B_Me=)*I~vYsb#e^2MmEIK7?{D~WbDGL^{G9JUBo?eIsExK^mI1fl){T9d}^VgTA`f4V!m2`>lv z^aa#QF~S4DduZ7$PZYLo1{vjOc}taHBe6uU`H)Bnl-pFKIhj?$H45kEzHJMaTRQeL ziPA)PF9(`r*4g>O1lbwPncNDMS{O^8LA0GqPj-RNGfwW~|N5;>&a zt3;lT1!R6Wrg|9{h!AF>7tmee1f{*vu=4u-J6$%DwW4!`$Yb>0y%uAUg?wSByL;8t zGGtSUvi^P!W#`&v7e#i}gcjs@+cynH5OkpVvaVHQ+x!HXWrt$`NpOiVt1QS~bLP}T z7N`A=wvcJC8TzC>r{Fv4{Gpol(=qn4b^5p0Z$DHH4|!|Jm3aUF N002ovPDHLkV1i1OBO?F+ delta 187 zcmV;s07U=51&ab9iBL{Q4GJ0x0000DNk~Le0000N0000F2m=5B061}^WRW3Se*k(( zL_t(|0qx!04aFb`hT+$L+p6rp?SYdt%0)*YA6%8kvH`$n$CT241mH+mGr}VYaFMEG zT!2du1Ec^hMbxeW;QF4m*0F3+-#Pg9^3(J7mGR;6yxm}<*y3B)SPkXXxgEc2<``-# pb`7voGNH$OYWt_@{e#o`0m_;J5sG_pz7qfd002ovPDHLkV1g&!Q8xep diff --git a/doxygen/form_6.png b/doxygen/form_6.png index 5528b1c0058a87ca5650428e948f194218f083bb..14ac8760c9c63dad3c36360fdb500b0d91de2eac 100644 GIT binary patch delta 128 zcmZ3-RBt>F0^6nI`60jUHbiBL{Q4GJ0x0000DNk~Le0001I0000I2m=5B0C8|Ixsf4Se*u_D zL_t(|0qvdHZsRZvMUSXmw&MT)+g{pElVDr~Gnn?F0HKRW=5o2^9pKl&3_<|7Mk+F} z7~=7hvdm-9jTl{@i=3nGQJ*CH4d4~YCaiM)6!{#ozgl69q`8!hUTm`>y4j;`DdYtf z3p0?n&g{-ptdF$)nRgBw=sXv2e@NP2J=2Ehn(lI+qR~rVrt+5GYWp|4rNchC^0>O3 zQ6zQ92;dr_mBo2H{*pcVokxumPi$p#oytAsr8y6gXYJ&k>z=AAIHm5d%@kE|WvlsY z<|mI+O`l*}4*R`1M(VkARVUneOc|K$P0j!>@HlNGjb^XsoVD}Z%#~Hsf1PTMQrWyk zWuzOH$O=2PV~LrV~-V*{Ir_^FCmNC?gKE}AIqNJDZns`;A#cJpyN-LAt@-bPF zteU=$^_W}3*GA)>zOn#cL8i_D@D|FuDe*PlW0oAJJ^+U}3EAZu R>lFY1002ovPDHLkV1f)P;uMEN(_d`InI?b_exQnRxVMradfT&*6!BQB$D7VM+Z6deoz21x3YM;5cBjvK%b&Av)D+@=p;8U+8F-{lK} WV+GFTbk^Mf0000 z4F()6)304fV*c}gd($$rOq(B!LeCCt`pm}gV`IDI;#KCe#IqZV*NE$L#)1n x3!Z%)@+CIVUSx|%tn!nGH+Q#dY;Hfmy7my`gMX9mn**(3@O1TaS?83{1OOy~Gz9ERLtq`85Zhl3eNHkWT-Gf^=rg2Bnt#WAFU@$KBx zybT6C&U5nv1yBCFy{+Bhg@~QaP5*g}2LvZQd!9FMvE|OMC6|-BZU25*vMce$ZT7^f gj|ThqDQi|T+7~l291i|s1T>bx)78&qol`;+0CjXPA^-pY delta 705 zcmV;y0zUoI0gVPBiBL{Q4GJ0x0000DNk~Le0001g0000Y2m=5B06}y12$3OLe*%0- zL_t(|0qvdJvZFc-M3?Ud4F3PWJu(<$LfDg2Qxj@GDCrc0OG|3G{R;3aVWNTHG{7U6 z7O)oJ8HCy30iJ<1HW2`xfs{U*2l<8CW*I?%2jFJ~3E&whp$GUL%mDBhlqntGb2$Rw zZ=pYW*TJvy+XyuN zC`!vb$RtF0TaYtt`Dn6J>y!l*JfxssYMKU!)ZMGK{C>ittYe^?WY zH8WMCTS!x>Vmu3yUeXc%e;{3ViMUa%`j@{JZQY{d*7%;k9uH|2xu+jClQ=o{0`@*O z9k)bnN{$#x(Kd@xb^g=nrI9Lx`he}t;N$HpN*mA1+qa#+Ulhk{mGpg*D^+@F)~t(y zgR!`{W#KN40q_Q5%#&+`YZ?1$QNy)}S(I^dgZSS*da}5ufSU^BOtt{(o*xSZBoq=TE9_CsCUsM!0Sm09UAztxUja_iq94DUJ;c;8Pgs+5dY2 z;9D^M<1q&K2k7k;;2*<8U#44|HNMa922YZ4Xyf-~{^Dzk?6ObQFZ@Q##QHVL?)BZZ np`>Pac!zfWWDNkn7YP3WF&GaEyX5IM00000NkvXXu0mjfN1RgX diff --git a/doxygen/form_63.png b/doxygen/form_63.png index f33abb4464008250f61a83f94a7a7b6763fd7a85..66a986407b29ddcbd22177d4011685409fb2a55e 100644 GIT binary patch delta 153 zcmbQv`HE4oGr-TCmrII^fq{Y7)59eQNJ{`Q9|tp#WKz@dnWz|*&k*V9;uuoF_;zj} zSAzkM^Zhxut|{&QpDVj!%PEHs_9_#;Zp?FM_%Tt^V_li~&1)v%nS~KH3uigFtEF=M z>Z+|#o|dX$R^$BV<3k2fj@9OK8SZJuhHnk#`Y@B3^)=)A9r|}dfVMGsy85}Sb4q9e E05P{UK>z>% delta 1102 zcmV-U1hM<-0hb9OiBL{Q4GJ0x0000DNk~Le000340000Y2m=5B0Bnd%-jN|%e*^|e zL_t(|0qvbxmgG7JM6YJg-v4eJBo9iZot3Zu>bX^>&PmIHPyoR%z&``{3v-==6fD4F zZCt>6fahA89TDKU=AEBN0M9ikf!RHr1G&CmMHT@bYH>C&0X)}?Pyp~Ob3MSL%{Z<8 zosV;!`xfArnLY5^<~{)Lc5-0We=+7YEbBfRy7+e7giBgJc2V#EKU-J4*o(=uZ2`Pn zl}DLu_-TLPmsu{<4*>U8)q!7+qw{@aGiey$<*`EtaBW5#&h=lkT>)zkASX5nYQy{c zg0ep|6~YVblFiG=0!Wr#rs9BMIYMr^zGA<-;vit!T%XD8#hYGG; z^5DRCK1n6@F^wVZwRgpVe~DA{{kah&?!mz%aOY&-|G(b2|EPiEig#(F|e^(+XYZ1%4TM~B;(w2^bf3rEcbCBP4gHaC7 zj@>!fJQQxNP*`bA&4Cqq4rOxPwtgD-swfQyljz-QjN65B;~*^3NK&RdjA4)twiTZT zo7y&az0jU~;b7<)y4)#a*}c>Q&5`u5;LF8QbC5E--B$c&TL2$yYB*A75?D$t&dF@r zCcPlIhQzqLOA>dne?Ba>JA3;pJ!nss9Ly$<0I9PrCm-|x?WS3X9?hiNUaDi`pr2-` zma)kzzy~X}n>jl;uxpBvZ6gWG9QbJpW{4_S-MTC}?leTHFeC3y56xUK{XAcc>GovC z8|Tqk*^oDr^s3NQly_K%iz&BuDuYJSm+`6OU5zt<){Ml^f5BbL#4*zMVIj`6)U;?P z83V84qKp$1-PX_w;~1J-7iN*Uht!-5mG0yVX+*vFeJ-_|bS*-Ieyv}A%YhFg=_TYb z0ZqS$6lZh!M$mpvTc_vCEB3AA*Z5A&XyQbI)YOx zUmZbPUK zSw$YVF#_<}qDANSsp8>p>i~nt)0Q~=KQ(J(im}rkqIqULz zCI>-goQ}Ff5+BGxo)YHSbs!wLG2vrg(iH3OoQeQ{Bx^=;AMEkdh8O_;8Njc#Kaj&3 UayyB!TmS$707*qoM6N<$f|3dmrT_o{ diff --git a/doxygen/form_64.png b/doxygen/form_64.png index e79e5c80cb383c5b9eea3f2fc67f0c8870c78ebe..8a976d4215dc361c5019f6b5cd64371009aa1bbd 100644 GIT binary patch delta 128 zcmdnae34PHGr-TCmrII^fq{Y7)59eQNOJ=*7Y8$t4Al$SI8iYwjKRUv#WAFU@$KC} zt^*1@%omni-6p){`~J5Hp?_`(GBtjmc!!bUpO@@t-Y e*!0)T`Fqs* zL_t(|0qtE~lY<}(+(3*FKluOu_7V`a&b76@x0_)m3JF=34e$&A|HOih0PwM~G5|ca zC;;$)Ab#42&g_{Tf9<3)bM;>BZetNoWNXf|!!-KoyN^&=e*qkjf zFv_60_D`@E+>l9%U}Dg@oEvW9e>krg3`D3W8q?BMn4-5PnuqJq8o}psnJeYKlm(RS z19IioSu68{P+U6hEZ&+X9_Bh0@3~8h)3a5Yeio<+%|oSbgm)c~laqd}LmlYi49@WA#q;wD5+)cdmt=VGd|g4%&YNnN{5bs-X2<V(L&?BV7>VUP-OtP`jRQ}bcWhbSwfLxCmsNN;aNxm zxO}HbCT*{y-AKHh0C{jZW;|!Kf4x;^HWO(Ks$8wHZqjw{BpeS+`AI@?=rQAYRV?;7 z*C6-PI={U668QfmWw9tOPgU!OE?Ns7X*}Q=OQGw+s8qB5t{5h_8j+5f6#(PwcrF^T zQ_sSK4|qtS?E}EVg{qXI;_;`-dc(_JY~VfXiI;{g@JDdH_^BIt2wwN5elUrQa4SQDsULecMsH z*Y0Dx*t}HL`Su27*Ah+g;{QX*@@TS+inMrnPR0jrtBRqiG=n-`myHiPr1gC2rl%By zzQjHC`#HqsQdc~Cq_Y=(E*Sv#d4`F?3eU`a{nz=j7|-i55!UmX&-Dj?y$Q-fN&xf# O00003mXMya$}>~F8|?=R za!b+}V|LhA$S5zCa9gToSS7D1an{vEp)SV(_yD#fr&?>>VlU~6BzhDon`FpKijNZS zvyue3k3+a$9e+(SM)ahf7A8VI{tChHQ{g5Kud1}!>O-UG3E3^jvJVv-e_i=vIQlQZ zcd%Dd_64|v&zY3dT)HX*6X%@NWj!(G;6KOlOOk$c?peD4Z$nZN;8Un4BwcKm!AM

    T~ zVIj7Vl<-Z&!I+$vhFYbZF!ElA)f%;g)R^f-bO64>-EjB)rp)MqSf3>==DP!_!@JT|i?iwnv zzBeST)Savea0N9;HMFxhFNBIs)sv#}+D}7k!4hvK8TV2J)tS^Ln0>PbxPxtU)oc;~ zm(a5;?J05Wp;T?w5>$EiKYgsPwoCx{CeoYc4e;ksC367&Zsh-jmHERLtq$Pk@fP)!GTL1E2K2b5Mo}tRq#WAFU@olUp z-(dp|nb{S}MSuU_XVcgwWWIf#pf$(Y4@?X{j`MxyWRMFx!6eF1&ilr*n<4Mi=DxGS ztCSq#wdL>IeAcL(s${$3e9^=wRw+wP2xb`@~P;>e}|I`ycrI nVEQ@rL5=5~c%%F2|Cp+Tm<06{Gr3;?-NWGN>gTe~DWM4fA+bWc diff --git a/doxygen/form_67.png b/doxygen/form_67.png index 030d1fdfb51108bbaf39bdb936be9649ffa591d4..8f39ef4d8b735cabe15dcc3d139bbaadb7007cc3 100644 GIT binary patch delta 349 zcmV-j0iyou0;~feiBL{Q4GJ0x0000DNk~Le0000)0000G2m=5B0GQG#VUZzPe*qgw zL_t(|0qtGOc7-4eoB&3|2mk-K%_MsDw)Wa>7n~DCLS`lp_WcKxz)-87Q)pZru67$<` zg=w)7O#BYV)lAGjBo8e%f{_zaa4KwxW*zp0B*l~JOzysvCdoX2ZQ}NGG?<@~7zv#q zog+9ol96sO7pFR!sk-KzYYmG_oK+Qfrh28XntzmB8%N;w-1gd6*N;Pto&GCKw8>jF gfIlAIud)gI1FUHUGuTS7;{X5v07*qoM6N<$f+*X1v;Y7A diff --git a/doxygen/form_68.png b/doxygen/form_68.png index d70d638aa2c356f5e8c7db90fafabf1aa0ef0218..ba8812374331363cf99354adb63b9d88b045ca28 100644 GIT binary patch delta 553 zcmV+^0@nSY2loUaiBL{Q4GJ0x0000DNk~Le0001h0000I2m=5B0HjVPv5_HKe*xx6 zL_t(|0qvdLj^iK_!{890DdFQ9^i#y z2Kb;{9t*Mqc&Q=)A5?KwBy2){&-u+`0PiVFL0tSKfU{i6+nhT zu9S)reW)zG3|}d8jg;&F`y~%&OWYc;)8F+1{@N4ZG&x!A)?Z|+V+-i+f6^kdsXcQ0 zaY4Li0B`l103B_{?%R^OO$om!(kgyS(F*h=16{0*_Bsye6wT-W=w7vJZ^@z_1Nd5M zDYaVG>`aW=jvb*^#XxHK>6K00jywd&Npm<`z-Pj81bMm>dyo2T6ZqcdoCDSF zF#wJ_Xv`;oC3}4a0DSKle@=tUW=-n7eKawEdv5`kZO%o*KI$zr4uDe86Tryc1Hd0Q zb=_MdG_O%tZ&{%q;|AcdVhuJ!j%zQ*I!dSppmG6-PaYG%UBk>OaLmS+BknTRTJ*lH rmatSpSfZ<&HRT#gzdvn&e@lM=n92;@jm_RC00000NkvXXu0mjfWQ_Sh delta 853 zcmV-b1FHP@1fT~YiBL{Q4GJ0x0000DNk~Le0002K0000I2m=5B0Mc}nI*}n-e*+Im zL_t(|0qvdFvfU~ShJVq)h4+8kBZ*?1WuLv1i_Bya###kaKBQmb76ASk0Q`|g0Ptz{ z{wpPZX1iVjz?;3SJl3?y%>U+lD+0jXTmXPiv!mZT`7DHTk~Wv>2>@RiWdL}#Ah_4o zCTj-({G@FF@MKZ3#{fa8X-@jie`W;$-i+OGc?cYaU&Buw5&-T-jl26$K5d8$NWQkxeVl^9)a zsg-+Ukx1f=kerhBif^cG60;O(pS?t8H!OyMKP1)hw;3b1cv8HtB0S}md-J~lAe#dDS^+Ng}ld?SU zMfwuY%p{Ss@woC3e*m7Wi(c#RMD#c~J)$k*eXZMbJHgk?8JA`W*7cGGV12si`@Qi( zCihLpx3wi0ONP8ur&0O<;Mu6COqbkjcad?jirxVVJg+DIr&UVFZLEztG919|iKB-2 z8LI~}y#~AY>FX;C!0oxFEbhP6a&gl|xMv*oY^~NTMdYN%D;QrZhj%R5)M=0b;P;ye fOK1S#@3j8_W`YwpsA_*u00000NkvXXu0mjfOsbiZ diff --git a/doxygen/form_69.png b/doxygen/form_69.png index 602439ce48c6eb72b315f4a2d2a32df45f95ad5c..8f39ef4d8b735cabe15dcc3d139bbaadb7007cc3 100644 GIT binary patch delta 349 zcmV-j0iyob0jvWdiBL{Q4GJ0x0000DNk~Le0000)0000G2m=5B0GQG#VUZzPe*qgw zL_t(|0qtGOc7-4eoB&3|2mk-K%_MsDw)Wa>7n~DCLS`lp_Wf}Wp3NxExjQWzXf%VTtDnm{r-UW|7(y>x diff --git a/doxygen/form_7.png b/doxygen/form_7.png index d47c77ff659f58ae990d27f6d366d64a57a60e92..ab2473829d2cd502ae071e685ec50c58758235c6 100644 GIT binary patch delta 396 zcmV;70dxM50^0*2iBL{Q4GJ0x0000DNk~Le0000?0000G2m=5B0E-1_m60J@e*sEK zL_t(|0qvb>k}Dw$gFkk9<^H!FnI;KcNlo7SH-9MH3)n&uJ^;X9id+l8|Alt|Z&3ql zA%5Px)vt$=;=Tr}G8Qocx0yY4f#o||K9xt8v3OWjm;vswYs;+wzeY)IfVoXX_2X;- zm}V804!Wqt7-H%R0JkVKF)=bpe~2BqJ@vS%;aOs^(@Ll8BQ0$vN8jUS26PCNMzp_0 zxpkkx(vip|UZxtirZ4a-bcFz2!5dQ4#9l%~n33rufI>Z+9J_8jHU zPzl@q1QW{_nEHYA1}4?j=sndHySOJo{QnHu&NOD}e~B*kF!dEY5THC3jHw!PP` zW+>f~XPh_X>Fp_V7~?8`_r+E1{wyQRe?P;e_U^;$%eOg3$NC80OaJ(0Yw)^lJ{I#! tw)!u6`&Z9sU-)LNIT!U<3$}AA%st$o+3SNq|3S>EF&OWkM>Zp&N1lfdBO1BrF;LUfi0RxzLkc z!=_;cc=6nkE)@evmbJVJxgAyho#?u?BnME>awPHU|3yH4JlrMi>k}5 z_yi2gnb-yC2iFeVL>)g3F@V0Ce{D={y?3C+8*q(g?UF-*BD8M6VCuHk^QbXPM-^HF z=#QdQ^eyxylvJoec?0uzZsh55oN|%1y@L}v1gV%TVEU?$w%u`|v-V*ba{+L5m3SS1 vzpEMJ1911Hlt$lXays!dQ4i{7^Y;H2<6s1UO4p~300000NkvXXu0mjfDzSt@ delta 198 zcmV;%06G8q0+#|IiBL{Q4GJ0x0000DNk~Le0000Y0000C2m=5B05CtFwvi!Qe}+j! zK~#7F?VSq_!ypVpAEe=v4!HkqH)y75Yd7rzmMj^?GWHDs{$UINzqpMAaAMp`sjkO$ ziu7U8-2>oEd4*>~i`(BUS=IAzTIe#BR>xtfgm!p_eP7hds?w!DTZv=6>Z41uRi)BY zkNL^5UbaDBho+cjfDcLvXHq)$ diff --git a/doxygen/form_71.png b/doxygen/form_71.png index 945be95c010cac2fb36fb1364d5cbaf7a65d4e25..97e9076360d20cfe4b31467127c397f0b74d3161 100644 GIT binary patch delta 976 zcmV;>126pP0h$OQiBL{Q4GJ0x0000DNk~Le0002D0000Z2m=5B0O3b#_>m!6e*=k0 zL_t(|0qvdZlB+ljgg;*~29o!G+m&nxPJ$EWRAzS0)>8CL2#(xtNv*#C|54Zo@Yi8j z9Khd(cmenc7^^D90pJC!GXU>!4FErZd4Z7K1kgu}CZ8#Q>#5TLd;;m9m!fZzauvnp zfB-LX&)YeirW4@PkiaIVO-p&&e+pt4_ndp-eM-x_HPMdQe^Um`n6YzS#Z6{TduxSh z%R^GFzs%c{viYupcX_W9Z&-qD>R6Z;B1y~t%eZNPko(CEB;u z_Z@F5MY8X7E0kK_0B_Lpj@e(ZZF>WJ3hICx?(Fe>pu7H+s$?RwD#BhIO}Jx*_&#qvt2xJPgf&+!1jXFWNok zNsw9GA!MCC0FN+ZRW?SGSJ&|A#Rxj~@6?t1F3=3{gr#)-c=N0_?mifS{dPIks#6P5 z`zuEXuHSzTyjO=TgiI6(oU{66y^97VmwF40!|JQNpZ1hMCa3K*e;Rh%+D*5_mHcm< z{L#^mc-zU^8PQtZCuG8C;#F*PDE~&$x(MdIpM!RcKh&f0E-~)sJa*1&B9oa@tSfwO z$}OqZXJ+`_nu|o8L&T}xSIL~5KF&c?sC!(!wz!-Kca=W}n!ey&7H@Up4NE8~Q?bUK zLov9o@-9hAlFGv8e;Rzzvs#X_SVoq*TqZ(O3&U!zYp4^vHGK1CTB}c|L%XIN zHc5C>vbDyFB6DRSMzQ934#mCySZ`5TUhe}yil{!+`UZG|mbaFNnW98c-a4GbY$vR) z5m<>g$i}jzJSl^4XvW0{B@ocw>VO;XDTqA29b9JZ@r!w3e}29Cjze%}6iFxjR-UYO zlgZ+!7e6RTD>2O&{ZMvUMFRHQk2&kg$1_Q!;Oi@OX+Ok6x3DSflMSGQ<681hLT*{V zv+P&GoDr=a$kppaQMbI0CqdKVwe_y6Rolk2h6B0xu?cVnF4pUXSpz)4cbfNMTXS2r yPA2`-9jed2CI|Q|LPv3c-;GzY0sIeubNB}>=M*?gty8}M0000Guk0HX-#WAFU@$Fo1 zzQYC_tn6ph%P#-=x1BdI>gvs>O#U_#(hOr5A4DEjG73vNm17&e#DFnx>)$)RSL(Ff zl4jJGeCGC*-)lL^^Z%kromXy7-9D}2gTe~DWM4f DI1@Jr diff --git a/doxygen/form_72.png b/doxygen/form_72.png index 6670b75d67c4c8a0ea853e350afceea005be8030..7fde8a3b610307a0ea837f08587485bd9edccf92 100644 GIT binary patch delta 131 zcmaFMc$HDHGr-TCmrII^fq{Y7)59eQNb>+O7Y8$t-2Tb`#6-pDNEc5R$B+ufw{s8j zHW=_Q>-(;#blCiV+XOMikBQ9Q+j3s+VLs4*_V(?qv#kuP=RCMs)3>lIH!xH5{OcW! h9@mUCUmUF~VbphIxT{dT31}<>gQu&X%Q~loCIIa*FWdkC delta 155 zcmcc0_?A(zGr-TCmrII^fq{Y7)59eQNb>=)5C=1mjA@c*o~RgI7~|>U7*fIbcJ66G z21O3%`Fc99e!Sd&`|E<{dE1!OWbRFvAjVJ^cF1*_U!B6d=O>RpVcfBVaor?_>pM0* z?8{<}IlAnzW7zkOW4CqI{EwY_A@RCz_?ir%`tOTw7M^Es)nbhGdw018Xdi>8tDnm{ Hr-UW|5JEjD diff --git a/doxygen/form_73.png b/doxygen/form_73.png index 0542382710e46d834885a2d1bc1ae3b67ed65af8..316b2da584c8c98629e6b824ffdf237b1c717901 100644 GIT binary patch delta 825 zcmV-91IGNa1cV16iBL{Q4GJ0x0000DNk~Le0001w0000Z2m=5B0GeZ|G?5`%e**JK zL_t(|0qvdXj^iK@gg@@Xad`i?-6jSbXX2bQduW9yDL6nEeN_Ji_(!2Vz+Zzf8-TwB z{tOIL0Xzj=w}$xWHRiSF7B`;t=jVf0B4pN7Ae_6a<0G`C#e6(z}#V@8+P;NL)(K63ulOE5;;ySY^~+!L5HI0Svp>{y z8mkD{=6CTCE5l8(2P_I7J2(GGG0O7f@W--p#pi{3zwl`xDoP&GkE$(wePbI=>?20PiD~Qigf6;HOnl0e%=t zDeI-JETgGZYGc(2fZqjce+h>|__2p{ePf7^deTtZMx&ZG0^Gs}^;M)4vPdq#SD0y0 zp=9;cCB=E?&sb5UW7WN*KTqWP)-Qlzx-P3u62iBOti&QFt%d5bQ}=x8zExcZKH7XS ztmKnE_ns~*wHk5L`u;TZ)02EX$^P1C0B&N($4igd8ui8}J2h!Ff3|_znY={XFCK44c=KAXy+sC zLf9*-?$Ei4mzs$#e*vLM zL_t(|0qvbxuiYRFgg=AX1N{GgTSJoGTlK2T1AVAuolyWeV%%DcIF3RGY9;nzpCZZXBA8wz?Tr`vx)G{ z)-95a+IDu5;|}7Su5jdj(>e4r-FOGk1R@@N?&x2;6*OnJz%L>lTDQ}uAf?C-?B-6^ z>eZbB<68vdrJXJjdy=QeLcHx(X7%#Z%MOy=qw6DxTdQiWN#L1PbbWZE=(S1rSjnFMF` z&2N!_kDqLTvhHw+$eyXSGuYPNw5RRX>EpOx7`y0$ZiRR)L_+y8$R}I;rUu}5kbwVfFOZifgG&Cj4BENl|z0^AE170dviLw$B4B}@Rm0M5Dya0$kL zXVc11hy%bC*y-4{$~*($V=Q%2f9fsio5AUiRBZBYjgWTd8abF>t9F^)zQymN*d;W@6Jf3Oc?l}g1< zCH`c-hxFhH6=$QU3~+|y>Is!>6?CCKd8OB=vVO1=Y@04%XJa%hx zFY`k`8XZ)7@|KF!EeZ9sf7$}zfOXXli=IT_vc;<+2Gblxzek_Cgxn5M7`Qw?HrOp!B2IrHE<5^q>&|zC0M;a<}sm3d#NVHl6qa0=xwZzlazUv@^7Y_2VU|!uE6wkB2Q;E=tAZdB?^Iq!e+9rRtVNS=z4R2^ zq_~ANRn1cJYWMDvJ+AJ9pH^^yQw$FuH1gn@+E;Hka}wacAuP+K0u6Fe%3(6=FZe3J z_d&Vej(LFp7x6YK%K1Sougw~_QnAAWFW%o>dmoiNC}+7vet;_LUEq|J*2>+5%F`I& o21sMe0B_oT`0;HH81NVP1@kBm{%3mbl>h($07*qoM6N<$f(}ngTmS$7 delta 608 zcmV-m0-ybl2CfAmiBL{Q4GJ0x0000DNk~Le0001F0000Y2m=5B0G>UJ7m*=be;r9g zK~#7F?Va1M+#n1^7luF*lJNh3TLZbkv}bgtEoxsZJDL%Rx4nJg72sc)oh^h(0LEE7 zz&U_{7IupV7--JAjQ}vvG>P4g22uYmY3%_r#BO1!ac&W^aOR8xODw<`<VQkGcXDkVIeT`8Ii;2)I&sq>b8+9MH7nwYebRhKaK5#Kxxkjf z$60s8hWphn5}jES!s(#{e^Jg`p8d^a-*i_C=Yzm%zq+24hh1_|4T!F&I5qR-t|>9g z>uA@B%K_tm&)_mw5of@GeL2gIafFOpKbB5FKw`d~q>51}TvebWbbC9h%vkA5Em zc+`4L`!~M@_+ztv^d(%R+XDc9!R+kws>plVmHoXfET}?wXQ4p(x uO7AToqAcjQ{_)1#DuHyI!yN*coRwqX>(vl4k(;Kj0Dp;LqSX=P?1m z4cP&}2bh7xfdSx(w}=A(-0(Col)AOC@fL9bfE$iLA|dn-n%syvYgLYUcwUKp&T5WP zefB^`cW73VTYju4Q)nBa5MAtpf7ln7I-?SToNRXpegpbAa1J^SDV!~3z)4luR^!?4 zLpQ4Js)c&BL!UC21ZsnLVI7m$mdpW`%ym;rbC|d6tO6RAMGBW}ZW1?-l5OTrPw-l@ z*VtIPDt3NBLkhDjZ5`7ia1G7^WTcVciN?vx^+A**NuGytQ)7m&-fb)8Q*!a+VZT2Bc))L+MW6nJ bv>CntR0amGBlmSZ00000NkvXXu0mjfjGUjB delta 1062 zcmV+>1ljw{1MmnTiBL{Q4GJ0x0000DNk~Le0002Q0000Z2m=5B0Q@;sW04_Re*@o1 zL_t(|0qvdZa;rEHgg@Ou=JNh;yFJ1r!3KOzHn=KVOVNphE}oWVy8i( zlmUJ<{Op0x*8!W?*?7qX-~hgAG_1Xk2EcnT)UN^OO?R0vLaN~gaD=|gK z#JEkS?ukVE`Xb|Om0e-0uBW>Mf4CMeNd%9p-Tic3Ns7^BTNJ$0m^Fe{dCkak2(5uH zQPYC+;VqP2k#LqOLtSS1!TEvMJ9l%gAEKKS^x)lCiL)ckIktvwE^67>2R{Q`jn_A! zFKar@3EyE-P;Lapr-30Yt45vq)OK{vA|LX{XMjubcO+Uw_E!wl(6pV%1XNp$bELtVmj3%lvs;np9NUXnHn&F(5i2e4gy-h9lg!&=W zqY+hc?SU_^KBZXgknG7_f7VarQi2VXTx(D-bv3DJ1L|6%l;Ty}HTCO$eY=8oM*w?R zv!EF7ol`$1F?}~j0saCeS}TcTp_VFZPP_~C!;E7RCN%&TBbD2*k~k4+uRtZ#QfP7B z&S-kKBuBVE>uq(mHNdryYc$Df$#o{wR((wi^k+Lmn+!|Tx}fD*f6MJX9MDOcd6dCU z^h~HXBsMej-1Jt0=a~H65ti1p~hQU*< z_*zYz33Ve8qEy;H%s46R+)Vb1D?H0Hz%%Su0e11UiR&c3AL?{0)KcX@=;9*O+Zku- zBwzY`s&BUraDo=ke*^oC_wG2=edU=?0G#0u&916*+pq$7g0A_L#GX^FX9n<1OwBI= z9GF%b%X9t^A*^g|Mt1#MZ~ zGHFpwGn%e9DysF4UZ!Rx=z^RfF&N9&=?U zbqkZ362LQ}eDYhlBZ<+XC7qo9`NZOxc~<1MeDp!n`nDh)?+5TB*otq--Jy;di&AWQ zR*Lksmop`^v1A=f8dY=4CiA8)XMKvDX#l{bICc<#UxM3`)BwL1Zhpso16&C|sRjXl gH~tG(0dOh)0d7RAd928M&TmS!W7jbJZ=hi)sn~-2E!T_W6836u|N)7<E~RD;q4{iqf=XDd zCz@V%l-MsTf&!iF9oS`xRZtjSe=FM@yjy|V3r@btpn~jE1*BbJoeif|Wq~TiPMd{m zv7!%|a|ACPc#GeUGWKEtrb34ZZR~)S~rvt~@a2SqUOLERV%jH#Y zY-S~=tvijs5YeWz`;1pnkPe038j!)py8&U5!|S~T?6>;^fCv3FS^Vu!s13sp&te9U Tlu5fG00000NkvXXu0mjfK?k54 delta 130 zcmX@Ye3?2&+A^z fougTe~DWM4fI{Pk} diff --git a/doxygen/form_77.png b/doxygen/form_77.png index dd5713fb857fcc3d01ec4ed9f2f9ad2340c7e0ab..241d6fe7c85e487f5464afe5fb36106d7b801fa3 100644 GIT binary patch delta 699 zcmV;s0!01f0fz=5iBL{Q4GJ0x0000DNk~Le0001n0000Y2m=5B0Ie!fTah7Je*$(% zL_t(|0qvdJlAJIMM33)=0sQ}e8yReK*#fJb4q9S8uALWCI2^E8BkP12(MUMz&>Sn_rNZ?UI=PxX^k$&D5N-B@d z`4w@XG2bY_`mAaITteNV+Ss{dJ`O|Z!~O`B4zHJ-+P#G1nH<*2u3E-7f6RMnjhfeX zB|f@}N&B-(PEV2wpQ$1aAs=uqU~Ucjz9uoPu~i`K%TjZS8oC{nbuQnu|$c&LBP zDZM;+Wz*aS06U0+N!8U_e@BzK=MNi3k?qyg0yd8r)cB=bt~w3}-w4smL1vH^12~}f zF^MNHt7VJy;1x3$jV5EFcbj*0`)vxtHYph49fD~4wbiVgDCd{ewKs-KcdYB=@mud` zSG=$7SaJr>OPWR+Cx)-4-W#1IFRP74xa4dMTq7#6@^hLu|*N{_b=eTD{|6T1ERLtr1?OYgBeI_OuPGdqGD7gL$IfdV@L(#+qsN< z4F(*{rzQL*9{vCS+QtQ&ezd9O7V)yoV_>ikK6xbfbjAsdT?;lox!L{NWBclu+;uEr yvs3RZa^Cy+-y1FNiEr*pAD(LyKlk*;3%p7BjO?p5zE=S4VeoYIb6Mw<&;$S}H8{Ee diff --git a/doxygen/form_78.png b/doxygen/form_78.png index f7889f03369dc79a4e2a92090afcebe82ff65797..ca4b340ea6cfaa72f80ccd8080196ac97e1e3edb 100644 GIT binary patch delta 144 zcmX@e`jAnvGr-TCmrII^fq{Y7)59eQNb>+OKL<0Ad~ScQdZJ=f8bg4mi(^Oyx_;`?ksNI)+dt+9x$dHVARR_d+s{W5(ZCKKbLh*2~7a{rZiaq delta 628 zcmV-)0*n3O0l@_!iBL{Q4GJ0x0000DNk~Le0001@0000E2m=5B0GskRypbVVe*!Q` zL_t(|0qtGUlH@216W9t<)&{pQc=3XQQ056XX zr1x4r48My401r?Geb@ltfvv2Qf4J9u?q`ZN{jU=JiVpxEpfvM+3ayBy)Be1jc&>3N zB|&IM7HWyXOxd<9x~F(7iQASKASzF-A@038rM4X4x0Kyr=c0iHr3^kvKxw&Lksz$f z-lo52*F}fZ$i(t`N~{cY`jM%`NX_Ahb~qmXN)qP^1C=P$U% z{Y;`Xk?Wf=P1Yix{QozrdqOPA?Aws_?nZkHP=m=xKN2fx zdXvc00x$iN1DpmSiBL{Q4GJ0x0000DNk~Le0001c0000Y2m=5B07#fta*-ige*%k1 zL_t(|0qvdHb|NthM6Y-EhX4O>r|e#E6FSRD!puDAP#kEmRFX>aE5QGToWO+$@N$IW zMF8OSh<*m;4)AIu7Uvwm>k;wu-|05q!ZHH99Citc|07Z}Uv8WM_z8ILYWd>meYnb{ z{R7~Kp?Fc_l7>3B0B>R3a!=Jtf8o0Ud}d8aY;;iemKf7Nd`f2b4Vg;q67 zD)a5`Vv7y%h&XHp@C2sxGiR%(h=li0kN)mibm*~+xs=kqo)TYw>T`9SpKbV+x9y*X zjs9B8F_I369xXJ+_~`U*tgz9{n{8<}JLS=Hw5{LLyu4d${Ilf6N|%o_cBOL2$9qy+ z(D!z)(a!Pu_MJu9Dk67te>A?d)&iWMzZB!c%?^$Ap-yKpt@)o_)Ap#|dZK+zS@Jh- z#y?ZZ7<0j-#6#>5L%h`^@j~Y&<}h?y>)yC^8`W{O0jC7yeROZ#ct;kc*|IqCT^B-q zt{UaRi}7iQPg{2)ANz!Hr{T-Ci{v3iCOsF$oZc?i(Y0FDF|2ftf38Ram5_>YId%GN zu6);A%d(oZzZWK{Hg|FWXV{ZC@8pI^y*noxE-y-vTH;ZZU5J-b1o$Lks-^Q`zZn3| zPy^L5fM0=`p3VlqJBaNX0QeTnr?21M)}03M`|v}EO4T(J+gHX8i>*8AklHI_OY(L$ ze-wHWrngD*Fyp>ra z!5D?z diff --git a/doxygen/form_8.png b/doxygen/form_8.png index 4608907afe8c0d817baec2006581c754ed38d1fb..7413232971d82ea67975477da3f6b183e81a2c7d 100644 GIT binary patch delta 153 zcmcb|_?l6%Gr-TCmrII^fq{Y7)59eQNDBZl9|tp#6#SU8W1?boew3$+V@L(#+qoBc zk1Fsm>x+0aGX2i~y<$R?x4*37rusEc<_I#_&9z}z@3%QqD&~Um0;z^oHa*F_7K(XQ z`I|#uN&HqRTjA-My<4O1-okxbeidIdD!yOPQ2(D{St?`Ax-`jWK-(BRUHx3vIVCg! E0Bw9W`2YX_ delta 140 zcmaFOc#l!BGr-TCmrII^fq{Y7)59eQNb>_RHwQD2oIX=MZ=zy!lCP(WV@L(#+qv0X z2NZaklixa9FZ{m$?VLxC@B0aO9AaO%mxt}(Fy diff --git a/doxygen/form_80.png b/doxygen/form_80.png index 81d4a67ea181eb665f84de1b6d395fb864d72d03..239f85c59a7e4a3bdbbdd5940c7948396e72cc56 100644 GIT binary patch delta 134 zcmX@lc!N=~Gr-TCmrII^fq{Y7)59eQNb`U&2Q!dNT)pP%M8)VBcTX3`kP61Pb5HX& z81NjO!=I_GakD;}Pj%`JgTs^OsaCT$%-`Ak@|PpmWw9CeCM@l3JKwajC$3=Tli3YN kHcqy9dHYib+lRZ%Ue1g>id!lRfkrcUy85}Sb4q9e0A6}ArT_o{ delta 125 zcmcb?c%D(QGr-TCmrII^fq{Y7)59eQNOJ=*7Y8$t4Al$SI8iY=*v`|%F{Fa=?c9T$ z2Ml_DQzQQ#5Z(cr{i3)b#?+ b-Rs1)YZ&gVy2`K?Xd;8BtDnm{r-UW|L5eG< diff --git a/doxygen/form_81.png b/doxygen/form_81.png index b467f63d8a9f06bc83301a8fea92a6e8780f77f1..5363e4024ff581942f7cc90c8e61948815a7d302 100644 GIT binary patch delta 715 zcmV;+0yO>80hb0LiBL{Q4GJ0x0000DNk~Le0001c0000Y2m=5B07#fta*-ige*%U{ zL_t(|0qvbxa^o-zL?3sp=KXIwO)V7VSRSX6I5Qt8wad0dpaC?XUx5D&T>=*(z}peB z7Xg6xBl-!HJHWezte5Jg?RvYJM0`3|68PHKHWG2@E!2pmGZ^G`*4-Z z@&v#)L-C@_B{#CNe5I%0>WpZoJ!UT59AVN^|kM`&Z)T+>{?yt3E>Mr(LK zwjEIH+V1PIX=4)$-^R3G0X_jGyGXc;s+{eU5Bsv`fFGd3m?i_(#c$m0mv1*p*6^kN2dz ze9u$>PPp6UOGV^vipJ-qf3*N7=#gxExY>S*RMqJ$=1KDb&akz5E4k%o>Lh>TCj29n z46)0Yl(>r>Vu-hLBwpy;#4hyBUOF1LZlf};HsF+iybtc98}H~uX|l{teCt9eHR^gV z#-|}ZZQYUX*dN1A!{==m$wP{a`d<{g)X?0IxTRKQ3=7@b6=|Rle^N0n3$J@q;k)LV z=hdYBy)a3&dA8i_Nt_3{K2qMDqYam9S)}Gzi?R#xQi=dCBBoM0ANDr`z!_?wItK6~ zFyq770CU*rG) delta 130 zcmbQvc9~JJGr-TCmrII^fq{Y7)59eQNOJ=*4+k@lY%brvW};$L1cQ^Oi(^OyMPN11iGDy` zsl9MC{4CBWbJ8+Lvq^pKeFRIff4SUnV}Zp*eOb5YL={S0TXn8yKeGwsedpmF1lIuW zGOQP519(O!_m~wMe&n*nm9sNXeG%p{ojWw*$~Aybu#$%b01tRG0dUKp#O*-+OKL<0Ad~ScQdZJ=?~XsL-o@n5ko7Y{v~AZ@p1tpu8Xny`_3^d?)=67U x>Lc~8@3Wh`PTPF1_SzRWrhhx^A?$F1xncvuPnn$;Rsn5c@O1TaS?83{1OTD1H@5%) delta 713 zcmV;)0yh2P0hID3uSE;Z(Hrf=0u?0KW}Q0v95{?FiYc z0D$|E!b4vG_oHEO&H>zyh=2UdwDA^(4&Zj!At?WsNX>kDa0cKj;JqvK#m@WC0-V5I z-2nIxh`XqDNhQ3v1bBvV!``Zuf5Mleu><@&eDFz)KZ4YINoJM1&2c(SpYvMIwCZn9 zqFJ9TJdb)ehxRXKQRQab6s~%wGhMLV+v-~bWJMkH=7gph$T0`GeWx@fHUOU)NF|qk?@}QsF?BtW>w}!V;sk^`kZz?Ot;imHS&7-r$Y40 zR!86JpCfjOLd@$3U3gm5*enO&3`HTwzKiA+-CE<%ninHo#2Gu6vgP((zsJR(_omHq z08ZeK!F=6@-PoJoc$7b>k^GH&JQud8 zGp3A5iT0Q~M6VlqC0^*<#3r=WSoWQosW0nl15OPndgorlct@j>9+tr>&}<0hx;Sb& zuZj;#d~n^Kv_39&*D`!wyhssrzt?q@*rr#T@7%@EOE-X?+0i!n`U3-~*g4Gr%{%x1qG^rlV@_%pJ5~Qr;%DJ98_sm9_jx-*Ueu vB`tF~l78Gh4&Ym19}T8jMJGQ7_-*(DEx``q1e*(?00000NkvXXu0mjfv&&XZ diff --git a/doxygen/form_84.png b/doxygen/form_84.png index 5fe67492f25477a7692136a84193b412359a97a7..2acde9e4f5c3435653523d27316762f7b6b04020 100644 GIT binary patch delta 90 zcmV-g0Hy!e0nY)Dd{aJ2L_t(|0qvbz3IHJt10!kOitPQb>!YIm(Hjg5G^Du$06e5A wko=ZvzaV?CA$dM^6_c;8HnBjt1;&Zf05Dqsjk)Mz1^@s607*qoM6N<$f~a34TmS$7 delta 98 zcmV-o0G@9Cm^vsNgOZBBO1VW7fHqe3j0V5`~Uy|07*qoM6N<$ Eg71IcuEM-6%b{yMnDsA!t1J%i5sWW*4y;q4}vaFBTIF~bOu*VbV5mYMrGI9eF tucc(%s00sAC4jGwRGxQ=XNo{J>Obt}1#wOTMn?bu002ovPDHLkV1j@{dfNa1 delta 706 zcmV;z0zLir0*(eDiBL{Q4GJ0x0000DNk~Le0001c0000Y2m=5B07#fta*-ige*%3; zL_t(|0qvdHcB3#5M6Y%hgZ}?-r^G63$T%|zIeF-#%3?vU)#X=!--afE3lZRUgzS|7 z!2L+!p&tPEqhWB)0o;#>fBej}@fL;-;C9#{DE^mF&3t-r2H-2;y({gDo%f*yIDxym z0Qe86cTww-ihK1E;2FjZd#P3oe_u>v2l#jR;FAh}1hMzBnN{pI$H|&L=QW)-R=slF ztbdn2k9s$U_5%-9Y{re@%6GCiC~v!po9pvgUI*Qc7pKP@mMLI$Spb`zim~f6(jm3$ALH z)aG$_vBU;=MraoUI76-{Y>TIei1*Zws#AWztjyfn7{_s}&S~Ytbfvngk=M&VC8BS( z+WVIO?6FIf#=MTug{MW0&0+v&C=5B)T{tiA)*63SygJfFoUwB%TWs(3eGF8`ECz4_ ze;md%eYxwR@p)EB;BfRve>OghwwWSr?36s24~7qLgx$I~C-*47QX~2s_jpchVP{Mk zlM?MQc8FdVdL>@)+{7ld)mZkOnpV!Z diff --git a/doxygen/form_86.png b/doxygen/form_86.png index f4cdeb796920cbf1e77dc4adc8bbfec29e35775b..3847981d21e0be7ce39d7296c77cd2374bf13cea 100644 GIT binary patch delta 798 zcmV+(1L6G40qO=JiBL{Q4GJ0x0000DNk~Le0001%0000M2m=5B02ObQ2$3OLe*)P_ zL_t(|0qvdJdZRE5gnyr8Lm+q~&2!}f(l>u#+R$D8MPw^li3K4{%b`u>o7Re+zvJ?vjL zlhNZ;bD1*00ctaO$L5mTh*MOT;p(N5XIXBi)olEl^WxGziC8pEOV8G3e}XO9TD9!P zu-VF`SavF{*5Qzy7QicP+An~2#56U}tSLopD(+InZ_+w1$YqLtGo{PsQG4_kX_W`` zn56q`R3DobQO2qdgVr#8>%BkShaIB#{&Y(vt|LlU(4oVib(J!q2Ql6xy~ogt(1}h# z%w^&+irsL|n*8k`JA~S3e-T2+mh^XAyIO6(cB|+zi;pS3bPv8)k{E8Zyqpyv&-WC{ z@vfG%Pz5)oXw|NFD!zo*kV~ZgG;|x^?XMhab8QMdCoU@F-^uGM#Rr&X+&`gc_nfJ3yR zGEgQN+$^x1Rjn_pD(z*ol0C>UGr(Ul6dO5|_-%?YUE*<1(lu%FT8g&jme7u$qywJs zRl?}VAM-|+zi2O~bms@a7d(nsA=N}q8}-vsu!cB3Q;h%|L&?zFOHRYD7NdPP8+g8z z<%bg5ouxINp10l*CPi7j+W`Ck|8_(Jyuf^SA%}BTgz9ZxHS4kg{3cknlT#Dm{~`TC ctpGlRKg%l0Gr-TCmrII^fq{Y7)59eQNQ2ni9LzwnaKjs|iHcEy4A!15jv*C{Z|9!m zWl-c{=1p{t==*YCm)}FFYr`Lj$j5RFHlpfLe*YIZcWxD(ZF)tr{$S}v%X+mC<@0P> X%NaJ!_*~%%G>^g4)z4*}Q$iB}38*Fw diff --git a/doxygen/form_87.png b/doxygen/form_87.png index 62685d00c63cbd5272725d8335f7ad37a243bf5a..e386338f57cd16258ab981df9ff3380fbd5e0b8e 100644 GIT binary patch delta 462 zcmV;<0Wtor0-OXPiBL{Q4GJ0x0000DNk~Le0001M0000G2m=5B049WSJdq(=1sR@XYcwO7GXVTw%K-43wym!kWvyH9 z0PtqLmsUQ7@^KWTW7GfuFSegO@IrYN%0R&!D$HkJ4QxTtncn*lKm%J)n3)(6 zme3+XLL*r?Z0G7p8V03Wynu}-_`O}>SWuWHCIZYx+OT9an375&GrEiOf8tvJefRd< z+r6j4SBN()V;)I)F6uq(ly_dy4>EpF~#~0N!jXC6gda zCIFX5L|-AF`S=Y80Q{8sBwa@JSqFe$vG|;yzxnrm0hn+JCf;Hd-T(jq07*qoM6N<$ Eg0H{C%K!iX delta 222 zcmV<403rXJ1g-)hiBL{Q4GJ0x0000DNk~Le0000J0000J2m=5B07Z_*{*fVCe*m3H zL_t(|0qtFh4a6`AGhd$O((b?QxoLCFNnODLDFF{^LJp{m?6+vS#clT&_ENGRf z0)fxE@NENnwmhjd@z2^r5?>b%_UeH3ld4y2S5%g5Z0Ym?$%$Ew@HihMWM+#ErJT9K zezGI6BY?${BdCocABY-u*j((AH0@G%ZS@{IsAX*1*X#6iJBr6M6scA_ziBL{Q4GJ0x0000DNk~Le0001d0000G2m=5B0OR)St&t&Ge*v#a zL_t(|0qtGOl7t`(Yy?3-<^TV7)8Xl?*PY9jRY7DzchU*W6#)LTIRN;kIWwkV<9E(7 z`YX=$<%!WBK2|pmo6lf4aOQ!OcL4Y>OIQGSnz{}alk{~I3J?I`)3%#9@#g$GI6ZX( z2Zp@A(6~?}EC6_z_l3NTQ{t{$e?uZ--=LAT@Jz9q2{VVzZ^jr%esSm#SO1>W^@b$? zI!o>Qsv_A$*s{7qFmxNB6hYy&;a0e{+3j1Z!#2 zImF}*s;T8yq58m>PVwKh-I8R!1wE8ag%(KX9*4)+ za@05;Seq-FMQ=F9x_kY2NWEZq$XY$b&B6KVT@D&@E o48qzn0Py#=QJfp^jXvfTAB7U}JSYyML)ehN#mT@H&WQ|b{y@FcM g$O6D^Jy2h~0d5%s$ZNc^9RL6T07*qoM6N<$f@9oY-2eap diff --git a/doxygen/form_89.png b/doxygen/form_89.png index 00cb9f0bccae1ed430d78dbd650a84881280c89a..58e90a854f6f95742575a557949fef632c071634 100644 GIT binary patch delta 120 zcmcb_c#2W6Gr-TCmrII^fq{Y7)59eQNQ2ni9LzwnaKjs|iHgyFmYyz-Ar*{o=icUJ zP~c!*tsyY~cmC^kroxV8^3$K~Vs2Rf%H{M*-d$5Fyf;?1TRmQ1p=b3xt4X4gPfMI( VLsrtxV?e_gJYD@<);T3K0RTP%CznBNI~mokG8{N1d8+_uD1)b~pUXO@geCyj>@I@< diff --git a/doxygen/form_9.png b/doxygen/form_9.png index f7be7b8b46aa04e3847cbcda4ce72470f41dffa8..322b8d8253eef29ff69c3e5555d385d851ec1669 100644 GIT binary patch delta 222 zcmV<403rY80j~lfiBL{Q4GJ0x0000DNk~Le0000k0000G2m=5B0A3fp*pVSyf1XK1 zK~#7F?Va7q#2^erkBLcFzO}yp+kUo{lD6I~EbLXtzz7F3{yYG{uVhmTFjbjafT_NM z=L{+UH*Jhr>K$;WC93ZBHR{Aov`MpotE|utpGKXyqLsdkxfXH-xNB#QQ30<)ImUY# zb>hOR^s@#0t*PzNflC*3l_qk_RHwQD2oIX=MZ=zy!R;Z_oV@L(#+qr>! z4F(*}_ZtqzoGJT%TdUac<7r`&g%_R`vN!B6EatCY%o*J8uxOo*K{4yv{6~A%vdyyf z=S!ygmix@mz{an^LB{Ts5^Q$$t diff --git a/doxygen/form_90.png b/doxygen/form_90.png index d2c11ae931b14b750a1f7d738c65cd106cbde08a..a9940c4a0a2c98e88409aa213e0381902a13188a 100644 GIT binary patch delta 243 zcmV2rJLXV;HXaScg zDa9QFi;cgv%bDLYs%vL6rnmu^Nk5ZBSOopEX&RPIT}3P?z;<`v+#AqFtc1KbXm ztRw(%KZ2X&55WD1%*Ggi`{A+EXS$8mFpmJYL(fj)e+$*rUpGzxd}~uP*P2RE3~n7+FMf(P=#Go zw$n0zXNW4UvG;cO$EJ;q&-uRY1n?%JB$|sKy`-y$AS|zM08R*FXv2*Qe{ekcKkFaf zcID>m?G99Stp;#~)JDf>qvSI7)`K6mE4N=j>Guh?F_qM-RIXkuF{_c72sYBhih*ym=H?hF6o zplqrt2|PW;i=TrkiSCzyf5=mP1Mm*?UjCZgBp*5jDTXrBIkB}z*^81aOQc~NX6J24 z*f507m8^VpL(`UHrfTWEtSd7rAA!-ll4kYl30KBz+aYs5j#`^ZccjI-2Tfk{mWEC1 z0@-1%eo1i%uQI=SMTE*AZ@R`L?JRrMsBVw0|0B^zvDV>Z)H*}V2+m(8NPr&=WI0F1AE{7T52Ve)6k7|lZ zkM4}^WWa=ZJJs%tErCTKK67pn%ou|5#f19)&^Uk}g;uEM-Z7%b0KW}?08(!br5zHw Rx&QzG07*qoM6N<$0fMLgM+g7_ diff --git a/doxygen/form_91.png b/doxygen/form_91.png index af841b332024a422799c5d62b83d3660914ebc2d..ed64153244302c501aebd7d2189c83f70adbdf92 100644 GIT binary patch delta 341 zcmV-b0jmD40;B^WiBL{Q4GJ0x0000DNk~Le0000+0000F2m=5B0B)yA5|JTVe*qIo zL_t(|0qvbxa>O7EL?8QN4EMinBqlaYYL@SOP}Q=LB{kjn0093J@hl~~E#X^)=M=yf zm?5E=EmI`p?X?RzM~nu5XV|Q35{5&9R#r)CtqDh9Yf3{nng{rUl-e2NF|@c|!Bv~) zTw^=)?K*BC-G`HdwNn^Xg5%V>f3rwXE>sx#d~m=KcL}v`Q+zRIIUo$swOJz72p#}7292{E4L@6RQcl` n@6%j6Uj9=6pRwOKz&HE=f2jsr(xCK000000NkvXXu0mjfx&M036whRDY zS+y&v+ybeY#phZixeH(s27n)CXCj$=sqPQsU|%_rX))Xl6}#`>;lwR#&Z6qlE=P?A z4m9^0Q1yrtURt-h_rW1H1iv2Lf4LBd{~2|>Ny_X8=MV$Rhq-h`xH1ixQ<`ZxF+4@= z3vTS{Mzl^!vV)?b(FE!M)+|OLIP17?Q3h+D-Ht>mjv_OtJv*$%6lub!DILoq}XS+sY^ae6ZjZ7^Rt6xyX!!H`z1(R(scD z0M=yZ5?(rAs`cRW;>dg%?EwJa8r|v-0KeG-U$_SW4XRMm00000NkvXXu0mjfKW&_4 delta 220 zcmV<203-jf1FQleiBL{Q4GJ0x0000DNk~Le0000k0000G2m=5B0A3fp*pVSxe*l|F zL_t(|0qvdL3d1l6g+DdAhAqwezwP>ym9)*xV6dx$2Sh#+HF*Glf7ypAz|eV^0u22V zJS8v%xOipU#X~wgs6w%ApsDG=U9D>M4mX{l?zuD_xMAhm*VJmjDK=)ms>6%68j+h0 zT$zn!whn)pEH!|OGd62gJ>wGIGFk`vSeQr>>rvfio}XTTQw;Z>A|3#DfBCAnFZKrJ W+XGL5wS~|C0000OlEiBL{Q4GJ0x0000DNk~Le0002?0000Y2m=5B09#|!!;v9ce*{fQ zL_t(|0qtE~lcXRFY`#H9`Tzg+I*1C6I=i*^aOWLmX15SSI!Sk40pPy@z-RMOLHPin zeS-D!0|3u7H75d80NTgB0KE6f`vge`p^yjS4Yq0C=XUQ?-`e^EUwS_nES+E&%*nrgh6> zZT5Ay+r9;WpPBj^d2YK+nZw%}^rh<-cFMl2IA#v-%Uv^A0JtzsQ3QaGW>S<`$H3U! z-A5)CWP!R000&d@R>y+_J5LNb4FGUvooeSz%-S)1+%>nrSlO*2pf;4^YcsbVkyY$ zw%SvLT@Hn}3UbUyOlB~c*IrjyfmFO~%YH_Co(6#44!cL#x_v8P1d7=mU%*bKGz;w0 zYu6P^ldpc>GbFMsF--)!e`P-#bJ^i+kfHZ7_GviX(#V!5Vl!qf{6uW^jsmY{G!Uj@%g>6$^*GjDNS&sVM zl38BE5;17OC&fxpv!%2&q{R0LHiH_(=_q7a2)^C6hFS4tXSI;Df3$Zyde)M0OSoMW zvZ1y;@9~(|)tqm_JyDe%HuK8cq*mH5B#;`DVDg_d`8(`T(UjZxiIig~48Ny#9%>PX zLD5M=lbV+W_OPl+rMBEyCqZ4+jZ)SqWprD7e=57(Zh=j=3vA2!mP?}iYJnkT{J?F= zN|dNdu$eezp9fQgj)VPXsSzA&DzP9Vz z!hoL2 zYpL{PWM&jcJ?!+F*j3k4F^sNetV-N=vX$1uu1MN6+F=g%e>FKXIv;}>WfN!IWn&z$pFwB6FCH_Oo5#|RfW@$uO z*z?mydf2_af>CYx>DU7RC$e`EmY%&$4+@QGm?Kmc&G9X7wACUA;K7Zfgi3pUT{c@Hk+X;~EaCivs7 zxfNcu`@03P9v}Tzj)~9}EdYStM0dD!*J9gad-U7gn?5o~x&wVE( zBZ>aK7y#gJHsd*u>o95uA^<$vWCDwjbiB<^YYr2=YYbbntPM72scoQ6PlN4}7f`!) zEwGcb!D?F;w;u;vx_Q=b)t(019eN;alLDNVMW}kA@q}4vo62G`9tT?yl;c3FOFJ*B nZ6e!zKNP0$f8YVYpJ%@SrnDUf!X$BR00000NkvXXu0mjf3@0WL delta 608 zcmV-m0-ycf39SVoiBL{Q4GJ0x0000DNk~Le0001&0000G2m=5B04($!E0G~ue*zpy zL_t(|0qvd5a;q>5g+Kor2>AWq_DZrzp+KkY;;!n+AsHd0BORe^0sa8+pAi9mfII)_ zc*r2*6f0z6 zUa#Q94sb?uuPoDdNflbue|anueydgIxa+dKZi>i@qYyV-OHNrPDQP*S3!9e`m6y%E z-^+7ZXA$6xD69^v@|{X_(pOz#*CILysabxT);G-K>U zk{9apT9rR)d3~!n5*uo;@H_u%t=t!Z!r5!(S9HgG|I4)9i*d^{yQF;;%e}+j! zK~#7F?VV8$10e`R$3;QVjrYH8smtm%P5ReQBgtSM&Ts<&_>3)$!iB#;r&|y*7S^M zR>=SpJ)^$Vo3t^R!gq#{;PZ3y$kg_(xHd)8WsOYrV?6)XG=0aHpjQE497!dc(dq!K ixbaY%?tMSNUmSo60(zb2t8D-P3IG5}MNUMnLSTYiphyk? delta 539 zcmV+$0_6RK0_g-HiBL{Q4GJ0x0000DNk~Le0001X0000G2m=5B0QA&*WRW3Se*xG@ zL_t(|0qvdHx~m`zg?|VjIN{@=o`%b$ka^5e|0DMNdypPGqzjOdR;*B=8VC6!azg6!{ z=1nv6=@7JF@+8}6Q=Zh&#S~Ive{NRKw34#8oP)yWLrCRkXC# z5<*m#xmD0;x0$V%uBY;qR$mT1sf=;ZHim5?$M(TC_0LIOYzL2o#lmgT#!lo-t+~I@ zuHtIf16+Qx2g-!3%BS^K<%^lgw9DB@C#_fUlM7XwK!dj0YS>A&i?OV~IZ0lr19BbEI`91qV6z%Mame^nLWXSnmf dqfN%C^bdo<3t8WGWhwvw002ovPDHLkV1n1{0j2-| diff --git a/doxygen/form_96.png b/doxygen/form_96.png index 44bb186f1327231266122745efb815654de147b2..afda660993e9d6351dd8fcab9c604b804c961d14 100644 GIT binary patch delta 1080 zcmV-81jqZP41ozDiBL{Q4GJ0x0000DNk~Le0002b0000Z2m=5B00h~tl#wA?e*^GI zL_t(|0qvdZa-%vBgg@Pp4Cejc_Vfr?2ggu}EB4k&Ek$D_M)I^Y>i!Gx4*=i50Pt%N zuNmOCz|S7I-45UY!Qx9j3n`PP*k<%+kpM5i*glfUyC(4Q_Ol3GT{Bt$4>3DNaq8UX zzfj53zS@QpK7H@504ETi&OHJAe+7JlkJp-qIjlt#i)}&5YKCBUk8t7>JnlLK=X&Tq z0^p_i2A`;0(`@PKYRR?enn&fAXEloYvP-jbwGl?Wd(C|p0q|OUr`{$}S?ew7w**Tu z%)Q8BlTt4A7Bt6T)9SI00C+K;(esaLA%6p7w<$7de_e7NJYM&Z-3e{ep@$8>oa z?6vw!w!QDhr`ls5vC4kwe>xsZhPQ3~qxPQ|$d zC|ciGipHxmww7?E#7p(ne_pG&G%3M8VoA3Dp7Pnsq}V<@*o$L6y}$w92h+)ok1KW- zT(&HNcanO03F2dFALbakP25Ku^O^g1fOnyk%ee9Jqw^!NI(L!IkI`L~|LEP+FtwLE zXq!zNcM&>!D<2ouYum$WQv^ zxDfDpy;eTu?R3!kI;B-cTjySR{V9%JM{;j{;vEr~U(QhA;XlaJ#?4r~BP=htNa;;3=2}0({1^d}7hw zbicDh+bhVcBz%zLscpBnHxnicB3fbX>U3BSF~GOrH#q>ff5Ve}T9hv?ey1tCouQVg zDNdI>`)LYwa&Zo3it-t`#T4ub@LD{_r)z)$7JtwbSG?*cTp8@Z=+`_`{ieSOk=KC1 z92DS{*zpOgn)kjlKGhsVLpQ$@pE$>uht=+8m&ahHt!AF*MxA0Thf4?WLwIg~%Fj9N?G0U*BO10Pn&t+aQ2<;XlgB9Z=1P4*1sq000038oAoiBL{Q4GJ0x0000DNk~Le0002&0000Z2m=5B0HCuLN0A{~e+89E zL_t(|0qvdVlH)iGgg-`6RC@onJ%CgW9(!i5cI$3kYTB|W0*%o43-A})$3}qv2b#eF zd<+Bd0q*t}%il8(@G;^D@EV~9I3n5482h{War$RjfZb*E@Fsl~2KQ;4rU38-h6^c| z)XVYx4(I?bX#BDO+tm+{Lu>$^f03=v0PkaZPEJ}MUCCD8hmEXz9kg^IR8y$ulm*~` ztIbmlWV!3^j|I5Hk*pNPRvSmMCKglH885tQVeiRqKW*b=o5IR&xinY6{#pzbN*7+v zVn;taV)dlCpW3)>)v`*TrS?EJ+BW<3p95Ln8q*otXeW_xSB>0~m58^|fA=G)bAITo z8^zU=GOUJ@7DQS0`EE0QiZyHA`#y}z4%fAdSCbt36S7|4UMu53b`s5KI^C`eQ*Ea^ zvUZXi;WidYO0tLsx>IIXL;Acfhs+9xCEWoxZ9b`5RBbFC{e-NP+Z@8!w(Xc@S;@*i zvDyW6RL$wM(*`uAcv} zjOA7iyU(oLG=roxD5LOP#uAYluB6#i9)7}H2Hb4u9kLRa)hDUrO0^nqmm7euu_qg| zAF+33Y|F7?wF^!K$5jE{jh?M%M>(J&MAWS$S?T1_k?dwDD~+-of5^)5VzcCNR2P@S z!<^N6h#Y%<6W|$pvMz-<%ff+d%-Ine5n0-tvkHz3LaE-I*HO4rqBk6wb<}f3dC^v3fyK#an3vcmdl;(9D>e5udEAi#2N<&dCH7d-6++$SjmqpUx3} z(KlzZCR?(@XVW*4IZC%=bCeRZ?PUEJY&&?{OAZUOWcpMZXVAmT0`NY>51(;;mbjaY)!pSOz-yezX7N}Wd5DE!f2uWjM^-&>!YxZo#$aY^Zcwe1-{Q8YiR5Bvj4jbnUjSa=Omoo0Y5_Ihfg6J->^gP1&9tZo&vnY znXIH#e^V4vP!8d_j29jEag-w}S!-%|t$bepOYF(|oP&%Ce{I4h=RC;k>Z#~J-ZXgom1LvONzh8L zSrxdr$S;ty&nfWH9v68``{{Uey;$4AHj0000M8S-w@sFh@0I(?Jq8%oU;M=fcThOs6}=D7p)&uw($V?8x6Pf1Ne?V X3nB%ep!YEB00000NkvXXu0mjf=jM_c delta 301 zcmV+|0n+}I1N;IZiBL{Q4GJ0x0000DNk~Le0000$0000I2m=5B0Nn8?5RoBTe*o)A zL_t(|0qvbzl7t`(MNfDHP#pKa+X;epwbhnR|IJ5=V@ZWvxPb)#{9hzQfG_ad*LiXP z_&dE!VR8WXxDqDu#I%(15=g1f0B%?yr|1Y%tIK)LS@CA1%>iz3CJ?Lr6vfUg5=Bg? zD{l+pY+@fe>V8(s1Zs#{eM+;MfA8Hw34U*ZvchVjwow_eC5n)}Z<~&>tr-Hk&steU zOapiu(l*d`RDcsr_lO#4F52=u;>e{ZSG@>RcV`{yapWE~I%VxG061~s0C)`-@#8`O z-jJ6WfX^glzIv0fzk7gdWLz)6nJ4uC-}4JJz62K!C&tPE0000j4!0 SU5D@h0000eFbG2*4A+?Gxc_Z+ z!|0zkAfb5;v}XYLS!@1s-%Xuuah%}kZJD7dbs%lZlREB)NXnTMbbW<27cXi6-yp7j QYybcN07*qoM6N<$f|c+s6#xJL diff --git a/doxygen/form_99.png b/doxygen/form_99.png index d021c0f22e286336fde5fe0040caf174d1cae2e5..58e90a854f6f95742575a557949fef632c071634 100644 GIT binary patch delta 120 zcmaFDc#2W6Gr-TCmrII^fq{Y7)59eQNQ2ni9LzwnaKjs|iHgyFmYyz-Ar*{o=icUJ zP~c!*tsyY~cmC^kroxV8^3$K~Vs2Rf%H{M*-d$5Fyf;?1TRmQ1p=b3xt4X4gPfMI( VLsrtxV?e_gJYD@<);T3K0RTpFC>8(! delta 146 zcmX@b_=HihGr-TCmrII^fq{Y7)59eQNb>! z2NXD*=XYGzJ@;F_e22~nq4f?G^1jiB1R2a$Ok2RWaOLVb3%8|8#l~DK;^nSU4)gx5 xf4ac3|H;#Do#ji#Y_BifE)~agNUcGaze1nkhvLyYOMuoec)I$ztaD0e0stP=GoAnd diff --git a/doxygen/format_8hpp_source.html b/doxygen/format_8hpp_source.html index ec066eeb855..220f99abcd3 100644 --- a/doxygen/format_8hpp_source.html +++ b/doxygen/format_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/util/format.hpp Source File @@ -29,7 +29,7 @@ - + @@ -70,9 +70,9 @@

    diff --git a/doxygen/formula.repository b/doxygen/formula.repository index 9b558c46cde..541d279d1fc 100644 --- a/doxygen/formula.repository +++ b/doxygen/formula.repository @@ -1,180 +1,175 @@ -\form#0:$ K $ -\form#1:$ (C \times H \times W) $ -\form#2:$ (N \times C \times H \times W) $ -\form#3:$ x $ -\form#4:$ (N \times 1 \times K \times 1) $ -\form#5:$ (N \times 2 \times K \times 1) $ -\form#6:$ y_n = \arg\max\limits_i x_{ni} $ -\form#7:$ K = 1 $ -\form#8:$ x_1 $ -\form#9:$ x_2 $ -\form#10:$ x_K $ -\form#11:$ (KN \times C \times H \times W) $ -\form#12:$ (N \times KC \times H \times W) $ -\form#13:$ y = [\begin{array}{cccc} x_1 & x_2 & ... & x_K \end{array}] $ -\form#14:$ \frac{\partial E}{\partial y} $ -\form#15:$ y $ -\form#16:$ \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} $ -\form#17:$ (N \times CHW \times 1 \times 1) $ -\form#18:$ x = 0 $ -\form#19:$ x\sim U(a, b) $ -\form#20:$ x = a $ -\form#21:$ x \in [0, 1] $ -\form#22:$ \forall i \sum_j x_{ij} = 1 $ -\form#23:$ x \sim U(-a, +a) $ -\form#24:$ a $ -\form#25:$ E = \frac{1}{2N} \sum\limits_{n=1}^N \left(y\right) d + \left(1-y\right) \max \left(margin-d, 0\right) $ -\form#26:$ d = \left| \left| a_n - b_n \right| \right|_2^2 $ -\form#27:$ (N \times C \times 1 \times 1) $ -\form#28:$ a \in [-\infty, +\infty]$ -\form#29:$ b \in [-\infty, +\infty]$ -\form#30:$ (N \times 1 \times 1 \times 1) $ -\form#31:$ s \in [0, 1]$ -\form#32:$ (1 \times 1 \times 1 \times 1) $ -\form#33:$ E = \frac{1}{2N} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $ -\form#34:$ \hat{y} \in [-\infty, +\infty]$ -\form#35:$ y \in [-\infty, +\infty]$ -\form#36:$ E = \frac{1}{2n} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $ -\form#37:$ t $ -\form#38:$ [-\infty, +\infty] $ -\form#39:$ K = CHW $ -\form#40:$ X^T W $ -\form#41:$ X \in \mathcal{R}^{D \times N} $ -\form#42:$ W \in \mathcal{R}^{D \times K} $ -\form#43:$ l $ -\form#44:$ l_n \in [0, 1, 2, ..., K - 1] $ -\form#45:$ E = \frac{1}{N} \sum\limits_{n=1}^N \sum\limits_{k=1}^K [\max(0, 1 - \delta\{l_n = k\} t_{nk})] ^ p $ -\form#46:$ L^p $ -\form#47:$ p = 1 $ -\form#48:$ \delta\{\mathrm{condition}\} = \left\{ \begin{array}{lr} 1 & \mbox{if condition} \\ -1 & \mbox{otherwise} \end{array} \right. $ -\form#49:$ t \in \mathcal{R}^{N \times K} $ -\form#50:$k$ -\form#51:$ \hat{p} $ -\form#52:$ [0, 1] $ -\form#53:$ \hat{p}_n $ -\form#54:$ \forall n \sum\limits_{k=1}^K \hat{p}_{nk} = 1 $ -\form#55:$ (1 \times 1 \times K \times K) $ -\form#56:$ H $ -\form#57:$ H = I $ -\form#58:$ 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}) $ -\form#59:$ H_{l_n} $ -\form#60:$l_n$ -\form#61:$H$ -\form#62:$ E = \frac{-1}{N} \sum\limits_{n=1}^N \log(\hat{p}_{n,l_n}) $ -\form#63:$ 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] $ -\form#64:$ x \in [-\infty, +\infty]$ -\form#65:$ \hat{p}_n = \sigma(x_n) \in [0, 1] $ -\form#66:$ \sigma(.) $ -\form#67:$ y \in [0, 1] $ -\form#68:$ \hat{p}_{nk} = \exp(x_{nk}) / \left[\sum_{k'} \exp(x_{nk'})\right] $ -\form#69:$ k $ -\form#70:$ k = 5 $ -\form#71:$ x_n $ -\form#72:$ \hat{l}_n $ -\form#73:$ \hat{l}_n = \arg\max\limits_k x_{nk} $ -\form#74:$ \frac{1}{N} \sum\limits_{n=1}^N \delta\{ \hat{l}_n = l_n \} $ -\form#75:$ \delta\{\mathrm{condition}\} = \left\{ \begin{array}{lr} 1 & \mbox{if condition} \\ 0 & \mbox{otherwise} \end{array} \right. $ -\form#76:$ \lambda $ -\form#77:$\ell_i$ -\form#78:$ E = \lambda_i \ell_i + \mbox{other loss terms}$ -\form#79:$ \frac{\partial E}{\partial \ell_i} = \lambda_i $ -\form#80:$a$ -\form#81:$b$ -\form#82:$\hat{y}$ -\form#83:$ \frac{\partial E}{\partial \hat{y}} = \frac{1}{n} \sum\limits_{n=1}^N (\hat{y}_n - y_n) $ -\form#84:$y$ -\form#85:$ \frac{\partial E}{\partial y} = \frac{1}{n} \sum\limits_{n=1}^N (y_n - \hat{y}_n) $ -\form#86:$t$ -\form#87:$ \frac{\partial E}{\partial t} $ -\form#88:$ \frac{\partial E}{\partial \hat{p}} $ -\form#89:$x$ -\form#90:$ \frac{\partial E}{\partial x} = \frac{1}{n} \sum\limits_{n=1}^N (\hat{p}_n - p_n) $ -\form#91:$ \frac{\partial E}{\partial x} $ -\form#92:$ y = |x| $ -\form#93:$ y = x + \log(1 + \exp(-x)) $ -\form#94:$ x > 0 $ -\form#95:$ y = \log(1 + \exp(x)) $ -\form#96:$ y = \left\{ \begin{array}{ll} x + \log(1 + \exp(-x)) & \mbox{if } x > 0 \\ \log(1 + \exp(x)) & \mbox{otherwise} \end{array} \right. $ -\form#97:$ y = \gamma ^ {\alpha x + \beta} $ -\form#98:$ \alpha $ -\form#99:$ \beta $ -\form#100:$ \gamma $ -\form#101:$ y = (\alpha x + \beta) ^ \gamma $ -\form#102:$ y = \max(0, x) $ -\form#103:$ y = (1 + \exp(-x))^{-1} $ -\form#104:$ y = \frac{\exp(2x) - 1}{\exp(2x) + 1} $ -\form#105:$ \frac{\partial E}{\partial x} = \mathrm{sign}(x) \frac{\partial E}{\partial y} $ -\form#106:$ p $ -\form#107:$ y_{\mbox{train}} = \left\{ \begin{array}{ll} \frac{x}{1 - p} & \mbox{if } u > p \\ 0 & \mbox{otherwise} \end{array} \right. $ -\form#108:$ u \sim U(0, 1)$ -\form#109:$ y_{\mbox{test}} = \mathbb{E}[y_{\mbox{train}}] = x $ -\form#110:$u\sim U(0,1)$ -\form#111:$ 1 / (1 - p) $ -\form#112:$ e \approx 2.718 $ -\form#113:$ \frac{\partial E}{\partial x} = \frac{\partial E}{\partial y} y \alpha \log_e(gamma) $ -\form#114:$ \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} $ -\form#115:$ \alpha \gamma $ -\form#116:$ \nu $ -\form#117:$ y = \max(0, x) + \nu \min(0, x) $ -\form#118:$ \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. $ -\form#119:$ \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. $ -\form#120:$ \frac{\partial E}{\partial x} = \frac{\partial E}{\partial y} y (1 - y) $ -\form#121:$ \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) $ -\form#122:$ y = \left\{ \begin{array}{lr} 0 & \mathrm{if} \; x \le t \\ 1 & \mathrm{if} \; x > t \end{array} \right. $ -\form#123:$ \geq 1 $ -\form#124:$ x \sim N(0, \sigma^2) $ -\form#125:$ \sigma^2 $ -\form#126:$ y_i = \max(0, x_i) + a_i \min(0, x_i) $ -\form#127:$ (N \times C \times ...) $ -\form#128:$i$ -\form#129:$ \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. $ -\form#130:$ \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. $ -\form#131:$ (S \times C \times H \times W) $ -\form#132:$ y = log_{\gamma}(\alpha x + \beta) $ -\form#133:$ (N \times K \times H \times W) $ -\form#134:$ (N \times ...) $ -\form#135:$ (M) $ -\form#136:$ (M \times ...) $ -\form#137:$ y = x_1[x_2] $ -\form#138:$ E = \frac{1}{2N} \sum\limits_{n=1}^N \left(y\right) d + \left(1-y\right) \max \left(margin-d, 0\right)^2 $ -\form#139:$ d = \left| \left| a_n - b_n \right| \right|_2 $ -\form#140:$ (N \times 1 \times K) $ -\form#141:$ (N \times 2 \times K) $ -\form#142:$ 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 $ -\form#143:$ y = \left\{ \begin{array}{lr} x & \mathrm{if} \; x > 0 \\ \alpha (\exp(x)-1) & \mathrm{if} \; x \le 0 \end{array} \right. $ -\form#144:$ \frac{\partial E}{\partial x} = \left\{ \begin{array}{lr} 1 & \mathrm{if} \; x > 0 \\ y + \alpha & \mathrm{if} \; x \le 0 \end{array} \right. $ -\form#145:$ i $ -\form#146:$ (d_0 \times ... \times d_i \times ... \times d_j \times ... \times d_n) $ -\form#147:$ (d_i \times ... \times d_j) $ -\form#148:$ z = x y $ -\form#149:$ (1 \times N \times D) $ -\form#150:$ c_{t-1} $ -\form#151:$ (1 \times N \times 4D) $ -\form#152:$ [i_t', f_t', o_t', g_t'] $ -\form#153:$ (1 \times N) $ -\form#154:$ \delta_t $ -\form#155:$ c_t $ -\form#156:$ h_t $ -\form#157:$ \frac{\partial E}{\partial c_t} $ -\form#158:$ \frac{\partial E}{\partial h_t} $ -\form#159:$ [ \frac{\partial E}{\partial i_t} \frac{\partial E}{\partial f_t} \frac{\partial E}{\partial o_t} \frac{\partial E}{\partial g_t} ] $ -\form#160:$ (1 \times 1 \times N) $ -\form#161:$ (T \times N \times ...) $ -\form#162:$ T $ -\form#163:$ N $ -\form#164:$ (N \times T \times ...) $ -\form#165:$ (T \times N) $ -\form#166:$ \delta $ -\form#167:$ \delta_{t,n} = 0 $ -\form#168:$ n $ -\form#169:$ h_{t-1} $ -\form#170:$ \delta_t = 0 $ -\form#171:$ \delta_{t,n} = 1 $ -\form#172:$ t-1 $ -\form#173:$ x_{static} $ -\form#174:$ x'_t = [x_t; x_{static}] $ -\form#175:$ (T \times N \times D) $ -\form#176:$ D $ -\form#177:$ x_t $ -\form#178:$ h_t := \tanh[ W_{hh} h_{t_1} + W_{xh} x_t + b_h ] $ -\form#179:$ o_t := \tanh[ W_{ho} h_t + b_o ] $ +\form#0:$ x = 0 $ +\form#1:$ x\sim U(a, b) $ +\form#2:$ x = a $ +\form#3:$ x \in [0, 1] $ +\form#4:$ \forall i \sum_j x_{ij} = 1 $ +\form#5:$ x \sim U(-a, +a) $ +\form#6:$ a $ +\form#7:$ x \sim N(0, \sigma^2) $ +\form#8:$ \sigma^2 $ +\form#9:$ y = |x| $ +\form#10:$ (N \times C \times H \times W) $ +\form#11:$ x $ +\form#12:$ \frac{\partial E}{\partial y} $ +\form#13:$ y $ +\form#14:$ \frac{\partial E}{\partial x} = \mathrm{sign}(x) \frac{\partial E}{\partial y} $ +\form#15:$ k $ +\form#16:$ k = 5 $ +\form#17:$ [-\infty, +\infty] $ +\form#18:$ K = CHW $ +\form#19:$ x_n $ +\form#20:$ \hat{l}_n $ +\form#21:$ \hat{l}_n = \arg\max\limits_k x_{nk} $ +\form#22:$ (N \times 1 \times 1 \times 1) $ +\form#23:$ l $ +\form#24:$ l_n \in [0, 1, 2, ..., K - 1] $ +\form#25:$ K $ +\form#26:$ (1 \times 1 \times 1 \times 1) $ +\form#27:$ \frac{1}{N} \sum\limits_{n=1}^N \delta\{ \hat{l}_n = l_n \} $ +\form#28:$ \delta\{\mathrm{condition}\} = \left\{ \begin{array}{lr} 1 & \mbox{if condition} \\ 0 & \mbox{otherwise} \end{array} \right. $ +\form#29:$ (C \times H \times W) $ +\form#30:$ (N \times 1 \times K) $ +\form#31:$ (N \times 2 \times K) $ +\form#32:$ (N \times K \times H \times W) $ +\form#33:$ y_n = \arg\max\limits_i x_{ni} $ +\form#34:$ K = 1 $ +\form#35:$ (N \times ...) $ +\form#36:$ x_1 $ +\form#37:$ (M) $ +\form#38:$ x_2 $ +\form#39:$ (M \times ...) $ +\form#40:$ y = x_1[x_2] $ +\form#41:$ y = x + \log(1 + \exp(-x)) $ +\form#42:$ x > 0 $ +\form#43:$ y = \log(1 + \exp(x)) $ +\form#44:$ y = \left\{ \begin{array}{ll} x + \log(1 + \exp(-x)) & \mbox{if } x > 0 \\ \log(1 + \exp(x)) & \mbox{otherwise} \end{array} \right. $ +\form#45:$ \frac{\partial E}{\partial x} $ +\form#46:$ x_K $ +\form#47:$ (KN \times C \times H \times W) $ +\form#48:$ (N \times KC \times H \times W) $ +\form#49:$ y = [\begin{array}{cccc} x_1 & x_2 & ... & x_K \end{array}] $ +\form#50:$ \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} $ +\form#51:$ 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 $ +\form#52:$ d = \left| \left| a_n - b_n \right| \right|_2 $ +\form#53:$ (N \times C \times 1 \times 1) $ +\form#54:$ a \in [-\infty, +\infty]$ +\form#55:$ b \in [-\infty, +\infty]$ +\form#56:$ s \in [0, 1]$ +\form#57:$ \lambda $ +\form#58:$\ell_i$ +\form#59:$ E = \lambda_i \ell_i + \mbox{other loss terms}$ +\form#60:$ \frac{\partial E}{\partial \ell_i} = \lambda_i $ +\form#61:$a$ +\form#62:$b$ +\form#63:$ \geq 1 $ +\form#64:$x$ +\form#65:$ p $ +\form#66:$ y_{\mbox{train}} = \left\{ \begin{array}{ll} \frac{x}{1 - p} & \mbox{if } u > p \\ 0 & \mbox{otherwise} \end{array} \right. $ +\form#67:$ u \sim U(0, 1)$ +\form#68:$ y_{\mbox{test}} = \mathbb{E}[y_{\mbox{train}}] = x $ +\form#69:$u\sim U(0,1)$ +\form#70:$ 1 / (1 - p) $ +\form#71:$ y = \left\{ \begin{array}{lr} x & \mathrm{if} \; x > 0 \\ \alpha (\exp(x)-1) & \mathrm{if} \; x \le 0 \end{array} \right. $ +\form#72:$ \alpha $ +\form#73:$ \frac{\partial E}{\partial x} = \left\{ \begin{array}{lr} 1 & \mathrm{if} \; x > 0 \\ y + \alpha & \mathrm{if} \; x \le 0 \end{array} \right. $ +\form#74:$ E = \frac{1}{2N} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $ +\form#75:$ \hat{y} \in [-\infty, +\infty]$ +\form#76:$ y \in [-\infty, +\infty]$ +\form#77:$ E = \frac{1}{2n} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $ +\form#78:$\hat{y}$ +\form#79:$ \frac{\partial E}{\partial \hat{y}} = \frac{1}{n} \sum\limits_{n=1}^N (\hat{y}_n - y_n) $ +\form#80:$y$ +\form#81:$ \frac{\partial E}{\partial y} = \frac{1}{n} \sum\limits_{n=1}^N (y_n - \hat{y}_n) $ +\form#82:$ y = \gamma ^ {\alpha x + \beta} $ +\form#83:$ \beta $ +\form#84:$ \gamma $ +\form#85:$ e \approx 2.718 $ +\form#86:$ \frac{\partial E}{\partial x} = \frac{\partial E}{\partial y} y \alpha \log_e(gamma) $ +\form#87:$ (S \times C \times H \times W) $ +\form#88:$ (N \times CHW \times 1 \times 1) $ +\form#89:$ t $ +\form#90:$ X^T W $ +\form#91:$ X \in \mathcal{R}^{D \times N} $ +\form#92:$ W \in \mathcal{R}^{D \times K} $ +\form#93:$ E = \frac{1}{N} \sum\limits_{n=1}^N \sum\limits_{k=1}^K [\max(0, 1 - \delta\{l_n = k\} t_{nk})] ^ p $ +\form#94:$ L^p $ +\form#95:$ p = 1 $ +\form#96:$ \delta\{\mathrm{condition}\} = \left\{ \begin{array}{lr} 1 & \mbox{if condition} \\ -1 & \mbox{otherwise} \end{array} \right. $ +\form#97:$ t \in \mathcal{R}^{N \times K} $ +\form#98:$k$ +\form#99:$t$ +\form#100:$ \frac{\partial E}{\partial t} $ +\form#101:$ \hat{p} $ +\form#102:$ [0, 1] $ +\form#103:$ \hat{p}_n $ +\form#104:$ \forall n \sum\limits_{k=1}^K \hat{p}_{nk} = 1 $ +\form#105:$ (1 \times 1 \times K \times K) $ +\form#106:$ H $ +\form#107:$ H = I $ +\form#108:$ 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}) $ +\form#109:$ H_{l_n} $ +\form#110:$l_n$ +\form#111:$H$ +\form#112:$ \frac{\partial E}{\partial \hat{p}} $ +\form#113:$ y = log_{\gamma}(\alpha x + \beta) $ +\form#114:$ (1 \times N \times D) $ +\form#115:$ c_{t-1} $ +\form#116:$ (1 \times N \times 4D) $ +\form#117:$ [i_t', f_t', o_t', g_t'] $ +\form#118:$ (1 \times N) $ +\form#119:$ \delta_t $ +\form#120:$ c_t $ +\form#121:$ h_t $ +\form#122:$ \frac{\partial E}{\partial c_t} $ +\form#123:$ \frac{\partial E}{\partial h_t} $ +\form#124:$ [ \frac{\partial E}{\partial i_t} \frac{\partial E}{\partial f_t} \frac{\partial E}{\partial o_t} \frac{\partial E}{\partial g_t} ] $ +\form#125:$ (1 \times 1 \times N) $ +\form#126:$ E = \frac{-1}{N} \sum\limits_{n=1}^N \log(\hat{p}_{n,l_n}) $ +\form#127:$ y = (\alpha x + \beta) ^ \gamma $ +\form#128:$ \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} $ +\form#129:$ \alpha \gamma $ +\form#130:$ y_i = \max(0, x_i) + a_i \min(0, x_i) $ +\form#131:$ (N \times C \times ...) $ +\form#132:$i$ +\form#133:$ \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. $ +\form#134:$ \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. $ +\form#135:$ (T \times N \times ...) $ +\form#136:$ T $ +\form#137:$ N $ +\form#138:$ (N \times T \times ...) $ +\form#139:$ (T \times N) $ +\form#140:$ \delta $ +\form#141:$ \delta_{t,n} = 0 $ +\form#142:$ n $ +\form#143:$ h_{t-1} $ +\form#144:$ \delta_t = 0 $ +\form#145:$ \delta_{t,n} = 1 $ +\form#146:$ t-1 $ +\form#147:$ x_{static} $ +\form#148:$ x'_t = [x_t; x_{static}] $ +\form#149:$ (T \times N \times D) $ +\form#150:$ D $ +\form#151:$ y = \max(0, x) $ +\form#152:$ \nu $ +\form#153:$ y = \max(0, x) + \nu \min(0, x) $ +\form#154:$ \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. $ +\form#155:$ \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. $ +\form#156:$ x_t $ +\form#157:$ h_t := \tanh[ W_{hh} h_{t_1} + W_{xh} x_t + b_h ] $ +\form#158:$ o_t := \tanh[ W_{ho} h_t + b_o ] $ +\form#159:$ i $ +\form#160:$ (d_0 \times ... \times d_i \times ... \times d_j \times ... \times d_n) $ +\form#161:$ (d_i \times ... \times d_j) $ +\form#162:$ z = x y $ +\form#163:$ 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] $ +\form#164:$ x \in [-\infty, +\infty]$ +\form#165:$ \hat{p}_n = \sigma(x_n) \in [0, 1] $ +\form#166:$ \sigma(.) $ +\form#167:$ y \in [0, 1] $ +\form#168:$ \frac{\partial E}{\partial x} = \frac{1}{n} \sum\limits_{n=1}^N (\hat{p}_n - p_n) $ +\form#169:$ y = (1 + \exp(-x))^{-1} $ +\form#170:$ \frac{\partial E}{\partial x} = \frac{\partial E}{\partial y} y (1 - y) $ +\form#171:$ \hat{p}_{nk} = \exp(x_{nk}) / \left[\sum_{k'} \exp(x_{nk'})\right] $ +\form#172:$ y = \frac{\exp(2x) - 1}{\exp(2x) + 1} $ +\form#173:$ \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) $ +\form#174:$ y = \left\{ \begin{array}{lr} 0 & \mathrm{if} \; x \le t \\ 1 & \mathrm{if} \; x > t \end{array} \right. $ diff --git a/doxygen/functions.html b/doxygen/functions.html index e51d0b99342..c0ec2c4d66c 100644 --- a/doxygen/functions.html +++ b/doxygen/functions.html @@ -3,7 +3,7 @@ - + Caffe: Class Members @@ -29,7 +29,7 @@ - + @@ -101,9 +101,9 @@ diff --git a/doxygen/functions_b.html b/doxygen/functions_b.html index f5a2c9f7854..1e89b2597ae 100644 --- a/doxygen/functions_b.html +++ b/doxygen/functions_b.html @@ -3,7 +3,7 @@ - + Caffe: Class Members @@ -29,7 +29,7 @@ - + @@ -202,9 +202,9 @@ diff --git a/doxygen/functions_c.html b/doxygen/functions_c.html index 730ab048ca0..d2ce467fda6 100644 --- a/doxygen/functions_c.html +++ b/doxygen/functions_c.html @@ -3,7 +3,7 @@ - + Caffe: Class Members @@ -29,7 +29,7 @@ - + @@ -110,9 +110,9 @@ diff --git a/doxygen/functions_d.html b/doxygen/functions_d.html index 21d0e082673..6534febedd5 100644 --- a/doxygen/functions_d.html +++ b/doxygen/functions_d.html @@ -3,7 +3,7 @@ - + Caffe: Class Members @@ -29,7 +29,7 @@ - + @@ -81,9 +81,9 @@ diff --git a/doxygen/functions_e.html b/doxygen/functions_e.html index a4fe146ebd3..cfcaedf0a70 100644 --- a/doxygen/functions_e.html +++ b/doxygen/functions_e.html @@ -3,7 +3,7 @@ - + Caffe: Class Members @@ -29,7 +29,7 @@ - + @@ -119,6 +119,7 @@ , caffe::HDF5OutputLayer< Dtype > , caffe::Im2colLayer< Dtype > , caffe::ImageDataLayer< Dtype > +, caffe::InfogainLossLayer< Dtype > , caffe::InnerProductLayer< Dtype > , caffe::Layer< Dtype > , caffe::LossLayer< Dtype > @@ -149,9 +150,9 @@ diff --git a/doxygen/functions_f.html b/doxygen/functions_f.html index 86b15338b73..f9801e03c80 100644 --- a/doxygen/functions_f.html +++ b/doxygen/functions_f.html @@ -3,7 +3,7 @@ - + Caffe: Class Members @@ -29,7 +29,7 @@ - + @@ -201,9 +201,9 @@ diff --git a/doxygen/functions_func.html b/doxygen/functions_func.html index 18da56e7f69..ed2b8289880 100644 --- a/doxygen/functions_func.html +++ b/doxygen/functions_func.html @@ -3,7 +3,7 @@ - + Caffe: Class Members - Functions @@ -29,7 +29,7 @@ - + @@ -98,9 +98,9 @@ diff --git a/doxygen/functions_func_b.html b/doxygen/functions_func_b.html index 568df0749b6..03f4415a1b8 100644 --- a/doxygen/functions_func_b.html +++ b/doxygen/functions_func_b.html @@ -3,7 +3,7 @@ - + Caffe: Class Members - Functions @@ -29,7 +29,7 @@ - + @@ -192,9 +192,9 @@ diff --git a/doxygen/functions_func_c.html b/doxygen/functions_func_c.html index 1179f3a5e10..76333af88a0 100644 --- a/doxygen/functions_func_c.html +++ b/doxygen/functions_func_c.html @@ -3,7 +3,7 @@ - + Caffe: Class Members - Functions @@ -29,7 +29,7 @@ - + @@ -89,9 +89,9 @@ diff --git a/doxygen/functions_func_d.html b/doxygen/functions_func_d.html index 083101fd559..e22c241a574 100644 --- a/doxygen/functions_func_d.html +++ b/doxygen/functions_func_d.html @@ -3,7 +3,7 @@ - + Caffe: Class Members - Functions @@ -29,7 +29,7 @@ - + @@ -68,9 +68,9 @@ diff --git a/doxygen/functions_func_e.html b/doxygen/functions_func_e.html index abfc35f2614..ac2b940133a 100644 --- a/doxygen/functions_func_e.html +++ b/doxygen/functions_func_e.html @@ -3,7 +3,7 @@ - + Caffe: Class Members - Functions @@ -29,7 +29,7 @@ - + @@ -119,6 +119,7 @@ , caffe::HDF5OutputLayer< Dtype > , caffe::Im2colLayer< Dtype > , caffe::ImageDataLayer< Dtype > +, caffe::InfogainLossLayer< Dtype > , caffe::InnerProductLayer< Dtype > , caffe::Layer< Dtype > , caffe::LossLayer< Dtype > @@ -146,9 +147,9 @@ diff --git a/doxygen/functions_func_f.html b/doxygen/functions_func_f.html index 13975204331..619a0c47e84 100644 --- a/doxygen/functions_func_f.html +++ b/doxygen/functions_func_f.html @@ -3,7 +3,7 @@ - + Caffe: Class Members - Functions @@ -29,7 +29,7 @@ - + @@ -192,9 +192,9 @@ diff --git a/doxygen/functions_func_g.html b/doxygen/functions_func_g.html index d4551816778..232b72e1d06 100644 --- a/doxygen/functions_func_g.html +++ b/doxygen/functions_func_g.html @@ -3,7 +3,7 @@ - + Caffe: Class Members - Functions @@ -29,7 +29,7 @@ - + @@ -62,16 +62,17 @@

    - g -

    diff --git a/doxygen/functions_func_h.html b/doxygen/functions_func_h.html index 3885c709ceb..1043aeca01b 100644 --- a/doxygen/functions_func_h.html +++ b/doxygen/functions_func_h.html @@ -3,7 +3,7 @@ - + Caffe: Class Members - Functions @@ -29,7 +29,7 @@ - + @@ -68,9 +68,9 @@ diff --git a/doxygen/functions_func_i.html b/doxygen/functions_func_i.html index 4d7a6acd7c7..60d05a32e55 100644 --- a/doxygen/functions_func_i.html +++ b/doxygen/functions_func_i.html @@ -3,7 +3,7 @@ - + Caffe: Class Members - Functions @@ -29,7 +29,7 @@ - + @@ -77,9 +77,9 @@ diff --git a/doxygen/functions_func_l.html b/doxygen/functions_func_l.html index 0521d301c7b..c596fae65f4 100644 --- a/doxygen/functions_func_l.html +++ b/doxygen/functions_func_l.html @@ -3,7 +3,7 @@ - + Caffe: Class Members - Functions @@ -29,7 +29,7 @@ - + @@ -126,9 +126,9 @@ diff --git a/doxygen/functions_func_m.html b/doxygen/functions_func_m.html index 0d1d524ff83..4472b459073 100644 --- a/doxygen/functions_func_m.html +++ b/doxygen/functions_func_m.html @@ -3,7 +3,7 @@ - + Caffe: Class Members - Functions @@ -29,7 +29,7 @@ - + @@ -71,6 +71,7 @@
  • MaxTopBlobs() : caffe::AccuracyLayer< Dtype > , caffe::DataLayer< Dtype > +, caffe::InfogainLossLayer< Dtype > , caffe::Layer< Dtype > , caffe::PoolingLayer< Dtype > , caffe::SoftmaxWithLossLayer< Dtype > @@ -94,6 +95,7 @@ , caffe::DummyDataLayer< Dtype > , caffe::FilterLayer< Dtype > , caffe::HDF5DataLayer< Dtype > +, caffe::InfogainLossLayer< Dtype > , caffe::InputLayer< Dtype > , caffe::Layer< Dtype > , caffe::PoolingLayer< Dtype > @@ -105,9 +107,9 @@ diff --git a/doxygen/functions_func_n.html b/doxygen/functions_func_n.html index 5e565a4647f..889a24dc5ad 100644 --- a/doxygen/functions_func_n.html +++ b/doxygen/functions_func_n.html @@ -3,7 +3,7 @@ - + Caffe: Class Members - Functions @@ -29,7 +29,7 @@ - + @@ -74,9 +74,9 @@ diff --git a/doxygen/functions_func_o.html b/doxygen/functions_func_o.html index 025c92b857f..4264780fd8e 100644 --- a/doxygen/functions_func_o.html +++ b/doxygen/functions_func_o.html @@ -3,7 +3,7 @@ - + Caffe: Class Members - Functions @@ -29,7 +29,7 @@ - + @@ -70,9 +70,9 @@ diff --git a/doxygen/functions_func_p.html b/doxygen/functions_func_p.html index 635fbd5b8a9..cec4380cf32 100644 --- a/doxygen/functions_func_p.html +++ b/doxygen/functions_func_p.html @@ -3,7 +3,7 @@ - + Caffe: Class Members - Functions @@ -29,7 +29,7 @@ - + @@ -86,9 +86,9 @@ diff --git a/doxygen/functions_func_r.html b/doxygen/functions_func_r.html index 1d033cc4c41..a51c06c7e9d 100644 --- a/doxygen/functions_func_r.html +++ b/doxygen/functions_func_r.html @@ -3,7 +3,7 @@ - + Caffe: Class Members - Functions @@ -29,7 +29,7 @@ - + @@ -135,9 +135,9 @@ diff --git a/doxygen/functions_func_s.html b/doxygen/functions_func_s.html index d43c04f93b4..7190cf15e14 100644 --- a/doxygen/functions_func_s.html +++ b/doxygen/functions_func_s.html @@ -3,7 +3,7 @@ - + Caffe: Class Members - Functions @@ -29,7 +29,7 @@ - + @@ -106,6 +106,9 @@
  • StopInternalThread() : caffe::InternalThread
  • +
  • sum_rows_of_H() +: caffe::InfogainLossLayer< Dtype > +
  • sumsq_data() : caffe::Blob< Dtype >
  • @@ -116,9 +119,9 @@ diff --git a/doxygen/functions_func_t.html b/doxygen/functions_func_t.html index 060944d8a9a..29e5ee6861a 100644 --- a/doxygen/functions_func_t.html +++ b/doxygen/functions_func_t.html @@ -3,7 +3,7 @@ - + Caffe: Class Members - Functions @@ -29,7 +29,7 @@ - + @@ -154,9 +154,9 @@ diff --git a/doxygen/functions_func_u.html b/doxygen/functions_func_u.html index 779b394f0e8..9b1ede5a60c 100644 --- a/doxygen/functions_func_u.html +++ b/doxygen/functions_func_u.html @@ -3,7 +3,7 @@ - + Caffe: Class Members - Functions @@ -29,7 +29,7 @@ - + @@ -71,9 +71,9 @@ diff --git a/doxygen/functions_func_w.html b/doxygen/functions_func_w.html index fabc6922de6..8cb0a65e361 100644 --- a/doxygen/functions_func_w.html +++ b/doxygen/functions_func_w.html @@ -3,7 +3,7 @@ - + Caffe: Class Members - Functions @@ -29,7 +29,7 @@ - + @@ -68,9 +68,9 @@ diff --git a/doxygen/functions_g.html b/doxygen/functions_g.html index f3c154222c1..ecd606723dd 100644 --- a/doxygen/functions_g.html +++ b/doxygen/functions_g.html @@ -3,7 +3,7 @@ - + Caffe: Class Members @@ -29,7 +29,7 @@ - + @@ -62,16 +62,17 @@

    - g -

    diff --git a/doxygen/functions_h.html b/doxygen/functions_h.html index eeba84fa059..54458109807 100644 --- a/doxygen/functions_h.html +++ b/doxygen/functions_h.html @@ -3,7 +3,7 @@ - + Caffe: Class Members @@ -29,7 +29,7 @@ - + @@ -63,6 +63,7 @@

    - h -

    • has_ignore_label_ : caffe::AccuracyLayer< Dtype > +, caffe::InfogainLossLayer< Dtype > , caffe::SigmoidCrossEntropyLossLayer< Dtype > , caffe::SoftmaxWithLossLayer< Dtype >
    • @@ -76,9 +77,9 @@ diff --git a/doxygen/functions_i.html b/doxygen/functions_i.html index 2d4e2594e86..2a84053e318 100644 --- a/doxygen/functions_i.html +++ b/doxygen/functions_i.html @@ -3,7 +3,7 @@ - + Caffe: Class Members @@ -29,7 +29,7 @@ - + @@ -63,6 +63,7 @@

      - i -

      diff --git a/doxygen/functions_r.html b/doxygen/functions_r.html index 6d0ffa5e2e2..37d5c83f56e 100644 --- a/doxygen/functions_r.html +++ b/doxygen/functions_r.html @@ -3,7 +3,7 @@ - + Caffe: Class Members @@ -29,7 +29,7 @@ - + @@ -138,9 +138,9 @@ diff --git a/doxygen/functions_s.html b/doxygen/functions_s.html index 1a2f8023b03..d641f9cb10d 100644 --- a/doxygen/functions_s.html +++ b/doxygen/functions_s.html @@ -3,7 +3,7 @@ - + Caffe: Class Members @@ -29,7 +29,7 @@ - + @@ -115,13 +115,16 @@ : caffe::SigmoidCrossEntropyLossLayer< Dtype >
    • softmax_bottom_vec_ -: caffe::SoftmaxWithLossLayer< Dtype > +: caffe::InfogainLossLayer< Dtype > +, caffe::SoftmaxWithLossLayer< Dtype >
    • softmax_layer_ -: caffe::SoftmaxWithLossLayer< Dtype > +: caffe::InfogainLossLayer< Dtype > +, caffe::SoftmaxWithLossLayer< Dtype >
    • softmax_top_vec_ -: caffe::SoftmaxWithLossLayer< Dtype > +: caffe::InfogainLossLayer< Dtype > +, caffe::SoftmaxWithLossLayer< Dtype >
    • SoftmaxWithLossLayer() : caffe::SoftmaxWithLossLayer< Dtype > @@ -153,6 +156,9 @@ , caffe::ReductionLayer< Dtype > , caffe::SoftmaxLayer< Dtype >
    • +
    • sum_rows_of_H() +: caffe::InfogainLossLayer< Dtype > +
    • sumsq_data() : caffe::Blob< Dtype >
    • @@ -163,9 +169,9 @@ diff --git a/doxygen/functions_t.html b/doxygen/functions_t.html index 4e480897a9b..0502d3e9b57 100644 --- a/doxygen/functions_t.html +++ b/doxygen/functions_t.html @@ -3,7 +3,7 @@ - + Caffe: Class Members @@ -29,7 +29,7 @@ - + @@ -166,9 +166,9 @@ diff --git a/doxygen/functions_u.html b/doxygen/functions_u.html index ee03565e625..6cd5f79a3c8 100644 --- a/doxygen/functions_u.html +++ b/doxygen/functions_u.html @@ -3,7 +3,7 @@ - + Caffe: Class Members @@ -29,7 +29,7 @@ - + @@ -74,9 +74,9 @@ diff --git a/doxygen/functions_vars.html b/doxygen/functions_vars.html index 72205b934a6..a148a71e8c3 100644 --- a/doxygen/functions_vars.html +++ b/doxygen/functions_vars.html @@ -3,7 +3,7 @@ - + Caffe: Class Members - Variables @@ -29,7 +29,7 @@ - + @@ -146,6 +146,7 @@

      - h -

      • has_ignore_label_ : caffe::AccuracyLayer< Dtype > +, caffe::InfogainLossLayer< Dtype > , caffe::SigmoidCrossEntropyLossLayer< Dtype > , caffe::SoftmaxWithLossLayer< Dtype >
      • @@ -158,6 +159,7 @@

        - i -

        @@ -305,13 +309,16 @@ : caffe::SigmoidCrossEntropyLossLayer< Dtype >
      • softmax_bottom_vec_ -: caffe::SoftmaxWithLossLayer< Dtype > +: caffe::InfogainLossLayer< Dtype > +, caffe::SoftmaxWithLossLayer< Dtype >
      • softmax_layer_ -: caffe::SoftmaxWithLossLayer< Dtype > +: caffe::InfogainLossLayer< Dtype > +, caffe::SoftmaxWithLossLayer< Dtype >
      • softmax_top_vec_ -: caffe::SoftmaxWithLossLayer< Dtype > +: caffe::InfogainLossLayer< Dtype > +, caffe::SoftmaxWithLossLayer< Dtype >
      • split_layer_ : caffe::SPPLayer< Dtype > @@ -358,9 +365,9 @@ diff --git a/doxygen/functions_w.html b/doxygen/functions_w.html index 604e3f95430..8b85411dfff 100644 --- a/doxygen/functions_w.html +++ b/doxygen/functions_w.html @@ -3,7 +3,7 @@ - + Caffe: Class Members @@ -29,7 +29,7 @@ - + @@ -68,9 +68,9 @@ diff --git a/doxygen/hdf5_8hpp_source.html b/doxygen/hdf5_8hpp_source.html index ea692f3b515..cbc8bd11890 100644 --- a/doxygen/hdf5_8hpp_source.html +++ b/doxygen/hdf5_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/util/hdf5.hpp Source File @@ -29,7 +29,7 @@ - + @@ -66,13 +66,13 @@
        hdf5.hpp
        -
        1 #ifndef CAFFE_UTIL_HDF5_H_
        2 #define CAFFE_UTIL_HDF5_H_
        3 
        4 #include <string>
        5 
        6 #include "hdf5.h"
        7 #include "hdf5_hl.h"
        8 
        9 #include "caffe/blob.hpp"
        10 
        11 namespace caffe {
        12 
        13 template <typename Dtype>
        14 void hdf5_load_nd_dataset_helper(
        15  hid_t file_id, const char* dataset_name_, int min_dim, int max_dim,
        16  Blob<Dtype>* blob);
        17 
        18 template <typename Dtype>
        19 void hdf5_load_nd_dataset(
        20  hid_t file_id, const char* dataset_name_, int min_dim, int max_dim,
        21  Blob<Dtype>* blob);
        22 
        23 template <typename Dtype>
        24 void hdf5_save_nd_dataset(
        25  const hid_t file_id, const string& dataset_name, const Blob<Dtype>& blob,
        26  bool write_diff = false);
        27 
        28 int hdf5_load_int(hid_t loc_id, const string& dataset_name);
        29 void hdf5_save_int(hid_t loc_id, const string& dataset_name, int i);
        30 string hdf5_load_string(hid_t loc_id, const string& dataset_name);
        31 void hdf5_save_string(hid_t loc_id, const string& dataset_name,
        32  const string& s);
        33 
        34 int hdf5_get_num_links(hid_t loc_id);
        35 string hdf5_get_name_by_idx(hid_t loc_id, int idx);
        36 
        37 } // namespace caffe
        38 
        39 #endif // CAFFE_UTIL_HDF5_H_
        A layer factory that allows one to register layers. During runtime, registered layers can be called b...
        Definition: blob.hpp:14
        +
        1 #ifndef CAFFE_UTIL_HDF5_H_
        2 #define CAFFE_UTIL_HDF5_H_
        3 
        4 #include <string>
        5 
        6 #include "hdf5.h"
        7 #include "hdf5_hl.h"
        8 
        9 #include "caffe/blob.hpp"
        10 
        11 namespace caffe {
        12 
        13 template <typename Dtype>
        14 void hdf5_load_nd_dataset_helper(
        15  hid_t file_id, const char* dataset_name_, int min_dim, int max_dim,
        16  Blob<Dtype>* blob, bool reshape);
        17 
        18 template <typename Dtype>
        19 void hdf5_load_nd_dataset(
        20  hid_t file_id, const char* dataset_name_, int min_dim, int max_dim,
        21  Blob<Dtype>* blob, bool reshape = false);
        22 
        23 template <typename Dtype>
        24 void hdf5_save_nd_dataset(
        25  const hid_t file_id, const string& dataset_name, const Blob<Dtype>& blob,
        26  bool write_diff = false);
        27 
        28 int hdf5_load_int(hid_t loc_id, const string& dataset_name);
        29 void hdf5_save_int(hid_t loc_id, const string& dataset_name, int i);
        30 string hdf5_load_string(hid_t loc_id, const string& dataset_name);
        31 void hdf5_save_string(hid_t loc_id, const string& dataset_name,
        32  const string& s);
        33 
        34 int hdf5_get_num_links(hid_t loc_id);
        35 string hdf5_get_name_by_idx(hid_t loc_id, int idx);
        36 
        37 } // namespace caffe
        38 
        39 #endif // CAFFE_UTIL_HDF5_H_
        A layer factory that allows one to register layers. During runtime, registered layers can be called b...
        Definition: blob.hpp:14
        diff --git a/doxygen/hdf5__data__layer_8hpp_source.html b/doxygen/hdf5__data__layer_8hpp_source.html index 8071550051b..6b9f305d207 100644 --- a/doxygen/hdf5__data__layer_8hpp_source.html +++ b/doxygen/hdf5__data__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/hdf5_data_layer.hpp Source File @@ -29,7 +29,7 @@
        - + @@ -66,25 +66,25 @@
        hdf5_data_layer.hpp
        -
        1 #ifndef CAFFE_HDF5_DATA_LAYER_HPP_
        2 #define CAFFE_HDF5_DATA_LAYER_HPP_
        3 
        4 #include "hdf5.h"
        5 
        6 #include <string>
        7 #include <vector>
        8 
        9 #include "caffe/blob.hpp"
        10 #include "caffe/layer.hpp"
        11 #include "caffe/proto/caffe.pb.h"
        12 
        13 #include "caffe/layers/base_data_layer.hpp"
        14 
        15 namespace caffe {
        16 
        22 template <typename Dtype>
        23 class HDF5DataLayer : public Layer<Dtype> {
        24  public:
        25  explicit HDF5DataLayer(const LayerParameter& param)
        26  : Layer<Dtype>(param), offset_() {}
        27  virtual ~HDF5DataLayer();
        28  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        29  const vector<Blob<Dtype>*>& top);
        30  // Data layers should be shared by multiple solvers in parallel
        31  virtual inline bool ShareInParallel() const { return true; }
        32  // Data layers have no bottoms, so reshaping is trivial.
        33  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        34  const vector<Blob<Dtype>*>& top) {}
        35 
        36  virtual inline const char* type() const { return "HDF5Data"; }
        37  virtual inline int ExactNumBottomBlobs() const { return 0; }
        38  virtual inline int MinTopBlobs() const { return 1; }
        39 
        40  protected:
        41  void Next();
        42  bool Skip();
        43 
        44  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        45  const vector<Blob<Dtype>*>& top);
        46  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        47  const vector<Blob<Dtype>*>& top);
        48  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        49  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
        50  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        51  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
        52  virtual void LoadHDF5FileData(const char* filename);
        53 
        54  std::vector<std::string> hdf_filenames_;
        55  unsigned int num_files_;
        56  unsigned int current_file_;
        57  hsize_t current_row_;
        58  std::vector<shared_ptr<Blob<Dtype> > > hdf_blobs_;
        59  std::vector<unsigned int> data_permutation_;
        60  std::vector<unsigned int> file_permutation_;
        61  uint64_t offset_;
        62 };
        63 
        64 } // namespace caffe
        65 
        66 #endif // CAFFE_HDF5_DATA_LAYER_HPP_
        virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        Using the CPU device, compute the layer output.
        Definition: hdf5_data_layer.cpp:161
        +
        1 #ifndef CAFFE_HDF5_DATA_LAYER_HPP_
        2 #define CAFFE_HDF5_DATA_LAYER_HPP_
        3 
        4 #include "hdf5.h"
        5 
        6 #include <string>
        7 #include <vector>
        8 
        9 #include "caffe/blob.hpp"
        10 #include "caffe/layer.hpp"
        11 #include "caffe/proto/caffe.pb.h"
        12 
        13 #include "caffe/layers/base_data_layer.hpp"
        14 
        15 namespace caffe {
        16 
        22 template <typename Dtype>
        23 class HDF5DataLayer : public Layer<Dtype> {
        24  public:
        25  explicit HDF5DataLayer(const LayerParameter& param)
        26  : Layer<Dtype>(param), offset_() {}
        27  virtual ~HDF5DataLayer();
        28  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        29  const vector<Blob<Dtype>*>& top);
        30  // Data layers have no bottoms, so reshaping is trivial.
        31  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        32  const vector<Blob<Dtype>*>& top) {}
        33 
        34  virtual inline const char* type() const { return "HDF5Data"; }
        35  virtual inline int ExactNumBottomBlobs() const { return 0; }
        36  virtual inline int MinTopBlobs() const { return 1; }
        37 
        38  protected:
        39  void Next();
        40  bool Skip();
        41 
        42  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        43  const vector<Blob<Dtype>*>& top);
        44  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        45  const vector<Blob<Dtype>*>& top);
        46  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        47  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
        48  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        49  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
        50  virtual void LoadHDF5FileData(const char* filename);
        51 
        52  std::vector<std::string> hdf_filenames_;
        53  unsigned int num_files_;
        54  unsigned int current_file_;
        55  hsize_t current_row_;
        56  std::vector<shared_ptr<Blob<Dtype> > > hdf_blobs_;
        57  std::vector<unsigned int> data_permutation_;
        58  std::vector<unsigned int> file_permutation_;
        59  uint64_t offset_;
        60 };
        61 
        62 } // namespace caffe
        63 
        64 #endif // CAFFE_HDF5_DATA_LAYER_HPP_
        virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
        +
        virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        Using the CPU device, compute the layer output.
        Definition: hdf5_data_layer.cpp:162
        An interface for the units of computation which can be composed into a Net.
        Definition: layer.hpp:33
        A layer factory that allows one to register layers. During runtime, registered layers can be called b...
        Definition: blob.hpp:14
        -
        virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
        Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        Definition: hdf5_data_layer.hpp:50
        -
        virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
        Definition: hdf5_data_layer.hpp:33
        +
        virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
        Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        Definition: hdf5_data_layer.hpp:48
        +
        virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
        Definition: hdf5_data_layer.hpp:31
        Provides data to the Net from HDF5 files.
        Definition: hdf5_data_layer.hpp:23
        -
        virtual int MinTopBlobs() const
        Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
        Definition: hdf5_data_layer.hpp:38
        -
        virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        Does layer-specific setup: your layer should implement this function as well as Reshape.
        Definition: hdf5_data_layer.cpp:72
        -
        virtual int ExactNumBottomBlobs() const
        Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
        Definition: hdf5_data_layer.hpp:37
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
        Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        Definition: hdf5_data_layer.hpp:48
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: hdf5_data_layer.hpp:36
        +
        virtual int MinTopBlobs() const
        Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
        Definition: hdf5_data_layer.hpp:36
        +
        virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        Does layer-specific setup: your layer should implement this function as well as Reshape.
        Definition: hdf5_data_layer.cpp:73
        +
        virtual int ExactNumBottomBlobs() const
        Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
        Definition: hdf5_data_layer.hpp:35
        +
        virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
        Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        Definition: hdf5_data_layer.hpp:46
        +
        virtual const char * type() const
        Returns the layer type.
        Definition: hdf5_data_layer.hpp:34
        A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
        Definition: blob.hpp:24
        diff --git a/doxygen/hdf5__output__layer_8hpp_source.html b/doxygen/hdf5__output__layer_8hpp_source.html index 7b9d78f509f..e270eb86a0e 100644 --- a/doxygen/hdf5__output__layer_8hpp_source.html +++ b/doxygen/hdf5__output__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/hdf5_output_layer.hpp Source File @@ -29,7 +29,7 @@
        - + @@ -66,25 +66,25 @@
        hdf5_output_layer.hpp
        -
        1 #ifndef CAFFE_HDF5_OUTPUT_LAYER_HPP_
        2 #define CAFFE_HDF5_OUTPUT_LAYER_HPP_
        3 
        4 #include "hdf5.h"
        5 
        6 #include <string>
        7 #include <vector>
        8 
        9 #include "caffe/blob.hpp"
        10 #include "caffe/layer.hpp"
        11 #include "caffe/proto/caffe.pb.h"
        12 
        13 namespace caffe {
        14 
        15 #define HDF5_DATA_DATASET_NAME "data"
        16 #define HDF5_DATA_LABEL_NAME "label"
        17 
        23 template <typename Dtype>
        24 class HDF5OutputLayer : public Layer<Dtype> {
        25  public:
        26  explicit HDF5OutputLayer(const LayerParameter& param)
        27  : Layer<Dtype>(param), file_opened_(false) {}
        28  virtual ~HDF5OutputLayer();
        29  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        30  const vector<Blob<Dtype>*>& top);
        31  // Data layers should be shared by multiple solvers in parallel
        32  virtual inline bool ShareInParallel() const { return true; }
        33  // Data layers have no bottoms, so reshaping is trivial.
        34  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        35  const vector<Blob<Dtype>*>& top) {}
        36 
        37  virtual inline const char* type() const { return "HDF5Output"; }
        38  // TODO: no limit on the number of blobs
        39  virtual inline int ExactNumBottomBlobs() const { return 2; }
        40  virtual inline int ExactNumTopBlobs() const { return 0; }
        41 
        42  inline std::string file_name() const { return file_name_; }
        43 
        44  protected:
        45  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        46  const vector<Blob<Dtype>*>& top);
        47  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        48  const vector<Blob<Dtype>*>& top);
        49  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        50  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        51  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        52  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        53  virtual void SaveBlobs();
        54 
        55  bool file_opened_;
        56  std::string file_name_;
        57  hid_t file_id_;
        58  Blob<Dtype> data_blob_;
        59  Blob<Dtype> label_blob_;
        60 };
        61 
        62 } // namespace caffe
        63 
        64 #endif // CAFFE_HDF5_OUTPUT_LAYER_HPP_
        An interface for the units of computation which can be composed into a Net.
        Definition: layer.hpp:33
        +
        1 #ifndef CAFFE_HDF5_OUTPUT_LAYER_HPP_
        2 #define CAFFE_HDF5_OUTPUT_LAYER_HPP_
        3 
        4 #include "hdf5.h"
        5 
        6 #include <string>
        7 #include <vector>
        8 
        9 #include "caffe/blob.hpp"
        10 #include "caffe/layer.hpp"
        11 #include "caffe/proto/caffe.pb.h"
        12 
        13 namespace caffe {
        14 
        15 #define HDF5_DATA_DATASET_NAME "data"
        16 #define HDF5_DATA_LABEL_NAME "label"
        17 
        23 template <typename Dtype>
        24 class HDF5OutputLayer : public Layer<Dtype> {
        25  public:
        26  explicit HDF5OutputLayer(const LayerParameter& param)
        27  : Layer<Dtype>(param), file_opened_(false) {}
        28  virtual ~HDF5OutputLayer();
        29  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        30  const vector<Blob<Dtype>*>& top);
        31  // Data layers have no bottoms, so reshaping is trivial.
        32  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        33  const vector<Blob<Dtype>*>& top) {}
        34 
        35  virtual inline const char* type() const { return "HDF5Output"; }
        36  // TODO: no limit on the number of blobs
        37  virtual inline int ExactNumBottomBlobs() const { return 2; }
        38  virtual inline int ExactNumTopBlobs() const { return 0; }
        39 
        40  inline std::string file_name() const { return file_name_; }
        41 
        42  protected:
        43  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        44  const vector<Blob<Dtype>*>& top);
        45  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        46  const vector<Blob<Dtype>*>& top);
        47  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        48  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        49  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        50  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        51  virtual void SaveBlobs();
        52 
        53  bool file_opened_;
        54  std::string file_name_;
        55  hid_t file_id_;
        56  Blob<Dtype> data_blob_;
        57  Blob<Dtype> label_blob_;
        58 };
        59 
        60 } // namespace caffe
        61 
        62 #endif // CAFFE_HDF5_OUTPUT_LAYER_HPP_
        An interface for the units of computation which can be composed into a Net.
        Definition: layer.hpp:33
        A layer factory that allows one to register layers. During runtime, registered layers can be called b...
        Definition: blob.hpp:14
        virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        Using the CPU device, compute the layer output.
        Definition: hdf5_output_layer.cpp:41
        Write blobs to disk as HDF5 files.
        Definition: hdf5_output_layer.hpp:24
        -
        virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
        Definition: hdf5_output_layer.hpp:34
        -
        virtual int ExactNumTopBlobs() const
        Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
        Definition: hdf5_output_layer.hpp:40
        +
        virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
        Definition: hdf5_output_layer.hpp:32
        +
        virtual int ExactNumTopBlobs() const
        Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
        Definition: hdf5_output_layer.hpp:38
        virtual void Backward_gpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
        Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
        Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        Definition: hdf5_output_layer.cpp:62
        -
        virtual int ExactNumBottomBlobs() const
        Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
        Definition: hdf5_output_layer.hpp:39
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: hdf5_output_layer.hpp:37
        +
        virtual int ExactNumBottomBlobs() const
        Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
        Definition: hdf5_output_layer.hpp:37
        +
        virtual const char * type() const
        Returns the layer type.
        Definition: hdf5_output_layer.hpp:35
        virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        Does layer-specific setup: your layer should implement this function as well as Reshape.
        Definition: hdf5_output_layer.cpp:12
        virtual void Forward_gpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
        A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
        Definition: blob.hpp:24
        diff --git a/doxygen/hierarchy.html b/doxygen/hierarchy.html index 96fde267107..bc778cd9c30 100644 --- a/doxygen/hierarchy.html +++ b/doxygen/hierarchy.html @@ -3,7 +3,7 @@ - + Caffe: Class Hierarchy @@ -29,7 +29,7 @@
        - + @@ -78,12 +78,12 @@  Ccaffe::db::DB  Ccaffe::Filler< Dtype >Fills a Blob with constant or randomly-generated data  Ccaffe::BilinearFiller< Dtype >Fills a Blob with coefficients for bilinear interpolation - Ccaffe::ConstantFiller< Dtype >Fills a Blob with constant values $ x = 0 $ - Ccaffe::GaussianFiller< Dtype >Fills a Blob with Gaussian-distributed values $ x = a $ - Ccaffe::MSRAFiller< Dtype >Fills a Blob with values $ x \sim N(0, \sigma^2) $ where $ \sigma^2 $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average - Ccaffe::PositiveUnitballFiller< Dtype >Fills a Blob with values $ x \in [0, 1] $ such that $ \forall i \sum_j x_{ij} = 1 $ - Ccaffe::UniformFiller< Dtype >Fills a Blob with uniformly distributed values $ x\sim U(a, b) $ - Ccaffe::XavierFiller< Dtype >Fills a Blob with values $ x \sim U(-a, +a) $ where $ a $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average + Ccaffe::ConstantFiller< Dtype >Fills a Blob with constant values $ x = 0 $ + Ccaffe::GaussianFiller< Dtype >Fills a Blob with Gaussian-distributed values $ x = a $ + Ccaffe::MSRAFiller< Dtype >Fills a Blob with values $ x \sim N(0, \sigma^2) $ where $ \sigma^2 $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average + Ccaffe::PositiveUnitballFiller< Dtype >Fills a Blob with values $ x \in [0, 1] $ such that $ \forall i \sum_j x_{ij} = 1 $ + Ccaffe::UniformFiller< Dtype >Fills a Blob with uniformly distributed values $ x\sim U(a, b) $ + Ccaffe::XavierFiller< Dtype >Fills a Blob with values $ x \sim U(-a, +a) $ where $ a $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average  Ccaffe::Caffe::RNG::Generator  Ccaffe::InternalThread  Ccaffe::BasePrefetchingDataLayer< Dtype > @@ -92,7 +92,7 @@  Ccaffe::WindowDataLayer< Dtype >Provides data to the Net from windows of images files, specified by a window data file  Ccaffe::Layer< Dtype >An interface for the units of computation which can be composed into a Net  Ccaffe::AccuracyLayer< Dtype >Computes the classification accuracy for a one-of-many classification task - Ccaffe::ArgMaxLayer< Dtype >Compute the index of the $ K $ max values for each datum across all dimensions $ (C \times H \times W) $ + Ccaffe::ArgMaxLayer< Dtype >Compute the index of the $ K $ max values for each datum across all dimensions $ (C \times H \times W) $  Ccaffe::BaseConvolutionLayer< Dtype >Abstract base class that factors out the BLAS code common to ConvolutionLayer and DeconvolutionLayer  Ccaffe::ConvolutionLayer< Dtype >Convolves the input image with a bank of learned filters, and (optionally) adds biases  Ccaffe::DeconvolutionLayer< Dtype >Convolve the input with a bank of learned filters, and (optionally) add biases, treating filters and convolution parameters in the opposite sense as ConvolutionLayer @@ -115,28 +115,28 @@  Ccaffe::InnerProductLayer< Dtype >Also known as a "fully-connected" layer, computes an inner product with a set of learned weights, and (optionally) adds biases  Ccaffe::InputLayer< Dtype >Provides data to the Net by assigning tops directly  Ccaffe::LossLayer< Dtype >An interface for Layers that take two Blobs as input – usually (1) predictions and (2) ground-truth labels – and output a singleton Blob representing the loss - Ccaffe::ContrastiveLossLayer< Dtype >Computes the contrastive loss $ 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 $ where $ d = \left| \left| a_n - b_n \right| \right|_2 $. This can be used to train siamese networks - Ccaffe::EuclideanLossLayer< Dtype >Computes the Euclidean (L2) loss $ E = \frac{1}{2N} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $ for real-valued regression tasks + Ccaffe::ContrastiveLossLayer< Dtype >Computes the contrastive loss $ 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 $ where $ d = \left| \left| a_n - b_n \right| \right|_2 $. This can be used to train siamese networks + Ccaffe::EuclideanLossLayer< Dtype >Computes the Euclidean (L2) loss $ E = \frac{1}{2N} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $ for real-valued regression tasks  Ccaffe::HingeLossLayer< Dtype >Computes the hinge loss for a one-of-many classification task  Ccaffe::InfogainLossLayer< Dtype >A generalization of MultinomialLogisticLossLayer that takes an "information gain" (infogain) matrix specifying the "value" of all label pairs  Ccaffe::MultinomialLogisticLossLayer< Dtype >Computes the multinomial logistic loss for a one-of-many classification task, directly taking a predicted probability distribution as input - Ccaffe::SigmoidCrossEntropyLossLayer< Dtype >Computes the cross-entropy (logistic) loss $ 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] $, often used for predicting targets interpreted as probabilities + Ccaffe::SigmoidCrossEntropyLossLayer< Dtype >Computes the cross-entropy (logistic) loss $ 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] $, often used for predicting targets interpreted as probabilities  Ccaffe::SoftmaxWithLossLayer< Dtype >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  Ccaffe::LRNLayer< Dtype >Normalize the input in a local region across or within feature maps  Ccaffe::LSTMUnitLayer< Dtype >A helper for LSTMLayer: computes a single timestep of the non-linearity of the LSTM, producing the updated cell and hidden states  Ccaffe::MVNLayer< Dtype >Normalizes the input to have 0-mean and/or unit (1) variance - Ccaffe::NeuronLayer< Dtype >An interface for layers that take one blob as input ( $ x $) and produce one equally-sized blob as output ( $ y $), where each element of the output depends only on the corresponding input element - Ccaffe::AbsValLayer< Dtype >Computes $ y = |x| $ - Ccaffe::BNLLLayer< Dtype >Computes $ y = x + \log(1 + \exp(-x)) $ if $ x > 0 $; $ y = \log(1 + \exp(x)) $ otherwise - Ccaffe::DropoutLayer< Dtype >During training only, sets a random portion of $x$ to 0, adjusting the rest of the vector magnitude accordingly - Ccaffe::ELULayer< Dtype >Exponential Linear Unit non-linearity $ y = \left\{ \begin{array}{lr} x & \mathrm{if} \; x > 0 \\ \alpha (\exp(x)-1) & \mathrm{if} \; x \le 0 \end{array} \right. $ - Ccaffe::ExpLayer< Dtype >Computes $ y = \gamma ^ {\alpha x + \beta} $, as specified by the scale $ \alpha $, shift $ \beta $, and base $ \gamma $ - Ccaffe::LogLayer< Dtype >Computes $ y = log_{\gamma}(\alpha x + \beta) $, as specified by the scale $ \alpha $, shift $ \beta $, and base $ \gamma $ - Ccaffe::PowerLayer< Dtype >Computes $ y = (\alpha x + \beta) ^ \gamma $, as specified by the scale $ \alpha $, shift $ \beta $, and power $ \gamma $ - Ccaffe::PReLULayer< Dtype >Parameterized Rectified Linear Unit non-linearity $ y_i = \max(0, x_i) + a_i \min(0, x_i) $. 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 - Ccaffe::ReLULayer< Dtype >Rectified Linear Unit non-linearity $ y = \max(0, x) $. The simple max is fast to compute, and the function does not saturate - Ccaffe::SigmoidLayer< Dtype >Sigmoid function non-linearity $ y = (1 + \exp(-x))^{-1} $, a classic choice in neural networks - Ccaffe::TanHLayer< Dtype >TanH hyperbolic tangent non-linearity $ y = \frac{\exp(2x) - 1}{\exp(2x) + 1} $, popular in auto-encoders + Ccaffe::NeuronLayer< Dtype >An interface for layers that take one blob as input ( $ x $) and produce one equally-sized blob as output ( $ y $), where each element of the output depends only on the corresponding input element + Ccaffe::AbsValLayer< Dtype >Computes $ y = |x| $ + Ccaffe::BNLLLayer< Dtype >Computes $ y = x + \log(1 + \exp(-x)) $ if $ x > 0 $; $ y = \log(1 + \exp(x)) $ otherwise + Ccaffe::DropoutLayer< Dtype >During training only, sets a random portion of $x$ to 0, adjusting the rest of the vector magnitude accordingly + Ccaffe::ELULayer< Dtype >Exponential Linear Unit non-linearity $ y = \left\{ \begin{array}{lr} x & \mathrm{if} \; x > 0 \\ \alpha (\exp(x)-1) & \mathrm{if} \; x \le 0 \end{array} \right. $ + Ccaffe::ExpLayer< Dtype >Computes $ y = \gamma ^ {\alpha x + \beta} $, as specified by the scale $ \alpha $, shift $ \beta $, and base $ \gamma $ + Ccaffe::LogLayer< Dtype >Computes $ y = log_{\gamma}(\alpha x + \beta) $, as specified by the scale $ \alpha $, shift $ \beta $, and base $ \gamma $ + Ccaffe::PowerLayer< Dtype >Computes $ y = (\alpha x + \beta) ^ \gamma $, as specified by the scale $ \alpha $, shift $ \beta $, and power $ \gamma $ + Ccaffe::PReLULayer< Dtype >Parameterized Rectified Linear Unit non-linearity $ y_i = \max(0, x_i) + a_i \min(0, x_i) $. 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 + Ccaffe::ReLULayer< Dtype >Rectified Linear Unit non-linearity $ y = \max(0, x) $. The simple max is fast to compute, and the function does not saturate + Ccaffe::SigmoidLayer< Dtype >Sigmoid function non-linearity $ y = (1 + \exp(-x))^{-1} $, a classic choice in neural networks + Ccaffe::TanHLayer< Dtype >TanH hyperbolic tangent non-linearity $ y = \frac{\exp(2x) - 1}{\exp(2x) + 1} $, popular in auto-encoders  Ccaffe::ThresholdLayer< Dtype >Tests whether the input exceeds a threshold: outputs 1 for inputs above threshold; 0 otherwise  Ccaffe::ParameterLayer< Dtype >  Ccaffe::PoolingLayer< Dtype >Pools the input image by taking the max, average, etc. within regions @@ -177,9 +177,9 @@ diff --git a/doxygen/hinge__loss__layer_8hpp_source.html b/doxygen/hinge__loss__layer_8hpp_source.html index 68b182379d4..9c18986bbb7 100644 --- a/doxygen/hinge__loss__layer_8hpp_source.html +++ b/doxygen/hinge__loss__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/hinge_loss_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -76,9 +76,9 @@ diff --git a/doxygen/im2col_8hpp_source.html b/doxygen/im2col_8hpp_source.html index 3df8f57b976..58a4743da3b 100644 --- a/doxygen/im2col_8hpp_source.html +++ b/doxygen/im2col_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/util/im2col.hpp Source File @@ -29,7 +29,7 @@ - + @@ -70,9 +70,9 @@ diff --git a/doxygen/im2col__layer_8hpp_source.html b/doxygen/im2col__layer_8hpp_source.html index 63280f8b68c..6be27fa515e 100644 --- a/doxygen/im2col__layer_8hpp_source.html +++ b/doxygen/im2col__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/im2col_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -86,9 +86,9 @@ diff --git a/doxygen/image__data__layer_8hpp_source.html b/doxygen/image__data__layer_8hpp_source.html index 0316d67c914..561ff05bbde 100644 --- a/doxygen/image__data__layer_8hpp_source.html +++ b/doxygen/image__data__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/image_data_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -66,8 +66,8 @@
        image_data_layer.hpp
        -
        1 #ifndef CAFFE_IMAGE_DATA_LAYER_HPP_
        2 #define CAFFE_IMAGE_DATA_LAYER_HPP_
        3 
        4 #include <string>
        5 #include <utility>
        6 #include <vector>
        7 
        8 #include "caffe/blob.hpp"
        9 #include "caffe/data_transformer.hpp"
        10 #include "caffe/internal_thread.hpp"
        11 #include "caffe/layer.hpp"
        12 #include "caffe/layers/base_data_layer.hpp"
        13 #include "caffe/proto/caffe.pb.h"
        14 
        15 namespace caffe {
        16 
        22 template <typename Dtype>
        24  public:
        25  explicit ImageDataLayer(const LayerParameter& param)
        27  virtual ~ImageDataLayer();
        28  virtual void DataLayerSetUp(const vector<Blob<Dtype>*>& bottom,
        29  const vector<Blob<Dtype>*>& top);
        30 
        31  virtual inline const char* type() const { return "ImageData"; }
        32  virtual inline int ExactNumBottomBlobs() const { return 0; }
        33  virtual inline int ExactNumTopBlobs() const { return 2; }
        34 
        35  protected:
        36  shared_ptr<Caffe::RNG> prefetch_rng_;
        37  virtual void ShuffleImages();
        38  virtual void load_batch(Batch<Dtype>* batch);
        39 
        40  vector<std::pair<std::string, int> > lines_;
        41  int lines_id_;
        42 };
        43 
        44 
        45 } // namespace caffe
        46 
        47 #endif // CAFFE_IMAGE_DATA_LAYER_HPP_
        Definition: base_data_layer.hpp:49
        -
        Definition: base_data_layer.hpp:55
        +
        1 #ifndef CAFFE_IMAGE_DATA_LAYER_HPP_
        2 #define CAFFE_IMAGE_DATA_LAYER_HPP_
        3 
        4 #include <string>
        5 #include <utility>
        6 #include <vector>
        7 
        8 #include "caffe/blob.hpp"
        9 #include "caffe/data_transformer.hpp"
        10 #include "caffe/internal_thread.hpp"
        11 #include "caffe/layer.hpp"
        12 #include "caffe/layers/base_data_layer.hpp"
        13 #include "caffe/proto/caffe.pb.h"
        14 
        15 namespace caffe {
        16 
        22 template <typename Dtype>
        24  public:
        25  explicit ImageDataLayer(const LayerParameter& param)
        27  virtual ~ImageDataLayer();
        28  virtual void DataLayerSetUp(const vector<Blob<Dtype>*>& bottom,
        29  const vector<Blob<Dtype>*>& top);
        30 
        31  virtual inline const char* type() const { return "ImageData"; }
        32  virtual inline int ExactNumBottomBlobs() const { return 0; }
        33  virtual inline int ExactNumTopBlobs() const { return 2; }
        34 
        35  protected:
        36  shared_ptr<Caffe::RNG> prefetch_rng_;
        37  virtual void ShuffleImages();
        38  virtual void load_batch(Batch<Dtype>* batch);
        39 
        40  vector<std::pair<std::string, int> > lines_;
        41  int lines_id_;
        42 };
        43 
        44 
        45 } // namespace caffe
        46 
        47 #endif // CAFFE_IMAGE_DATA_LAYER_HPP_
        Definition: base_data_layer.hpp:47
        +
        Definition: base_data_layer.hpp:53
        A layer factory that allows one to register layers. During runtime, registered layers can be called b...
        Definition: blob.hpp:14
        Provides data to the Net from image files.
        Definition: image_data_layer.hpp:23
        virtual int ExactNumTopBlobs() const
        Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
        Definition: image_data_layer.hpp:33
        @@ -77,9 +77,9 @@
        diff --git a/doxygen/index.html b/doxygen/index.html index 7e734005ee9..d3e97249eb7 100644 --- a/doxygen/index.html +++ b/doxygen/index.html @@ -3,7 +3,7 @@ - + Caffe: Main Page @@ -29,7 +29,7 @@
        - + @@ -65,9 +65,9 @@ diff --git a/doxygen/infogain__loss__layer_8hpp_source.html b/doxygen/infogain__loss__layer_8hpp_source.html index d4b817d1bfc..8e3628188ce 100644 --- a/doxygen/infogain__loss__layer_8hpp_source.html +++ b/doxygen/infogain__loss__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/infogain_loss_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -66,24 +66,36 @@
        infogain_loss_layer.hpp
        -
        1 #ifndef CAFFE_INFOGAIN_LOSS_LAYER_HPP_
        2 #define CAFFE_INFOGAIN_LOSS_LAYER_HPP_
        3 
        4 #include <vector>
        5 
        6 #include "caffe/blob.hpp"
        7 #include "caffe/layer.hpp"
        8 #include "caffe/proto/caffe.pb.h"
        9 
        10 #include "caffe/layers/loss_layer.hpp"
        11 
        12 namespace caffe {
        13 
        46 template <typename Dtype>
        47 class InfogainLossLayer : public LossLayer<Dtype> {
        48  public:
        49  explicit InfogainLossLayer(const LayerParameter& param)
        50  : LossLayer<Dtype>(param), infogain_() {}
        51  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        52  const vector<Blob<Dtype>*>& top);
        53  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        54  const vector<Blob<Dtype>*>& top);
        55 
        56  // InfogainLossLayer takes 2-3 bottom Blobs; if there are 3 the third should
        57  // be the infogain matrix. (Otherwise the infogain matrix is loaded from a
        58  // file specified by LayerParameter.)
        59  virtual inline int ExactNumBottomBlobs() const { return -1; }
        60  virtual inline int MinBottomBlobs() const { return 2; }
        61  virtual inline int MaxBottomBlobs() const { return 3; }
        62 
        63  virtual inline const char* type() const { return "InfogainLoss"; }
        64 
        65  protected:
        67  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        68  const vector<Blob<Dtype>*>& top);
        69 
        102  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        103  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        104 
        105  Blob<Dtype> infogain_;
        106 };
        107 
        108 } // namespace caffe
        109 
        110 #endif // CAFFE_INFOGAIN_LOSS_LAYER_HPP_
        virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        Does layer-specific setup: your layer should implement this function as well as Reshape.
        Definition: infogain_loss_layer.cpp:11
        +
        1 #ifndef CAFFE_INFOGAIN_LOSS_LAYER_HPP_
        2 #define CAFFE_INFOGAIN_LOSS_LAYER_HPP_
        3 
        4 #include <vector>
        5 
        6 #include "caffe/blob.hpp"
        7 #include "caffe/layer.hpp"
        8 #include "caffe/proto/caffe.pb.h"
        9 
        10 #include "caffe/layers/loss_layer.hpp"
        11 #include "caffe/layers/softmax_layer.hpp"
        12 
        13 namespace caffe {
        14 
        47 template <typename Dtype>
        48 class InfogainLossLayer : public LossLayer<Dtype> {
        49  public:
        50  explicit InfogainLossLayer(const LayerParameter& param)
        51  : LossLayer<Dtype>(param), infogain_() {}
        52  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        53  const vector<Blob<Dtype>*>& top);
        54  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        55  const vector<Blob<Dtype>*>& top);
        56 
        57  // InfogainLossLayer takes 2-3 bottom Blobs; if there are 3 the third should
        58  // be the infogain matrix. (Otherwise the infogain matrix is loaded from a
        59  // file specified by LayerParameter.)
        60  virtual inline int ExactNumBottomBlobs() const { return -1; }
        61  virtual inline int MinBottomBlobs() const { return 2; }
        62  virtual inline int MaxBottomBlobs() const { return 3; }
        63 
        64  // InfogainLossLayer computes softmax prob internally.
        65  // optional second "top" outputs the softmax prob
        66  virtual inline int ExactNumTopBlobs() const { return -1; }
        67  virtual inline int MinTopBlobs() const { return 1; }
        68  virtual inline int MaxTopBlobs() const { return 2; }
        69 
        70  virtual inline const char* type() const { return "InfogainLoss"; }
        71 
        72  protected:
        74  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        75  const vector<Blob<Dtype>*>& top);
        76 
        109  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        110  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        111 
        116  virtual Dtype get_normalizer(
        117  LossParameter_NormalizationMode normalization_mode, int valid_count);
        119  virtual void sum_rows_of_H(const Blob<Dtype>* H);
        120 
        122  shared_ptr<Layer<Dtype> > softmax_layer_;
        126  vector<Blob<Dtype>*> softmax_bottom_vec_;
        128  vector<Blob<Dtype>*> softmax_top_vec_;
        129 
        130  Blob<Dtype> infogain_;
        131  Blob<Dtype> sum_rows_H_; // cache the row sums of H.
        132 
        138  LossParameter_NormalizationMode normalization_;
        139 
        140  int infogain_axis_, outer_num_, inner_num_, num_labels_;
        141 };
        142 
        143 } // namespace caffe
        144 
        145 #endif // CAFFE_INFOGAIN_LOSS_LAYER_HPP_
        virtual int MinTopBlobs() const
        Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
        Definition: infogain_loss_layer.hpp:67
        +
        virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        Does layer-specific setup: your layer should implement this function as well as Reshape.
        Definition: infogain_loss_layer.cpp:12
        +
        vector< Blob< Dtype > * > softmax_bottom_vec_
        bottom vector holder used in call to the underlying SoftmaxLayer::Forward
        Definition: infogain_loss_layer.hpp:126
        +
        int ignore_label_
        The label indicating that an instance should be ignored.
        Definition: infogain_loss_layer.hpp:136
        +
        Blob< Dtype > prob_
        prob stores the output probability predictions from the SoftmaxLayer.
        Definition: infogain_loss_layer.hpp:124
        A layer factory that allows one to register layers. During runtime, registered layers can be called b...
        Definition: blob.hpp:14
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: infogain_loss_layer.hpp:63
        -
        A generalization of MultinomialLogisticLossLayer that takes an "information gain" (infogain) matrix s...
        Definition: infogain_loss_layer.hpp:47
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
        Computes the infogain loss error gradient w.r.t. the predictions.
        Definition: infogain_loss_layer.cpp:71
        -
        virtual int MaxBottomBlobs() const
        Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is requi...
        Definition: infogain_loss_layer.hpp:61
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        A generalization of MultinomialLogisticLossLayer that takes an "information gain" (infogain) matrix s...
        Definition: infogain_loss_layer.cpp:47
        -
        virtual int ExactNumBottomBlobs() const
        Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
        Definition: infogain_loss_layer.hpp:59
        +
        virtual int ExactNumTopBlobs() const
        Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
        Definition: infogain_loss_layer.hpp:66
        +
        virtual const char * type() const
        Returns the layer type.
        Definition: infogain_loss_layer.hpp:70
        +
        LossParameter_NormalizationMode normalization_
        How to normalize the output loss.
        Definition: infogain_loss_layer.hpp:138
        +
        A generalization of MultinomialLogisticLossLayer that takes an "information gain" (infogain) matrix s...
        Definition: infogain_loss_layer.hpp:48
        +
        virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
        Computes the infogain loss error gradient w.r.t. the predictions.
        Definition: infogain_loss_layer.cpp:168
        +
        shared_ptr< Layer< Dtype > > softmax_layer_
        The internal SoftmaxLayer used to map predictions to a distribution.
        Definition: infogain_loss_layer.hpp:122
        +
        virtual int MaxBottomBlobs() const
        Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is requi...
        Definition: infogain_loss_layer.hpp:62
        +
        bool has_ignore_label_
        Whether to ignore instances with a certain label.
        Definition: infogain_loss_layer.hpp:134
        +
        vector< Blob< Dtype > * > softmax_top_vec_
        top vector holder used in call to the underlying SoftmaxLayer::Forward
        Definition: infogain_loss_layer.hpp:128
        +
        virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        A generalization of MultinomialLogisticLossLayer that takes an "information gain" (infogain) matrix s...
        Definition: infogain_loss_layer.cpp:129
        +
        virtual int ExactNumBottomBlobs() const
        Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
        Definition: infogain_loss_layer.hpp:60
        +
        virtual int MaxTopBlobs() const
        Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required...
        Definition: infogain_loss_layer.hpp:68
        +
        virtual void sum_rows_of_H(const Blob< Dtype > *H)
        fill sum_rows_H_ according to matrix H
        Definition: infogain_loss_layer.cpp:115
        An interface for Layers that take two Blobs as input – usually (1) predictions and (2) ground-truth ...
        Definition: loss_layer.hpp:23
        -
        virtual int MinBottomBlobs() const
        Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is requi...
        Definition: infogain_loss_layer.hpp:60
        -
        virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
        Definition: infogain_loss_layer.cpp:25
        +
        virtual Dtype get_normalizer(LossParameter_NormalizationMode normalization_mode, int valid_count)
        Definition: infogain_loss_layer.cpp:85
        +
        virtual int MinBottomBlobs() const
        Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is requi...
        Definition: infogain_loss_layer.hpp:61
        +
        virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
        Definition: infogain_loss_layer.cpp:51
        A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
        Definition: blob.hpp:24
        diff --git a/doxygen/inner__product__layer_8hpp_source.html b/doxygen/inner__product__layer_8hpp_source.html index 2301df5c856..ff795e52e0f 100644 --- a/doxygen/inner__product__layer_8hpp_source.html +++ b/doxygen/inner__product__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/inner_product_layer.hpp Source File @@ -29,7 +29,7 @@
        - + @@ -83,9 +83,9 @@ diff --git a/doxygen/input__layer_8hpp_source.html b/doxygen/input__layer_8hpp_source.html index d7ef52b6bf0..58be6ee7c5f 100644 --- a/doxygen/input__layer_8hpp_source.html +++ b/doxygen/input__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/input_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -66,23 +66,23 @@
        input_layer.hpp
        -
        1 #ifndef CAFFE_INPUT_LAYER_HPP_
        2 #define CAFFE_INPUT_LAYER_HPP_
        3 
        4 #include <vector>
        5 
        6 #include "caffe/blob.hpp"
        7 #include "caffe/layer.hpp"
        8 #include "caffe/proto/caffe.pb.h"
        9 
        10 namespace caffe {
        11 
        18 template <typename Dtype>
        19 class InputLayer : public Layer<Dtype> {
        20  public:
        21  explicit InputLayer(const LayerParameter& param)
        22  : Layer<Dtype>(param) {}
        23  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        24  const vector<Blob<Dtype>*>& top);
        25  // Data layers should be shared by multiple solvers in parallel
        26  virtual inline bool ShareInParallel() const { return true; }
        27  // Data layers have no bottoms, so reshaping is trivial.
        28  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        29  const vector<Blob<Dtype>*>& top) {}
        30 
        31  virtual inline const char* type() const { return "Input"; }
        32  virtual inline int ExactNumBottomBlobs() const { return 0; }
        33  virtual inline int MinTopBlobs() const { return 1; }
        34 
        35  protected:
        36  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        37  const vector<Blob<Dtype>*>& top) {}
        38  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        39  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
        40 };
        41 
        42 } // namespace caffe
        43 
        44 #endif // CAFFE_INPUT_LAYER_HPP_
        An interface for the units of computation which can be composed into a Net.
        Definition: layer.hpp:33
        +
        1 #ifndef CAFFE_INPUT_LAYER_HPP_
        2 #define CAFFE_INPUT_LAYER_HPP_
        3 
        4 #include <vector>
        5 
        6 #include "caffe/blob.hpp"
        7 #include "caffe/layer.hpp"
        8 #include "caffe/proto/caffe.pb.h"
        9 
        10 namespace caffe {
        11 
        18 template <typename Dtype>
        19 class InputLayer : public Layer<Dtype> {
        20  public:
        21  explicit InputLayer(const LayerParameter& param)
        22  : Layer<Dtype>(param) {}
        23  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        24  const vector<Blob<Dtype>*>& top);
        25  // Data layers have no bottoms, so reshaping is trivial.
        26  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        27  const vector<Blob<Dtype>*>& top) {}
        28 
        29  virtual inline const char* type() const { return "Input"; }
        30  virtual inline int ExactNumBottomBlobs() const { return 0; }
        31  virtual inline int MinTopBlobs() const { return 1; }
        32 
        33  protected:
        34  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        35  const vector<Blob<Dtype>*>& top) {}
        36  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        37  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {}
        38 };
        39 
        40 } // namespace caffe
        41 
        42 #endif // CAFFE_INPUT_LAYER_HPP_
        An interface for the units of computation which can be composed into a Net.
        Definition: layer.hpp:33
        A layer factory that allows one to register layers. During runtime, registered layers can be called b...
        Definition: blob.hpp:14
        -
        virtual int ExactNumBottomBlobs() const
        Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
        Definition: input_layer.hpp:32
        +
        virtual int ExactNumBottomBlobs() const
        Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
        Definition: input_layer.hpp:30
        virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        Does layer-specific setup: your layer should implement this function as well as Reshape.
        Definition: input_layer.cpp:8
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        Using the CPU device, compute the layer output.
        Definition: input_layer.hpp:36
        -
        virtual int MinTopBlobs() const
        Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
        Definition: input_layer.hpp:33
        +
        virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        Using the CPU device, compute the layer output.
        Definition: input_layer.hpp:34
        +
        virtual int MinTopBlobs() const
        Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
        Definition: input_layer.hpp:31
        Provides data to the Net by assigning tops directly.
        Definition: input_layer.hpp:19
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: input_layer.hpp:31
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
        Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        Definition: input_layer.hpp:38
        -
        virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
        Definition: input_layer.hpp:28
        +
        virtual const char * type() const
        Returns the layer type.
        Definition: input_layer.hpp:29
        +
        virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
        Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        Definition: input_layer.hpp:36
        +
        virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
        Definition: input_layer.hpp:26
        A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
        Definition: blob.hpp:24
        diff --git a/doxygen/insert__splits_8hpp_source.html b/doxygen/insert__splits_8hpp_source.html index c09d83dcdef..636b90d5a56 100644 --- a/doxygen/insert__splits_8hpp_source.html +++ b/doxygen/insert__splits_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/util/insert_splits.hpp Source File @@ -29,7 +29,7 @@
        - + @@ -70,9 +70,9 @@ diff --git a/doxygen/internal__thread_8hpp_source.html b/doxygen/internal__thread_8hpp_source.html index 27c264ad5e6..688bad171d9 100644 --- a/doxygen/internal__thread_8hpp_source.html +++ b/doxygen/internal__thread_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/internal_thread.hpp Source File @@ -29,7 +29,7 @@ - + @@ -72,9 +72,9 @@ diff --git a/doxygen/io_8hpp_source.html b/doxygen/io_8hpp_source.html index 47b26226754..fa1a5ce2878 100644 --- a/doxygen/io_8hpp_source.html +++ b/doxygen/io_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/util/io.hpp Source File @@ -29,7 +29,7 @@ - + @@ -70,9 +70,9 @@ diff --git a/doxygen/layer_8hpp_source.html b/doxygen/layer_8hpp_source.html index 07f8fc7aa32..d580bc3f2c9 100644 --- a/doxygen/layer_8hpp_source.html +++ b/doxygen/layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -102,9 +102,9 @@ diff --git a/doxygen/layer__factory_8hpp_source.html b/doxygen/layer__factory_8hpp_source.html index 81db5b70d81..41db22b9675 100644 --- a/doxygen/layer__factory_8hpp_source.html +++ b/doxygen/layer__factory_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layer_factory.hpp Source File @@ -29,7 +29,7 @@ - + @@ -73,9 +73,9 @@ diff --git a/doxygen/log__layer_8hpp_source.html b/doxygen/log__layer_8hpp_source.html index 4a2588dd626..a33d868067a 100644 --- a/doxygen/log__layer_8hpp_source.html +++ b/doxygen/log__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/log_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -80,9 +80,9 @@ diff --git a/doxygen/loss__layer_8hpp_source.html b/doxygen/loss__layer_8hpp_source.html index 0503f6f57fc..00ba470d37f 100644 --- a/doxygen/loss__layer_8hpp_source.html +++ b/doxygen/loss__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/loss_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -79,9 +79,9 @@ diff --git a/doxygen/loss__layers_8hpp_source.html b/doxygen/loss__layers_8hpp_source.html deleted file mode 100644 index 16f743e7f36..00000000000 --- a/doxygen/loss__layers_8hpp_source.html +++ /dev/null @@ -1,456 +0,0 @@ - - - - - - -Caffe: include/caffe/loss_layers.hpp Source File - - - - - - - - - - -
        -
        - - - - - - -
        -
        Caffe -
        -
        -
        - - - - - - -
        -
        - - -
        - -
        - - -
        -
        -
        -
        loss_layers.hpp
        -
        -
        -
        1 #ifndef CAFFE_LOSS_LAYERS_HPP_
        -
        2 #define CAFFE_LOSS_LAYERS_HPP_
        -
        3 
        -
        4 #include <string>
        -
        5 #include <utility>
        -
        6 #include <vector>
        -
        7 
        -
        8 #include "caffe/blob.hpp"
        -
        9 #include "caffe/common.hpp"
        -
        10 #include "caffe/layer.hpp"
        -
        11 #include "caffe/neuron_layers.hpp"
        -
        12 #include "caffe/proto/caffe.pb.h"
        -
        13 
        -
        14 namespace caffe {
        -
        15 
        -
        16 const float kLOG_THRESHOLD = 1e-20;
        -
        17 
        -
        22 template <typename Dtype>
        -
        23 class AccuracyLayer : public Layer<Dtype> {
        -
        24  public:
        -
        33  explicit AccuracyLayer(const LayerParameter& param)
        -
        34  : Layer<Dtype>(param) {}
        -
        35  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        -
        36  const vector<Blob<Dtype>*>& top);
        -
        37  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        -
        38  const vector<Blob<Dtype>*>& top);
        -
        39 
        -
        40  virtual inline const char* type() const { return "Accuracy"; }
        -
        41  virtual inline int ExactNumBottomBlobs() const { return 2; }
        -
        42 
        -
        43  // If there are two top blobs, then the second blob will contain
        -
        44  // accuracies per class.
        -
        45  virtual inline int MinTopBlobs() const { return 1; }
        -
        46  virtual inline int MaxTopBlos() const { return 2; }
        -
        47 
        -
        48  protected:
        -
        73  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        -
        74  const vector<Blob<Dtype>*>& top);
        -
        75 
        -
        76 
        -
        78  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        -
        79  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {
        -
        80  for (int i = 0; i < propagate_down.size(); ++i) {
        -
        81  if (propagate_down[i]) { NOT_IMPLEMENTED; }
        -
        82  }
        -
        83  }
        -
        84 
        -
        85  int label_axis_, outer_num_, inner_num_;
        -
        86 
        -
        87  int top_k_;
        -
        88 
        - - - -
        95 };
        -
        96 
        -
        105 template <typename Dtype>
        -
        106 class LossLayer : public Layer<Dtype> {
        -
        107  public:
        -
        108  explicit LossLayer(const LayerParameter& param)
        -
        109  : Layer<Dtype>(param) {}
        -
        110  virtual void LayerSetUp(
        -
        111  const vector<Blob<Dtype>*>& bottom, const vector<Blob<Dtype>*>& top);
        -
        112  virtual void Reshape(
        -
        113  const vector<Blob<Dtype>*>& bottom, const vector<Blob<Dtype>*>& top);
        -
        114 
        -
        115  virtual inline int ExactNumBottomBlobs() const { return 2; }
        -
        116 
        -
        123  virtual inline bool AutoTopBlobs() const { return true; }
        -
        124  virtual inline int ExactNumTopBlobs() const { return 1; }
        -
        129  virtual inline bool AllowForceBackward(const int bottom_index) const {
        -
        130  return bottom_index != 1;
        -
        131  }
        -
        132 };
        -
        133 
        -
        158 template <typename Dtype>
        -
        159 class ContrastiveLossLayer : public LossLayer<Dtype> {
        -
        160  public:
        -
        161  explicit ContrastiveLossLayer(const LayerParameter& param)
        -
        162  : LossLayer<Dtype>(param), diff_() {}
        -
        163  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        -
        164  const vector<Blob<Dtype>*>& top);
        -
        165 
        -
        166  virtual inline int ExactNumBottomBlobs() const { return 3; }
        -
        167  virtual inline const char* type() const { return "ContrastiveLoss"; }
        -
        172  virtual inline bool AllowForceBackward(const int bottom_index) const {
        -
        173  return bottom_index != 2;
        -
        174  }
        -
        175 
        -
        176  protected:
        -
        178  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        -
        179  const vector<Blob<Dtype>*>& top);
        -
        180  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        181  const vector<Blob<Dtype>*>& top);
        -
        182 
        -
        208  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        -
        209  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        210  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        -
        211  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        212 
        -
        213  Blob<Dtype> diff_; // cached for backward pass
        -
        214  Blob<Dtype> dist_sq_; // cached for backward pass
        -
        215  Blob<Dtype> diff_sq_; // tmp storage for gpu forward pass
        -
        216  Blob<Dtype> summer_vec_; // tmp storage for gpu forward pass
        -
        217 };
        -
        218 
        -
        245 template <typename Dtype>
        -
        246 class EuclideanLossLayer : public LossLayer<Dtype> {
        -
        247  public:
        -
        248  explicit EuclideanLossLayer(const LayerParameter& param)
        -
        249  : LossLayer<Dtype>(param), diff_() {}
        -
        250  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        -
        251  const vector<Blob<Dtype>*>& top);
        -
        252 
        -
        253  virtual inline const char* type() const { return "EuclideanLoss"; }
        -
        258  virtual inline bool AllowForceBackward(const int bottom_index) const {
        -
        259  return true;
        -
        260  }
        -
        261 
        -
        262  protected:
        -
        264  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        -
        265  const vector<Blob<Dtype>*>& top);
        -
        266  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        267  const vector<Blob<Dtype>*>& top);
        -
        268 
        -
        302  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        -
        303  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        304  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        -
        305  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        306 
        -
        307  Blob<Dtype> diff_;
        -
        308 };
        -
        309 
        -
        353 template <typename Dtype>
        -
        354 class HingeLossLayer : public LossLayer<Dtype> {
        -
        355  public:
        -
        356  explicit HingeLossLayer(const LayerParameter& param)
        -
        357  : LossLayer<Dtype>(param) {}
        -
        358 
        -
        359  virtual inline const char* type() const { return "HingeLoss"; }
        -
        360 
        -
        361  protected:
        -
        363  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        -
        364  const vector<Blob<Dtype>*>& top);
        -
        365 
        -
        393  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        -
        394  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        395 };
        -
        396 
        -
        429 template <typename Dtype>
        -
        430 class InfogainLossLayer : public LossLayer<Dtype> {
        -
        431  public:
        -
        432  explicit InfogainLossLayer(const LayerParameter& param)
        -
        433  : LossLayer<Dtype>(param), infogain_() {}
        -
        434  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        -
        435  const vector<Blob<Dtype>*>& top);
        -
        436  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        -
        437  const vector<Blob<Dtype>*>& top);
        -
        438 
        -
        439  // InfogainLossLayer takes 2-3 bottom Blobs; if there are 3 the third should
        -
        440  // be the infogain matrix. (Otherwise the infogain matrix is loaded from a
        -
        441  // file specified by LayerParameter.)
        -
        442  virtual inline int ExactNumBottomBlobs() const { return -1; }
        -
        443  virtual inline int MinBottomBlobs() const { return 2; }
        -
        444  virtual inline int MaxBottomBlobs() const { return 3; }
        -
        445 
        -
        446  virtual inline const char* type() const { return "InfogainLoss"; }
        -
        447 
        -
        448  protected:
        -
        450  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        -
        451  const vector<Blob<Dtype>*>& top);
        -
        452 
        -
        485  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        -
        486  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        487 
        -
        488  Blob<Dtype> infogain_;
        -
        489 };
        -
        490 
        -
        520 template <typename Dtype>
        - -
        522  public:
        -
        523  explicit MultinomialLogisticLossLayer(const LayerParameter& param)
        -
        524  : LossLayer<Dtype>(param) {}
        -
        525  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        -
        526  const vector<Blob<Dtype>*>& top);
        -
        527 
        -
        528  virtual inline const char* type() const { return "MultinomialLogisticLoss"; }
        -
        529 
        -
        530  protected:
        -
        532  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        -
        533  const vector<Blob<Dtype>*>& top);
        -
        534 
        -
        563  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        -
        564  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        565 };
        -
        566 
        -
        596 template <typename Dtype>
        - -
        598  public:
        -
        599  explicit SigmoidCrossEntropyLossLayer(const LayerParameter& param)
        -
        600  : LossLayer<Dtype>(param),
        - -
        602  sigmoid_output_(new Blob<Dtype>()) {}
        -
        603  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        -
        604  const vector<Blob<Dtype>*>& top);
        -
        605  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        -
        606  const vector<Blob<Dtype>*>& top);
        -
        607 
        -
        608  virtual inline const char* type() const { return "SigmoidCrossEntropyLoss"; }
        -
        609 
        -
        610  protected:
        -
        612  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        -
        613  const vector<Blob<Dtype>*>& top);
        -
        614 
        -
        645  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        -
        646  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        647  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        -
        648  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        649 
        -
        651  shared_ptr<SigmoidLayer<Dtype> > sigmoid_layer_;
        -
        653  shared_ptr<Blob<Dtype> > sigmoid_output_;
        -
        655  vector<Blob<Dtype>*> sigmoid_bottom_vec_;
        -
        657  vector<Blob<Dtype>*> sigmoid_top_vec_;
        -
        658 };
        -
        659 
        -
        660 // Forward declare SoftmaxLayer for use in SoftmaxWithLossLayer.
        -
        661 template <typename Dtype> class SoftmaxLayer;
        -
        662 
        -
        691 template <typename Dtype>
        -
        692 class SoftmaxWithLossLayer : public LossLayer<Dtype> {
        -
        693  public:
        -
        702  explicit SoftmaxWithLossLayer(const LayerParameter& param)
        -
        703  : LossLayer<Dtype>(param) {}
        -
        704  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        -
        705  const vector<Blob<Dtype>*>& top);
        -
        706  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        -
        707  const vector<Blob<Dtype>*>& top);
        -
        708 
        -
        709  virtual inline const char* type() const { return "SoftmaxWithLoss"; }
        -
        710  virtual inline int ExactNumTopBlobs() const { return -1; }
        -
        711  virtual inline int MinTopBlobs() const { return 1; }
        -
        712  virtual inline int MaxTopBlobs() const { return 2; }
        -
        713 
        -
        714  protected:
        -
        715  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        -
        716  const vector<Blob<Dtype>*>& top);
        -
        717  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        718  const vector<Blob<Dtype>*>& top);
        -
        746  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        -
        747  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        748  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        -
        749  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        750 
        -
        751 
        -
        753  shared_ptr<Layer<Dtype> > softmax_layer_;
        - -
        757  vector<Blob<Dtype>*> softmax_bottom_vec_;
        -
        759  vector<Blob<Dtype>*> softmax_top_vec_;
        - - - -
        767 
        -
        768  int softmax_axis_, outer_num_, inner_num_;
        -
        769 };
        -
        770 
        -
        771 } // namespace caffe
        -
        772 
        -
        773 #endif // CAFFE_LOSS_LAYERS_HPP_
        -
        virtual bool AutoTopBlobs() const
        For convenience and backwards compatibility, instruct the Net to automatically allocate a single top ...
        Definition: loss_layers.hpp:123
        -
        vector< Blob< Dtype > * > sigmoid_bottom_vec_
        bottom vector holder to call the underlying SigmoidLayer::Forward
        Definition: loss_layers.hpp:655
        -
        shared_ptr< Layer< Dtype > > softmax_layer_
        The internal SoftmaxLayer used to map predictions to a distribution.
        Definition: loss_layers.hpp:753
        -
        virtual bool AllowForceBackward(const int bottom_index) const
        Definition: loss_layers.hpp:172
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: loss_layers.hpp:528
        -
        An interface for the units of computation which can be composed into a Net.
        Definition: layer.hpp:33
        -
        A layer factory that allows one to register layers. During runtime, registered layers could be called...
        Definition: blob.hpp:15
        -
        virtual int MinTopBlobs() const
        Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
        Definition: loss_layers.hpp:45
        -
        virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
        Definition: accuracy_layer.cpp:26
        -
        Sigmoid function non-linearity , a classic choice in neural networks.
        Definition: neuron_layers.hpp:515
        -
        shared_ptr< Blob< Dtype > > sigmoid_output_
        sigmoid_output stores the output of the SigmoidLayer.
        Definition: loss_layers.hpp:653
        -
        vector< Blob< Dtype > * > sigmoid_top_vec_
        top vector holder to call the underlying SigmoidLayer::Forward
        Definition: loss_layers.hpp:657
        -
        virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Does layer-specific setup: your layer should implement this function as well as Reshape.
        Definition: infogain_loss_layer.cpp:14
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Computes the Contrastive error gradient w.r.t. the inputs.
        Definition: contrastive_loss_layer.cpp:66
        -
        virtual int ExactNumBottomBlobs() const
        Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
        Definition: loss_layers.hpp:115
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: loss_layers.hpp:446
        -
        Computes the hinge loss for a one-of-many classification task.
        Definition: loss_layers.hpp:354
        -
        A generalization of MultinomialLogisticLossLayer that takes an "information gain" (infogain) matrix s...
        Definition: loss_layers.hpp:430
        -
        virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
        Definition: sigmoid_cross_entropy_loss_layer.cpp:23
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Not implemented – AccuracyLayer cannot be used as a loss.
        Definition: loss_layers.hpp:78
        -
        virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
        Definition: loss_layer.cpp:23
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Computes the Euclidean (L2) loss for real-valued regression tasks.
        Definition: euclidean_loss_layer.cpp:20
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Computes the hinge loss for a one-of-many classification task.
        Definition: hinge_loss_layer.cpp:14
        -
        SoftmaxWithLossLayer(const LayerParameter &param)
        Definition: loss_layers.hpp:702
        -
        virtual int ExactNumTopBlobs() const
        Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
        Definition: loss_layers.hpp:710
        -
        virtual int MinTopBlobs() const
        Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
        Definition: loss_layers.hpp:711
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Computes the sigmoid cross-entropy loss error gradient w.r.t. the predictions.
        Definition: sigmoid_cross_entropy_loss_layer.cpp:52
        -
        virtual bool AllowForceBackward(const int bottom_index) const
        Definition: loss_layers.hpp:129
        -
        vector< Blob< Dtype > * > softmax_top_vec_
        top vector holder used in call to the underlying SoftmaxLayer::Forward
        Definition: loss_layers.hpp:759
        -
        int ignore_label_
        The label indicating that an instance should be ignored.
        Definition: loss_layers.hpp:92
        -
        virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Does layer-specific setup: your layer should implement this function as well as Reshape.
        Definition: accuracy_layer.cpp:14
        -
        virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        -
        shared_ptr< SigmoidLayer< Dtype > > sigmoid_layer_
        The internal SigmoidLayer used to map predictions to probabilities.
        Definition: loss_layers.hpp:651
        -
        virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Does layer-specific setup: your layer should implement this function as well as Reshape.
        Definition: softmax_loss_layer.cpp:13
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Definition: accuracy_layer.cpp:51
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: loss_layers.hpp:40
        -
        Computes the softmax function.
        Definition: common_layers.hpp:597
        -
        virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
        Definition: infogain_loss_layer.cpp:28
        -
        virtual int MaxTopBlobs() const
        Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required...
        Definition: loss_layers.hpp:712
        -
        Computes the classification accuracy for a one-of-many classification task.
        Definition: loss_layers.hpp:23
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Computes the hinge loss error gradient w.r.t. the predictions.
        Definition: hinge_loss_layer.cpp:47
        -
        virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
        Definition: euclidean_loss_layer.cpp:11
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: loss_layers.hpp:253
        -
        bool has_ignore_label_
        Whether to ignore instances with a certain label.
        Definition: loss_layers.hpp:90
        -
        virtual int MinBottomBlobs() const
        Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is requi...
        Definition: loss_layers.hpp:443
        -
        virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Does layer-specific setup: your layer should implement this function as well as Reshape.
        Definition: sigmoid_cross_entropy_loss_layer.cpp:12
        -
        virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Does layer-specific setup: your layer should implement this function as well as Reshape.
        Definition: loss_layer.cpp:14
        -
        virtual bool AllowForceBackward(const int bottom_index) const
        Definition: loss_layers.hpp:258
        -
        virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        -
        Computes the multinomial logistic loss for a one-of-many classification task, directly taking a predi...
        Definition: loss_layers.hpp:521
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Computes the contrastive loss where . This can be used to train siamese networks.
        Definition: contrastive_loss_layer.cpp:33
        -
        AccuracyLayer(const LayerParameter &param)
        Definition: loss_layers.hpp:33
        -
        virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Computes the cross-entropy (logistic) loss , often used for predicting targets interpreted as probabi...
        Definition: sigmoid_cross_entropy_loss_layer.cpp:32
        -
        Computes the cross-entropy (logistic) loss , often used for predicting targets interpreted as probabi...
        Definition: loss_layers.hpp:597
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: loss_layers.hpp:608
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Computes the softmax loss error gradient w.r.t. the predictions.
        Definition: softmax_loss_layer.cpp:87
        -
        Computes the multinomial logistic loss for a one-of-many classification task, passing real-valued pre...
        Definition: loss_layers.hpp:692
        -
        vector< Blob< Dtype > * > softmax_bottom_vec_
        bottom vector holder used in call to the underlying SoftmaxLayer::Forward
        Definition: loss_layers.hpp:757
        -
        virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
        Definition: softmax_loss_layer.cpp:34
        -
        virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
        -
        virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        -
        virtual int ExactNumBottomBlobs() const
        Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
        Definition: loss_layers.hpp:166
        -
        virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
        -
        bool normalize_
        Definition: loss_layers.hpp:766
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Computes the Euclidean error gradient w.r.t. the inputs.
        Definition: euclidean_loss_layer.cpp:34
        -
        int ignore_label_
        The label indicating that an instance should be ignored.
        Definition: loss_layers.hpp:763
        -
        virtual int MaxBottomBlobs() const
        Returns the maximum number of bottom blobs required by the layer, or -1 if no maximum number is requi...
        Definition: loss_layers.hpp:444
        -
        An interface for Layers that take two Blobs as input – usually (1) predictions and (2) ground-truth ...
        Definition: loss_layers.hpp:106
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Using the CPU device, compute the layer output.
        Definition: softmax_loss_layer.cpp:54
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        A generalization of MultinomialLogisticLossLayer that takes an "information gain" (infogain) matrix s...
        Definition: infogain_loss_layer.cpp:50
        -
        virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Does layer-specific setup: your layer should implement this function as well as Reshape.
        Definition: contrastive_loss_layer.cpp:12
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: loss_layers.hpp:709
        -
        virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
        -
        virtual int ExactNumTopBlobs() const
        Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
        Definition: loss_layers.hpp:124
        -
        Computes the contrastive loss where . This can be used to train siamese networks.
        Definition: loss_layers.hpp:159
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Computes the infogain loss error gradient w.r.t. the predictions.
        Definition: infogain_loss_layer.cpp:74
        -
        virtual int ExactNumBottomBlobs() const
        Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
        Definition: loss_layers.hpp:41
        -
        Blob< Dtype > nums_buffer_
        Keeps counts of the number of samples per class.
        Definition: loss_layers.hpp:94
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: loss_layers.hpp:359
        -
        virtual int ExactNumBottomBlobs() const
        Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
        Definition: loss_layers.hpp:442
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Computes the multinomial logistic loss for a one-of-many classification task, directly taking a predi...
        Definition: multinomial_logistic_loss_layer.cpp:23
        -
        Computes the Euclidean (L2) loss for real-valued regression tasks.
        Definition: loss_layers.hpp:246
        -
        Blob< Dtype > prob_
        prob stores the output probability predictions from the SoftmaxLayer.
        Definition: loss_layers.hpp:755
        -
        virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
        Definition: multinomial_logistic_loss_layer.cpp:14
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: loss_layers.hpp:167
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Computes the multinomial logistic loss error gradient w.r.t. the predictions.
        Definition: multinomial_logistic_loss_layer.cpp:40
        -
        A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
        Definition: blob.hpp:25
        -
        bool has_ignore_label_
        Whether to ignore instances with a certain label.
        Definition: loss_layers.hpp:761
        -
        - - - - diff --git a/doxygen/lrn__layer_8hpp_source.html b/doxygen/lrn__layer_8hpp_source.html index ee165e55dd4..05b73b715bd 100644 --- a/doxygen/lrn__layer_8hpp_source.html +++ b/doxygen/lrn__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/lrn_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -82,9 +82,9 @@ diff --git a/doxygen/lstm__layer_8hpp_source.html b/doxygen/lstm__layer_8hpp_source.html index 1fbfeb84a3f..f634925e66e 100644 --- a/doxygen/lstm__layer_8hpp_source.html +++ b/doxygen/lstm__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/lstm_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -91,9 +91,9 @@ diff --git a/doxygen/math__functions_8hpp_source.html b/doxygen/math__functions_8hpp_source.html index c66e4396b50..00eee8c7176 100644 --- a/doxygen/math__functions_8hpp_source.html +++ b/doxygen/math__functions_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/util/math_functions.hpp Source File @@ -29,7 +29,7 @@ - + @@ -66,13 +66,13 @@
        math_functions.hpp
        -
        1 #ifndef CAFFE_UTIL_MATH_FUNCTIONS_H_
        2 #define CAFFE_UTIL_MATH_FUNCTIONS_H_
        3 
        4 #include <stdint.h>
        5 #include <cmath> // for std::fabs and std::signbit
        6 
        7 #include "glog/logging.h"
        8 
        9 #include "caffe/common.hpp"
        10 #include "caffe/util/device_alternate.hpp"
        11 #include "caffe/util/mkl_alternate.hpp"
        12 
        13 namespace caffe {
        14 
        15 // Caffe gemm provides a simpler interface to the gemm functions, with the
        16 // limitation that the data has to be contiguous in memory.
        17 template <typename Dtype>
        18 void caffe_cpu_gemm(const CBLAS_TRANSPOSE TransA,
        19  const CBLAS_TRANSPOSE TransB, const int M, const int N, const int K,
        20  const Dtype alpha, const Dtype* A, const Dtype* B, const Dtype beta,
        21  Dtype* C);
        22 
        23 template <typename Dtype>
        24 void caffe_cpu_gemv(const CBLAS_TRANSPOSE TransA, const int M, const int N,
        25  const Dtype alpha, const Dtype* A, const Dtype* x, const Dtype beta,
        26  Dtype* y);
        27 
        28 template <typename Dtype>
        29 void caffe_axpy(const int N, const Dtype alpha, const Dtype* X,
        30  Dtype* Y);
        31 
        32 template <typename Dtype>
        33 void caffe_cpu_axpby(const int N, const Dtype alpha, const Dtype* X,
        34  const Dtype beta, Dtype* Y);
        35 
        36 template <typename Dtype>
        37 void caffe_copy(const int N, const Dtype *X, Dtype *Y);
        38 
        39 template <typename Dtype>
        40 void caffe_set(const int N, const Dtype alpha, Dtype *X);
        41 
        42 inline void caffe_memset(const size_t N, const int alpha, void* X) {
        43  memset(X, alpha, N); // NOLINT(caffe/alt_fn)
        44 }
        45 
        46 template <typename Dtype>
        47 void caffe_add_scalar(const int N, const Dtype alpha, Dtype *X);
        48 
        49 template <typename Dtype>
        50 void caffe_scal(const int N, const Dtype alpha, Dtype *X);
        51 
        52 template <typename Dtype>
        53 void caffe_sqr(const int N, const Dtype* a, Dtype* y);
        54 
        55 template <typename Dtype>
        56 void caffe_add(const int N, const Dtype* a, const Dtype* b, Dtype* y);
        57 
        58 template <typename Dtype>
        59 void caffe_sub(const int N, const Dtype* a, const Dtype* b, Dtype* y);
        60 
        61 template <typename Dtype>
        62 void caffe_mul(const int N, const Dtype* a, const Dtype* b, Dtype* y);
        63 
        64 template <typename Dtype>
        65 void caffe_div(const int N, const Dtype* a, const Dtype* b, Dtype* y);
        66 
        67 template <typename Dtype>
        68 void caffe_powx(const int n, const Dtype* a, const Dtype b, Dtype* y);
        69 
        70 unsigned int caffe_rng_rand();
        71 
        72 template <typename Dtype>
        73 Dtype caffe_nextafter(const Dtype b);
        74 
        75 template <typename Dtype>
        76 void caffe_rng_uniform(const int n, const Dtype a, const Dtype b, Dtype* r);
        77 
        78 template <typename Dtype>
        79 void caffe_rng_gaussian(const int n, const Dtype mu, const Dtype sigma,
        80  Dtype* r);
        81 
        82 template <typename Dtype>
        83 void caffe_rng_bernoulli(const int n, const Dtype p, int* r);
        84 
        85 template <typename Dtype>
        86 void caffe_rng_bernoulli(const int n, const Dtype p, unsigned int* r);
        87 
        88 template <typename Dtype>
        89 void caffe_exp(const int n, const Dtype* a, Dtype* y);
        90 
        91 template <typename Dtype>
        92 void caffe_log(const int n, const Dtype* a, Dtype* y);
        93 
        94 template <typename Dtype>
        95 void caffe_abs(const int n, const Dtype* a, Dtype* y);
        96 
        97 template <typename Dtype>
        98 Dtype caffe_cpu_dot(const int n, const Dtype* x, const Dtype* y);
        99 
        100 template <typename Dtype>
        101 Dtype caffe_cpu_strided_dot(const int n, const Dtype* x, const int incx,
        102  const Dtype* y, const int incy);
        103 
        104 // Returns the sum of the absolute values of the elements of vector x
        105 template <typename Dtype>
        106 Dtype caffe_cpu_asum(const int n, const Dtype* x);
        107 
        108 // the branchless, type-safe version from
        109 // http://stackoverflow.com/questions/1903954/is-there-a-standard-sign-function-signum-sgn-in-c-c
        110 template<typename Dtype>
        111 inline int8_t caffe_sign(Dtype val) {
        112  return (Dtype(0) < val) - (val < Dtype(0));
        113 }
        114 
        115 // The following two macros are modifications of DEFINE_VSL_UNARY_FUNC
        116 // in include/caffe/util/mkl_alternate.hpp authored by @Rowland Depp.
        117 // Please refer to commit 7e8ef25c7 of the boost-eigen branch.
        118 // Git cherry picking that commit caused a conflict hard to resolve and
        119 // copying that file in convenient for code reviewing.
        120 // So they have to be pasted here temporarily.
        121 #define DEFINE_CAFFE_CPU_UNARY_FUNC(name, operation) \
        122  template<typename Dtype> \
        123  void caffe_cpu_##name(const int n, const Dtype* x, Dtype* y) { \
        124  CHECK_GT(n, 0); CHECK(x); CHECK(y); \
        125  for (int i = 0; i < n; ++i) { \
        126  operation; \
        127  } \
        128  }
        129 
        130 // output is 1 for the positives, 0 for zero, and -1 for the negatives
        131 DEFINE_CAFFE_CPU_UNARY_FUNC(sign, y[i] = caffe_sign<Dtype>(x[i]));
        132 
        133 // This returns a nonzero value if the input has its sign bit set.
        134 // The name sngbit is meant to avoid conflicts with std::signbit in the macro.
        135 // The extra parens are needed because CUDA < 6.5 defines signbit as a macro,
        136 // and we don't want that to expand here when CUDA headers are also included.
        137 DEFINE_CAFFE_CPU_UNARY_FUNC(sgnbit, \
        138  y[i] = static_cast<bool>((std::signbit)(x[i])));
        139 
        140 DEFINE_CAFFE_CPU_UNARY_FUNC(fabs, y[i] = std::fabs(x[i]));
        141 
        142 template <typename Dtype>
        143 void caffe_cpu_scale(const int n, const Dtype alpha, const Dtype *x, Dtype* y);
        144 
        145 #ifndef CPU_ONLY // GPU
        146 
        147 // Decaf gpu gemm provides an interface that is almost the same as the cpu
        148 // gemm function - following the c convention and calling the fortran-order
        149 // gpu code under the hood.
        150 template <typename Dtype>
        151 void caffe_gpu_gemm(const CBLAS_TRANSPOSE TransA,
        152  const CBLAS_TRANSPOSE TransB, const int M, const int N, const int K,
        153  const Dtype alpha, const Dtype* A, const Dtype* B, const Dtype beta,
        154  Dtype* C);
        155 
        156 template <typename Dtype>
        157 void caffe_gpu_gemv(const CBLAS_TRANSPOSE TransA, const int M, const int N,
        158  const Dtype alpha, const Dtype* A, const Dtype* x, const Dtype beta,
        159  Dtype* y);
        160 
        161 template <typename Dtype>
        162 void caffe_gpu_axpy(const int N, const Dtype alpha, const Dtype* X,
        163  Dtype* Y);
        164 
        165 template <typename Dtype>
        166 void caffe_gpu_axpby(const int N, const Dtype alpha, const Dtype* X,
        167  const Dtype beta, Dtype* Y);
        168 
        169 void caffe_gpu_memcpy(const size_t N, const void *X, void *Y);
        170 
        171 template <typename Dtype>
        172 void caffe_gpu_set(const int N, const Dtype alpha, Dtype *X);
        173 
        174 inline void caffe_gpu_memset(const size_t N, const int alpha, void* X) {
        175 #ifndef CPU_ONLY
        176  CUDA_CHECK(cudaMemset(X, alpha, N)); // NOLINT(caffe/alt_fn)
        177 #else
        178  NO_GPU;
        179 #endif
        180 }
        181 
        182 template <typename Dtype>
        183 void caffe_gpu_add_scalar(const int N, const Dtype alpha, Dtype *X);
        184 
        185 template <typename Dtype>
        186 void caffe_gpu_scal(const int N, const Dtype alpha, Dtype *X);
        187 
        188 #ifndef CPU_ONLY
        189 template <typename Dtype>
        190 void caffe_gpu_scal(const int N, const Dtype alpha, Dtype* X, cudaStream_t str);
        191 #endif
        192 
        193 template <typename Dtype>
        194 void caffe_gpu_add(const int N, const Dtype* a, const Dtype* b, Dtype* y);
        195 
        196 template <typename Dtype>
        197 void caffe_gpu_sub(const int N, const Dtype* a, const Dtype* b, Dtype* y);
        198 
        199 template <typename Dtype>
        200 void caffe_gpu_mul(const int N, const Dtype* a, const Dtype* b, Dtype* y);
        201 
        202 template <typename Dtype>
        203 void caffe_gpu_div(const int N, const Dtype* a, const Dtype* b, Dtype* y);
        204 
        205 template <typename Dtype>
        206 void caffe_gpu_abs(const int n, const Dtype* a, Dtype* y);
        207 
        208 template <typename Dtype>
        209 void caffe_gpu_exp(const int n, const Dtype* a, Dtype* y);
        210 
        211 template <typename Dtype>
        212 void caffe_gpu_log(const int n, const Dtype* a, Dtype* y);
        213 
        214 template <typename Dtype>
        215 void caffe_gpu_powx(const int n, const Dtype* a, const Dtype b, Dtype* y);
        216 
        217 // caffe_gpu_rng_uniform with two arguments generates integers in the range
        218 // [0, UINT_MAX].
        219 void caffe_gpu_rng_uniform(const int n, unsigned int* r);
        220 
        221 // caffe_gpu_rng_uniform with four arguments generates floats in the range
        222 // (a, b] (strictly greater than a, less than or equal to b) due to the
        223 // specification of curandGenerateUniform. With a = 0, b = 1, just calls
        224 // curandGenerateUniform; with other limits will shift and scale the outputs
        225 // appropriately after calling curandGenerateUniform.
        226 template <typename Dtype>
        227 void caffe_gpu_rng_uniform(const int n, const Dtype a, const Dtype b, Dtype* r);
        228 
        229 template <typename Dtype>
        230 void caffe_gpu_rng_gaussian(const int n, const Dtype mu, const Dtype sigma,
        231  Dtype* r);
        232 
        233 template <typename Dtype>
        234 void caffe_gpu_rng_bernoulli(const int n, const Dtype p, int* r);
        235 
        236 template <typename Dtype>
        237 void caffe_gpu_dot(const int n, const Dtype* x, const Dtype* y, Dtype* out);
        238 
        239 template <typename Dtype>
        240 void caffe_gpu_asum(const int n, const Dtype* x, Dtype* y);
        241 
        242 template<typename Dtype>
        243 void caffe_gpu_sign(const int n, const Dtype* x, Dtype* y);
        244 
        245 template<typename Dtype>
        246 void caffe_gpu_sgnbit(const int n, const Dtype* x, Dtype* y);
        247 
        248 template <typename Dtype>
        249 void caffe_gpu_fabs(const int n, const Dtype* x, Dtype* y);
        250 
        251 template <typename Dtype>
        252 void caffe_gpu_scale(const int n, const Dtype alpha, const Dtype *x, Dtype* y);
        253 
        254 #define DEFINE_AND_INSTANTIATE_GPU_UNARY_FUNC(name, operation) \
        255 template<typename Dtype> \
        256 __global__ void name##_kernel(const int n, const Dtype* x, Dtype* y) { \
        257  CUDA_KERNEL_LOOP(index, n) { \
        258  operation; \
        259  } \
        260 } \
        261 template <> \
        262 void caffe_gpu_##name<float>(const int n, const float* x, float* y) { \
        263  /* NOLINT_NEXT_LINE(whitespace/operators) */ \
        264  name##_kernel<float><<<CAFFE_GET_BLOCKS(n), CAFFE_CUDA_NUM_THREADS>>>( \
        265  n, x, y); \
        266 } \
        267 template <> \
        268 void caffe_gpu_##name<double>(const int n, const double* x, double* y) { \
        269  /* NOLINT_NEXT_LINE(whitespace/operators) */ \
        270  name##_kernel<double><<<CAFFE_GET_BLOCKS(n), CAFFE_CUDA_NUM_THREADS>>>( \
        271  n, x, y); \
        272 }
        273 
        274 #endif // !CPU_ONLY
        275 
        276 } // namespace caffe
        277 
        278 #endif // CAFFE_UTIL_MATH_FUNCTIONS_H_
        A layer factory that allows one to register layers. During runtime, registered layers can be called b...
        Definition: blob.hpp:14
        +
        1 #ifndef CAFFE_UTIL_MATH_FUNCTIONS_H_
        2 #define CAFFE_UTIL_MATH_FUNCTIONS_H_
        3 
        4 #include <stdint.h>
        5 #include <cmath> // for std::fabs and std::signbit
        6 
        7 #include "glog/logging.h"
        8 
        9 #include "caffe/common.hpp"
        10 #include "caffe/util/device_alternate.hpp"
        11 #include "caffe/util/mkl_alternate.hpp"
        12 
        13 namespace caffe {
        14 
        15 // Caffe gemm provides a simpler interface to the gemm functions, with the
        16 // limitation that the data has to be contiguous in memory.
        17 template <typename Dtype>
        18 void caffe_cpu_gemm(const CBLAS_TRANSPOSE TransA,
        19  const CBLAS_TRANSPOSE TransB, const int M, const int N, const int K,
        20  const Dtype alpha, const Dtype* A, const Dtype* B, const Dtype beta,
        21  Dtype* C);
        22 
        23 template <typename Dtype>
        24 void caffe_cpu_gemv(const CBLAS_TRANSPOSE TransA, const int M, const int N,
        25  const Dtype alpha, const Dtype* A, const Dtype* x, const Dtype beta,
        26  Dtype* y);
        27 
        28 template <typename Dtype>
        29 void caffe_axpy(const int N, const Dtype alpha, const Dtype* X,
        30  Dtype* Y);
        31 
        32 template <typename Dtype>
        33 void caffe_cpu_axpby(const int N, const Dtype alpha, const Dtype* X,
        34  const Dtype beta, Dtype* Y);
        35 
        36 template <typename Dtype>
        37 void caffe_copy(const int N, const Dtype *X, Dtype *Y);
        38 
        39 template <typename Dtype>
        40 void caffe_set(const int N, const Dtype alpha, Dtype *X);
        41 
        42 inline void caffe_memset(const size_t N, const int alpha, void* X) {
        43  memset(X, alpha, N); // NOLINT(caffe/alt_fn)
        44 }
        45 
        46 template <typename Dtype>
        47 void caffe_add_scalar(const int N, const Dtype alpha, Dtype *X);
        48 
        49 template <typename Dtype>
        50 void caffe_scal(const int N, const Dtype alpha, Dtype *X);
        51 
        52 template <typename Dtype>
        53 void caffe_sqr(const int N, const Dtype* a, Dtype* y);
        54 
        55 template <typename Dtype>
        56 void caffe_sqrt(const int N, const Dtype* a, Dtype* y);
        57 
        58 template <typename Dtype>
        59 void caffe_add(const int N, const Dtype* a, const Dtype* b, Dtype* y);
        60 
        61 template <typename Dtype>
        62 void caffe_sub(const int N, const Dtype* a, const Dtype* b, Dtype* y);
        63 
        64 template <typename Dtype>
        65 void caffe_mul(const int N, const Dtype* a, const Dtype* b, Dtype* y);
        66 
        67 template <typename Dtype>
        68 void caffe_div(const int N, const Dtype* a, const Dtype* b, Dtype* y);
        69 
        70 template <typename Dtype>
        71 void caffe_powx(const int n, const Dtype* a, const Dtype b, Dtype* y);
        72 
        73 unsigned int caffe_rng_rand();
        74 
        75 template <typename Dtype>
        76 Dtype caffe_nextafter(const Dtype b);
        77 
        78 template <typename Dtype>
        79 void caffe_rng_uniform(const int n, const Dtype a, const Dtype b, Dtype* r);
        80 
        81 template <typename Dtype>
        82 void caffe_rng_gaussian(const int n, const Dtype mu, const Dtype sigma,
        83  Dtype* r);
        84 
        85 template <typename Dtype>
        86 void caffe_rng_bernoulli(const int n, const Dtype p, int* r);
        87 
        88 template <typename Dtype>
        89 void caffe_rng_bernoulli(const int n, const Dtype p, unsigned int* r);
        90 
        91 template <typename Dtype>
        92 void caffe_exp(const int n, const Dtype* a, Dtype* y);
        93 
        94 template <typename Dtype>
        95 void caffe_log(const int n, const Dtype* a, Dtype* y);
        96 
        97 template <typename Dtype>
        98 void caffe_abs(const int n, const Dtype* a, Dtype* y);
        99 
        100 template <typename Dtype>
        101 Dtype caffe_cpu_dot(const int n, const Dtype* x, const Dtype* y);
        102 
        103 template <typename Dtype>
        104 Dtype caffe_cpu_strided_dot(const int n, const Dtype* x, const int incx,
        105  const Dtype* y, const int incy);
        106 
        107 // Returns the sum of the absolute values of the elements of vector x
        108 template <typename Dtype>
        109 Dtype caffe_cpu_asum(const int n, const Dtype* x);
        110 
        111 // the branchless, type-safe version from
        112 // http://stackoverflow.com/questions/1903954/is-there-a-standard-sign-function-signum-sgn-in-c-c
        113 template<typename Dtype>
        114 inline int8_t caffe_sign(Dtype val) {
        115  return (Dtype(0) < val) - (val < Dtype(0));
        116 }
        117 
        118 // The following two macros are modifications of DEFINE_VSL_UNARY_FUNC
        119 // in include/caffe/util/mkl_alternate.hpp authored by @Rowland Depp.
        120 // Please refer to commit 7e8ef25c7 of the boost-eigen branch.
        121 // Git cherry picking that commit caused a conflict hard to resolve and
        122 // copying that file in convenient for code reviewing.
        123 // So they have to be pasted here temporarily.
        124 #define DEFINE_CAFFE_CPU_UNARY_FUNC(name, operation) \
        125  template<typename Dtype> \
        126  void caffe_cpu_##name(const int n, const Dtype* x, Dtype* y) { \
        127  CHECK_GT(n, 0); CHECK(x); CHECK(y); \
        128  for (int i = 0; i < n; ++i) { \
        129  operation; \
        130  } \
        131  }
        132 
        133 // output is 1 for the positives, 0 for zero, and -1 for the negatives
        134 DEFINE_CAFFE_CPU_UNARY_FUNC(sign, y[i] = caffe_sign<Dtype>(x[i]))
        135 
        136 // This returns a nonzero value if the input has its sign bit set.
        137 // The name sngbit is meant to avoid conflicts with std::signbit in the macro.
        138 // The extra parens are needed because CUDA < 6.5 defines signbit as a macro,
        139 // and we don't want that to expand here when CUDA headers are also included.
        140 DEFINE_CAFFE_CPU_UNARY_FUNC(sgnbit, \
        141  y[i] = static_cast<bool>((std::signbit)(x[i])))
        142 
        143 DEFINE_CAFFE_CPU_UNARY_FUNC(fabs, y[i] = std::fabs(x[i]))
        144 
        145 template <typename Dtype>
        146 void caffe_cpu_scale(const int n, const Dtype alpha, const Dtype *x, Dtype* y);
        147 
        148 #ifndef CPU_ONLY // GPU
        149 
        150 // Decaf gpu gemm provides an interface that is almost the same as the cpu
        151 // gemm function - following the c convention and calling the fortran-order
        152 // gpu code under the hood.
        153 template <typename Dtype>
        154 void caffe_gpu_gemm(const CBLAS_TRANSPOSE TransA,
        155  const CBLAS_TRANSPOSE TransB, const int M, const int N, const int K,
        156  const Dtype alpha, const Dtype* A, const Dtype* B, const Dtype beta,
        157  Dtype* C);
        158 
        159 template <typename Dtype>
        160 void caffe_gpu_gemv(const CBLAS_TRANSPOSE TransA, const int M, const int N,
        161  const Dtype alpha, const Dtype* A, const Dtype* x, const Dtype beta,
        162  Dtype* y);
        163 
        164 template <typename Dtype>
        165 void caffe_gpu_axpy(const int N, const Dtype alpha, const Dtype* X,
        166  Dtype* Y);
        167 
        168 template <typename Dtype>
        169 void caffe_gpu_axpby(const int N, const Dtype alpha, const Dtype* X,
        170  const Dtype beta, Dtype* Y);
        171 
        172 void caffe_gpu_memcpy(const size_t N, const void *X, void *Y);
        173 
        174 template <typename Dtype>
        175 void caffe_gpu_set(const int N, const Dtype alpha, Dtype *X);
        176 
        177 inline void caffe_gpu_memset(const size_t N, const int alpha, void* X) {
        178 #ifndef CPU_ONLY
        179  CUDA_CHECK(cudaMemset(X, alpha, N)); // NOLINT(caffe/alt_fn)
        180 #else
        181  NO_GPU;
        182 #endif
        183 }
        184 
        185 template <typename Dtype>
        186 void caffe_gpu_add_scalar(const int N, const Dtype alpha, Dtype *X);
        187 
        188 template <typename Dtype>
        189 void caffe_gpu_scal(const int N, const Dtype alpha, Dtype *X);
        190 
        191 #ifndef CPU_ONLY
        192 template <typename Dtype>
        193 void caffe_gpu_scal(const int N, const Dtype alpha, Dtype* X, cudaStream_t str);
        194 #endif
        195 
        196 template <typename Dtype>
        197 void caffe_gpu_add(const int N, const Dtype* a, const Dtype* b, Dtype* y);
        198 
        199 template <typename Dtype>
        200 void caffe_gpu_sub(const int N, const Dtype* a, const Dtype* b, Dtype* y);
        201 
        202 template <typename Dtype>
        203 void caffe_gpu_mul(const int N, const Dtype* a, const Dtype* b, Dtype* y);
        204 
        205 template <typename Dtype>
        206 void caffe_gpu_div(const int N, const Dtype* a, const Dtype* b, Dtype* y);
        207 
        208 template <typename Dtype>
        209 void caffe_gpu_abs(const int n, const Dtype* a, Dtype* y);
        210 
        211 template <typename Dtype>
        212 void caffe_gpu_exp(const int n, const Dtype* a, Dtype* y);
        213 
        214 template <typename Dtype>
        215 void caffe_gpu_log(const int n, const Dtype* a, Dtype* y);
        216 
        217 template <typename Dtype>
        218 void caffe_gpu_powx(const int n, const Dtype* a, const Dtype b, Dtype* y);
        219 
        220 template <typename Dtype>
        221 void caffe_gpu_sqrt(const int n, const Dtype* a, Dtype* y);
        222 
        223 // caffe_gpu_rng_uniform with two arguments generates integers in the range
        224 // [0, UINT_MAX].
        225 void caffe_gpu_rng_uniform(const int n, unsigned int* r);
        226 
        227 // caffe_gpu_rng_uniform with four arguments generates floats in the range
        228 // (a, b] (strictly greater than a, less than or equal to b) due to the
        229 // specification of curandGenerateUniform. With a = 0, b = 1, just calls
        230 // curandGenerateUniform; with other limits will shift and scale the outputs
        231 // appropriately after calling curandGenerateUniform.
        232 template <typename Dtype>
        233 void caffe_gpu_rng_uniform(const int n, const Dtype a, const Dtype b, Dtype* r);
        234 
        235 template <typename Dtype>
        236 void caffe_gpu_rng_gaussian(const int n, const Dtype mu, const Dtype sigma,
        237  Dtype* r);
        238 
        239 template <typename Dtype>
        240 void caffe_gpu_rng_bernoulli(const int n, const Dtype p, int* r);
        241 
        242 template <typename Dtype>
        243 void caffe_gpu_dot(const int n, const Dtype* x, const Dtype* y, Dtype* out);
        244 
        245 template <typename Dtype>
        246 void caffe_gpu_asum(const int n, const Dtype* x, Dtype* y);
        247 
        248 template<typename Dtype>
        249 void caffe_gpu_sign(const int n, const Dtype* x, Dtype* y);
        250 
        251 template<typename Dtype>
        252 void caffe_gpu_sgnbit(const int n, const Dtype* x, Dtype* y);
        253 
        254 template <typename Dtype>
        255 void caffe_gpu_fabs(const int n, const Dtype* x, Dtype* y);
        256 
        257 template <typename Dtype>
        258 void caffe_gpu_scale(const int n, const Dtype alpha, const Dtype *x, Dtype* y);
        259 
        260 #define DEFINE_AND_INSTANTIATE_GPU_UNARY_FUNC(name, operation) \
        261 template<typename Dtype> \
        262 __global__ void name##_kernel(const int n, const Dtype* x, Dtype* y) { \
        263  CUDA_KERNEL_LOOP(index, n) { \
        264  operation; \
        265  } \
        266 } \
        267 template <> \
        268 void caffe_gpu_##name<float>(const int n, const float* x, float* y) { \
        269  /* NOLINT_NEXT_LINE(whitespace/operators) */ \
        270  name##_kernel<float><<<CAFFE_GET_BLOCKS(n), CAFFE_CUDA_NUM_THREADS>>>( \
        271  n, x, y); \
        272 } \
        273 template <> \
        274 void caffe_gpu_##name<double>(const int n, const double* x, double* y) { \
        275  /* NOLINT_NEXT_LINE(whitespace/operators) */ \
        276  name##_kernel<double><<<CAFFE_GET_BLOCKS(n), CAFFE_CUDA_NUM_THREADS>>>( \
        277  n, x, y); \
        278 }
        279 
        280 #endif // !CPU_ONLY
        281 
        282 } // namespace caffe
        283 
        284 #endif // CAFFE_UTIL_MATH_FUNCTIONS_H_
        A layer factory that allows one to register layers. During runtime, registered layers can be called b...
        Definition: blob.hpp:14
        diff --git a/doxygen/memory__data__layer_8hpp_source.html b/doxygen/memory__data__layer_8hpp_source.html index 6edfd029b53..c0a3590fd61 100644 --- a/doxygen/memory__data__layer_8hpp_source.html +++ b/doxygen/memory__data__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/memory_data_layer.hpp Source File @@ -29,7 +29,7 @@
        - + @@ -77,9 +77,9 @@ diff --git a/doxygen/menudata.js b/doxygen/menudata.js index e067d53bb7d..f36088a49ae 100644 --- a/doxygen/menudata.js +++ b/doxygen/menudata.js @@ -1,75 +1,75 @@ var menudata={children:[ -{text:'Main Page',url:'index.html'}, -{text:'Namespaces',url:'namespaces.html',children:[ -{text:'Namespace List',url:'namespaces.html'}, -{text:'Namespace Members',url:'namespacemembers.html',children:[ -{text:'All',url:'namespacemembers.html'}, -{text:'Functions',url:'namespacemembers_func.html'}, -{text:'Typedefs',url:'namespacemembers_type.html'}]}]}, -{text:'Classes',url:'annotated.html',children:[ -{text:'Class List',url:'annotated.html'}, -{text:'Class Index',url:'classes.html'}, -{text:'Class Hierarchy',url:'hierarchy.html'}, -{text:'Class Members',url:'functions.html',children:[ -{text:'All',url:'functions.html',children:[ -{text:'a',url:'functions.html#index_a'}, -{text:'b',url:'functions_b.html#index_b'}, -{text:'c',url:'functions_c.html#index_c'}, -{text:'d',url:'functions_d.html#index_d'}, -{text:'e',url:'functions_e.html#index_e'}, -{text:'f',url:'functions_f.html#index_f'}, -{text:'g',url:'functions_g.html#index_g'}, -{text:'h',url:'functions_h.html#index_h'}, -{text:'i',url:'functions_i.html#index_i'}, -{text:'k',url:'functions_k.html#index_k'}, -{text:'l',url:'functions_l.html#index_l'}, -{text:'m',url:'functions_m.html#index_m'}, -{text:'n',url:'functions_n.html#index_n'}, -{text:'o',url:'functions_o.html#index_o'}, -{text:'p',url:'functions_p.html#index_p'}, -{text:'r',url:'functions_r.html#index_r'}, -{text:'s',url:'functions_s.html#index_s'}, -{text:'t',url:'functions_t.html#index_t'}, -{text:'u',url:'functions_u.html#index_u'}, -{text:'w',url:'functions_w.html#index_w'}]}, -{text:'Functions',url:'functions_func.html',children:[ -{text:'a',url:'functions_func.html#index_a'}, -{text:'b',url:'functions_func_b.html#index_b'}, -{text:'c',url:'functions_func_c.html#index_c'}, -{text:'d',url:'functions_func_d.html#index_d'}, -{text:'e',url:'functions_func_e.html#index_e'}, -{text:'f',url:'functions_func_f.html#index_f'}, -{text:'g',url:'functions_func_g.html#index_g'}, -{text:'h',url:'functions_func_h.html#index_h'}, -{text:'i',url:'functions_func_i.html#index_i'}, -{text:'l',url:'functions_func_l.html#index_l'}, -{text:'m',url:'functions_func_m.html#index_m'}, -{text:'n',url:'functions_func_n.html#index_n'}, -{text:'o',url:'functions_func_o.html#index_o'}, -{text:'p',url:'functions_func_p.html#index_p'}, -{text:'r',url:'functions_func_r.html#index_r'}, -{text:'s',url:'functions_func_s.html#index_s'}, -{text:'t',url:'functions_func_t.html#index_t'}, -{text:'u',url:'functions_func_u.html#index_u'}, -{text:'w',url:'functions_func_w.html#index_w'}]}, -{text:'Variables',url:'functions_vars.html',children:[ -{text:'a',url:'functions_vars.html#index_a'}, -{text:'b',url:'functions_vars.html#index_b'}, -{text:'c',url:'functions_vars.html#index_c'}, -{text:'d',url:'functions_vars.html#index_d'}, -{text:'e',url:'functions_vars.html#index_e'}, -{text:'f',url:'functions_vars.html#index_f'}, -{text:'h',url:'functions_vars.html#index_h'}, -{text:'i',url:'functions_vars.html#index_i'}, -{text:'k',url:'functions_vars.html#index_k'}, -{text:'l',url:'functions_vars.html#index_l'}, -{text:'m',url:'functions_vars.html#index_m'}, -{text:'n',url:'functions_vars.html#index_n'}, -{text:'o',url:'functions_vars.html#index_o'}, -{text:'p',url:'functions_vars.html#index_p'}, -{text:'r',url:'functions_vars.html#index_r'}, -{text:'s',url:'functions_vars.html#index_s'}, -{text:'t',url:'functions_vars.html#index_t'}, -{text:'u',url:'functions_vars.html#index_u'}]}]}]}, -{text:'Files',url:'files.html',children:[ -{text:'File List',url:'files.html'}]}]} +{text:"Main Page",url:"index.html"}, +{text:"Namespaces",url:"namespaces.html",children:[ +{text:"Namespace List",url:"namespaces.html"}, +{text:"Namespace Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html"}, +{text:"Functions",url:"namespacemembers_func.html"}, +{text:"Typedefs",url:"namespacemembers_type.html"}]}]}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"hierarchy.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions_b.html#index_b"}, +{text:"c",url:"functions_c.html#index_c"}, +{text:"d",url:"functions_d.html#index_d"}, +{text:"e",url:"functions_e.html#index_e"}, +{text:"f",url:"functions_f.html#index_f"}, +{text:"g",url:"functions_g.html#index_g"}, +{text:"h",url:"functions_h.html#index_h"}, +{text:"i",url:"functions_i.html#index_i"}, +{text:"k",url:"functions_k.html#index_k"}, +{text:"l",url:"functions_l.html#index_l"}, +{text:"m",url:"functions_m.html#index_m"}, +{text:"n",url:"functions_n.html#index_n"}, +{text:"o",url:"functions_o.html#index_o"}, +{text:"p",url:"functions_p.html#index_p"}, +{text:"r",url:"functions_r.html#index_r"}, +{text:"s",url:"functions_s.html#index_s"}, +{text:"t",url:"functions_t.html#index_t"}, +{text:"u",url:"functions_u.html#index_u"}, +{text:"w",url:"functions_w.html#index_w"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"b",url:"functions_func_b.html#index_b"}, +{text:"c",url:"functions_func_c.html#index_c"}, +{text:"d",url:"functions_func_d.html#index_d"}, +{text:"e",url:"functions_func_e.html#index_e"}, +{text:"f",url:"functions_func_f.html#index_f"}, +{text:"g",url:"functions_func_g.html#index_g"}, +{text:"h",url:"functions_func_h.html#index_h"}, +{text:"i",url:"functions_func_i.html#index_i"}, +{text:"l",url:"functions_func_l.html#index_l"}, +{text:"m",url:"functions_func_m.html#index_m"}, +{text:"n",url:"functions_func_n.html#index_n"}, +{text:"o",url:"functions_func_o.html#index_o"}, +{text:"p",url:"functions_func_p.html#index_p"}, +{text:"r",url:"functions_func_r.html#index_r"}, +{text:"s",url:"functions_func_s.html#index_s"}, +{text:"t",url:"functions_func_t.html#index_t"}, +{text:"u",url:"functions_func_u.html#index_u"}, +{text:"w",url:"functions_func_w.html#index_w"}]}, +{text:"Variables",url:"functions_vars.html",children:[ +{text:"a",url:"functions_vars.html#index_a"}, +{text:"b",url:"functions_vars.html#index_b"}, +{text:"c",url:"functions_vars.html#index_c"}, +{text:"d",url:"functions_vars.html#index_d"}, +{text:"e",url:"functions_vars.html#index_e"}, +{text:"f",url:"functions_vars.html#index_f"}, +{text:"h",url:"functions_vars.html#index_h"}, +{text:"i",url:"functions_vars.html#index_i"}, +{text:"k",url:"functions_vars.html#index_k"}, +{text:"l",url:"functions_vars.html#index_l"}, +{text:"m",url:"functions_vars.html#index_m"}, +{text:"n",url:"functions_vars.html#index_n"}, +{text:"o",url:"functions_vars.html#index_o"}, +{text:"p",url:"functions_vars.html#index_p"}, +{text:"r",url:"functions_vars.html#index_r"}, +{text:"s",url:"functions_vars.html#index_s"}, +{text:"t",url:"functions_vars.html#index_t"}, +{text:"u",url:"functions_vars.html#index_u"}]}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/doxygen/mkl__alternate_8hpp_source.html b/doxygen/mkl__alternate_8hpp_source.html index 2e2f10171c0..77b9b2c7b67 100644 --- a/doxygen/mkl__alternate_8hpp_source.html +++ b/doxygen/mkl__alternate_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/util/mkl_alternate.hpp Source File @@ -29,7 +29,7 @@ - + @@ -66,12 +66,12 @@
        mkl_alternate.hpp
        -
        1 #ifndef CAFFE_UTIL_MKL_ALTERNATE_H_
        2 #define CAFFE_UTIL_MKL_ALTERNATE_H_
        3 
        4 #ifdef USE_MKL
        5 
        6 #include <mkl.h>
        7 
        8 #else // If use MKL, simply include the MKL header
        9 
        10 #ifdef USE_ACCELERATE
        11 #include <Accelerate/Accelerate.h>
        12 #else
        13 extern "C" {
        14 #include <cblas.h>
        15 }
        16 #endif // USE_ACCELERATE
        17 
        18 #include <math.h>
        19 
        20 // Functions that caffe uses but are not present if MKL is not linked.
        21 
        22 // A simple way to define the vsl unary functions. The operation should
        23 // be in the form e.g. y[i] = sqrt(a[i])
        24 #define DEFINE_VSL_UNARY_FUNC(name, operation) \
        25  template<typename Dtype> \
        26  void v##name(const int n, const Dtype* a, Dtype* y) { \
        27  CHECK_GT(n, 0); CHECK(a); CHECK(y); \
        28  for (int i = 0; i < n; ++i) { operation; } \
        29  } \
        30  inline void vs##name( \
        31  const int n, const float* a, float* y) { \
        32  v##name<float>(n, a, y); \
        33  } \
        34  inline void vd##name( \
        35  const int n, const double* a, double* y) { \
        36  v##name<double>(n, a, y); \
        37  }
        38 
        39 DEFINE_VSL_UNARY_FUNC(Sqr, y[i] = a[i] * a[i]);
        40 DEFINE_VSL_UNARY_FUNC(Exp, y[i] = exp(a[i]));
        41 DEFINE_VSL_UNARY_FUNC(Ln, y[i] = log(a[i]));
        42 DEFINE_VSL_UNARY_FUNC(Abs, y[i] = fabs(a[i]));
        43 
        44 // A simple way to define the vsl unary functions with singular parameter b.
        45 // The operation should be in the form e.g. y[i] = pow(a[i], b)
        46 #define DEFINE_VSL_UNARY_FUNC_WITH_PARAM(name, operation) \
        47  template<typename Dtype> \
        48  void v##name(const int n, const Dtype* a, const Dtype b, Dtype* y) { \
        49  CHECK_GT(n, 0); CHECK(a); CHECK(y); \
        50  for (int i = 0; i < n; ++i) { operation; } \
        51  } \
        52  inline void vs##name( \
        53  const int n, const float* a, const float b, float* y) { \
        54  v##name<float>(n, a, b, y); \
        55  } \
        56  inline void vd##name( \
        57  const int n, const double* a, const float b, double* y) { \
        58  v##name<double>(n, a, b, y); \
        59  }
        60 
        61 DEFINE_VSL_UNARY_FUNC_WITH_PARAM(Powx, y[i] = pow(a[i], b));
        62 
        63 // A simple way to define the vsl binary functions. The operation should
        64 // be in the form e.g. y[i] = a[i] + b[i]
        65 #define DEFINE_VSL_BINARY_FUNC(name, operation) \
        66  template<typename Dtype> \
        67  void v##name(const int n, const Dtype* a, const Dtype* b, Dtype* y) { \
        68  CHECK_GT(n, 0); CHECK(a); CHECK(b); CHECK(y); \
        69  for (int i = 0; i < n; ++i) { operation; } \
        70  } \
        71  inline void vs##name( \
        72  const int n, const float* a, const float* b, float* y) { \
        73  v##name<float>(n, a, b, y); \
        74  } \
        75  inline void vd##name( \
        76  const int n, const double* a, const double* b, double* y) { \
        77  v##name<double>(n, a, b, y); \
        78  }
        79 
        80 DEFINE_VSL_BINARY_FUNC(Add, y[i] = a[i] + b[i]);
        81 DEFINE_VSL_BINARY_FUNC(Sub, y[i] = a[i] - b[i]);
        82 DEFINE_VSL_BINARY_FUNC(Mul, y[i] = a[i] * b[i]);
        83 DEFINE_VSL_BINARY_FUNC(Div, y[i] = a[i] / b[i]);
        84 
        85 // In addition, MKL comes with an additional function axpby that is not present
        86 // in standard blas. We will simply use a two-step (inefficient, of course) way
        87 // to mimic that.
        88 inline void cblas_saxpby(const int N, const float alpha, const float* X,
        89  const int incX, const float beta, float* Y,
        90  const int incY) {
        91  cblas_sscal(N, beta, Y, incY);
        92  cblas_saxpy(N, alpha, X, incX, Y, incY);
        93 }
        94 inline void cblas_daxpby(const int N, const double alpha, const double* X,
        95  const int incX, const double beta, double* Y,
        96  const int incY) {
        97  cblas_dscal(N, beta, Y, incY);
        98  cblas_daxpy(N, alpha, X, incX, Y, incY);
        99 }
        100 
        101 #endif // USE_MKL
        102 #endif // CAFFE_UTIL_MKL_ALTERNATE_H_
        +
        1 #ifndef CAFFE_UTIL_MKL_ALTERNATE_H_
        2 #define CAFFE_UTIL_MKL_ALTERNATE_H_
        3 
        4 #ifdef USE_MKL
        5 
        6 #include <mkl.h>
        7 
        8 #else // If use MKL, simply include the MKL header
        9 
        10 #ifdef USE_ACCELERATE
        11 #include <Accelerate/Accelerate.h>
        12 #else
        13 extern "C" {
        14 #include <cblas.h>
        15 }
        16 #endif // USE_ACCELERATE
        17 
        18 #include <math.h>
        19 
        20 // Functions that caffe uses but are not present if MKL is not linked.
        21 
        22 // A simple way to define the vsl unary functions. The operation should
        23 // be in the form e.g. y[i] = sqrt(a[i])
        24 #define DEFINE_VSL_UNARY_FUNC(name, operation) \
        25  template<typename Dtype> \
        26  void v##name(const int n, const Dtype* a, Dtype* y) { \
        27  CHECK_GT(n, 0); CHECK(a); CHECK(y); \
        28  for (int i = 0; i < n; ++i) { operation; } \
        29  } \
        30  inline void vs##name( \
        31  const int n, const float* a, float* y) { \
        32  v##name<float>(n, a, y); \
        33  } \
        34  inline void vd##name( \
        35  const int n, const double* a, double* y) { \
        36  v##name<double>(n, a, y); \
        37  }
        38 
        39 DEFINE_VSL_UNARY_FUNC(Sqr, y[i] = a[i] * a[i])
        40 DEFINE_VSL_UNARY_FUNC(Sqrt, y[i] = sqrt(a[i]))
        41 DEFINE_VSL_UNARY_FUNC(Exp, y[i] = exp(a[i]))
        42 DEFINE_VSL_UNARY_FUNC(Ln, y[i] = log(a[i]))
        43 DEFINE_VSL_UNARY_FUNC(Abs, y[i] = fabs(a[i]))
        44 
        45 // A simple way to define the vsl unary functions with singular parameter b.
        46 // The operation should be in the form e.g. y[i] = pow(a[i], b)
        47 #define DEFINE_VSL_UNARY_FUNC_WITH_PARAM(name, operation) \
        48  template<typename Dtype> \
        49  void v##name(const int n, const Dtype* a, const Dtype b, Dtype* y) { \
        50  CHECK_GT(n, 0); CHECK(a); CHECK(y); \
        51  for (int i = 0; i < n; ++i) { operation; } \
        52  } \
        53  inline void vs##name( \
        54  const int n, const float* a, const float b, float* y) { \
        55  v##name<float>(n, a, b, y); \
        56  } \
        57  inline void vd##name( \
        58  const int n, const double* a, const float b, double* y) { \
        59  v##name<double>(n, a, b, y); \
        60  }
        61 
        62 DEFINE_VSL_UNARY_FUNC_WITH_PARAM(Powx, y[i] = pow(a[i], b))
        63 
        64 // A simple way to define the vsl binary functions. The operation should
        65 // be in the form e.g. y[i] = a[i] + b[i]
        66 #define DEFINE_VSL_BINARY_FUNC(name, operation) \
        67  template<typename Dtype> \
        68  void v##name(const int n, const Dtype* a, const Dtype* b, Dtype* y) { \
        69  CHECK_GT(n, 0); CHECK(a); CHECK(b); CHECK(y); \
        70  for (int i = 0; i < n; ++i) { operation; } \
        71  } \
        72  inline void vs##name( \
        73  const int n, const float* a, const float* b, float* y) { \
        74  v##name<float>(n, a, b, y); \
        75  } \
        76  inline void vd##name( \
        77  const int n, const double* a, const double* b, double* y) { \
        78  v##name<double>(n, a, b, y); \
        79  }
        80 
        81 DEFINE_VSL_BINARY_FUNC(Add, y[i] = a[i] + b[i])
        82 DEFINE_VSL_BINARY_FUNC(Sub, y[i] = a[i] - b[i])
        83 DEFINE_VSL_BINARY_FUNC(Mul, y[i] = a[i] * b[i])
        84 DEFINE_VSL_BINARY_FUNC(Div, y[i] = a[i] / b[i])
        85 
        86 // In addition, MKL comes with an additional function axpby that is not present
        87 // in standard blas. We will simply use a two-step (inefficient, of course) way
        88 // to mimic that.
        89 inline void cblas_saxpby(const int N, const float alpha, const float* X,
        90  const int incX, const float beta, float* Y,
        91  const int incY) {
        92  cblas_sscal(N, beta, Y, incY);
        93  cblas_saxpy(N, alpha, X, incX, Y, incY);
        94 }
        95 inline void cblas_daxpby(const int N, const double alpha, const double* X,
        96  const int incX, const double beta, double* Y,
        97  const int incY) {
        98  cblas_dscal(N, beta, Y, incY);
        99  cblas_daxpy(N, alpha, X, incX, Y, incY);
        100 }
        101 
        102 #endif // USE_MKL
        103 #endif // CAFFE_UTIL_MKL_ALTERNATE_H_
        diff --git a/doxygen/multinomial__logistic__loss__layer_8hpp_source.html b/doxygen/multinomial__logistic__loss__layer_8hpp_source.html index 5277fff523a..1c96344da0b 100644 --- a/doxygen/multinomial__logistic__loss__layer_8hpp_source.html +++ b/doxygen/multinomial__logistic__loss__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/multinomial_logistic_loss_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -77,9 +77,9 @@ diff --git a/doxygen/mvn__layer_8hpp_source.html b/doxygen/mvn__layer_8hpp_source.html index e07b4a117f6..64436a07555 100644 --- a/doxygen/mvn__layer_8hpp_source.html +++ b/doxygen/mvn__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/mvn_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -82,9 +82,9 @@ diff --git a/doxygen/namespaceboost.html b/doxygen/namespaceboost.html index cf2bc570f1b..eb5b51fe1cc 100644 --- a/doxygen/namespaceboost.html +++ b/doxygen/namespaceboost.html @@ -3,7 +3,7 @@ - + Caffe: boost Namespace Reference @@ -29,7 +29,7 @@ - + @@ -67,9 +67,9 @@ diff --git a/doxygen/namespacecaffe.html b/doxygen/namespacecaffe.html index f5d6e0f61c0..8243c370b10 100644 --- a/doxygen/namespacecaffe.html +++ b/doxygen/namespacecaffe.html @@ -3,7 +3,7 @@ - + Caffe: caffe Namespace Reference @@ -29,7 +29,7 @@ - + @@ -81,7 +81,7 @@

        Classes

        class  AbsValLayer - Computes $ y = |x| $. More...
        + Computes $ y = |x| $. More...
          class  AccuracyLayer  Computes the classification accuracy for a one-of-many classification task. More...
        @@ -94,7 +94,7 @@  AdamSolver, an algorithm for first-order gradient-based optimization of stochastic objective functions, based on adaptive estimates of lower-order moments. Described in [1]. More...
          class  ArgMaxLayer - Compute the index of the $ K $ max values for each datum across all dimensions $ (C \times H \times W) $. More...
        + Compute the index of the $ K $ max values for each datum across all dimensions $ (C \times H \times W) $. More...
          class  BaseConvolutionLayer  Abstract base class that factors out the BLAS code common to ConvolutionLayer and DeconvolutionLayer. More...
        @@ -124,7 +124,7 @@ class  BlockingQueue   class  BNLLLayer - Computes $ y = x + \log(1 + \exp(-x)) $ if $ x > 0 $; $ y = \log(1 + \exp(x)) $ otherwise. More...
        + Computes $ y = x + \log(1 + \exp(-x)) $ if $ x > 0 $; $ y = \log(1 + \exp(x)) $ otherwise. More...
          class  Caffe   @@ -132,10 +132,10 @@  Takes at least two Blobs and concatenates them along either the num or channel dimension, outputting the result. More...
          class  ConstantFiller - Fills a Blob with constant values $ x = 0 $. More...
        + Fills a Blob with constant values $ x = 0 $. More...
          class  ContrastiveLossLayer - Computes the contrastive loss $ 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 $ where $ d = \left| \left| a_n - b_n \right| \right|_2 $. This can be used to train siamese networks. More...
        + Computes the contrastive loss $ 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 $ where $ d = \left| \left| a_n - b_n \right| \right|_2 $. This can be used to train siamese networks. More...
          class  ConvolutionLayer  Convolves the input image with a bank of learned filters, and (optionally) adds biases. More...
        @@ -154,7 +154,7 @@  Convolve the input with a bank of learned filters, and (optionally) add biases, treating filters and convolution parameters in the opposite sense as ConvolutionLayer. More...
          class  DropoutLayer - During training only, sets a random portion of $x$ to 0, adjusting the rest of the vector magnitude accordingly. More...
        + During training only, sets a random portion of $x$ to 0, adjusting the rest of the vector magnitude accordingly. More...
          class  DummyDataLayer  Provides data to the Net generated by a Filler. More...
        @@ -163,16 +163,16 @@  Compute elementwise operations, such as product and sum, along multiple input Blobs. More...
          class  ELULayer - Exponential Linear Unit non-linearity $ y = \left\{ \begin{array}{lr} x & \mathrm{if} \; x > 0 \\ \alpha (\exp(x)-1) & \mathrm{if} \; x \le 0 \end{array} \right. $. More...
        + Exponential Linear Unit non-linearity $ y = \left\{ \begin{array}{lr} x & \mathrm{if} \; x > 0 \\ \alpha (\exp(x)-1) & \mathrm{if} \; x \le 0 \end{array} \right. $. More...
          class  EmbedLayer  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. More...
          class  EuclideanLossLayer - Computes the Euclidean (L2) loss $ E = \frac{1}{2N} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $ for real-valued regression tasks. More...
        + Computes the Euclidean (L2) loss $ E = \frac{1}{2N} \sum\limits_{n=1}^N \left| \left| \hat{y}_n - y_n \right| \right|_2^2 $ for real-valued regression tasks. More...
          class  ExpLayer - Computes $ y = \gamma ^ {\alpha x + \beta} $, as specified by the scale $ \alpha $, shift $ \beta $, and base $ \gamma $. More...
        + Computes $ y = \gamma ^ {\alpha x + \beta} $, as specified by the scale $ \alpha $, shift $ \beta $, and base $ \gamma $. More...
          class  Filler  Fills a Blob with constant or randomly-generated data. More...
        @@ -184,7 +184,7 @@  Reshapes the input Blob into flat vectors. More...
          class  GaussianFiller - Fills a Blob with Gaussian-distributed values $ x = a $. More...
        + Fills a Blob with Gaussian-distributed values $ x = a $. More...
          class  HDF5DataLayer  Provides data to the Net from HDF5 files. More...
        @@ -220,7 +220,7 @@ class  LayerRegistry   class  LogLayer - Computes $ y = log_{\gamma}(\alpha x + \beta) $, as specified by the scale $ \alpha $, shift $ \beta $, and base $ \gamma $. More...
        + Computes $ y = log_{\gamma}(\alpha x + \beta) $, as specified by the scale $ \alpha $, shift $ \beta $, and base $ \gamma $. More...
          class  LossLayer  An interface for Layers that take two Blobs as input – usually (1) predictions and (2) ground-truth labels – and output a singleton Blob representing the loss. More...
        @@ -238,7 +238,7 @@  Provides data to the Net from memory. More...
          class  MSRAFiller - Fills a Blob with values $ x \sim N(0, \sigma^2) $ where $ \sigma^2 $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average. More...
        + Fills a Blob with values $ x \sim N(0, \sigma^2) $ where $ \sigma^2 $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average. More...
          class  MultinomialLogisticLossLayer  Computes the multinomial logistic loss for a one-of-many classification task, directly taking a predicted probability distribution as input. More...
        @@ -252,7 +252,7 @@  Connects Layers together into a directed acyclic graph (DAG) specified by a NetParameter. More...
          class  NeuronLayer - An interface for layers that take one blob as input ( $ x $) and produce one equally-sized blob as output ( $ y $), where each element of the output depends only on the corresponding input element. More...
        + An interface for layers that take one blob as input ( $ x $) and produce one equally-sized blob as output ( $ y $), where each element of the output depends only on the corresponding input element. More...
          class  ParameterLayer   @@ -260,13 +260,13 @@  Pools the input image by taking the max, average, etc. within regions. More...
          class  PositiveUnitballFiller - Fills a Blob with values $ x \in [0, 1] $ such that $ \forall i \sum_j x_{ij} = 1 $. More...
        + Fills a Blob with values $ x \in [0, 1] $ such that $ \forall i \sum_j x_{ij} = 1 $. More...
          class  PowerLayer - Computes $ y = (\alpha x + \beta) ^ \gamma $, as specified by the scale $ \alpha $, shift $ \beta $, and power $ \gamma $. More...
        + Computes $ y = (\alpha x + \beta) ^ \gamma $, as specified by the scale $ \alpha $, shift $ \beta $, and power $ \gamma $. More...
          class  PReLULayer - Parameterized Rectified Linear Unit non-linearity $ y_i = \max(0, x_i) + a_i \min(0, x_i) $. 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. More...
        + Parameterized Rectified Linear Unit non-linearity $ y_i = \max(0, x_i) + a_i \min(0, x_i) $. 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. More...
          class  PythonLayer   @@ -277,7 +277,7 @@  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. More...
          class  ReLULayer - Rectified Linear Unit non-linearity $ y = \max(0, x) $. The simple max is fast to compute, and the function does not saturate. More...
        + Rectified Linear Unit non-linearity $ y = \max(0, x) $. The simple max is fast to compute, and the function does not saturate. More...
          class  ReshapeLayer   @@ -293,10 +293,10 @@  Optimizes the parameters of a Net using stochastic gradient descent (SGD) with momentum. More...
          class  SigmoidCrossEntropyLossLayer - Computes the cross-entropy (logistic) loss $ 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] $, often used for predicting targets interpreted as probabilities. More...
        + Computes the cross-entropy (logistic) loss $ 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] $, often used for predicting targets interpreted as probabilities. More...
          class  SigmoidLayer - Sigmoid function non-linearity $ y = (1 + \exp(-x))^{-1} $, a classic choice in neural networks. More...
        + Sigmoid function non-linearity $ y = (1 + \exp(-x))^{-1} $, a classic choice in neural networks. More...
          class  SignalHandler   @@ -329,7 +329,7 @@  Manages memory allocation and synchronization between the host (CPU) and device (GPU). More...
          class  TanHLayer - TanH hyperbolic tangent non-linearity $ y = \frac{\exp(2x) - 1}{\exp(2x) + 1} $, popular in auto-encoders. More...
        + TanH hyperbolic tangent non-linearity $ y = \frac{\exp(2x) - 1}{\exp(2x) + 1} $, popular in auto-encoders. More...
          class  ThresholdLayer  Tests whether the input exceeds a threshold: outputs 1 for inputs above threshold; 0 otherwise. More...
        @@ -340,13 +340,13 @@ class  Timer   class  UniformFiller - Fills a Blob with uniformly distributed values $ x\sim U(a, b) $. More...
        + Fills a Blob with uniformly distributed values $ x\sim U(a, b) $. More...
          class  WindowDataLayer  Provides data to the Net from windows of images files, specified by a window data file. More...
          class  XavierFiller - Fills a Blob with values $ x \sim U(-a, +a) $ where $ a $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average. More...
        + Fills a Blob with values $ x \sim U(-a, +a) $ where $ a $ is set inversely proportional to number of incoming nodes, outgoing nodes, or their average. More...
          - - - - + + - - + + @@ -571,6 +571,10 @@ template<typename Dtype > + + + @@ -642,19 +646,9 @@ template<typename Dtype > - - - - - - - - - + + @@ -725,6 +719,10 @@ template<typename Dtype > + + + @@ -1312,14 +1310,14 @@ - - - - + + - - + + @@ -1476,6 +1474,14 @@ template<> + + + + + + @@ -1569,6 +1575,15 @@ + + + + + + @@ -1600,7 +1615,7 @@

        Note that each solver type should only be registered once.

        Function Documentation

        -

        § GetFiller()

        +

        ◆ GetFiller()

        @@ -1625,9 +1640,9 @@

        diff --git a/doxygen/namespacecaffe_1_1SolverAction.html b/doxygen/namespacecaffe_1_1SolverAction.html index 98ee8da46bb..497435df292 100644 --- a/doxygen/namespacecaffe_1_1SolverAction.html +++ b/doxygen/namespacecaffe_1_1SolverAction.html @@ -3,7 +3,7 @@ - + Caffe: caffe::SolverAction Namespace Reference @@ -29,7 +29,7 @@

        @@ -386,14 +386,14 @@

        std::string format_int (int n, int numberOfLeadingZeros=0)
         
        +
        template<typename Dtype >
        void hdf5_load_nd_dataset_helper (hid_t file_id, const char *dataset_name_, int min_dim, int max_dim, Blob< Dtype > *blob)
         
        +
        void hdf5_load_nd_dataset_helper (hid_t file_id, const char *dataset_name_, int min_dim, int max_dim, Blob< Dtype > *blob, bool reshape)
         
        template<typename Dtype >
        void hdf5_load_nd_dataset (hid_t file_id, const char *dataset_name_, int min_dim, int max_dim, Blob< Dtype > *blob)
         
        void hdf5_load_nd_dataset (hid_t file_id, const char *dataset_name_, int min_dim, int max_dim, Blob< Dtype > *blob, bool reshape=false)
         
        template<typename Dtype >
        void hdf5_save_nd_dataset (const hid_t file_id, const string &dataset_name, const Blob< Dtype > &blob, bool write_diff=false)
        void caffe_sqr (const int N, const Dtype *a, Dtype *y)
         
        +template<typename Dtype >
        void caffe_sqrt (const int N, const Dtype *a, Dtype *y)
         
        template<typename Dtype >
        void caffe_add (const int N, const Dtype *a, const Dtype *b, Dtype *y)
        int8_t caffe_sign (Dtype val)
         
        DEFINE_CAFFE_CPU_UNARY_FUNC (sign, y[i]=caffe_sign< Dtype >(x[i]))
         
        DEFINE_CAFFE_CPU_UNARY_FUNC (sgnbit, y[i]=static_cast< bool >((std::signbit)(x[i])))
         
        DEFINE_CAFFE_CPU_UNARY_FUNC (fabs, y[i]=std::fabs(x[i]))
         
        -template<typename Dtype >
        void caffe_cpu_scale (const int n, const Dtype alpha, const Dtype *x, Dtype *y)
         
        DEFINE_CAFFE_CPU_UNARY_FUNC (sgnbit, y[i]=static_cast< bool >((std::signbit)(x[i]))) template< typename Dtype > void caffe_cpu_scale(const int n
         
        template<typename Dtype >
        void caffe_gpu_gemm (const CBLAS_TRANSPOSE TransA, const CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const Dtype alpha, const Dtype *A, const Dtype *B, const Dtype beta, Dtype *C)
        void caffe_gpu_powx (const int n, const Dtype *a, const Dtype b, Dtype *y)
         
        +template<typename Dtype >
        void caffe_gpu_sqrt (const int n, const Dtype *a, Dtype *y)
         
        void caffe_gpu_rng_uniform (const int n, unsigned int *r)
         
         REGISTER_SOLVER_CLASS (SGD)
         
        +
        template<>
        void hdf5_load_nd_dataset< float > (hid_t file_id, const char *dataset_name_, int min_dim, int max_dim, Blob< float > *blob)
         
        +
        void hdf5_load_nd_dataset< float > (hid_t file_id, const char *dataset_name_, int min_dim, int max_dim, Blob< float > *blob, bool reshape)
         
        template<>
        void hdf5_load_nd_dataset< double > (hid_t file_id, const char *dataset_name_, int min_dim, int max_dim, Blob< double > *blob)
         
        void hdf5_load_nd_dataset< double > (hid_t file_id, const char *dataset_name_, int min_dim, int max_dim, Blob< double > *blob, bool reshape)
         
        template<>
        void hdf5_save_nd_dataset< float > (const hid_t file_id, const string &dataset_name, const Blob< float > &blob, bool write_diff)
        void caffe_sqr< double > (const int n, const double *a, double *y)
         
        +template<>
        void caffe_sqrt< float > (const int n, const float *a, float *y)
         
        +template<>
        void caffe_sqrt< double > (const int n, const double *a, double *y)
         
        template<>
        void caffe_exp< float > (const int n, const float *a, float *y)
        const int CAFFE_CUDA_NUM_THREADS = 512
         
        +const Dtype alpha
         
        +const Dtype const Dtype * x
         
        +const Dtype const Dtype Dtype * y
         
        const float kBNLL_THRESHOLD = 50.
         
        - + @@ -85,9 +85,9 @@ diff --git a/doxygen/namespacemembers.html b/doxygen/namespacemembers.html index 96422292e1a..990f6580066 100644 --- a/doxygen/namespacemembers.html +++ b/doxygen/namespacemembers.html @@ -3,7 +3,7 @@ - + Caffe: Namespace Members @@ -29,7 +29,7 @@ - + @@ -69,9 +69,9 @@ diff --git a/doxygen/namespacemembers_func.html b/doxygen/namespacemembers_func.html index 7deeafbd052..8ad52df6426 100644 --- a/doxygen/namespacemembers_func.html +++ b/doxygen/namespacemembers_func.html @@ -3,7 +3,7 @@ - + Caffe: Namespace Members @@ -29,7 +29,7 @@ - + @@ -66,9 +66,9 @@ diff --git a/doxygen/namespacemembers_type.html b/doxygen/namespacemembers_type.html index c715bd02b59..970977f2552 100644 --- a/doxygen/namespacemembers_type.html +++ b/doxygen/namespacemembers_type.html @@ -3,7 +3,7 @@ - + Caffe: Namespace Members @@ -29,7 +29,7 @@ - + @@ -66,9 +66,9 @@ diff --git a/doxygen/namespaces.html b/doxygen/namespaces.html index b8fa5dbf019..e88cf6e6488 100644 --- a/doxygen/namespaces.html +++ b/doxygen/namespaces.html @@ -3,7 +3,7 @@ - + Caffe: Namespace List @@ -29,7 +29,7 @@ - + @@ -72,9 +72,9 @@ diff --git a/doxygen/nccl_8hpp_source.html b/doxygen/nccl_8hpp_source.html index 49535d41e38..75e8b5baf1d 100644 --- a/doxygen/nccl_8hpp_source.html +++ b/doxygen/nccl_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/util/nccl.hpp Source File @@ -29,7 +29,7 @@ - + @@ -70,9 +70,9 @@ diff --git a/doxygen/net_8hpp_source.html b/doxygen/net_8hpp_source.html index 640e802f0cf..19bb96d4dea 100644 --- a/doxygen/net_8hpp_source.html +++ b/doxygen/net_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/net.hpp Source File @@ -29,7 +29,7 @@ - + @@ -66,48 +66,48 @@
        net.hpp
        -
        1 #ifndef CAFFE_NET_HPP_
        2 #define CAFFE_NET_HPP_
        3 
        4 #include <map>
        5 #include <set>
        6 #include <string>
        7 #include <utility>
        8 #include <vector>
        9 
        10 #include "caffe/blob.hpp"
        11 #include "caffe/common.hpp"
        12 #include "caffe/layer.hpp"
        13 #include "caffe/proto/caffe.pb.h"
        14 
        15 namespace caffe {
        16 
        23 template <typename Dtype>
        24 class Net {
        25  public:
        26  explicit Net(const NetParameter& param);
        27  explicit Net(const string& param_file, Phase phase,
        28  const int level = 0, const vector<string>* stages = NULL);
        29  virtual ~Net() {}
        30 
        32  void Init(const NetParameter& param);
        33 
        38  const vector<Blob<Dtype>*>& Forward(Dtype* loss = NULL);
        40  const vector<Blob<Dtype>*>& ForwardPrefilled(Dtype* loss = NULL) {
        41  LOG_EVERY_N(WARNING, 1000) << "DEPRECATED: ForwardPrefilled() "
        42  << "will be removed in a future version. Use Forward().";
        43  return Forward(loss);
        44  }
        45 
        54  Dtype ForwardFromTo(int start, int end);
        55  Dtype ForwardFrom(int start);
        56  Dtype ForwardTo(int end);
        58  const vector<Blob<Dtype>*>& Forward(const vector<Blob<Dtype>* > & bottom,
        59  Dtype* loss = NULL);
        60 
        65  void ClearParamDiffs();
        66 
        72  void Backward();
        73  void BackwardFromTo(int start, int end);
        74  void BackwardFrom(int start);
        75  void BackwardTo(int end);
        76 
        83  void Reshape();
        84 
        85  Dtype ForwardBackward() {
        86  Dtype loss;
        87  Forward(&loss);
        88  Backward();
        89  return loss;
        90  }
        91 
        93  void Update();
        100  void ShareWeights();
        101 
        106  void ShareTrainedLayersWith(const Net* other);
        107  // For an already initialized net, CopyTrainedLayersFrom() copies the already
        108  // trained layers from another net parameter instance.
        113  void CopyTrainedLayersFrom(const NetParameter& param);
        114  void CopyTrainedLayersFrom(const string trained_filename);
        115  void CopyTrainedLayersFromBinaryProto(const string trained_filename);
        116  void CopyTrainedLayersFromHDF5(const string trained_filename);
        118  void ToProto(NetParameter* param, bool write_diff = false) const;
        120  void ToHDF5(const string& filename, bool write_diff = false) const;
        121 
        123  inline const string& name() const { return name_; }
        125  inline const vector<string>& layer_names() const { return layer_names_; }
        127  inline const vector<string>& blob_names() const { return blob_names_; }
        129  inline const vector<shared_ptr<Blob<Dtype> > >& blobs() const {
        130  return blobs_;
        131  }
        133  inline const vector<shared_ptr<Layer<Dtype> > >& layers() const {
        134  return layers_;
        135  }
        137  inline Phase phase() const { return phase_; }
        142  inline const vector<vector<Blob<Dtype>*> >& bottom_vecs() const {
        143  return bottom_vecs_;
        144  }
        149  inline const vector<vector<Blob<Dtype>*> >& top_vecs() const {
        150  return top_vecs_;
        151  }
        153  inline const vector<int> & top_ids(int i) const {
        154  CHECK_GE(i, 0) << "Invalid layer id";
        155  CHECK_LT(i, top_id_vecs_.size()) << "Invalid layer id";
        156  return top_id_vecs_[i];
        157  }
        159  inline const vector<int> & bottom_ids(int i) const {
        160  CHECK_GE(i, 0) << "Invalid layer id";
        161  CHECK_LT(i, bottom_id_vecs_.size()) << "Invalid layer id";
        162  return bottom_id_vecs_[i];
        163  }
        164  inline const vector<vector<bool> >& bottom_need_backward() const {
        165  return bottom_need_backward_;
        166  }
        167  inline const vector<Dtype>& blob_loss_weights() const {
        168  return blob_loss_weights_;
        169  }
        170  inline const vector<bool>& layer_need_backward() const {
        171  return layer_need_backward_;
        172  }
        174  inline const vector<shared_ptr<Blob<Dtype> > >& params() const {
        175  return params_;
        176  }
        177  inline const vector<Blob<Dtype>*>& learnable_params() const {
        178  return learnable_params_;
        179  }
        181  inline const vector<float>& params_lr() const { return params_lr_; }
        182  inline const vector<bool>& has_params_lr() const { return has_params_lr_; }
        184  inline const vector<float>& params_weight_decay() const {
        185  return params_weight_decay_;
        186  }
        187  inline const vector<bool>& has_params_decay() const {
        188  return has_params_decay_;
        189  }
        190  const map<string, int>& param_names_index() const {
        191  return param_names_index_;
        192  }
        193  inline const vector<int>& param_owners() const { return param_owners_; }
        194  inline const vector<string>& param_display_names() const {
        195  return param_display_names_;
        196  }
        198  inline int num_inputs() const { return net_input_blobs_.size(); }
        199  inline int num_outputs() const { return net_output_blobs_.size(); }
        200  inline const vector<Blob<Dtype>*>& input_blobs() const {
        201  return net_input_blobs_;
        202  }
        203  inline const vector<Blob<Dtype>*>& output_blobs() const {
        204  return net_output_blobs_;
        205  }
        206  inline const vector<int>& input_blob_indices() const {
        208  }
        209  inline const vector<int>& output_blob_indices() const {
        210  return net_output_blob_indices_;
        211  }
        212  bool has_blob(const string& blob_name) const;
        213  const shared_ptr<Blob<Dtype> > blob_by_name(const string& blob_name) const;
        214  bool has_layer(const string& layer_name) const;
        215  const shared_ptr<Layer<Dtype> > layer_by_name(const string& layer_name) const;
        216 
        217  void set_debug_info(const bool value) { debug_info_ = value; }
        218 
        219  // Helpers for Init.
        224  static void FilterNet(const NetParameter& param,
        225  NetParameter* param_filtered);
        227  static bool StateMeetsRule(const NetState& state, const NetStateRule& rule,
        228  const string& layer_name);
        229 
        230  // Invoked at specific points during an iteration
        231  class Callback {
        232  protected:
        233  virtual void run(int layer) = 0;
        234 
        235  template <typename T>
        236  friend class Net;
        237  };
        238  const vector<Callback*>& before_forward() const { return before_forward_; }
        239  void add_before_forward(Callback* value) {
        240  before_forward_.push_back(value);
        241  }
        242  const vector<Callback*>& after_forward() const { return after_forward_; }
        243  void add_after_forward(Callback* value) {
        244  after_forward_.push_back(value);
        245  }
        246  const vector<Callback*>& before_backward() const { return before_backward_; }
        247  void add_before_backward(Callback* value) {
        248  before_backward_.push_back(value);
        249  }
        250  const vector<Callback*>& after_backward() const { return after_backward_; }
        251  void add_after_backward(Callback* value) {
        252  after_backward_.push_back(value);
        253  }
        254 
        255  protected:
        256  // Helpers for Init.
        258  void AppendTop(const NetParameter& param, const int layer_id,
        259  const int top_id, set<string>* available_blobs,
        260  map<string, int>* blob_name_to_idx);
        262  int AppendBottom(const NetParameter& param, const int layer_id,
        263  const int bottom_id, set<string>* available_blobs,
        264  map<string, int>* blob_name_to_idx);
        266  void AppendParam(const NetParameter& param, const int layer_id,
        267  const int param_id);
        268 
        270  void ForwardDebugInfo(const int layer_id);
        272  void BackwardDebugInfo(const int layer_id);
        274  void UpdateDebugInfo(const int param_id);
        275 
        277  string name_;
        279  Phase phase_;
        281  vector<shared_ptr<Layer<Dtype> > > layers_;
        282  vector<string> layer_names_;
        283  map<string, int> layer_names_index_;
        284  vector<bool> layer_need_backward_;
        286  vector<shared_ptr<Blob<Dtype> > > blobs_;
        287  vector<string> blob_names_;
        288  map<string, int> blob_names_index_;
        289  vector<bool> blob_need_backward_;
        293  vector<vector<Blob<Dtype>*> > bottom_vecs_;
        294  vector<vector<int> > bottom_id_vecs_;
        295  vector<vector<bool> > bottom_need_backward_;
        297  vector<vector<Blob<Dtype>*> > top_vecs_;
        298  vector<vector<int> > top_id_vecs_;
        301  vector<Dtype> blob_loss_weights_;
        302  vector<vector<int> > param_id_vecs_;
        303  vector<int> param_owners_;
        304  vector<string> param_display_names_;
        305  vector<pair<int, int> > param_layer_indices_;
        306  map<string, int> param_names_index_;
        309  vector<int> net_output_blob_indices_;
        310  vector<Blob<Dtype>*> net_input_blobs_;
        311  vector<Blob<Dtype>*> net_output_blobs_;
        313  vector<shared_ptr<Blob<Dtype> > > params_;
        314  vector<Blob<Dtype>*> learnable_params_;
        322  vector<int> learnable_param_ids_;
        324  vector<float> params_lr_;
        325  vector<bool> has_params_lr_;
        327  vector<float> params_weight_decay_;
        328  vector<bool> has_params_decay_;
        330  size_t memory_used_;
        333  // Callbacks
        334  vector<Callback*> before_forward_;
        335  vector<Callback*> after_forward_;
        336  vector<Callback*> before_backward_;
        337  vector<Callback*> after_backward_;
        338 
        339 DISABLE_COPY_AND_ASSIGN(Net);
        340 };
        341 
        342 
        343 } // namespace caffe
        344 
        345 #endif // CAFFE_NET_HPP_
        void AppendTop(const NetParameter &param, const int layer_id, const int top_id, set< string > *available_blobs, map< string, int > *blob_name_to_idx)
        Append a new top blob to the net.
        Definition: net.cpp:358
        +
        1 #ifndef CAFFE_NET_HPP_
        2 #define CAFFE_NET_HPP_
        3 
        4 #include <map>
        5 #include <set>
        6 #include <string>
        7 #include <utility>
        8 #include <vector>
        9 
        10 #include "caffe/blob.hpp"
        11 #include "caffe/common.hpp"
        12 #include "caffe/layer.hpp"
        13 #include "caffe/proto/caffe.pb.h"
        14 
        15 namespace caffe {
        16 
        23 template <typename Dtype>
        24 class Net {
        25  public:
        26  explicit Net(const NetParameter& param);
        27  explicit Net(const string& param_file, Phase phase,
        28  const int level = 0, const vector<string>* stages = NULL);
        29  virtual ~Net() {}
        30 
        32  void Init(const NetParameter& param);
        33 
        38  const vector<Blob<Dtype>*>& Forward(Dtype* loss = NULL);
        40  const vector<Blob<Dtype>*>& ForwardPrefilled(Dtype* loss = NULL) {
        41  LOG_EVERY_N(WARNING, 1000) << "DEPRECATED: ForwardPrefilled() "
        42  << "will be removed in a future version. Use Forward().";
        43  return Forward(loss);
        44  }
        45 
        54  Dtype ForwardFromTo(int start, int end);
        55  Dtype ForwardFrom(int start);
        56  Dtype ForwardTo(int end);
        58  const vector<Blob<Dtype>*>& Forward(const vector<Blob<Dtype>* > & bottom,
        59  Dtype* loss = NULL);
        60 
        65  void ClearParamDiffs();
        66 
        72  void Backward();
        73  void BackwardFromTo(int start, int end);
        74  void BackwardFrom(int start);
        75  void BackwardTo(int end);
        76 
        83  void Reshape();
        84 
        85  Dtype ForwardBackward() {
        86  Dtype loss;
        87  Forward(&loss);
        88  Backward();
        89  return loss;
        90  }
        91 
        93  void Update();
        100  void ShareWeights();
        101 
        106  void ShareTrainedLayersWith(const Net* other);
        107  // For an already initialized net, CopyTrainedLayersFrom() copies the already
        108  // trained layers from another net parameter instance.
        113  void CopyTrainedLayersFrom(const NetParameter& param);
        114  void CopyTrainedLayersFrom(const string trained_filename);
        115  void CopyTrainedLayersFromBinaryProto(const string trained_filename);
        116  void CopyTrainedLayersFromHDF5(const string trained_filename);
        118  void ToProto(NetParameter* param, bool write_diff = false) const;
        120  void ToHDF5(const string& filename, bool write_diff = false) const;
        121 
        123  inline const string& name() const { return name_; }
        125  inline const vector<string>& layer_names() const { return layer_names_; }
        127  inline const vector<string>& blob_names() const { return blob_names_; }
        129  inline const vector<shared_ptr<Blob<Dtype> > >& blobs() const {
        130  return blobs_;
        131  }
        133  inline const vector<shared_ptr<Layer<Dtype> > >& layers() const {
        134  return layers_;
        135  }
        137  inline Phase phase() const { return phase_; }
        142  inline const vector<vector<Blob<Dtype>*> >& bottom_vecs() const {
        143  return bottom_vecs_;
        144  }
        149  inline const vector<vector<Blob<Dtype>*> >& top_vecs() const {
        150  return top_vecs_;
        151  }
        153  inline const vector<int> & top_ids(int i) const {
        154  CHECK_GE(i, 0) << "Invalid layer id";
        155  CHECK_LT(i, top_id_vecs_.size()) << "Invalid layer id";
        156  return top_id_vecs_[i];
        157  }
        159  inline const vector<int> & bottom_ids(int i) const {
        160  CHECK_GE(i, 0) << "Invalid layer id";
        161  CHECK_LT(i, bottom_id_vecs_.size()) << "Invalid layer id";
        162  return bottom_id_vecs_[i];
        163  }
        164  inline const vector<vector<bool> >& bottom_need_backward() const {
        165  return bottom_need_backward_;
        166  }
        167  inline const vector<Dtype>& blob_loss_weights() const {
        168  return blob_loss_weights_;
        169  }
        170  inline const vector<bool>& layer_need_backward() const {
        171  return layer_need_backward_;
        172  }
        174  inline const vector<shared_ptr<Blob<Dtype> > >& params() const {
        175  return params_;
        176  }
        177  inline const vector<Blob<Dtype>*>& learnable_params() const {
        178  return learnable_params_;
        179  }
        181  inline const vector<float>& params_lr() const { return params_lr_; }
        182  inline const vector<bool>& has_params_lr() const { return has_params_lr_; }
        184  inline const vector<float>& params_weight_decay() const {
        185  return params_weight_decay_;
        186  }
        187  inline const vector<bool>& has_params_decay() const {
        188  return has_params_decay_;
        189  }
        190  const map<string, int>& param_names_index() const {
        191  return param_names_index_;
        192  }
        193  inline const vector<int>& param_owners() const { return param_owners_; }
        194  inline const vector<string>& param_display_names() const {
        195  return param_display_names_;
        196  }
        198  inline int num_inputs() const { return net_input_blobs_.size(); }
        199  inline int num_outputs() const { return net_output_blobs_.size(); }
        200  inline const vector<Blob<Dtype>*>& input_blobs() const {
        201  return net_input_blobs_;
        202  }
        203  inline const vector<Blob<Dtype>*>& output_blobs() const {
        204  return net_output_blobs_;
        205  }
        206  inline const vector<int>& input_blob_indices() const {
        208  }
        209  inline const vector<int>& output_blob_indices() const {
        210  return net_output_blob_indices_;
        211  }
        212  bool has_blob(const string& blob_name) const;
        213  const shared_ptr<Blob<Dtype> > blob_by_name(const string& blob_name) const;
        214  bool has_layer(const string& layer_name) const;
        215  const shared_ptr<Layer<Dtype> > layer_by_name(const string& layer_name) const;
        216 
        217  void set_debug_info(const bool value) { debug_info_ = value; }
        218 
        219  // Helpers for Init.
        224  static void FilterNet(const NetParameter& param,
        225  NetParameter* param_filtered);
        227  static bool StateMeetsRule(const NetState& state, const NetStateRule& rule,
        228  const string& layer_name);
        229 
        230  // Invoked at specific points during an iteration
        231  class Callback {
        232  protected:
        233  virtual void run(int layer) = 0;
        234 
        235  template <typename T>
        236  friend class Net;
        237  };
        238  const vector<Callback*>& before_forward() const { return before_forward_; }
        239  void add_before_forward(Callback* value) {
        240  before_forward_.push_back(value);
        241  }
        242  const vector<Callback*>& after_forward() const { return after_forward_; }
        243  void add_after_forward(Callback* value) {
        244  after_forward_.push_back(value);
        245  }
        246  const vector<Callback*>& before_backward() const { return before_backward_; }
        247  void add_before_backward(Callback* value) {
        248  before_backward_.push_back(value);
        249  }
        250  const vector<Callback*>& after_backward() const { return after_backward_; }
        251  void add_after_backward(Callback* value) {
        252  after_backward_.push_back(value);
        253  }
        254 
        255  protected:
        256  // Helpers for Init.
        258  void AppendTop(const NetParameter& param, const int layer_id,
        259  const int top_id, set<string>* available_blobs,
        260  map<string, int>* blob_name_to_idx);
        262  int AppendBottom(const NetParameter& param, const int layer_id,
        263  const int bottom_id, set<string>* available_blobs,
        264  map<string, int>* blob_name_to_idx);
        266  void AppendParam(const NetParameter& param, const int layer_id,
        267  const int param_id);
        268 
        270  void ForwardDebugInfo(const int layer_id);
        272  void BackwardDebugInfo(const int layer_id);
        274  void UpdateDebugInfo(const int param_id);
        275 
        277  string name_;
        279  Phase phase_;
        281  vector<shared_ptr<Layer<Dtype> > > layers_;
        282  vector<string> layer_names_;
        283  map<string, int> layer_names_index_;
        284  vector<bool> layer_need_backward_;
        286  vector<shared_ptr<Blob<Dtype> > > blobs_;
        287  vector<string> blob_names_;
        288  map<string, int> blob_names_index_;
        289  vector<bool> blob_need_backward_;
        293  vector<vector<Blob<Dtype>*> > bottom_vecs_;
        294  vector<vector<int> > bottom_id_vecs_;
        295  vector<vector<bool> > bottom_need_backward_;
        297  vector<vector<Blob<Dtype>*> > top_vecs_;
        298  vector<vector<int> > top_id_vecs_;
        301  vector<Dtype> blob_loss_weights_;
        302  vector<vector<int> > param_id_vecs_;
        303  vector<int> param_owners_;
        304  vector<string> param_display_names_;
        305  vector<pair<int, int> > param_layer_indices_;
        306  map<string, int> param_names_index_;
        309  vector<int> net_output_blob_indices_;
        310  vector<Blob<Dtype>*> net_input_blobs_;
        311  vector<Blob<Dtype>*> net_output_blobs_;
        313  vector<shared_ptr<Blob<Dtype> > > params_;
        314  vector<Blob<Dtype>*> learnable_params_;
        322  vector<int> learnable_param_ids_;
        324  vector<float> params_lr_;
        325  vector<bool> has_params_lr_;
        327  vector<float> params_weight_decay_;
        328  vector<bool> has_params_decay_;
        330  size_t memory_used_;
        333  // Callbacks
        334  vector<Callback*> before_forward_;
        335  vector<Callback*> after_forward_;
        336  vector<Callback*> before_backward_;
        337  vector<Callback*> after_backward_;
        338 
        339 DISABLE_COPY_AND_ASSIGN(Net);
        340 };
        341 
        342 
        343 } // namespace caffe
        344 
        345 #endif // CAFFE_NET_HPP_
        void AppendTop(const NetParameter &param, const int layer_id, const int top_id, set< string > *available_blobs, map< string, int > *blob_name_to_idx)
        Append a new top blob to the net.
        Definition: net.cpp:356
        const vector< Blob< Dtype > * > & ForwardPrefilled(Dtype *loss=NULL)
        DEPRECATED; use Forward() instead.
        Definition: net.hpp:40
        vector< shared_ptr< Layer< Dtype > > > layers_
        Individual layers in the net.
        Definition: net.hpp:281
        int num_inputs() const
        Input and output blob numbers.
        Definition: net.hpp:198
        A layer factory that allows one to register layers. During runtime, registered layers can be called b...
        Definition: blob.hpp:14
        const vector< string > & blob_names() const
        returns the blob names
        Definition: net.hpp:127
        vector< Dtype > blob_loss_weights_
        Definition: net.hpp:301
        -
        void AppendParam(const NetParameter &param, const int layer_id, const int param_id)
        Append a new parameter blob to the net.
        Definition: net.cpp:423
        +
        void AppendParam(const NetParameter &param, const int layer_id, const int param_id)
        Append a new parameter blob to the net.
        Definition: net.cpp:421
        Definition: net.hpp:231
        -
        void UpdateDebugInfo(const int param_id)
        Helper for displaying debug info in Update.
        Definition: net.cpp:641
        -
        void Reshape()
        Reshape all layers from bottom to top.
        Definition: net.cpp:728
        -
        Dtype ForwardFromTo(int start, int end)
        Definition: net.cpp:518
        +
        void UpdateDebugInfo(const int param_id)
        Helper for displaying debug info in Update.
        Definition: net.cpp:639
        +
        void Reshape()
        Reshape all layers from bottom to top.
        Definition: net.cpp:726
        +
        Dtype ForwardFromTo(int start, int end)
        Definition: net.cpp:516
        const vector< shared_ptr< Layer< Dtype > > > & layers() const
        returns the layers
        Definition: net.hpp:133
        size_t memory_used_
        The bytes of memory used by this net.
        Definition: net.hpp:330
        -
        void Update()
        Updates the network weights based on the diff values computed.
        Definition: net.cpp:910
        +
        void Update()
        Updates the network weights based on the diff values computed.
        Definition: net.cpp:907
        bool debug_info_
        Whether to compute and display debug info for the net.
        Definition: net.hpp:332
        const vector< shared_ptr< Blob< Dtype > > > & blobs() const
        returns the blobs
        Definition: net.hpp:129
        vector< vector< Blob< Dtype > * > > top_vecs_
        top_vecs stores the vectors containing the output for each layer
        Definition: net.hpp:297
        const string & name() const
        returns the network name.
        Definition: net.hpp:123
        -
        void ClearParamDiffs()
        Zeroes out the diffs of all net parameters. Should be run before Backward.
        Definition: net.cpp:917
        -
        void BackwardDebugInfo(const int layer_id)
        Helper for displaying debug info in Backward.
        Definition: net.cpp:614
        -
        void ShareWeights()
        Shares weight data of owner blobs with shared blobs.
        Definition: net.cpp:938
        -
        void Init(const NetParameter &param)
        Initialize a network with a NetParameter.
        Definition: net.cpp:46
        -
        void Backward()
        Definition: net.cpp:709
        +
        void ClearParamDiffs()
        Zeroes out the diffs of all net parameters. Should be run before Backward.
        Definition: net.cpp:914
        +
        void BackwardDebugInfo(const int layer_id)
        Helper for displaying debug info in Backward.
        Definition: net.cpp:612
        +
        void ShareWeights()
        Shares weight data of owner blobs with shared blobs.
        Definition: net.cpp:935
        +
        void Init(const NetParameter &param)
        Initialize a network with a NetParameter.
        Definition: net.cpp:44
        +
        void Backward()
        Definition: net.cpp:707
        const vector< vector< Blob< Dtype > * > > & top_vecs() const
        returns the top vecs for each layer – usually you won&#39;t need this unless you do per-layer checks suc...
        Definition: net.hpp:149
        -
        void ShareTrainedLayersWith(const Net *other)
        For an already initialized net, implicitly copies (i.e., using no additional memory) the pre-trained ...
        Definition: net.cpp:667
        -
        int AppendBottom(const NetParameter &param, const int layer_id, const int bottom_id, set< string > *available_blobs, map< string, int > *blob_name_to_idx)
        Append a new bottom blob to the net.
        Definition: net.cpp:398
        +
        void ShareTrainedLayersWith(const Net *other)
        For an already initialized net, implicitly copies (i.e., using no additional memory) the pre-trained ...
        Definition: net.cpp:665
        +
        int AppendBottom(const NetParameter &param, const int layer_id, const int bottom_id, set< string > *available_blobs, map< string, int > *blob_name_to_idx)
        Append a new bottom blob to the net.
        Definition: net.cpp:396
        const vector< float > & params_weight_decay() const
        returns the learnable parameter decay multipliers
        Definition: net.hpp:184
        vector< float > params_weight_decay_
        the weight decay multipliers for learnable_params_
        Definition: net.hpp:327
        -
        static void FilterNet(const NetParameter &param, NetParameter *param_filtered)
        Remove layers that the user specified should be excluded given the current phase, level...
        Definition: net.cpp:261
        +
        static void FilterNet(const NetParameter &param, NetParameter *param_filtered)
        Remove layers that the user specified should be excluded given the current phase, level...
        Definition: net.cpp:259
        const vector< int > & top_ids(int i) const
        returns the ids of the top blobs of layer i
        Definition: net.hpp:153
        const vector< int > & bottom_ids(int i) const
        returns the ids of the bottom blobs of layer i
        Definition: net.hpp:159
        -
        void ToProto(NetParameter *param, bool write_diff=false) const
        Writes the net to a proto.
        Definition: net.cpp:841
        -
        void ToHDF5(const string &filename, bool write_diff=false) const
        Writes the net to an HDF5 file.
        Definition: net.cpp:853
        +
        void ToProto(NetParameter *param, bool write_diff=false) const
        Writes the net to a proto.
        Definition: net.cpp:838
        +
        void ToHDF5(const string &filename, bool write_diff=false) const
        Writes the net to an HDF5 file.
        Definition: net.cpp:850
        vector< int > learnable_param_ids_
        Definition: net.hpp:322
        vector< shared_ptr< Blob< Dtype > > > params_
        The parameters in the network.
        Definition: net.hpp:313
        Phase phase_
        The phase: TRAIN or TEST.
        Definition: net.hpp:279
        -
        void CopyTrainedLayersFrom(const NetParameter &param)
        For an already initialized net, copies the pre-trained layers from another Net.
        Definition: net.cpp:735
        -
        static bool StateMeetsRule(const NetState &state, const NetStateRule &rule, const string &layer_name)
        return whether NetState state meets NetStateRule rule
        Definition: net.cpp:291
        -
        const vector< Blob< Dtype > * > & Forward(Dtype *loss=NULL)
        Run Forward and return the result.
        Definition: net.cpp:547
        +
        void CopyTrainedLayersFrom(const NetParameter &param)
        For an already initialized net, copies the pre-trained layers from another Net.
        Definition: net.cpp:733
        +
        static bool StateMeetsRule(const NetState &state, const NetStateRule &rule, const string &layer_name)
        return whether NetState state meets NetStateRule rule
        Definition: net.cpp:289
        +
        const vector< Blob< Dtype > * > & Forward(Dtype *loss=NULL)
        Run Forward and return the result.
        Definition: net.cpp:545
        const vector< shared_ptr< Blob< Dtype > > > & params() const
        returns the parameters
        Definition: net.hpp:174
        -
        void ForwardDebugInfo(const int layer_id)
        Helper for displaying debug info in Forward.
        Definition: net.cpp:588
        +
        void ForwardDebugInfo(const int layer_id)
        Helper for displaying debug info in Forward.
        Definition: net.cpp:586
        vector< float > params_lr_
        the learning rate multipliers for learnable_params_
        Definition: net.hpp:324
        vector< int > net_input_blob_indices_
        blob indices for the input and the output of the net
        Definition: net.hpp:308
        const vector< string > & layer_names() const
        returns the layer names
        Definition: net.hpp:125
        @@ -122,9 +122,9 @@
        diff --git a/doxygen/neuron__layer_8hpp_source.html b/doxygen/neuron__layer_8hpp_source.html index 049b16c201c..779b9cabd5e 100644 --- a/doxygen/neuron__layer_8hpp_source.html +++ b/doxygen/neuron__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/neuron_layer.hpp Source File @@ -29,7 +29,7 @@
        - + @@ -76,9 +76,9 @@ diff --git a/doxygen/neuron__layers_8hpp_source.html b/doxygen/neuron__layers_8hpp_source.html deleted file mode 100644 index 0b9c643b660..00000000000 --- a/doxygen/neuron__layers_8hpp_source.html +++ /dev/null @@ -1,569 +0,0 @@ - - - - - - -Caffe: include/caffe/neuron_layers.hpp Source File - - - - - - - - - - -
        -
        - - - - - - -
        -
        Caffe -
        -
        -
        - - - - - - -
        -
        - - -
        - -
        - - -
        -
        -
        -
        neuron_layers.hpp
        -
        -
        -
        1 #ifndef CAFFE_NEURON_LAYERS_HPP_
        -
        2 #define CAFFE_NEURON_LAYERS_HPP_
        -
        3 
        -
        4 #include <string>
        -
        5 #include <utility>
        -
        6 #include <vector>
        -
        7 
        -
        8 #include "caffe/blob.hpp"
        -
        9 #include "caffe/common.hpp"
        -
        10 #include "caffe/layer.hpp"
        -
        11 #include "caffe/proto/caffe.pb.h"
        -
        12 
        -
        13 #define HDF5_DATA_DATASET_NAME "data"
        -
        14 #define HDF5_DATA_LABEL_NAME "label"
        -
        15 
        -
        16 namespace caffe {
        -
        17 
        -
        24 template <typename Dtype>
        -
        25 class NeuronLayer : public Layer<Dtype> {
        -
        26  public:
        -
        27  explicit NeuronLayer(const LayerParameter& param)
        -
        28  : Layer<Dtype>(param) {}
        -
        29  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        -
        30  const vector<Blob<Dtype>*>& top);
        -
        31 
        -
        32  virtual inline int ExactNumBottomBlobs() const { return 1; }
        -
        33  virtual inline int ExactNumTopBlobs() const { return 1; }
        -
        34 };
        -
        35 
        -
        46 template <typename Dtype>
        -
        47 class AbsValLayer : public NeuronLayer<Dtype> {
        -
        48  public:
        -
        49  explicit AbsValLayer(const LayerParameter& param)
        -
        50  : NeuronLayer<Dtype>(param) {}
        -
        51  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        -
        52  const vector<Blob<Dtype>*>& top);
        -
        53 
        -
        54  virtual inline const char* type() const { return "AbsVal"; }
        -
        55  virtual inline int ExactNumBottomBlobs() const { return 1; }
        -
        56  virtual inline int ExactNumTopBlobs() const { return 1; }
        -
        57 
        -
        58  protected:
        -
        60  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        -
        61  const vector<Blob<Dtype>*>& top);
        -
        62  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        63  const vector<Blob<Dtype>*>& top);
        -
        64 
        -
        82  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        -
        83  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        84  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        -
        85  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        86 };
        -
        87 
        -
        105 template <typename Dtype>
        -
        106 class BNLLLayer : public NeuronLayer<Dtype> {
        -
        107  public:
        -
        108  explicit BNLLLayer(const LayerParameter& param)
        -
        109  : NeuronLayer<Dtype>(param) {}
        -
        110 
        -
        111  virtual inline const char* type() const { return "BNLL"; }
        -
        112 
        -
        113  protected:
        -
        115  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        -
        116  const vector<Blob<Dtype>*>& top);
        -
        117  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        118  const vector<Blob<Dtype>*>& top);
        -
        119 
        -
        136  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        -
        137  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        138  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        -
        139  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        140 };
        -
        141 
        -
        153 template <typename Dtype>
        -
        154 class DropoutLayer : public NeuronLayer<Dtype> {
        -
        155  public:
        -
        162  explicit DropoutLayer(const LayerParameter& param)
        -
        163  : NeuronLayer<Dtype>(param) {}
        -
        164  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        -
        165  const vector<Blob<Dtype>*>& top);
        -
        166  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        -
        167  const vector<Blob<Dtype>*>& top);
        -
        168 
        -
        169  virtual inline const char* type() const { return "Dropout"; }
        -
        170 
        -
        171  protected:
        -
        188  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        -
        189  const vector<Blob<Dtype>*>& top);
        -
        190  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        191  const vector<Blob<Dtype>*>& top);
        -
        192  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        -
        193  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        194  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        -
        195  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        196 
        - -
        200  Dtype threshold_;
        -
        202  Dtype scale_;
        -
        203  unsigned int uint_thres_;
        -
        204 };
        -
        205 
        -
        211 template <typename Dtype>
        -
        212 class ExpLayer : public NeuronLayer<Dtype> {
        -
        213  public:
        -
        222  explicit ExpLayer(const LayerParameter& param)
        -
        223  : NeuronLayer<Dtype>(param) {}
        -
        224  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        -
        225  const vector<Blob<Dtype>*>& top);
        -
        226 
        -
        227  virtual inline const char* type() const { return "Exp"; }
        -
        228 
        -
        229  protected:
        -
        240  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        -
        241  const vector<Blob<Dtype>*>& top);
        -
        242  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        243  const vector<Blob<Dtype>*>& top);
        -
        244 
        -
        262  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        -
        263  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        264  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        -
        265  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        266 
        -
        267  Dtype inner_scale_, outer_scale_;
        -
        268 };
        -
        269 
        -
        275 template <typename Dtype>
        -
        276 class LogLayer : public NeuronLayer<Dtype> {
        -
        277  public:
        -
        286  explicit LogLayer(const LayerParameter& param)
        -
        287  : NeuronLayer<Dtype>(param) {}
        -
        288  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        -
        289  const vector<Blob<Dtype>*>& top);
        -
        290 
        -
        291  virtual inline const char* type() const { return "Log"; }
        -
        292 
        -
        293  protected:
        -
        304  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        -
        305  const vector<Blob<Dtype>*>& top);
        -
        306  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        307  const vector<Blob<Dtype>*>& top);
        -
        308 
        -
        326  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        -
        327  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        328  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        -
        329  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        330 
        -
        331  Dtype base_scale_;
        -
        332  Dtype input_scale_, input_shift_;
        -
        333  Dtype backward_num_scale_;
        -
        334 };
        -
        335 
        -
        341 template <typename Dtype>
        -
        342 class PowerLayer : public NeuronLayer<Dtype> {
        -
        343  public:
        -
        351  explicit PowerLayer(const LayerParameter& param)
        -
        352  : NeuronLayer<Dtype>(param) {}
        -
        353  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        -
        354  const vector<Blob<Dtype>*>& top);
        -
        355 
        -
        356  virtual inline const char* type() const { return "Power"; }
        -
        357 
        -
        358  protected:
        -
        369  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        -
        370  const vector<Blob<Dtype>*>& top);
        -
        371  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        372  const vector<Blob<Dtype>*>& top);
        -
        373 
        -
        394  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        -
        395  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        396  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        -
        397  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        398 
        -
        400  Dtype power_;
        -
        402  Dtype scale_;
        -
        404  Dtype shift_;
        -
        406  Dtype diff_scale_;
        -
        407 };
        -
        408 
        -
        413 template <typename Dtype>
        -
        414 class ReLULayer : public NeuronLayer<Dtype> {
        -
        415  public:
        -
        422  explicit ReLULayer(const LayerParameter& param)
        -
        423  : NeuronLayer<Dtype>(param) {}
        -
        424 
        -
        425  virtual inline const char* type() const { return "ReLU"; }
        -
        426 
        -
        427  protected:
        -
        439  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        -
        440  const vector<Blob<Dtype>*>& top);
        -
        441  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        442  const vector<Blob<Dtype>*>& top);
        -
        443 
        -
        472  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        -
        473  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        474  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        -
        475  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        476 };
        -
        477 
        -
        478 #ifdef USE_CUDNN
        -
        479 
        -
        482 template <typename Dtype>
        -
        483 class CuDNNReLULayer : public ReLULayer<Dtype> {
        -
        484  public:
        -
        485  explicit CuDNNReLULayer(const LayerParameter& param)
        -
        486  : ReLULayer<Dtype>(param), handles_setup_(false) {}
        -
        487  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        -
        488  const vector<Blob<Dtype>*>& top);
        -
        489  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        -
        490  const vector<Blob<Dtype>*>& top);
        -
        491  virtual ~CuDNNReLULayer();
        -
        492 
        -
        493  protected:
        -
        494  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        495  const vector<Blob<Dtype>*>& top);
        -
        496  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        -
        497  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        498 
        -
        499  bool handles_setup_;
        -
        500  cudnnHandle_t handle_;
        -
        501  cudnnTensorDescriptor_t bottom_desc_;
        -
        502  cudnnTensorDescriptor_t top_desc_;
        -
        503 };
        -
        504 #endif
        -
        505 
        -
        514 template <typename Dtype>
        -
        515 class SigmoidLayer : public NeuronLayer<Dtype> {
        -
        516  public:
        -
        517  explicit SigmoidLayer(const LayerParameter& param)
        -
        518  : NeuronLayer<Dtype>(param) {}
        -
        519 
        -
        520  virtual inline const char* type() const { return "Sigmoid"; }
        -
        521 
        -
        522  protected:
        -
        533  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        -
        534  const vector<Blob<Dtype>*>& top);
        -
        535  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        536  const vector<Blob<Dtype>*>& top);
        -
        537 
        -
        555  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        -
        556  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        557  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        -
        558  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        559 };
        -
        560 
        -
        561 #ifdef USE_CUDNN
        -
        562 
        -
        565 template <typename Dtype>
        -
        566 class CuDNNSigmoidLayer : public SigmoidLayer<Dtype> {
        -
        567  public:
        -
        568  explicit CuDNNSigmoidLayer(const LayerParameter& param)
        -
        569  : SigmoidLayer<Dtype>(param), handles_setup_(false) {}
        -
        570  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        -
        571  const vector<Blob<Dtype>*>& top);
        -
        572  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        -
        573  const vector<Blob<Dtype>*>& top);
        -
        574  virtual ~CuDNNSigmoidLayer();
        -
        575 
        -
        576  protected:
        -
        577  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        578  const vector<Blob<Dtype>*>& top);
        -
        579  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        -
        580  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        581 
        -
        582  bool handles_setup_;
        -
        583  cudnnHandle_t handle_;
        -
        584  cudnnTensorDescriptor_t bottom_desc_;
        -
        585  cudnnTensorDescriptor_t top_desc_;
        -
        586 };
        -
        587 #endif
        -
        588 
        -
        597 template <typename Dtype>
        -
        598 class TanHLayer : public NeuronLayer<Dtype> {
        -
        599  public:
        -
        600  explicit TanHLayer(const LayerParameter& param)
        -
        601  : NeuronLayer<Dtype>(param) {}
        -
        602 
        -
        603  virtual inline const char* type() const { return "TanH"; }
        -
        604 
        -
        605  protected:
        -
        616  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        -
        617  const vector<Blob<Dtype>*>& top);
        -
        618  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        619  const vector<Blob<Dtype>*>& top);
        -
        620 
        -
        640  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        -
        641  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        642  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        -
        643  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        644 };
        -
        645 
        -
        646 #ifdef USE_CUDNN
        -
        647 
        -
        650 template <typename Dtype>
        -
        651 class CuDNNTanHLayer : public TanHLayer<Dtype> {
        -
        652  public:
        -
        653  explicit CuDNNTanHLayer(const LayerParameter& param)
        -
        654  : TanHLayer<Dtype>(param), handles_setup_(false) {}
        -
        655  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        -
        656  const vector<Blob<Dtype>*>& top);
        -
        657  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        -
        658  const vector<Blob<Dtype>*>& top);
        -
        659  virtual ~CuDNNTanHLayer();
        -
        660 
        -
        661  protected:
        -
        662  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        663  const vector<Blob<Dtype>*>& top);
        -
        664  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        -
        665  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        666 
        -
        667  bool handles_setup_;
        -
        668  cudnnHandle_t handle_;
        -
        669  cudnnTensorDescriptor_t bottom_desc_;
        -
        670  cudnnTensorDescriptor_t top_desc_;
        -
        671 };
        -
        672 #endif
        -
        673 
        -
        678 template <typename Dtype>
        -
        679 class ThresholdLayer : public NeuronLayer<Dtype> {
        -
        680  public:
        -
        687  explicit ThresholdLayer(const LayerParameter& param)
        -
        688  : NeuronLayer<Dtype>(param) {}
        -
        689  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        -
        690  const vector<Blob<Dtype>*>& top);
        -
        691 
        -
        692  virtual inline const char* type() const { return "Threshold"; }
        -
        693 
        -
        694  protected:
        -
        709  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        -
        710  const vector<Blob<Dtype>*>& top);
        -
        711  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        712  const vector<Blob<Dtype>*>& top);
        -
        714  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        -
        715  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {
        -
        716  NOT_IMPLEMENTED;
        -
        717  }
        -
        718 
        -
        719  Dtype threshold_;
        -
        720 };
        -
        721 
        -
        730 template <typename Dtype>
        -
        731 class PReLULayer : public NeuronLayer<Dtype> {
        -
        732  public:
        -
        741  explicit PReLULayer(const LayerParameter& param)
        -
        742  : NeuronLayer<Dtype>(param) {}
        -
        743 
        -
        744  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        -
        745  const vector<Blob<Dtype>*>& top);
        -
        746 
        -
        747  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        -
        748  const vector<Blob<Dtype>*>& top);
        -
        749 
        -
        750  virtual inline const char* type() const { return "PReLU"; }
        -
        751 
        -
        752  protected:
        -
        763  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        -
        764  const vector<Blob<Dtype>*>& top);
        -
        765  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        766  const vector<Blob<Dtype>*>& top);
        -
        767 
        -
        796  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        -
        797  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        798  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        -
        799  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        800 
        -
        801  bool channel_shared_;
        -
        802  Blob<Dtype> multiplier_; // dot multiplier for backward computation of params
        -
        803  Blob<Dtype> backward_buff_; // temporary buffer for backward computation
        -
        804  Blob<Dtype> bottom_memory_; // memory for in-place computation
        -
        805 };
        -
        806 
        -
        807 } // namespace caffe
        -
        808 
        -
        809 #endif // CAFFE_NEURON_LAYERS_HPP_
        -
        Tests whether the input exceeds a threshold: outputs 1 for inputs above threshold; 0 otherwise...
        Definition: neuron_layers.hpp:679
        -
        virtual int ExactNumTopBlobs() const
        Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
        Definition: neuron_layers.hpp:56
        -
        Blob< unsigned int > rand_vec_
        when divided by UINT_MAX, the randomly generated values
        Definition: neuron_layers.hpp:198
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Definition: sigmoid_layer.cpp:16
        -
        ThresholdLayer(const LayerParameter &param)
        Definition: neuron_layers.hpp:687
        -
        virtual int ExactNumBottomBlobs() const
        Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
        Definition: neuron_layers.hpp:32
        -
        virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        -
        An interface for the units of computation which can be composed into a Net.
        Definition: layer.hpp:33
        -
        Dtype scale_
        the scale for undropped inputs at train time
        Definition: neuron_layers.hpp:202
        -
        A layer factory that allows one to register layers. During runtime, registered layers could be called...
        Definition: blob.hpp:15
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Definition: exp_layer.cpp:32
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: neuron_layers.hpp:520
        -
        Sigmoid function non-linearity , a classic choice in neural networks.
        Definition: neuron_layers.hpp:515
        -
        virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Definition: threshold_layer.cpp:17
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Computes the error gradient w.r.t. the BNLL inputs.
        Definition: bnll_layer.cpp:25
        -
        virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Does layer-specific setup: your layer should implement this function as well as Reshape.
        Definition: power_layer.cpp:11
        -
        virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
        -
        virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
        -
        virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
        Definition: neuron_layer.cpp:9
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Definition: tanh_layer.cpp:13
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Computes the error gradient w.r.t. the absolute value inputs.
        Definition: absval_layer.cpp:26
        -
        virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        -
        virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        -
        Computes .
        Definition: neuron_layers.hpp:47
        -
        Computes , as specified by the scale , shift , and base .
        Definition: neuron_layers.hpp:212
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: neuron_layers.hpp:603
        -
        Dtype power_
        from layer_param_.power_param()
        Definition: neuron_layers.hpp:400
        -
        Dtype diff_scale_
        Result of .
        Definition: neuron_layers.hpp:406
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: neuron_layers.hpp:291
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: neuron_layers.hpp:356
        -
        DropoutLayer(const LayerParameter &param)
        Definition: neuron_layers.hpp:162
        -
        virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
        -
        virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Does layer-specific setup: your layer should implement this function as well as Reshape.
        Definition: log_layer.cpp:11
        -
        virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
        Definition: prelu_layer.cpp:54
        -
        Rectified Linear Unit non-linearity . The simple max is fast to compute, and the function does not sa...
        Definition: neuron_layers.hpp:414
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Not implemented (non-differentiable function)
        Definition: neuron_layers.hpp:714
        -
        virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        -
        Computes , as specified by the scale , shift , and power .
        Definition: neuron_layers.hpp:342
        -
        virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
        -
        ReLULayer(const LayerParameter &param)
        Definition: neuron_layers.hpp:422
        -
        virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Does layer-specific setup: your layer should implement this function as well as Reshape.
        Definition: dropout_layer.cpp:14
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Computes the error gradient w.r.t. the sigmoid inputs.
        Definition: sigmoid_layer.cpp:27
        -
        virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        -
        virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Does layer-specific setup: your layer should implement this function as well as Reshape.
        Definition: prelu_layer.cpp:11
        -
        virtual int ExactNumTopBlobs() const
        Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
        Definition: neuron_layers.hpp:33
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: neuron_layers.hpp:750
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Computes the error gradient w.r.t. the ReLU inputs.
        Definition: relu_layer.cpp:23
        -
        Dtype shift_
        from layer_param_.power_param()
        Definition: neuron_layers.hpp:404
        -
        virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Computes the error gradient w.r.t. the power inputs.
        Definition: power_layer.cpp:46
        -
        Computes if ; otherwise.
        Definition: neuron_layers.hpp:106
        -
        Computes , as specified by the scale , shift , and base .
        Definition: neuron_layers.hpp:276
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Definition: dropout_layer.cpp:34
        -
        virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: neuron_layers.hpp:425
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: neuron_layers.hpp:169
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Computes the error gradient w.r.t. the PReLU inputs.
        Definition: prelu_layer.cpp:91
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Computes the error gradient w.r.t. the exp inputs.
        Definition: exp_layer.cpp:49
        -
        An interface for layers that take one blob as input ( ) and produce one equally-sized blob as output ...
        Definition: neuron_layers.hpp:25
        -
        Dtype scale_
        from layer_param_.power_param()
        Definition: neuron_layers.hpp:402
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        Definition: dropout_layer.cpp:52
        -
        virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        -
        Parameterized Rectified Linear Unit non-linearity . The differences from ReLULayer are 1) negative sl...
        Definition: neuron_layers.hpp:731
        -
        virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        -
        PowerLayer(const LayerParameter &param)
        Definition: neuron_layers.hpp:351
        -
        virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
        -
        LogLayer(const LayerParameter &param)
        Definition: neuron_layers.hpp:286
        -
        virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        -
        virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
        -
        virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Does layer-specific setup: your layer should implement this function as well as Reshape.
        Definition: absval_layer.cpp:10
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: neuron_layers.hpp:692
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: neuron_layers.hpp:227
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Definition: prelu_layer.cpp:66
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Computes .
        Definition: absval_layer.cpp:18
        -
        virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Definition: power_layer.cpp:22
        -
        PReLULayer(const LayerParameter &param)
        Definition: neuron_layers.hpp:741
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Definition: relu_layer.cpp:10
        -
        virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Definition: log_layer.cpp:36
        -
        virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
        Definition: dropout_layer.cpp:25
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Computes if ; otherwise.
        Definition: bnll_layer.cpp:12
        -
        virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: neuron_layers.hpp:54
        -
        virtual int ExactNumBottomBlobs() const
        Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
        Definition: neuron_layers.hpp:55
        -
        virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
        -
        ExpLayer(const LayerParameter &param)
        Definition: neuron_layers.hpp:222
        -
        During training only, sets a random portion of to 0, adjusting the rest of the vector magnitude acco...
        Definition: neuron_layers.hpp:154
        -
        virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Does layer-specific setup: your layer should implement this function as well as Reshape.
        Definition: threshold_layer.cpp:10
        -
        Dtype threshold_
        the probability of dropping any input
        Definition: neuron_layers.hpp:200
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Computes the error gradient w.r.t. the sigmoid inputs.
        Definition: tanh_layer.cpp:24
        -
        virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Does layer-specific setup: your layer should implement this function as well as Reshape.
        Definition: exp_layer.cpp:11
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Computes the error gradient w.r.t. the exp inputs.
        Definition: log_layer.cpp:59
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: neuron_layers.hpp:111
        -
        TanH hyperbolic tangent non-linearity , popular in auto-encoders.
        Definition: neuron_layers.hpp:598
        -
        A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
        Definition: blob.hpp:25
        -
        - - - - diff --git a/doxygen/parallel_8hpp_source.html b/doxygen/parallel_8hpp_source.html index 0e041d6d90e..68aee43618c 100644 --- a/doxygen/parallel_8hpp_source.html +++ b/doxygen/parallel_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/parallel.hpp Source File @@ -29,7 +29,7 @@ - + @@ -70,9 +70,9 @@ diff --git a/doxygen/parameter__layer_8hpp_source.html b/doxygen/parameter__layer_8hpp_source.html index 83b730bc231..95f74a5e0a5 100644 --- a/doxygen/parameter__layer_8hpp_source.html +++ b/doxygen/parameter__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/parameter_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -82,9 +82,9 @@ diff --git a/doxygen/pooling__layer_8hpp_source.html b/doxygen/pooling__layer_8hpp_source.html index d1b0c052fa9..d67e3b92447 100644 --- a/doxygen/pooling__layer_8hpp_source.html +++ b/doxygen/pooling__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/pooling_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -84,9 +84,9 @@ diff --git a/doxygen/power__layer_8hpp_source.html b/doxygen/power__layer_8hpp_source.html index 115362888d6..ddbd8619324 100644 --- a/doxygen/power__layer_8hpp_source.html +++ b/doxygen/power__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/power_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -84,9 +84,9 @@ diff --git a/doxygen/prelu__layer_8hpp_source.html b/doxygen/prelu__layer_8hpp_source.html index 59635da6b46..68726aca5e3 100644 --- a/doxygen/prelu__layer_8hpp_source.html +++ b/doxygen/prelu__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/prelu_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -81,9 +81,9 @@ diff --git a/doxygen/python__layer_8hpp_source.html b/doxygen/python__layer_8hpp_source.html index 7d3e211bf24..8305aae70b7 100644 --- a/doxygen/python__layer_8hpp_source.html +++ b/doxygen/python__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/python_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -66,23 +66,23 @@
        python_layer.hpp
        -
        1 #ifndef CAFFE_PYTHON_LAYER_HPP_
        2 #define CAFFE_PYTHON_LAYER_HPP_
        3 
        4 #include <boost/python.hpp>
        5 #include <vector>
        6 
        7 #include "caffe/layer.hpp"
        8 
        9 namespace bp = boost::python;
        10 
        11 namespace caffe {
        12 
        13 template <typename Dtype>
        14 class PythonLayer : public Layer<Dtype> {
        15  public:
        16  PythonLayer(PyObject* self, const LayerParameter& param)
        17  : Layer<Dtype>(param), self_(bp::handle<>(bp::borrowed(self))) { }
        18 
        19  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        20  const vector<Blob<Dtype>*>& top) {
        21  // Disallow PythonLayer in MultiGPU training stage, due to GIL issues
        22  // Details: https://github.com/BVLC/caffe/issues/2936
        23  if (this->phase_ == TRAIN && Caffe::solver_count() > 1
        24  && !Caffe::multiprocess()) {
        25  LOG(FATAL) << "PythonLayer does not support CLI Multi-GPU, use train.py";
        26  }
        27  self_.attr("param_str") = bp::str(
        28  this->layer_param_.python_param().param_str());
        29  self_.attr("phase") = static_cast<int>(this->phase_);
        30  self_.attr("setup")(bottom, top);
        31  }
        32  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        33  const vector<Blob<Dtype>*>& top) {
        34  self_.attr("reshape")(bottom, top);
        35  }
        36 
        37  virtual inline bool ShareInParallel() const {
        38  return this->layer_param_.python_param().share_in_parallel();
        39  }
        40 
        41  virtual inline const char* type() const { return "Python"; }
        42 
        43  protected:
        44  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        45  const vector<Blob<Dtype>*>& top) {
        46  self_.attr("forward")(bottom, top);
        47  }
        48  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        49  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {
        50  self_.attr("backward")(top, propagate_down, bottom);
        51  }
        52 
        53  private:
        54  bp::object self_;
        55 };
        56 
        57 } // namespace caffe
        58 
        59 #endif
        An interface for the units of computation which can be composed into a Net.
        Definition: layer.hpp:33
        +
        1 #ifndef CAFFE_PYTHON_LAYER_HPP_
        2 #define CAFFE_PYTHON_LAYER_HPP_
        3 
        4 #include <boost/python.hpp>
        5 #include <vector>
        6 
        7 #include "caffe/layer.hpp"
        8 
        9 namespace bp = boost::python;
        10 
        11 namespace caffe {
        12 
        13 template <typename Dtype>
        14 class PythonLayer : public Layer<Dtype> {
        15  public:
        16  PythonLayer(PyObject* self, const LayerParameter& param)
        17  : Layer<Dtype>(param), self_(bp::handle<>(bp::borrowed(self))) { }
        18 
        19  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        20  const vector<Blob<Dtype>*>& top) {
        21  // Disallow PythonLayer in MultiGPU training stage, due to GIL issues
        22  // Details: https://github.com/BVLC/caffe/issues/2936
        23  if (this->phase_ == TRAIN && Caffe::solver_count() > 1
        24  && !Caffe::multiprocess()) {
        25  LOG(FATAL) << "PythonLayer does not support CLI Multi-GPU, use train.py";
        26  }
        27  self_.attr("param_str") = bp::str(
        28  this->layer_param_.python_param().param_str());
        29  self_.attr("phase") = static_cast<int>(this->phase_);
        30  self_.attr("setup")(bottom, top);
        31  }
        32  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        33  const vector<Blob<Dtype>*>& top) {
        34  self_.attr("reshape")(bottom, top);
        35  }
        36 
        37  virtual inline const char* type() const { return "Python"; }
        38 
        39  protected:
        40  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        41  const vector<Blob<Dtype>*>& top) {
        42  self_.attr("forward")(bottom, top);
        43  }
        44  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        45  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom) {
        46  self_.attr("backward")(top, propagate_down, bottom);
        47  }
        48 
        49  private:
        50  bp::object self_;
        51 };
        52 
        53 } // namespace caffe
        54 
        55 #endif
        An interface for the units of computation which can be composed into a Net.
        Definition: layer.hpp:33
        A layer factory that allows one to register layers. During runtime, registered layers can be called b...
        Definition: blob.hpp:14
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
        Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        Definition: python_layer.hpp:48
        +
        virtual void Backward_cpu(const vector< Blob< Dtype > *> &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > *> &bottom)
        Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        Definition: python_layer.hpp:44
        virtual void LayerSetUp(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        Does layer-specific setup: your layer should implement this function as well as Reshape.
        Definition: python_layer.hpp:19
        Definition: python_layer.hpp:14
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        Using the CPU device, compute the layer output.
        Definition: python_layer.hpp:44
        +
        virtual void Forward_cpu(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        Using the CPU device, compute the layer output.
        Definition: python_layer.hpp:40
        Phase phase_
        Definition: layer.hpp:299
        LayerParameter layer_param_
        Definition: layer.hpp:297
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: python_layer.hpp:41
        +
        virtual const char * type() const
        Returns the layer type.
        Definition: python_layer.hpp:37
        virtual void Reshape(const vector< Blob< Dtype > *> &bottom, const vector< Blob< Dtype > *> &top)
        Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
        Definition: python_layer.hpp:32
        A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
        Definition: blob.hpp:24
        diff --git a/doxygen/recurrent__layer_8hpp_source.html b/doxygen/recurrent__layer_8hpp_source.html index b60f52c1b87..54ad5fb2b79 100644 --- a/doxygen/recurrent__layer_8hpp_source.html +++ b/doxygen/recurrent__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/recurrent_layer.hpp Source File @@ -29,7 +29,7 @@
        - + @@ -94,9 +94,9 @@ diff --git a/doxygen/reduction__layer_8hpp_source.html b/doxygen/reduction__layer_8hpp_source.html index ab0ce85c2fb..3b63332a010 100644 --- a/doxygen/reduction__layer_8hpp_source.html +++ b/doxygen/reduction__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/reduction_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -88,9 +88,9 @@ diff --git a/doxygen/relu__layer_8hpp_source.html b/doxygen/relu__layer_8hpp_source.html index 4e606ab4270..60e9378dd81 100644 --- a/doxygen/relu__layer_8hpp_source.html +++ b/doxygen/relu__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/relu_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -79,9 +79,9 @@ diff --git a/doxygen/reshape__layer_8hpp_source.html b/doxygen/reshape__layer_8hpp_source.html index 1e1eb615cae..d88033b990f 100644 --- a/doxygen/reshape__layer_8hpp_source.html +++ b/doxygen/reshape__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/reshape_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -85,9 +85,9 @@ diff --git a/doxygen/rng_8hpp_source.html b/doxygen/rng_8hpp_source.html index 846158680a0..d147b87a7a4 100644 --- a/doxygen/rng_8hpp_source.html +++ b/doxygen/rng_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/util/rng.hpp Source File @@ -29,7 +29,7 @@ - + @@ -70,9 +70,9 @@ diff --git a/doxygen/rnn__layer_8hpp_source.html b/doxygen/rnn__layer_8hpp_source.html index 38e71fdfdad..cc59145d3fd 100644 --- a/doxygen/rnn__layer_8hpp_source.html +++ b/doxygen/rnn__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/rnn_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -78,9 +78,9 @@ diff --git a/doxygen/scale__layer_8hpp_source.html b/doxygen/scale__layer_8hpp_source.html index 39573039962..e75af72b7e0 100644 --- a/doxygen/scale__layer_8hpp_source.html +++ b/doxygen/scale__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/scale_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -83,9 +83,9 @@ diff --git a/doxygen/search/all_0.html b/doxygen/search/all_0.html index 43594633a43..f25360b71b0 100644 --- a/doxygen/search/all_0.html +++ b/doxygen/search/all_0.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/all_0.js b/doxygen/search/all_0.js index 9283c90fbba..81c8b42c520 100644 --- a/doxygen/search/all_0.js +++ b/doxygen/search/all_0.js @@ -1,8 +1,7 @@ var searchData= [ ['absvallayer',['AbsValLayer',['../classcaffe_1_1AbsValLayer.html',1,'caffe']]], - ['accuracylayer',['AccuracyLayer',['../classcaffe_1_1AccuracyLayer.html',1,'caffe']]], - ['accuracylayer',['AccuracyLayer',['../classcaffe_1_1AccuracyLayer.html#a362ab61d1961c1b408f84a956f6e598d',1,'caffe::AccuracyLayer']]], + ['accuracylayer',['AccuracyLayer',['../classcaffe_1_1AccuracyLayer.html',1,'caffe::AccuracyLayer< Dtype >'],['../classcaffe_1_1AccuracyLayer.html#a362ab61d1961c1b408f84a956f6e598d',1,'caffe::AccuracyLayer::AccuracyLayer()']]], ['actioncallback',['ActionCallback',['../namespacecaffe.html#a79ce9ffbdd44b367252e0b8cf99bf430',1,'caffe']]], ['adadeltasolver',['AdaDeltaSolver',['../classcaffe_1_1AdaDeltaSolver.html',1,'caffe']]], ['adagradsolver',['AdaGradSolver',['../classcaffe_1_1AdaGradSolver.html',1,'caffe']]], @@ -11,8 +10,7 @@ var searchData= ['appendbottom',['AppendBottom',['../classcaffe_1_1Net.html#a6ef3482f4e882e437c81affa77d91f32',1,'caffe::Net']]], ['appendparam',['AppendParam',['../classcaffe_1_1Net.html#a1fce7e829c10750543f3a79819d49393',1,'caffe::Net']]], ['appendtop',['AppendTop',['../classcaffe_1_1Net.html#a3aab736bc72b29c84dc3ee765ee453c4',1,'caffe::Net']]], - ['argmaxlayer',['ArgMaxLayer',['../classcaffe_1_1ArgMaxLayer.html',1,'caffe']]], - ['argmaxlayer',['ArgMaxLayer',['../classcaffe_1_1ArgMaxLayer.html#a77429601f3d7f27b48720a1b703491be',1,'caffe::ArgMaxLayer']]], + ['argmaxlayer',['ArgMaxLayer',['../classcaffe_1_1ArgMaxLayer.html',1,'caffe::ArgMaxLayer< Dtype >'],['../classcaffe_1_1ArgMaxLayer.html#a77429601f3d7f27b48720a1b703491be',1,'caffe::ArgMaxLayer::ArgMaxLayer()']]], ['asum_5fdata',['asum_data',['../classcaffe_1_1Blob.html#aa06094adb9337a7d67f7049a1f2ede54',1,'caffe::Blob']]], ['asum_5fdiff',['asum_diff',['../classcaffe_1_1Blob.html#a1bf366edeb71ae6a76d4177fef3879ec',1,'caffe::Blob']]], ['autotopblobs',['AutoTopBlobs',['../classcaffe_1_1Layer.html#a50130669e230a168d1f8fbbb8171f054',1,'caffe::Layer::AutoTopBlobs()'],['../classcaffe_1_1LossLayer.html#ae98a9942cdb1c67e09d45cc2d876618e',1,'caffe::LossLayer::AutoTopBlobs()']]], diff --git a/doxygen/search/all_1.html b/doxygen/search/all_1.html index bc87ea8cf21..b13f0f7f385 100644 --- a/doxygen/search/all_1.html +++ b/doxygen/search/all_1.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/all_1.js b/doxygen/search/all_1.js index 94dbb415ce8..3da23d70407 100644 --- a/doxygen/search/all_1.js +++ b/doxygen/search/all_1.js @@ -12,8 +12,7 @@ var searchData= ['batchreindexlayer',['BatchReindexLayer',['../classcaffe_1_1BatchReindexLayer.html',1,'caffe']]], ['biaslayer',['BiasLayer',['../classcaffe_1_1BiasLayer.html',1,'caffe']]], ['bilinearfiller',['BilinearFiller',['../classcaffe_1_1BilinearFiller.html',1,'caffe']]], - ['blob',['Blob',['../classcaffe_1_1Blob.html',1,'caffe']]], - ['blob',['Blob',['../classcaffe_1_1Blob.html#a379df830aad9b3cae253e1ddb0863844',1,'caffe::Blob']]], + ['blob',['Blob',['../classcaffe_1_1Blob.html',1,'caffe::Blob< Dtype >'],['../classcaffe_1_1Blob.html#a379df830aad9b3cae253e1ddb0863844',1,'caffe::Blob::Blob()']]], ['blob_3c_20int_20_3e',['Blob< int >',['../classcaffe_1_1Blob.html',1,'caffe']]], ['blob_3c_20unsigned_20int_20_3e',['Blob< unsigned int >',['../classcaffe_1_1Blob.html',1,'caffe']]], ['blob_5floss_5fweights_5f',['blob_loss_weights_',['../classcaffe_1_1Net.html#a3eef6ff47640210c6d8d6affb1fd86f8',1,'caffe::Net']]], diff --git a/doxygen/search/all_10.html b/doxygen/search/all_10.html index 16ffd9a0c0d..d1345a1f0dc 100644 --- a/doxygen/search/all_10.html +++ b/doxygen/search/all_10.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/all_10.js b/doxygen/search/all_10.js index 4c114266319..9e3b14115a7 100644 --- a/doxygen/search/all_10.js +++ b/doxygen/search/all_10.js @@ -24,12 +24,11 @@ var searchData= ['signalhandler',['SignalHandler',['../classcaffe_1_1SignalHandler.html',1,'caffe']]], ['silencelayer',['SilenceLayer',['../classcaffe_1_1SilenceLayer.html',1,'caffe']]], ['slicelayer',['SliceLayer',['../classcaffe_1_1SliceLayer.html',1,'caffe']]], - ['softmax_5fbottom_5fvec_5f',['softmax_bottom_vec_',['../classcaffe_1_1SoftmaxWithLossLayer.html#aa39f89b673da5e6f86c6b1f79ced1270',1,'caffe::SoftmaxWithLossLayer']]], - ['softmax_5flayer_5f',['softmax_layer_',['../classcaffe_1_1SoftmaxWithLossLayer.html#a886b9e8c044917b03e7d2d04e713a05b',1,'caffe::SoftmaxWithLossLayer']]], - ['softmax_5ftop_5fvec_5f',['softmax_top_vec_',['../classcaffe_1_1SoftmaxWithLossLayer.html#a0fd219e185b46acce8fd74cb71dabf44',1,'caffe::SoftmaxWithLossLayer']]], + ['softmax_5fbottom_5fvec_5f',['softmax_bottom_vec_',['../classcaffe_1_1InfogainLossLayer.html#ad919452e3fbb182cf56ded1e32ee001d',1,'caffe::InfogainLossLayer::softmax_bottom_vec_()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#aa39f89b673da5e6f86c6b1f79ced1270',1,'caffe::SoftmaxWithLossLayer::softmax_bottom_vec_()']]], + ['softmax_5flayer_5f',['softmax_layer_',['../classcaffe_1_1InfogainLossLayer.html#a1992ffcac64ab6d61ebce80c7d9e8405',1,'caffe::InfogainLossLayer::softmax_layer_()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a886b9e8c044917b03e7d2d04e713a05b',1,'caffe::SoftmaxWithLossLayer::softmax_layer_()']]], + ['softmax_5ftop_5fvec_5f',['softmax_top_vec_',['../classcaffe_1_1InfogainLossLayer.html#abce0ff34e57ed3660e39633535c97e41',1,'caffe::InfogainLossLayer::softmax_top_vec_()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a0fd219e185b46acce8fd74cb71dabf44',1,'caffe::SoftmaxWithLossLayer::softmax_top_vec_()']]], ['softmaxlayer',['SoftmaxLayer',['../classcaffe_1_1SoftmaxLayer.html',1,'caffe']]], - ['softmaxwithlosslayer',['SoftmaxWithLossLayer',['../classcaffe_1_1SoftmaxWithLossLayer.html',1,'caffe']]], - ['softmaxwithlosslayer',['SoftmaxWithLossLayer',['../classcaffe_1_1SoftmaxWithLossLayer.html#ac3a01d6846a9b62c1790635d53185e81',1,'caffe::SoftmaxWithLossLayer']]], + ['softmaxwithlosslayer',['SoftmaxWithLossLayer',['../classcaffe_1_1SoftmaxWithLossLayer.html',1,'caffe::SoftmaxWithLossLayer< Dtype >'],['../classcaffe_1_1SoftmaxWithLossLayer.html#ac3a01d6846a9b62c1790635d53185e81',1,'caffe::SoftmaxWithLossLayer::SoftmaxWithLossLayer()']]], ['solver',['Solver',['../classcaffe_1_1Solver.html',1,'caffe']]], ['solverregisterer',['SolverRegisterer',['../classcaffe_1_1SolverRegisterer.html',1,'caffe']]], ['solverregistry',['SolverRegistry',['../classcaffe_1_1SolverRegistry.html',1,'caffe']]], @@ -43,6 +42,7 @@ var searchData= ['stopinternalthread',['StopInternalThread',['../classcaffe_1_1InternalThread.html#ac72d8e2a23dbbe5203d5003dd67af73e',1,'caffe::InternalThread']]], ['stride_5f',['stride_',['../classcaffe_1_1BaseConvolutionLayer.html#af638d3d8e67c33443cb11cb000368e73',1,'caffe::BaseConvolutionLayer::stride_()'],['../classcaffe_1_1Im2colLayer.html#afb9baa8216b65a8124d4d1d2b719da0f',1,'caffe::Im2colLayer::stride_()']]], ['sum_5fmultiplier_5f',['sum_multiplier_',['../classcaffe_1_1MVNLayer.html#ade50bbee48a55e637e8c3e3f44f9618a',1,'caffe::MVNLayer::sum_multiplier_()'],['../classcaffe_1_1ReductionLayer.html#a141288e2904ab45831a6af704561b473',1,'caffe::ReductionLayer::sum_multiplier_()'],['../classcaffe_1_1SoftmaxLayer.html#a3bfc4000b464ab32c73060a2d5c4e426',1,'caffe::SoftmaxLayer::sum_multiplier_()']]], + ['sum_5frows_5fof_5fh',['sum_rows_of_H',['../classcaffe_1_1InfogainLossLayer.html#a030296e6af30acd17a3cfe4463456147',1,'caffe::InfogainLossLayer']]], ['sumsq_5fdata',['sumsq_data',['../classcaffe_1_1Blob.html#a2ea640466fc339a02dabba4e8a1f0de2',1,'caffe::Blob']]], ['sumsq_5fdiff',['sumsq_diff',['../classcaffe_1_1Blob.html#a2df1894f11323235f9d7c7a1f0fe010f',1,'caffe::Blob']]], ['sync',['sync',['../classcaffe_1_1BlockingQueue_1_1sync.html',1,'caffe::BlockingQueue']]], diff --git a/doxygen/search/all_11.html b/doxygen/search/all_11.html index d689820da3c..2be8b711111 100644 --- a/doxygen/search/all_11.html +++ b/doxygen/search/all_11.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/all_11.js b/doxygen/search/all_11.js index 11a15ca96ff..38a082a5bff 100644 --- a/doxygen/search/all_11.js +++ b/doxygen/search/all_11.js @@ -3,8 +3,7 @@ var searchData= ['t_5f',['T_',['../classcaffe_1_1RecurrentLayer.html#a02f79bca0ccde7543ecf172b328c860f',1,'caffe::RecurrentLayer']]], ['tanhlayer',['TanHLayer',['../classcaffe_1_1TanHLayer.html',1,'caffe']]], ['threshold_5f',['threshold_',['../classcaffe_1_1DropoutLayer.html#a8e9d88e6128a97101c27ce8a11158ca6',1,'caffe::DropoutLayer']]], - ['thresholdlayer',['ThresholdLayer',['../classcaffe_1_1ThresholdLayer.html',1,'caffe']]], - ['thresholdlayer',['ThresholdLayer',['../classcaffe_1_1ThresholdLayer.html#a18883bf3cb9c29828acd59b8216ba1de',1,'caffe::ThresholdLayer']]], + ['thresholdlayer',['ThresholdLayer',['../classcaffe_1_1ThresholdLayer.html',1,'caffe::ThresholdLayer< Dtype >'],['../classcaffe_1_1ThresholdLayer.html#a18883bf3cb9c29828acd59b8216ba1de',1,'caffe::ThresholdLayer::ThresholdLayer()']]], ['tilelayer',['TileLayer',['../classcaffe_1_1TileLayer.html',1,'caffe']]], ['timer',['Timer',['../classcaffe_1_1Timer.html',1,'caffe']]], ['tohdf5',['ToHDF5',['../classcaffe_1_1Net.html#ad3ac317bbc872bc6ed48d19f4d986ecc',1,'caffe::Net']]], diff --git a/doxygen/search/all_12.html b/doxygen/search/all_12.html index 698e2c5b634..13c526372b9 100644 --- a/doxygen/search/all_12.html +++ b/doxygen/search/all_12.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/all_13.html b/doxygen/search/all_13.html index 516a9b63456..b4a8bca69e4 100644 --- a/doxygen/search/all_13.html +++ b/doxygen/search/all_13.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/all_14.html b/doxygen/search/all_14.html index 6f35c2831f4..fb4d0ecc7bd 100644 --- a/doxygen/search/all_14.html +++ b/doxygen/search/all_14.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/all_15.html b/doxygen/search/all_15.html deleted file mode 100644 index 05b90eafe96..00000000000 --- a/doxygen/search/all_15.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
        -
        Loading...
        -
        - -
        Searching...
        -
        No Matches
        - -
        - - diff --git a/doxygen/search/all_15.js b/doxygen/search/all_15.js deleted file mode 100644 index c34a910afad..00000000000 --- a/doxygen/search/all_15.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['xavierfiller',['XavierFiller',['../classcaffe_1_1XavierFiller.html',1,'caffe']]] -]; diff --git a/doxygen/search/all_2.html b/doxygen/search/all_2.html index 0f777c2993c..9543c57b1d2 100644 --- a/doxygen/search/all_2.html +++ b/doxygen/search/all_2.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/all_2.js b/doxygen/search/all_2.js index d51b2a4510a..b3012e65fa3 100644 --- a/doxygen/search/all_2.js +++ b/doxygen/search/all_2.js @@ -1,9 +1,7 @@ var searchData= [ - ['caffe',['Caffe',['../classcaffe_1_1Caffe.html',1,'caffe']]], - ['caffe',['caffe',['../namespacecaffe.html',1,'']]], - ['callback',['Callback',['../classcaffe_1_1Net_1_1Callback.html',1,'caffe::Net']]], - ['callback',['Callback',['../classcaffe_1_1Solver_1_1Callback.html',1,'caffe::Solver']]], + ['caffe',['Caffe',['../classcaffe_1_1Caffe.html',1,'caffe::Caffe'],['../namespacecaffe.html',1,'caffe']]], + ['callback',['Callback',['../classcaffe_1_1Net_1_1Callback.html',1,'caffe::Net< Dtype >::Callback'],['../classcaffe_1_1Solver_1_1Callback.html',1,'caffe::Solver< Dtype >::Callback']]], ['canonicalaxisindex',['CanonicalAxisIndex',['../classcaffe_1_1Blob.html#ad686f5ed9994046f2c741bfa81118509',1,'caffe::Blob']]], ['channels',['channels',['../classcaffe_1_1Blob.html#ae48c8e9f0a0b66b041e47bf37ed04471',1,'caffe::Blob']]], ['checkblobcounts',['CheckBlobCounts',['../classcaffe_1_1Layer.html#a55c8036130225fbc874a986bdf4b27e2',1,'caffe::Layer']]], @@ -17,8 +15,7 @@ var searchData= ['constantfiller',['ConstantFiller',['../classcaffe_1_1ConstantFiller.html',1,'caffe']]], ['contrastivelosslayer',['ContrastiveLossLayer',['../classcaffe_1_1ContrastiveLossLayer.html',1,'caffe']]], ['conv_5finput_5fshape_5f',['conv_input_shape_',['../classcaffe_1_1BaseConvolutionLayer.html#a63756d6ef00f6491939e539094c21397',1,'caffe::BaseConvolutionLayer']]], - ['convolutionlayer',['ConvolutionLayer',['../classcaffe_1_1ConvolutionLayer.html',1,'caffe']]], - ['convolutionlayer',['ConvolutionLayer',['../classcaffe_1_1ConvolutionLayer.html#ad27360afd7729001b9e4f1d8c8401866',1,'caffe::ConvolutionLayer']]], + ['convolutionlayer',['ConvolutionLayer',['../classcaffe_1_1ConvolutionLayer.html',1,'caffe::ConvolutionLayer< Dtype >'],['../classcaffe_1_1ConvolutionLayer.html#ad27360afd7729001b9e4f1d8c8401866',1,'caffe::ConvolutionLayer::ConvolutionLayer()']]], ['copy_5faxes_5f',['copy_axes_',['../classcaffe_1_1ReshapeLayer.html#ace08e8747c8d4562fbc26ca789681a4a',1,'caffe::ReshapeLayer']]], ['copyfrom',['CopyFrom',['../classcaffe_1_1Blob.html#a64ad51f99e88233f43a21a85ebe10284',1,'caffe::Blob']]], ['copytrainedlayersfrom',['CopyTrainedLayersFrom',['../classcaffe_1_1Net.html#a4ac2b69748470f54d530bc5dfa05b9c3',1,'caffe::Net']]], diff --git a/doxygen/search/all_3.html b/doxygen/search/all_3.html index ac9dbf9fe87..03405c0fb22 100644 --- a/doxygen/search/all_3.html +++ b/doxygen/search/all_3.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/all_3.js b/doxygen/search/all_3.js index a68dd5837fd..2bd50d1973f 100644 --- a/doxygen/search/all_3.js +++ b/doxygen/search/all_3.js @@ -8,7 +8,6 @@ var searchData= ['diff_5fscale_5f',['diff_scale_',['../classcaffe_1_1PowerLayer.html#aa83169eaa1b573137aa6ed2b526879f0',1,'caffe::PowerLayer']]], ['dilation_5f',['dilation_',['../classcaffe_1_1BaseConvolutionLayer.html#a91f929109b5c05ba6086d4c2a741ad4a',1,'caffe::BaseConvolutionLayer::dilation_()'],['../classcaffe_1_1Im2colLayer.html#a3420f6068a4befb3b0ed1ffe5ff0e84c',1,'caffe::Im2colLayer::dilation_()']]], ['dim_5f',['dim_',['../classcaffe_1_1ReductionLayer.html#a5d0cdd8ca00e6bbd425a51bef2214a7e',1,'caffe::ReductionLayer']]], - ['dropoutlayer',['DropoutLayer',['../classcaffe_1_1DropoutLayer.html#a24cbddd4699b102a9555d3b8013c16d0',1,'caffe::DropoutLayer']]], - ['dropoutlayer',['DropoutLayer',['../classcaffe_1_1DropoutLayer.html',1,'caffe']]], + ['dropoutlayer',['DropoutLayer',['../classcaffe_1_1DropoutLayer.html',1,'caffe::DropoutLayer< Dtype >'],['../classcaffe_1_1DropoutLayer.html#a24cbddd4699b102a9555d3b8013c16d0',1,'caffe::DropoutLayer::DropoutLayer()']]], ['dummydatalayer',['DummyDataLayer',['../classcaffe_1_1DummyDataLayer.html',1,'caffe']]] ]; diff --git a/doxygen/search/all_4.html b/doxygen/search/all_4.html index 8308168cd29..8e1f4b9cd9d 100644 --- a/doxygen/search/all_4.html +++ b/doxygen/search/all_4.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/all_4.js b/doxygen/search/all_4.js index 200292d267b..078b3487d82 100644 --- a/doxygen/search/all_4.js +++ b/doxygen/search/all_4.js @@ -1,14 +1,12 @@ var searchData= [ ['eltwiselayer',['EltwiseLayer',['../classcaffe_1_1EltwiseLayer.html',1,'caffe']]], - ['elulayer',['ELULayer',['../classcaffe_1_1ELULayer.html',1,'caffe']]], - ['elulayer',['ELULayer',['../classcaffe_1_1ELULayer.html#af0b475c3d3b68f6daf7e2edcb7d5b97a',1,'caffe::ELULayer']]], + ['elulayer',['ELULayer',['../classcaffe_1_1ELULayer.html',1,'caffe::ELULayer< Dtype >'],['../classcaffe_1_1ELULayer.html#af0b475c3d3b68f6daf7e2edcb7d5b97a',1,'caffe::ELULayer::ELULayer()']]], ['embedlayer',['EmbedLayer',['../classcaffe_1_1EmbedLayer.html',1,'caffe']]], ['equalnumbottomtopblobs',['EqualNumBottomTopBlobs',['../classcaffe_1_1Layer.html#af452a938bc7596f9b5e9900c8dc4ab3d',1,'caffe::Layer::EqualNumBottomTopBlobs()'],['../classcaffe_1_1BaseConvolutionLayer.html#ad8e839460bf52abe3df2008b99a1810d',1,'caffe::BaseConvolutionLayer::EqualNumBottomTopBlobs()']]], ['euclideanlosslayer',['EuclideanLossLayer',['../classcaffe_1_1EuclideanLossLayer.html',1,'caffe']]], ['exactnumbottomblobs',['ExactNumBottomBlobs',['../classcaffe_1_1Layer.html#a8e5ee0494d85f5f55fc4396537cbc60f',1,'caffe::Layer::ExactNumBottomBlobs()'],['../classcaffe_1_1AbsValLayer.html#acac806dbc6d3fa3dd7daae00caabd731',1,'caffe::AbsValLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1AccuracyLayer.html#afb0d3db8e4a18bec0e05d54d11453ef1',1,'caffe::AccuracyLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1ArgMaxLayer.html#a786fb4163cd0a31a564100ce7e4b74b2',1,'caffe::ArgMaxLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1BatchNormLayer.html#a5b87980f25eea544ebff916586c870e6',1,'caffe::BatchNormLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1BatchReindexLayer.html#a4120d2fd610655c7ad3d846637564bc6',1,'caffe::BatchReindexLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1ContrastiveLossLayer.html#aa6f3ad6918e64ffa1828e821accf25e9',1,'caffe::ContrastiveLossLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1CropLayer.html#ac6386917437ef54003bb7f8c2618f5fe',1,'caffe::CropLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1DataLayer.html#a2b6fa99ededf0863d8bab4a7a46addae',1,'caffe::DataLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1DummyDataLayer.html#a73101a8ace6de2b179e36c13be17cb17',1,'caffe::DummyDataLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1EmbedLayer.html#a0634500a12e1d2299b7c8556976e4529',1,'caffe::EmbedLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1FlattenLayer.html#a0b0f583d8952d7cd45cbf4bae2a38548',1,'caffe::FlattenLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1HDF5DataLayer.html#a4eb72974cea32c84acb6b8012a0d326b',1,'caffe::HDF5DataLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1HDF5OutputLayer.html#a92fb5561414d7e8b8845b0279b1ee847',1,'caffe::HDF5OutputLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1Im2colLayer.html#a35772d667af49afe707c7b1db881c573',1,'caffe::Im2colLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1ImageDataLayer.html#a6776c86faf14e35ae7be9848c7012aa5',1,'caffe::ImageDataLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1InfogainLossLayer.html#aa03732f381764180748479c83b289869',1,'caffe::InfogainLossLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1InnerProductLayer.html#a5afdeb6b448b2f7d0637afa554381500',1,'caffe::InnerProductLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1InputLayer.html#ac4c1f2f0444a103727d793a6ae410e67',1,'caffe::InputLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1LossLayer.html#af1620064baefb711e2c767bdc92b6fb1',1,'caffe::LossLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1LRNLayer.html#a32be44f9f361d29f05261bd174d92321',1,'caffe::LRNLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1LSTMUnitLayer.html#a087f5f5b0e6c50d98e7a7d04aa35f1b9',1,'caffe::LSTMUnitLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1MemoryDataLayer.html#a05a867526de7e0c6ec4851a97f52a47b',1,'caffe::MemoryDataLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1MVNLayer.html#afd9b078a1bb48de9b91f3766edbbf058',1,'caffe::MVNLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1NeuronLayer.html#abb6c0e6acd2863baf47d6e6acda6f55f',1,'caffe::NeuronLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1ParameterLayer.html#a0acd33d14dd208c5a439940c50c6d3d3',1,'caffe::ParameterLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1PoolingLayer.html#a07dc8b1c3bfa3a997dd86b4e53f54019',1,'caffe::PoolingLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1ReductionLayer.html#a64694af2e56723590072cac88bf825c7',1,'caffe::ReductionLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1ReshapeLayer.html#ad97ea6043b01351e85b39b512ae0e489',1,'caffe::ReshapeLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1SliceLayer.html#abfc6e86b0b22c156ddc350168cd7757b',1,'caffe::SliceLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1SoftmaxLayer.html#afe44488dde78e6bcf6d4bdad97ee4986',1,'caffe::SoftmaxLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1SplitLayer.html#a8ff310ac37e1e79ce6ef8fbc95be0cd9',1,'caffe::SplitLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1SPPLayer.html#a0fcc7996823cba1a468e82b3f9058ff0',1,'caffe::SPPLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1TileLayer.html#ac7e0da0e543f134e04b00d8625132b71',1,'caffe::TileLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1WindowDataLayer.html#ac982c8170a7f899366321412a7bb91d7',1,'caffe::WindowDataLayer::ExactNumBottomBlobs()']]], - ['exactnumtopblobs',['ExactNumTopBlobs',['../classcaffe_1_1Layer.html#a64e2ca72c719e4b2f1f9216ccfb0d37f',1,'caffe::Layer::ExactNumTopBlobs()'],['../classcaffe_1_1AbsValLayer.html#aaf18bf4b77994475e8b55e5cefaa654a',1,'caffe::AbsValLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ArgMaxLayer.html#a45e9c6e7b572b915be8731fcb6403695',1,'caffe::ArgMaxLayer::ExactNumTopBlobs()'],['../classcaffe_1_1BatchNormLayer.html#ab8575decdd0c5c42e24b9c3424f708ad',1,'caffe::BatchNormLayer::ExactNumTopBlobs()'],['../classcaffe_1_1BatchReindexLayer.html#a7d5c537334359c2a83cce489fb534342',1,'caffe::BatchReindexLayer::ExactNumTopBlobs()'],['../classcaffe_1_1BiasLayer.html#a9552dc137a5bcbdd17bdb3321d678595',1,'caffe::BiasLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ConcatLayer.html#a0f19a4cac8676927f9c83010957a2921',1,'caffe::ConcatLayer::ExactNumTopBlobs()'],['../classcaffe_1_1CropLayer.html#a7e4a9aa634577308bc189adcf0ac22ed',1,'caffe::CropLayer::ExactNumTopBlobs()'],['../classcaffe_1_1EltwiseLayer.html#a60ae4a38cade1cc7f6111e51cabb441b',1,'caffe::EltwiseLayer::ExactNumTopBlobs()'],['../classcaffe_1_1EmbedLayer.html#af02f4561fa25a979e523aae851bed39d',1,'caffe::EmbedLayer::ExactNumTopBlobs()'],['../classcaffe_1_1FlattenLayer.html#a09d5ccd980598cce0472b3bd66316c08',1,'caffe::FlattenLayer::ExactNumTopBlobs()'],['../classcaffe_1_1HDF5OutputLayer.html#ad11b8da0a6217a0f9a63789b360b1c99',1,'caffe::HDF5OutputLayer::ExactNumTopBlobs()'],['../classcaffe_1_1Im2colLayer.html#ab2cf1f7dd41b801ed32471ec492d423c',1,'caffe::Im2colLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ImageDataLayer.html#aa9182d46877b8514fca86e3588249567',1,'caffe::ImageDataLayer::ExactNumTopBlobs()'],['../classcaffe_1_1InnerProductLayer.html#a652d8a5b07b72938a81f50305c1a8ee1',1,'caffe::InnerProductLayer::ExactNumTopBlobs()'],['../classcaffe_1_1LossLayer.html#aa5d5ab714a14082f5343dc9c49025b23',1,'caffe::LossLayer::ExactNumTopBlobs()'],['../classcaffe_1_1LRNLayer.html#ac0ee88b119c38749c50e914521cdc148',1,'caffe::LRNLayer::ExactNumTopBlobs()'],['../classcaffe_1_1LSTMUnitLayer.html#a5f56fd304b6581697cbf309ebb8bc9b7',1,'caffe::LSTMUnitLayer::ExactNumTopBlobs()'],['../classcaffe_1_1MemoryDataLayer.html#af714b4cbc022be1592ad26c300b63ae4',1,'caffe::MemoryDataLayer::ExactNumTopBlobs()'],['../classcaffe_1_1MVNLayer.html#ae10d9ef135adf3cd25e86ce06188c814',1,'caffe::MVNLayer::ExactNumTopBlobs()'],['../classcaffe_1_1NeuronLayer.html#a47ac5e7208e4b14ad1e4040a621dbfbc',1,'caffe::NeuronLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ParameterLayer.html#aeb70ea5cec478f098259356690b01c9b',1,'caffe::ParameterLayer::ExactNumTopBlobs()'],['../classcaffe_1_1RecurrentLayer.html#a4cb9032f0942c0fef5f6c7094c7b2ab8',1,'caffe::RecurrentLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ReductionLayer.html#a14224774af732030c5f1c8a3d79e1fc3',1,'caffe::ReductionLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ReshapeLayer.html#a3318c2404c6072ba07178b48d39ef0f5',1,'caffe::ReshapeLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ScaleLayer.html#aeffb8fcfc522f7365c23b0e6ae5c232e',1,'caffe::ScaleLayer::ExactNumTopBlobs()'],['../classcaffe_1_1SilenceLayer.html#a1e072cbda98dbc57001ce92432b045b8',1,'caffe::SilenceLayer::ExactNumTopBlobs()'],['../classcaffe_1_1SoftmaxLayer.html#a6bc4748c20e0940e5367ed4d50f4a11b',1,'caffe::SoftmaxLayer::ExactNumTopBlobs()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a9035d000b2ce51a973f255a5eb2df8e3',1,'caffe::SoftmaxWithLossLayer::ExactNumTopBlobs()'],['../classcaffe_1_1SPPLayer.html#a345f640e6c1d3e9ee929d706b68300e9',1,'caffe::SPPLayer::ExactNumTopBlobs()'],['../classcaffe_1_1TileLayer.html#a1040cc3b4fb028d54f67a685513d745b',1,'caffe::TileLayer::ExactNumTopBlobs()'],['../classcaffe_1_1WindowDataLayer.html#a7bd9264758f462b3392d2eedec8b1c99',1,'caffe::WindowDataLayer::ExactNumTopBlobs()']]], - ['explayer',['ExpLayer',['../classcaffe_1_1ExpLayer.html#a87a0fae261ad3d2c8947f463686a6de0',1,'caffe::ExpLayer']]], - ['explayer',['ExpLayer',['../classcaffe_1_1ExpLayer.html',1,'caffe']]], + ['exactnumtopblobs',['ExactNumTopBlobs',['../classcaffe_1_1Layer.html#a64e2ca72c719e4b2f1f9216ccfb0d37f',1,'caffe::Layer::ExactNumTopBlobs()'],['../classcaffe_1_1AbsValLayer.html#aaf18bf4b77994475e8b55e5cefaa654a',1,'caffe::AbsValLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ArgMaxLayer.html#a45e9c6e7b572b915be8731fcb6403695',1,'caffe::ArgMaxLayer::ExactNumTopBlobs()'],['../classcaffe_1_1BatchNormLayer.html#ab8575decdd0c5c42e24b9c3424f708ad',1,'caffe::BatchNormLayer::ExactNumTopBlobs()'],['../classcaffe_1_1BatchReindexLayer.html#a7d5c537334359c2a83cce489fb534342',1,'caffe::BatchReindexLayer::ExactNumTopBlobs()'],['../classcaffe_1_1BiasLayer.html#a9552dc137a5bcbdd17bdb3321d678595',1,'caffe::BiasLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ConcatLayer.html#a0f19a4cac8676927f9c83010957a2921',1,'caffe::ConcatLayer::ExactNumTopBlobs()'],['../classcaffe_1_1CropLayer.html#a7e4a9aa634577308bc189adcf0ac22ed',1,'caffe::CropLayer::ExactNumTopBlobs()'],['../classcaffe_1_1EltwiseLayer.html#a60ae4a38cade1cc7f6111e51cabb441b',1,'caffe::EltwiseLayer::ExactNumTopBlobs()'],['../classcaffe_1_1EmbedLayer.html#af02f4561fa25a979e523aae851bed39d',1,'caffe::EmbedLayer::ExactNumTopBlobs()'],['../classcaffe_1_1FlattenLayer.html#a09d5ccd980598cce0472b3bd66316c08',1,'caffe::FlattenLayer::ExactNumTopBlobs()'],['../classcaffe_1_1HDF5OutputLayer.html#ad11b8da0a6217a0f9a63789b360b1c99',1,'caffe::HDF5OutputLayer::ExactNumTopBlobs()'],['../classcaffe_1_1Im2colLayer.html#ab2cf1f7dd41b801ed32471ec492d423c',1,'caffe::Im2colLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ImageDataLayer.html#aa9182d46877b8514fca86e3588249567',1,'caffe::ImageDataLayer::ExactNumTopBlobs()'],['../classcaffe_1_1InfogainLossLayer.html#aaf55e75f2296586b1fee0175e2d72fbb',1,'caffe::InfogainLossLayer::ExactNumTopBlobs()'],['../classcaffe_1_1InnerProductLayer.html#a652d8a5b07b72938a81f50305c1a8ee1',1,'caffe::InnerProductLayer::ExactNumTopBlobs()'],['../classcaffe_1_1LossLayer.html#aa5d5ab714a14082f5343dc9c49025b23',1,'caffe::LossLayer::ExactNumTopBlobs()'],['../classcaffe_1_1LRNLayer.html#ac0ee88b119c38749c50e914521cdc148',1,'caffe::LRNLayer::ExactNumTopBlobs()'],['../classcaffe_1_1LSTMUnitLayer.html#a5f56fd304b6581697cbf309ebb8bc9b7',1,'caffe::LSTMUnitLayer::ExactNumTopBlobs()'],['../classcaffe_1_1MemoryDataLayer.html#af714b4cbc022be1592ad26c300b63ae4',1,'caffe::MemoryDataLayer::ExactNumTopBlobs()'],['../classcaffe_1_1MVNLayer.html#ae10d9ef135adf3cd25e86ce06188c814',1,'caffe::MVNLayer::ExactNumTopBlobs()'],['../classcaffe_1_1NeuronLayer.html#a47ac5e7208e4b14ad1e4040a621dbfbc',1,'caffe::NeuronLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ParameterLayer.html#aeb70ea5cec478f098259356690b01c9b',1,'caffe::ParameterLayer::ExactNumTopBlobs()'],['../classcaffe_1_1RecurrentLayer.html#a4cb9032f0942c0fef5f6c7094c7b2ab8',1,'caffe::RecurrentLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ReductionLayer.html#a14224774af732030c5f1c8a3d79e1fc3',1,'caffe::ReductionLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ReshapeLayer.html#a3318c2404c6072ba07178b48d39ef0f5',1,'caffe::ReshapeLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ScaleLayer.html#aeffb8fcfc522f7365c23b0e6ae5c232e',1,'caffe::ScaleLayer::ExactNumTopBlobs()'],['../classcaffe_1_1SilenceLayer.html#a1e072cbda98dbc57001ce92432b045b8',1,'caffe::SilenceLayer::ExactNumTopBlobs()'],['../classcaffe_1_1SoftmaxLayer.html#a6bc4748c20e0940e5367ed4d50f4a11b',1,'caffe::SoftmaxLayer::ExactNumTopBlobs()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a9035d000b2ce51a973f255a5eb2df8e3',1,'caffe::SoftmaxWithLossLayer::ExactNumTopBlobs()'],['../classcaffe_1_1SPPLayer.html#a345f640e6c1d3e9ee929d706b68300e9',1,'caffe::SPPLayer::ExactNumTopBlobs()'],['../classcaffe_1_1TileLayer.html#a1040cc3b4fb028d54f67a685513d745b',1,'caffe::TileLayer::ExactNumTopBlobs()'],['../classcaffe_1_1WindowDataLayer.html#a7bd9264758f462b3392d2eedec8b1c99',1,'caffe::WindowDataLayer::ExactNumTopBlobs()']]], + ['explayer',['ExpLayer',['../classcaffe_1_1ExpLayer.html',1,'caffe::ExpLayer< Dtype >'],['../classcaffe_1_1ExpLayer.html#a87a0fae261ad3d2c8947f463686a6de0',1,'caffe::ExpLayer::ExpLayer()']]], ['expose_5fhidden_5f',['expose_hidden_',['../classcaffe_1_1RecurrentLayer.html#abfafaacb1fece0309e750e0d307fb76e',1,'caffe::RecurrentLayer']]] ]; diff --git a/doxygen/search/all_5.html b/doxygen/search/all_5.html index 7919cd4d85c..89a879ea9b6 100644 --- a/doxygen/search/all_5.html +++ b/doxygen/search/all_5.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/all_6.html b/doxygen/search/all_6.html index 89d590c492d..6afac066223 100644 --- a/doxygen/search/all_6.html +++ b/doxygen/search/all_6.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/all_6.js b/doxygen/search/all_6.js index 5c3a6b90255..a420a6cae11 100644 --- a/doxygen/search/all_6.js +++ b/doxygen/search/all_6.js @@ -2,6 +2,6 @@ var searchData= [ ['gaussianfiller',['GaussianFiller',['../classcaffe_1_1GaussianFiller.html',1,'caffe']]], ['generator',['Generator',['../classcaffe_1_1Caffe_1_1RNG_1_1Generator.html',1,'caffe::Caffe::RNG']]], - ['get_5fnormalizer',['get_normalizer',['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#af8ce9b84227c0be01d4a1cc248a7aa52',1,'caffe::SigmoidCrossEntropyLossLayer::get_normalizer()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#aef4567bafcd7b1665f2a2cc71ea02ff4',1,'caffe::SoftmaxWithLossLayer::get_normalizer()']]], + ['get_5fnormalizer',['get_normalizer',['../classcaffe_1_1InfogainLossLayer.html#a0e5e9667b19fb88ece7298e3e83d2fdb',1,'caffe::InfogainLossLayer::get_normalizer()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#af8ce9b84227c0be01d4a1cc248a7aa52',1,'caffe::SigmoidCrossEntropyLossLayer::get_normalizer()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#aef4567bafcd7b1665f2a2cc71ea02ff4',1,'caffe::SoftmaxWithLossLayer::get_normalizer()']]], ['getfiller',['GetFiller',['../namespacecaffe.html#a819e1b2fe30b54d6df0fd88e646ec126',1,'caffe']]] ]; diff --git a/doxygen/search/all_7.html b/doxygen/search/all_7.html index 0e8c527eea2..de191077053 100644 --- a/doxygen/search/all_7.html +++ b/doxygen/search/all_7.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/all_7.js b/doxygen/search/all_7.js index e13baaaf800..c550f1f7d63 100644 --- a/doxygen/search/all_7.js +++ b/doxygen/search/all_7.js @@ -1,6 +1,6 @@ var searchData= [ - ['has_5fignore_5flabel_5f',['has_ignore_label_',['../classcaffe_1_1AccuracyLayer.html#a4acdfaf6db79fbe1983b8439391ad15e',1,'caffe::AccuracyLayer::has_ignore_label_()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#a7e2ebf45542532439096caaec42a2a85',1,'caffe::SigmoidCrossEntropyLossLayer::has_ignore_label_()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#ad77bc32fa576ad025102d29acf79aefb',1,'caffe::SoftmaxWithLossLayer::has_ignore_label_()']]], + ['has_5fignore_5flabel_5f',['has_ignore_label_',['../classcaffe_1_1AccuracyLayer.html#a4acdfaf6db79fbe1983b8439391ad15e',1,'caffe::AccuracyLayer::has_ignore_label_()'],['../classcaffe_1_1InfogainLossLayer.html#a421720fc0f85daf8b6b7808719b1f9e8',1,'caffe::InfogainLossLayer::has_ignore_label_()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#a7e2ebf45542532439096caaec42a2a85',1,'caffe::SigmoidCrossEntropyLossLayer::has_ignore_label_()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#ad77bc32fa576ad025102d29acf79aefb',1,'caffe::SoftmaxWithLossLayer::has_ignore_label_()']]], ['hdf5datalayer',['HDF5DataLayer',['../classcaffe_1_1HDF5DataLayer.html',1,'caffe']]], ['hdf5outputlayer',['HDF5OutputLayer',['../classcaffe_1_1HDF5OutputLayer.html',1,'caffe']]], ['height',['height',['../classcaffe_1_1Blob.html#a18af535af43f4e9f85bd1e520886276f',1,'caffe::Blob']]], diff --git a/doxygen/search/all_8.html b/doxygen/search/all_8.html index 80bda06772e..11e27cdb447 100644 --- a/doxygen/search/all_8.html +++ b/doxygen/search/all_8.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/all_8.js b/doxygen/search/all_8.js index 6f9bde6c9db..81484cc43f1 100644 --- a/doxygen/search/all_8.js +++ b/doxygen/search/all_8.js @@ -1,6 +1,6 @@ var searchData= [ - ['ignore_5flabel_5f',['ignore_label_',['../classcaffe_1_1AccuracyLayer.html#a2b8c2d647f43ffd6aa14e81f1c5b2bde',1,'caffe::AccuracyLayer::ignore_label_()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#ab99d98ce823df6c90cd4c3cf8b0a793f',1,'caffe::SigmoidCrossEntropyLossLayer::ignore_label_()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a117d31c7ac538dd7851fb493bfc75d95',1,'caffe::SoftmaxWithLossLayer::ignore_label_()']]], + ['ignore_5flabel_5f',['ignore_label_',['../classcaffe_1_1AccuracyLayer.html#a2b8c2d647f43ffd6aa14e81f1c5b2bde',1,'caffe::AccuracyLayer::ignore_label_()'],['../classcaffe_1_1InfogainLossLayer.html#ad3f7c2efdf32f99510186495ba7c5cff',1,'caffe::InfogainLossLayer::ignore_label_()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#ab99d98ce823df6c90cd4c3cf8b0a793f',1,'caffe::SigmoidCrossEntropyLossLayer::ignore_label_()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a117d31c7ac538dd7851fb493bfc75d95',1,'caffe::SoftmaxWithLossLayer::ignore_label_()']]], ['im2collayer',['Im2colLayer',['../classcaffe_1_1Im2colLayer.html',1,'caffe']]], ['imagedatalayer',['ImageDataLayer',['../classcaffe_1_1ImageDataLayer.html',1,'caffe']]], ['inferblobshape',['InferBlobShape',['../classcaffe_1_1DataTransformer.html#a1e43b0fb80cded5bb854e1a06004bebf',1,'caffe::DataTransformer::InferBlobShape(const Datum &datum)'],['../classcaffe_1_1DataTransformer.html#ac829dd6448dcce67acb1e22a2554db4b',1,'caffe::DataTransformer::InferBlobShape(const vector< Datum > &datum_vector)']]], diff --git a/doxygen/search/all_9.html b/doxygen/search/all_9.html index 8ebc8a2aaaa..f8abbbe5906 100644 --- a/doxygen/search/all_9.html +++ b/doxygen/search/all_9.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/all_a.html b/doxygen/search/all_a.html index f17bf66a3c5..9601fcee13c 100644 --- a/doxygen/search/all_a.html +++ b/doxygen/search/all_a.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/all_a.js b/doxygen/search/all_a.js index 81d68733eb1..eaca38e6378 100644 --- a/doxygen/search/all_a.js +++ b/doxygen/search/all_a.js @@ -1,8 +1,7 @@ var searchData= [ ['last_5flayer_5findex_5f',['last_layer_index_',['../classcaffe_1_1RecurrentLayer.html#a0a7a7d94ed74d4199b9d7b8445d5aadb',1,'caffe::RecurrentLayer']]], - ['layer',['Layer',['../classcaffe_1_1Layer.html',1,'caffe']]], - ['layer',['Layer',['../classcaffe_1_1Layer.html#a7b4e4ccea08c7b8b15acc6829d5735f6',1,'caffe::Layer']]], + ['layer',['Layer',['../classcaffe_1_1Layer.html',1,'caffe::Layer< Dtype >'],['../classcaffe_1_1Layer.html#a7b4e4ccea08c7b8b15acc6829d5735f6',1,'caffe::Layer::Layer()']]], ['layer_5fnames',['layer_names',['../classcaffe_1_1Net.html#aa550ba424fc7b90f2ccbbaa175c1ec18',1,'caffe::Net']]], ['layer_5fparam',['layer_param',['../classcaffe_1_1Layer.html#adff82274f146e2b6922d0ebac2aaf215',1,'caffe::Layer']]], ['layer_5fparam_5f',['layer_param_',['../classcaffe_1_1Layer.html#a7ed12bb2df25c887e41d7ea9557fc701',1,'caffe::Layer']]], @@ -12,8 +11,7 @@ var searchData= ['layers_5f',['layers_',['../classcaffe_1_1Net.html#ab9e30392aa01dcf182d1a5cbd34ec45e',1,'caffe::Net']]], ['layersetup',['LayerSetUp',['../classcaffe_1_1Layer.html#a481323a3e0972c682787f2137468c29f',1,'caffe::Layer::LayerSetUp()'],['../classcaffe_1_1AbsValLayer.html#a4ef25e7d0cbe06404948d7e763bf0f84',1,'caffe::AbsValLayer::LayerSetUp()'],['../classcaffe_1_1AccuracyLayer.html#a1f2447583c670d92ff6e2c8d53fb4dd9',1,'caffe::AccuracyLayer::LayerSetUp()'],['../classcaffe_1_1ArgMaxLayer.html#a53069bd5efc4639de93a8111da772572',1,'caffe::ArgMaxLayer::LayerSetUp()'],['../classcaffe_1_1BaseConvolutionLayer.html#a422e1ef9e6c8b4574f7677bb125e234a',1,'caffe::BaseConvolutionLayer::LayerSetUp()'],['../classcaffe_1_1BaseDataLayer.html#a7028919adf87326b808a2c7b21e8e927',1,'caffe::BaseDataLayer::LayerSetUp()'],['../classcaffe_1_1BasePrefetchingDataLayer.html#ad3b7914abaa6d46c148864c0e28204ad',1,'caffe::BasePrefetchingDataLayer::LayerSetUp()'],['../classcaffe_1_1BatchNormLayer.html#a259d8b26c05450339b33ad024f356b6a',1,'caffe::BatchNormLayer::LayerSetUp()'],['../classcaffe_1_1BiasLayer.html#aa62a9554bf4fc3eb4db124da0d89fd85',1,'caffe::BiasLayer::LayerSetUp()'],['../classcaffe_1_1ConcatLayer.html#af4fc13f4977f84a30af260096ffd55d2',1,'caffe::ConcatLayer::LayerSetUp()'],['../classcaffe_1_1ContrastiveLossLayer.html#a943e67e7bb9c2362ec20ce44c777beac',1,'caffe::ContrastiveLossLayer::LayerSetUp()'],['../classcaffe_1_1CropLayer.html#a59dcb04b78d55f666b69ff001c90caa7',1,'caffe::CropLayer::LayerSetUp()'],['../classcaffe_1_1DropoutLayer.html#addcfd0822c1c5e3591bc7001a034b167',1,'caffe::DropoutLayer::LayerSetUp()'],['../classcaffe_1_1DummyDataLayer.html#a43b495bfead8d18bf1d8eaf7bf91e3e4',1,'caffe::DummyDataLayer::LayerSetUp()'],['../classcaffe_1_1EltwiseLayer.html#a02516b6e7b1b0d032e586785687bcabc',1,'caffe::EltwiseLayer::LayerSetUp()'],['../classcaffe_1_1EmbedLayer.html#aaace16d2beba7db887c7b59213268bc2',1,'caffe::EmbedLayer::LayerSetUp()'],['../classcaffe_1_1ExpLayer.html#a45ec267bdfd48e8aa34490e146405b9e',1,'caffe::ExpLayer::LayerSetUp()'],['../classcaffe_1_1FilterLayer.html#a26a302fd9629af812e7d0714db79bb53',1,'caffe::FilterLayer::LayerSetUp()'],['../classcaffe_1_1HDF5DataLayer.html#afcd473ff34b4035122ba9119fc67498c',1,'caffe::HDF5DataLayer::LayerSetUp()'],['../classcaffe_1_1HDF5OutputLayer.html#aed2dea5250c86c46dd866fbb241dd9f6',1,'caffe::HDF5OutputLayer::LayerSetUp()'],['../classcaffe_1_1Im2colLayer.html#ac4d6f34378681fa197546468b5aa6fd6',1,'caffe::Im2colLayer::LayerSetUp()'],['../classcaffe_1_1InfogainLossLayer.html#a772be3f4074c72b3cf9214bda3422402',1,'caffe::InfogainLossLayer::LayerSetUp()'],['../classcaffe_1_1InnerProductLayer.html#a4adc29913343ddec1813f3a899e449cc',1,'caffe::InnerProductLayer::LayerSetUp()'],['../classcaffe_1_1InputLayer.html#a58be7dd9b52c1a98a872300e5108e065',1,'caffe::InputLayer::LayerSetUp()'],['../classcaffe_1_1LogLayer.html#a87e062000908b474ac4cda3b2f3c6f1e',1,'caffe::LogLayer::LayerSetUp()'],['../classcaffe_1_1LossLayer.html#aa6fc7c2e90be66f1c1f0683637c949da',1,'caffe::LossLayer::LayerSetUp()'],['../classcaffe_1_1LRNLayer.html#ac7ae4b839d952b785b9911c258bd5b48',1,'caffe::LRNLayer::LayerSetUp()'],['../classcaffe_1_1ParameterLayer.html#a1485ccdbd01513b89b29a79df7cda6ee',1,'caffe::ParameterLayer::LayerSetUp()'],['../classcaffe_1_1PoolingLayer.html#aa310fbe7d766ac96a1957aca6a3c4469',1,'caffe::PoolingLayer::LayerSetUp()'],['../classcaffe_1_1PowerLayer.html#a954ad3da9a5fd54665de1181b6165796',1,'caffe::PowerLayer::LayerSetUp()'],['../classcaffe_1_1PReLULayer.html#a85e7207b664a4db8eb718f2075f44920',1,'caffe::PReLULayer::LayerSetUp()'],['../classcaffe_1_1PythonLayer.html#ae5baf7b7552ff0113c174b0e77db5f4c',1,'caffe::PythonLayer::LayerSetUp()'],['../classcaffe_1_1RecurrentLayer.html#a4eec13bfbe23b1e3eb2bbc4652bd6952',1,'caffe::RecurrentLayer::LayerSetUp()'],['../classcaffe_1_1ReductionLayer.html#aafe0aa825e019ea35225a8e493e4e919',1,'caffe::ReductionLayer::LayerSetUp()'],['../classcaffe_1_1ReshapeLayer.html#a99db2601ec64ff20880641b6f6429947',1,'caffe::ReshapeLayer::LayerSetUp()'],['../classcaffe_1_1ScaleLayer.html#a9781f923f1ff0aad8549e0e93eebb941',1,'caffe::ScaleLayer::LayerSetUp()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#aa1535140dd4eb94557c3afc89076d56d',1,'caffe::SigmoidCrossEntropyLossLayer::LayerSetUp()'],['../classcaffe_1_1SliceLayer.html#a92c1cdabdce4c92b9a4ee58e2ceb601e',1,'caffe::SliceLayer::LayerSetUp()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a96cd04896d4b805fcaf36c2c6522ae10',1,'caffe::SoftmaxWithLossLayer::LayerSetUp()'],['../classcaffe_1_1SPPLayer.html#a7241f9c4dfba841bc76a93298a3d28ee',1,'caffe::SPPLayer::LayerSetUp()'],['../classcaffe_1_1ThresholdLayer.html#a14e3782a6bea7bba511f3d6f23344037',1,'caffe::ThresholdLayer::LayerSetUp()']]], ['learnable_5fparam_5fids_5f',['learnable_param_ids_',['../classcaffe_1_1Net.html#adf8dfb59e46d62c9333f322cea631bd8',1,'caffe::Net']]], - ['loglayer',['LogLayer',['../classcaffe_1_1LogLayer.html',1,'caffe']]], - ['loglayer',['LogLayer',['../classcaffe_1_1LogLayer.html#aa6f92a0b12140d70a44a2bcb71bab552',1,'caffe::LogLayer']]], + ['loglayer',['LogLayer',['../classcaffe_1_1LogLayer.html',1,'caffe::LogLayer< Dtype >'],['../classcaffe_1_1LogLayer.html#aa6f92a0b12140d70a44a2bcb71bab552',1,'caffe::LogLayer::LogLayer()']]], ['loss',['loss',['../classcaffe_1_1Layer.html#a899410336f30821644c8bd6c69a070c9',1,'caffe::Layer']]], ['loss_5f',['loss_',['../classcaffe_1_1Layer.html#af6d347229a139500994e7a926c680486',1,'caffe::Layer']]], ['losslayer',['LossLayer',['../classcaffe_1_1LossLayer.html',1,'caffe']]], diff --git a/doxygen/search/all_b.html b/doxygen/search/all_b.html index 6ef469ecc43..0814e4e03d2 100644 --- a/doxygen/search/all_b.html +++ b/doxygen/search/all_b.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/all_b.js b/doxygen/search/all_b.js index c37bfd4078d..6042638581a 100644 --- a/doxygen/search/all_b.js +++ b/doxygen/search/all_b.js @@ -1,11 +1,11 @@ var searchData= [ ['maxbottomblobs',['MaxBottomBlobs',['../classcaffe_1_1Layer.html#af8bdc989053e0363ab032026b46de7c3',1,'caffe::Layer::MaxBottomBlobs()'],['../classcaffe_1_1BiasLayer.html#abdb89e3bc940f999d1d4da83de90a97c',1,'caffe::BiasLayer::MaxBottomBlobs()'],['../classcaffe_1_1InfogainLossLayer.html#a9b2372959a16da1e80ae7a98b7689a4c',1,'caffe::InfogainLossLayer::MaxBottomBlobs()'],['../classcaffe_1_1RecurrentLayer.html#a983e1ead91884f9d2049a3000254961c',1,'caffe::RecurrentLayer::MaxBottomBlobs()'],['../classcaffe_1_1ScaleLayer.html#a7867d035776f78fe486ce633ec0520ad',1,'caffe::ScaleLayer::MaxBottomBlobs()']]], - ['maxtopblobs',['MaxTopBlobs',['../classcaffe_1_1Layer.html#ac6c03df0b6e40e776c94001e19994a2e',1,'caffe::Layer::MaxTopBlobs()'],['../classcaffe_1_1AccuracyLayer.html#a7591ae6d50dd7d96b91241b5b0368997',1,'caffe::AccuracyLayer::MaxTopBlobs()'],['../classcaffe_1_1DataLayer.html#ac47e9f3bff3db9d7364f6c392427745c',1,'caffe::DataLayer::MaxTopBlobs()'],['../classcaffe_1_1PoolingLayer.html#a76539d04ef7252c12e932ea703f8246b',1,'caffe::PoolingLayer::MaxTopBlobs()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a5a0b4c02fe76ae9087cd8b1b9edd9910',1,'caffe::SoftmaxWithLossLayer::MaxTopBlobs()']]], + ['maxtopblobs',['MaxTopBlobs',['../classcaffe_1_1Layer.html#ac6c03df0b6e40e776c94001e19994a2e',1,'caffe::Layer::MaxTopBlobs()'],['../classcaffe_1_1AccuracyLayer.html#a7591ae6d50dd7d96b91241b5b0368997',1,'caffe::AccuracyLayer::MaxTopBlobs()'],['../classcaffe_1_1DataLayer.html#ac47e9f3bff3db9d7364f6c392427745c',1,'caffe::DataLayer::MaxTopBlobs()'],['../classcaffe_1_1InfogainLossLayer.html#a93019601c6256354fd4758da91d9311f',1,'caffe::InfogainLossLayer::MaxTopBlobs()'],['../classcaffe_1_1PoolingLayer.html#a76539d04ef7252c12e932ea703f8246b',1,'caffe::PoolingLayer::MaxTopBlobs()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a5a0b4c02fe76ae9087cd8b1b9edd9910',1,'caffe::SoftmaxWithLossLayer::MaxTopBlobs()']]], ['memory_5fused_5f',['memory_used_',['../classcaffe_1_1Net.html#a84349f399faa4246f8395e63c9334d56',1,'caffe::Net']]], ['memorydatalayer',['MemoryDataLayer',['../classcaffe_1_1MemoryDataLayer.html',1,'caffe']]], ['minbottomblobs',['MinBottomBlobs',['../classcaffe_1_1Layer.html#aca3cb2bafaefda5d4760aaebd0b72def',1,'caffe::Layer::MinBottomBlobs()'],['../classcaffe_1_1BaseConvolutionLayer.html#aa3d861ed15f6e41c6257d6a10defa7eb',1,'caffe::BaseConvolutionLayer::MinBottomBlobs()'],['../classcaffe_1_1BiasLayer.html#ab75a2e05bbb1eb37bed5995288143f67',1,'caffe::BiasLayer::MinBottomBlobs()'],['../classcaffe_1_1ConcatLayer.html#a314de9eb00a296ffd3cf84120bd1601e',1,'caffe::ConcatLayer::MinBottomBlobs()'],['../classcaffe_1_1EltwiseLayer.html#a802079d89e0f007c15b39e0c1fb0d275',1,'caffe::EltwiseLayer::MinBottomBlobs()'],['../classcaffe_1_1FilterLayer.html#af4c97961e859653ef0fa21d796af0259',1,'caffe::FilterLayer::MinBottomBlobs()'],['../classcaffe_1_1InfogainLossLayer.html#ad8a1ef702a695e379e5d0450369b4a0c',1,'caffe::InfogainLossLayer::MinBottomBlobs()'],['../classcaffe_1_1RecurrentLayer.html#ac31b705bc02d333ae768f7c2184fbfae',1,'caffe::RecurrentLayer::MinBottomBlobs()'],['../classcaffe_1_1ScaleLayer.html#a12c10840f0fc3327854864a12054beb2',1,'caffe::ScaleLayer::MinBottomBlobs()'],['../classcaffe_1_1SilenceLayer.html#af916fa4138f5d8761ec4490588eeccd1',1,'caffe::SilenceLayer::MinBottomBlobs()']]], - ['mintopblobs',['MinTopBlobs',['../classcaffe_1_1Layer.html#ab9e4c8d642e413948b131d851a8462a4',1,'caffe::Layer::MinTopBlobs()'],['../classcaffe_1_1AccuracyLayer.html#a568dd59acff7a172fa614c88ac56aff7',1,'caffe::AccuracyLayer::MinTopBlobs()'],['../classcaffe_1_1BaseConvolutionLayer.html#ae4092cf1b48e18e5d82cd714ae6e8547',1,'caffe::BaseConvolutionLayer::MinTopBlobs()'],['../classcaffe_1_1DataLayer.html#ab0c5a7504085a6699272cdcfa8611887',1,'caffe::DataLayer::MinTopBlobs()'],['../classcaffe_1_1DummyDataLayer.html#a2a63e36dd6b39287981d0bee466975aa',1,'caffe::DummyDataLayer::MinTopBlobs()'],['../classcaffe_1_1FilterLayer.html#af8c6eb9b1986e03dd14a907b5caa1324',1,'caffe::FilterLayer::MinTopBlobs()'],['../classcaffe_1_1HDF5DataLayer.html#a6833e081c29049b1392eb98fb4451697',1,'caffe::HDF5DataLayer::MinTopBlobs()'],['../classcaffe_1_1InputLayer.html#a5d0512129e9c2955dde297a2f15595d2',1,'caffe::InputLayer::MinTopBlobs()'],['../classcaffe_1_1PoolingLayer.html#abb61ab67b2bd809c5633a2722b83feeb',1,'caffe::PoolingLayer::MinTopBlobs()'],['../classcaffe_1_1SliceLayer.html#a2673c06234a234362c1e2592880567a1',1,'caffe::SliceLayer::MinTopBlobs()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a9969336702fb1bbf31750629fb38fb45',1,'caffe::SoftmaxWithLossLayer::MinTopBlobs()'],['../classcaffe_1_1SplitLayer.html#a48dafac272f2f098798e3caa09afbabe',1,'caffe::SplitLayer::MinTopBlobs()']]], + ['mintopblobs',['MinTopBlobs',['../classcaffe_1_1Layer.html#ab9e4c8d642e413948b131d851a8462a4',1,'caffe::Layer::MinTopBlobs()'],['../classcaffe_1_1AccuracyLayer.html#a568dd59acff7a172fa614c88ac56aff7',1,'caffe::AccuracyLayer::MinTopBlobs()'],['../classcaffe_1_1BaseConvolutionLayer.html#ae4092cf1b48e18e5d82cd714ae6e8547',1,'caffe::BaseConvolutionLayer::MinTopBlobs()'],['../classcaffe_1_1DataLayer.html#ab0c5a7504085a6699272cdcfa8611887',1,'caffe::DataLayer::MinTopBlobs()'],['../classcaffe_1_1DummyDataLayer.html#a2a63e36dd6b39287981d0bee466975aa',1,'caffe::DummyDataLayer::MinTopBlobs()'],['../classcaffe_1_1FilterLayer.html#af8c6eb9b1986e03dd14a907b5caa1324',1,'caffe::FilterLayer::MinTopBlobs()'],['../classcaffe_1_1HDF5DataLayer.html#a6833e081c29049b1392eb98fb4451697',1,'caffe::HDF5DataLayer::MinTopBlobs()'],['../classcaffe_1_1InfogainLossLayer.html#a15c4916e5de27151eb745491d8d14d41',1,'caffe::InfogainLossLayer::MinTopBlobs()'],['../classcaffe_1_1InputLayer.html#a5d0512129e9c2955dde297a2f15595d2',1,'caffe::InputLayer::MinTopBlobs()'],['../classcaffe_1_1PoolingLayer.html#abb61ab67b2bd809c5633a2722b83feeb',1,'caffe::PoolingLayer::MinTopBlobs()'],['../classcaffe_1_1SliceLayer.html#a2673c06234a234362c1e2592880567a1',1,'caffe::SliceLayer::MinTopBlobs()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a9969336702fb1bbf31750629fb38fb45',1,'caffe::SoftmaxWithLossLayer::MinTopBlobs()'],['../classcaffe_1_1SplitLayer.html#a48dafac272f2f098798e3caa09afbabe',1,'caffe::SplitLayer::MinTopBlobs()']]], ['msrafiller',['MSRAFiller',['../classcaffe_1_1MSRAFiller.html',1,'caffe']]], ['multinomiallogisticlosslayer',['MultinomialLogisticLossLayer',['../classcaffe_1_1MultinomialLogisticLossLayer.html',1,'caffe']]], ['mvnlayer',['MVNLayer',['../classcaffe_1_1MVNLayer.html',1,'caffe']]] diff --git a/doxygen/search/all_c.html b/doxygen/search/all_c.html index 4ca7bb9e568..da08c387a33 100644 --- a/doxygen/search/all_c.html +++ b/doxygen/search/all_c.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/all_c.js b/doxygen/search/all_c.js index 6f0e996b3e2..617de8604ea 100644 --- a/doxygen/search/all_c.js +++ b/doxygen/search/all_c.js @@ -7,7 +7,7 @@ var searchData= ['net',['Net',['../classcaffe_1_1Net.html',1,'caffe']]], ['net_5finput_5fblob_5findices_5f',['net_input_blob_indices_',['../classcaffe_1_1Net.html#a083a9a4c3919721c833b53d5571a7400',1,'caffe::Net']]], ['neuronlayer',['NeuronLayer',['../classcaffe_1_1NeuronLayer.html',1,'caffe']]], - ['normalization_5f',['normalization_',['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#ad4e3c7105f896bd7792e53ef3a0a2dd8',1,'caffe::SigmoidCrossEntropyLossLayer::normalization_()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a4b1fa348fc885339931f132573467b81',1,'caffe::SoftmaxWithLossLayer::normalization_()']]], + ['normalization_5f',['normalization_',['../classcaffe_1_1InfogainLossLayer.html#ab7fe88c996d31d67f5e13fc0ffc803c2',1,'caffe::InfogainLossLayer::normalization_()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#ad4e3c7105f896bd7792e53ef3a0a2dd8',1,'caffe::SigmoidCrossEntropyLossLayer::normalization_()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a4b1fa348fc885339931f132573467b81',1,'caffe::SoftmaxWithLossLayer::normalization_()']]], ['num',['num',['../classcaffe_1_1Blob.html#a80ed3eddf98ffd408e9a627b1a7c2a9e',1,'caffe::Blob']]], ['num_5f',['num_',['../classcaffe_1_1ReductionLayer.html#a7c336b1554118959a13cecfd9701998e',1,'caffe::ReductionLayer']]], ['num_5finputs',['num_inputs',['../classcaffe_1_1Net.html#a6b04ab79ff08386d5a6fd167fd7696a3',1,'caffe::Net']]], diff --git a/doxygen/search/all_d.html b/doxygen/search/all_d.html index fedf606a725..9986c9cbf7b 100644 --- a/doxygen/search/all_d.html +++ b/doxygen/search/all_d.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/all_e.html b/doxygen/search/all_e.html index 9b780860996..9fa42bbace4 100644 --- a/doxygen/search/all_e.html +++ b/doxygen/search/all_e.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/all_e.js b/doxygen/search/all_e.js index 87b5530ecc8..5d10e2f476d 100644 --- a/doxygen/search/all_e.js +++ b/doxygen/search/all_e.js @@ -19,10 +19,8 @@ var searchData= ['poolinglayer',['PoolingLayer',['../classcaffe_1_1PoolingLayer.html',1,'caffe']]], ['positiveunitballfiller',['PositiveUnitballFiller',['../classcaffe_1_1PositiveUnitballFiller.html',1,'caffe']]], ['power_5f',['power_',['../classcaffe_1_1PowerLayer.html#a882ce133988e4dd72a10d87fec4c04c3',1,'caffe::PowerLayer']]], - ['powerlayer',['PowerLayer',['../classcaffe_1_1PowerLayer.html',1,'caffe']]], - ['powerlayer',['PowerLayer',['../classcaffe_1_1PowerLayer.html#ab008c03c36436e1a0dac0fe1faa53c6d',1,'caffe::PowerLayer']]], - ['prelulayer',['PReLULayer',['../classcaffe_1_1PReLULayer.html',1,'caffe']]], - ['prelulayer',['PReLULayer',['../classcaffe_1_1PReLULayer.html#a9d164a537a2f77b4143d2491f4809732',1,'caffe::PReLULayer']]], - ['prob_5f',['prob_',['../classcaffe_1_1SoftmaxWithLossLayer.html#a02669f20097006452d877ea05e98b775',1,'caffe::SoftmaxWithLossLayer']]], + ['powerlayer',['PowerLayer',['../classcaffe_1_1PowerLayer.html',1,'caffe::PowerLayer< Dtype >'],['../classcaffe_1_1PowerLayer.html#ab008c03c36436e1a0dac0fe1faa53c6d',1,'caffe::PowerLayer::PowerLayer()']]], + ['prelulayer',['PReLULayer',['../classcaffe_1_1PReLULayer.html',1,'caffe::PReLULayer< Dtype >'],['../classcaffe_1_1PReLULayer.html#a9d164a537a2f77b4143d2491f4809732',1,'caffe::PReLULayer::PReLULayer()']]], + ['prob_5f',['prob_',['../classcaffe_1_1InfogainLossLayer.html#a4ae881c2950ca84a50b0f964797defd6',1,'caffe::InfogainLossLayer::prob_()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a02669f20097006452d877ea05e98b775',1,'caffe::SoftmaxWithLossLayer::prob_()']]], ['pythonlayer',['PythonLayer',['../classcaffe_1_1PythonLayer.html',1,'caffe']]] ]; diff --git a/doxygen/search/all_f.html b/doxygen/search/all_f.html index 3bf97c66fbd..6ecfc0ed833 100644 --- a/doxygen/search/all_f.html +++ b/doxygen/search/all_f.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/all_f.js b/doxygen/search/all_f.js index 684c678367a..040a5d436b9 100644 --- a/doxygen/search/all_f.js +++ b/doxygen/search/all_f.js @@ -7,8 +7,7 @@ var searchData= ['recurrentlayer',['RecurrentLayer',['../classcaffe_1_1RecurrentLayer.html',1,'caffe']]], ['recurrentoutputblobnames',['RecurrentOutputBlobNames',['../classcaffe_1_1LSTMLayer.html#a1ea6a5c2801b1463604bc67c4dbf1df1',1,'caffe::LSTMLayer::RecurrentOutputBlobNames()'],['../classcaffe_1_1RecurrentLayer.html#a5fd43ae201c4284a1cc3d93f72702bbe',1,'caffe::RecurrentLayer::RecurrentOutputBlobNames()'],['../classcaffe_1_1RNNLayer.html#a57d105b9599c294d05fe25b8542e1031',1,'caffe::RNNLayer::RecurrentOutputBlobNames()']]], ['reductionlayer',['ReductionLayer',['../classcaffe_1_1ReductionLayer.html',1,'caffe']]], - ['relulayer',['ReLULayer',['../classcaffe_1_1ReLULayer.html#aa6770fbbfd5e6f564c2ca19de7f7e712',1,'caffe::ReLULayer']]], - ['relulayer',['ReLULayer',['../classcaffe_1_1ReLULayer.html',1,'caffe']]], + ['relulayer',['ReLULayer',['../classcaffe_1_1ReLULayer.html',1,'caffe::ReLULayer< Dtype >'],['../classcaffe_1_1ReLULayer.html#aa6770fbbfd5e6f564c2ca19de7f7e712',1,'caffe::ReLULayer::ReLULayer()']]], ['reshape',['Reshape',['../classcaffe_1_1Blob.html#ad0e0a9a4f49478e89161c6afe4e341a0',1,'caffe::Blob::Reshape(const int num, const int channels, const int height, const int width)'],['../classcaffe_1_1Blob.html#ac9ce456aa623ff3f4d24225a0db14404',1,'caffe::Blob::Reshape(const vector< int > &shape)'],['../classcaffe_1_1Layer.html#a7fe981e8af8d93d587acf2a952be563d',1,'caffe::Layer::Reshape()'],['../classcaffe_1_1AccuracyLayer.html#aa2b680fc1e754440c2babd150e09f2f6',1,'caffe::AccuracyLayer::Reshape()'],['../classcaffe_1_1ArgMaxLayer.html#a291a2c548c28e7ab02ddac0cfd3cbdad',1,'caffe::ArgMaxLayer::Reshape()'],['../classcaffe_1_1BaseConvolutionLayer.html#aa215338f200c832081f2719a54bc5256',1,'caffe::BaseConvolutionLayer::Reshape()'],['../classcaffe_1_1BaseDataLayer.html#a2955d06a5e67609582fb293a0a37673f',1,'caffe::BaseDataLayer::Reshape()'],['../classcaffe_1_1BatchNormLayer.html#a1acd542fe8fe89d88db9050d048fc7d2',1,'caffe::BatchNormLayer::Reshape()'],['../classcaffe_1_1BatchReindexLayer.html#a7f69b6b19387959bf0926dde7a7922a4',1,'caffe::BatchReindexLayer::Reshape()'],['../classcaffe_1_1BiasLayer.html#aff9bd5f76055189c5ec66f43faf17660',1,'caffe::BiasLayer::Reshape()'],['../classcaffe_1_1ConcatLayer.html#a3c7cbd500d3a15cfbdbf33479c4fb228',1,'caffe::ConcatLayer::Reshape()'],['../classcaffe_1_1CropLayer.html#a195d2e437a70b0139411c1dd22b08120',1,'caffe::CropLayer::Reshape()'],['../classcaffe_1_1DropoutLayer.html#a8ddbd583b7430f228506954910935505',1,'caffe::DropoutLayer::Reshape()'],['../classcaffe_1_1DummyDataLayer.html#ae72f2ea80339981bf925f0291f62d527',1,'caffe::DummyDataLayer::Reshape()'],['../classcaffe_1_1EltwiseLayer.html#a17b4cb0842a154224bab9733e77e07b9',1,'caffe::EltwiseLayer::Reshape()'],['../classcaffe_1_1EmbedLayer.html#ac7c19a708d491f9fe161c78348ec794b',1,'caffe::EmbedLayer::Reshape()'],['../classcaffe_1_1EuclideanLossLayer.html#a9cbe90ea0130c31bd5b9419a1bbaa555',1,'caffe::EuclideanLossLayer::Reshape()'],['../classcaffe_1_1FilterLayer.html#ade673aa44e466adbe3aa79531a7c7484',1,'caffe::FilterLayer::Reshape()'],['../classcaffe_1_1FlattenLayer.html#a3b459231a94176753d0cb1ae94bc942f',1,'caffe::FlattenLayer::Reshape()'],['../classcaffe_1_1HDF5DataLayer.html#a38b8924648ba4ab2933fe389fa608cad',1,'caffe::HDF5DataLayer::Reshape()'],['../classcaffe_1_1HDF5OutputLayer.html#afaed17dc14251e627764334d54e55c4d',1,'caffe::HDF5OutputLayer::Reshape()'],['../classcaffe_1_1Im2colLayer.html#a119c9e1965e219be1ccb719821d4542f',1,'caffe::Im2colLayer::Reshape()'],['../classcaffe_1_1InfogainLossLayer.html#a83ed478450bc7f629499fed37f654c5c',1,'caffe::InfogainLossLayer::Reshape()'],['../classcaffe_1_1InnerProductLayer.html#a1c823624ec9286477db7caa5188152b8',1,'caffe::InnerProductLayer::Reshape()'],['../classcaffe_1_1InputLayer.html#a4c2028f829734a202263725d8aa41152',1,'caffe::InputLayer::Reshape()'],['../classcaffe_1_1LossLayer.html#abf00412194f5413ea9468ee44b0d986f',1,'caffe::LossLayer::Reshape()'],['../classcaffe_1_1LRNLayer.html#aa002dacb2f69d2b500227f938a957a81',1,'caffe::LRNLayer::Reshape()'],['../classcaffe_1_1LSTMUnitLayer.html#a795bd455f4635e876de32323e9cee96d',1,'caffe::LSTMUnitLayer::Reshape()'],['../classcaffe_1_1MultinomialLogisticLossLayer.html#a979be47987712c02dfb57a88b2a69f11',1,'caffe::MultinomialLogisticLossLayer::Reshape()'],['../classcaffe_1_1MVNLayer.html#a48aafabe729bb3b22171cfdbda6e6073',1,'caffe::MVNLayer::Reshape()'],['../classcaffe_1_1NeuronLayer.html#a6d0facf4a5e6f459cf1cb8b28d945790',1,'caffe::NeuronLayer::Reshape()'],['../classcaffe_1_1ParameterLayer.html#acc7cf7e2dea7e254717b13980fdf6c1a',1,'caffe::ParameterLayer::Reshape()'],['../classcaffe_1_1PoolingLayer.html#ac652e08deffb0eeb6c3113abb55eb641',1,'caffe::PoolingLayer::Reshape()'],['../classcaffe_1_1PReLULayer.html#a50ad2070e060093556d1fc12f31e33b1',1,'caffe::PReLULayer::Reshape()'],['../classcaffe_1_1PythonLayer.html#aa6597e54cd5fea5b5c7b67299b74a72c',1,'caffe::PythonLayer::Reshape()'],['../classcaffe_1_1RecurrentLayer.html#aba6011a9cbb18e38a8596aa5dbb44723',1,'caffe::RecurrentLayer::Reshape()'],['../classcaffe_1_1ReductionLayer.html#a0f6594ec41a0556e9fcfb9af0ae86c8a',1,'caffe::ReductionLayer::Reshape()'],['../classcaffe_1_1ReshapeLayer.html#a5b85ce44e23b4f958a60ff2b2c43e61f',1,'caffe::ReshapeLayer::Reshape()'],['../classcaffe_1_1ScaleLayer.html#aeafe805a68903bae9a7f2b98bf453e22',1,'caffe::ScaleLayer::Reshape()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#a305423abeea4bd1652ff7e696aaba808',1,'caffe::SigmoidCrossEntropyLossLayer::Reshape()'],['../classcaffe_1_1SilenceLayer.html#a96a47a49a103e60a681f97eff7bf42f2',1,'caffe::SilenceLayer::Reshape()'],['../classcaffe_1_1SliceLayer.html#af9fa49d54abf1cb090cfc772eb4acc4d',1,'caffe::SliceLayer::Reshape()'],['../classcaffe_1_1SoftmaxLayer.html#a756fd5ad3af07d019b5f2247f38b4496',1,'caffe::SoftmaxLayer::Reshape()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a2821b89b0f46a5e2ddaccb2708ab237b',1,'caffe::SoftmaxWithLossLayer::Reshape()'],['../classcaffe_1_1SplitLayer.html#a4e978965461dedcc2fbb905e4910c0b1',1,'caffe::SplitLayer::Reshape()'],['../classcaffe_1_1SPPLayer.html#a3ba65e459c1bde4f772d545efb43a2f2',1,'caffe::SPPLayer::Reshape()'],['../classcaffe_1_1TileLayer.html#a593f5b8342f1b092633d2a1f7e4a6843',1,'caffe::TileLayer::Reshape()'],['../classcaffe_1_1Net.html#a8417af82aa83be45d39aab735bdead1d',1,'caffe::Net::Reshape()']]], ['reshapelayer',['ReshapeLayer',['../classcaffe_1_1ReshapeLayer.html',1,'caffe']]], ['rmspropsolver',['RMSPropSolver',['../classcaffe_1_1RMSPropSolver.html',1,'caffe']]], diff --git a/doxygen/search/classes_0.html b/doxygen/search/classes_0.html index 2e45b2cb48c..1c3e406ac8e 100644 --- a/doxygen/search/classes_0.html +++ b/doxygen/search/classes_0.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/classes_1.html b/doxygen/search/classes_1.html index 5f1bc63bb04..a8e70695087 100644 --- a/doxygen/search/classes_1.html +++ b/doxygen/search/classes_1.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/classes_10.html b/doxygen/search/classes_10.html index d9261c94140..c1a9355706b 100644 --- a/doxygen/search/classes_10.html +++ b/doxygen/search/classes_10.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/classes_11.html b/doxygen/search/classes_11.html index 1169783c967..2df8ed332f8 100644 --- a/doxygen/search/classes_11.html +++ b/doxygen/search/classes_11.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/classes_12.html b/doxygen/search/classes_12.html index 179dc81c938..94132451f09 100644 --- a/doxygen/search/classes_12.html +++ b/doxygen/search/classes_12.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/classes_13.html b/doxygen/search/classes_13.html deleted file mode 100644 index 0cddd5f06e9..00000000000 --- a/doxygen/search/classes_13.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
        -
        Loading...
        -
        - -
        Searching...
        -
        No Matches
        - -
        - - diff --git a/doxygen/search/classes_13.js b/doxygen/search/classes_13.js deleted file mode 100644 index c34a910afad..00000000000 --- a/doxygen/search/classes_13.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['xavierfiller',['XavierFiller',['../classcaffe_1_1XavierFiller.html',1,'caffe']]] -]; diff --git a/doxygen/search/classes_2.html b/doxygen/search/classes_2.html index e3a6f9c0142..5c09c9691eb 100644 --- a/doxygen/search/classes_2.html +++ b/doxygen/search/classes_2.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/classes_2.js b/doxygen/search/classes_2.js index e92a90b4457..c4fae61a2c7 100644 --- a/doxygen/search/classes_2.js +++ b/doxygen/search/classes_2.js @@ -1,8 +1,7 @@ var searchData= [ ['caffe',['Caffe',['../classcaffe_1_1Caffe.html',1,'caffe']]], - ['callback',['Callback',['../classcaffe_1_1Net_1_1Callback.html',1,'caffe::Net']]], - ['callback',['Callback',['../classcaffe_1_1Solver_1_1Callback.html',1,'caffe::Solver']]], + ['callback',['Callback',['../classcaffe_1_1Net_1_1Callback.html',1,'caffe::Net< Dtype >::Callback'],['../classcaffe_1_1Solver_1_1Callback.html',1,'caffe::Solver< Dtype >::Callback']]], ['concatlayer',['ConcatLayer',['../classcaffe_1_1ConcatLayer.html',1,'caffe']]], ['constantfiller',['ConstantFiller',['../classcaffe_1_1ConstantFiller.html',1,'caffe']]], ['contrastivelosslayer',['ContrastiveLossLayer',['../classcaffe_1_1ContrastiveLossLayer.html',1,'caffe']]], diff --git a/doxygen/search/classes_3.html b/doxygen/search/classes_3.html index ed4b46eaf1e..5faaeba81ce 100644 --- a/doxygen/search/classes_3.html +++ b/doxygen/search/classes_3.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/classes_4.html b/doxygen/search/classes_4.html index b1f5f93aeeb..b3f11bc787e 100644 --- a/doxygen/search/classes_4.html +++ b/doxygen/search/classes_4.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/classes_5.html b/doxygen/search/classes_5.html index 7f718b394b7..952ace6f49a 100644 --- a/doxygen/search/classes_5.html +++ b/doxygen/search/classes_5.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/classes_6.html b/doxygen/search/classes_6.html index 1c02825c67e..75eef9f4290 100644 --- a/doxygen/search/classes_6.html +++ b/doxygen/search/classes_6.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/classes_7.html b/doxygen/search/classes_7.html index 2af8b706d90..745f5f282ec 100644 --- a/doxygen/search/classes_7.html +++ b/doxygen/search/classes_7.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/classes_8.html b/doxygen/search/classes_8.html index a57aeaeca03..5a443d9d55a 100644 --- a/doxygen/search/classes_8.html +++ b/doxygen/search/classes_8.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/classes_9.html b/doxygen/search/classes_9.html index 59ec04485b7..9cb55be44ff 100644 --- a/doxygen/search/classes_9.html +++ b/doxygen/search/classes_9.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/classes_a.html b/doxygen/search/classes_a.html index aaef5a5326b..54940d78fd7 100644 --- a/doxygen/search/classes_a.html +++ b/doxygen/search/classes_a.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/classes_b.html b/doxygen/search/classes_b.html index e0416e61471..6071ae049f8 100644 --- a/doxygen/search/classes_b.html +++ b/doxygen/search/classes_b.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/classes_c.html b/doxygen/search/classes_c.html index 88047d3a32e..6cf1d00807f 100644 --- a/doxygen/search/classes_c.html +++ b/doxygen/search/classes_c.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/classes_d.html b/doxygen/search/classes_d.html index f3a3ef9ef17..d4a7ed7adeb 100644 --- a/doxygen/search/classes_d.html +++ b/doxygen/search/classes_d.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/classes_e.html b/doxygen/search/classes_e.html index 5e33956ce5e..9a9f48c362c 100644 --- a/doxygen/search/classes_e.html +++ b/doxygen/search/classes_e.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/classes_f.html b/doxygen/search/classes_f.html index 3ce6361630d..a128d60beba 100644 --- a/doxygen/search/classes_f.html +++ b/doxygen/search/classes_f.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/functions_0.html b/doxygen/search/functions_0.html index 03cae5d9b90..4e6d87d152c 100644 --- a/doxygen/search/functions_0.html +++ b/doxygen/search/functions_0.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/functions_1.html b/doxygen/search/functions_1.html index 5d7a2e30052..b343e2db57b 100644 --- a/doxygen/search/functions_1.html +++ b/doxygen/search/functions_1.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/functions_10.html b/doxygen/search/functions_10.html index c78227c88ac..72bc1ea1f55 100644 --- a/doxygen/search/functions_10.html +++ b/doxygen/search/functions_10.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/functions_11.html b/doxygen/search/functions_11.html index 3ab653ee73c..6948a615568 100644 --- a/doxygen/search/functions_11.html +++ b/doxygen/search/functions_11.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/functions_12.html b/doxygen/search/functions_12.html index cacca935a0e..3df84892448 100644 --- a/doxygen/search/functions_12.html +++ b/doxygen/search/functions_12.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/functions_2.html b/doxygen/search/functions_2.html index c21af161378..ecce2f31865 100644 --- a/doxygen/search/functions_2.html +++ b/doxygen/search/functions_2.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/functions_3.html b/doxygen/search/functions_3.html index e6f4744248b..15f06abdc22 100644 --- a/doxygen/search/functions_3.html +++ b/doxygen/search/functions_3.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/functions_4.html b/doxygen/search/functions_4.html index 9ae34ff2e68..8985ff27876 100644 --- a/doxygen/search/functions_4.html +++ b/doxygen/search/functions_4.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/functions_4.js b/doxygen/search/functions_4.js index 8e7e049ad85..bddb341ba1f 100644 --- a/doxygen/search/functions_4.js +++ b/doxygen/search/functions_4.js @@ -3,6 +3,6 @@ var searchData= ['elulayer',['ELULayer',['../classcaffe_1_1ELULayer.html#af0b475c3d3b68f6daf7e2edcb7d5b97a',1,'caffe::ELULayer']]], ['equalnumbottomtopblobs',['EqualNumBottomTopBlobs',['../classcaffe_1_1Layer.html#af452a938bc7596f9b5e9900c8dc4ab3d',1,'caffe::Layer::EqualNumBottomTopBlobs()'],['../classcaffe_1_1BaseConvolutionLayer.html#ad8e839460bf52abe3df2008b99a1810d',1,'caffe::BaseConvolutionLayer::EqualNumBottomTopBlobs()']]], ['exactnumbottomblobs',['ExactNumBottomBlobs',['../classcaffe_1_1Layer.html#a8e5ee0494d85f5f55fc4396537cbc60f',1,'caffe::Layer::ExactNumBottomBlobs()'],['../classcaffe_1_1AbsValLayer.html#acac806dbc6d3fa3dd7daae00caabd731',1,'caffe::AbsValLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1AccuracyLayer.html#afb0d3db8e4a18bec0e05d54d11453ef1',1,'caffe::AccuracyLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1ArgMaxLayer.html#a786fb4163cd0a31a564100ce7e4b74b2',1,'caffe::ArgMaxLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1BatchNormLayer.html#a5b87980f25eea544ebff916586c870e6',1,'caffe::BatchNormLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1BatchReindexLayer.html#a4120d2fd610655c7ad3d846637564bc6',1,'caffe::BatchReindexLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1ContrastiveLossLayer.html#aa6f3ad6918e64ffa1828e821accf25e9',1,'caffe::ContrastiveLossLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1CropLayer.html#ac6386917437ef54003bb7f8c2618f5fe',1,'caffe::CropLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1DataLayer.html#a2b6fa99ededf0863d8bab4a7a46addae',1,'caffe::DataLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1DummyDataLayer.html#a73101a8ace6de2b179e36c13be17cb17',1,'caffe::DummyDataLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1EmbedLayer.html#a0634500a12e1d2299b7c8556976e4529',1,'caffe::EmbedLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1FlattenLayer.html#a0b0f583d8952d7cd45cbf4bae2a38548',1,'caffe::FlattenLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1HDF5DataLayer.html#a4eb72974cea32c84acb6b8012a0d326b',1,'caffe::HDF5DataLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1HDF5OutputLayer.html#a92fb5561414d7e8b8845b0279b1ee847',1,'caffe::HDF5OutputLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1Im2colLayer.html#a35772d667af49afe707c7b1db881c573',1,'caffe::Im2colLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1ImageDataLayer.html#a6776c86faf14e35ae7be9848c7012aa5',1,'caffe::ImageDataLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1InfogainLossLayer.html#aa03732f381764180748479c83b289869',1,'caffe::InfogainLossLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1InnerProductLayer.html#a5afdeb6b448b2f7d0637afa554381500',1,'caffe::InnerProductLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1InputLayer.html#ac4c1f2f0444a103727d793a6ae410e67',1,'caffe::InputLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1LossLayer.html#af1620064baefb711e2c767bdc92b6fb1',1,'caffe::LossLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1LRNLayer.html#a32be44f9f361d29f05261bd174d92321',1,'caffe::LRNLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1LSTMUnitLayer.html#a087f5f5b0e6c50d98e7a7d04aa35f1b9',1,'caffe::LSTMUnitLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1MemoryDataLayer.html#a05a867526de7e0c6ec4851a97f52a47b',1,'caffe::MemoryDataLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1MVNLayer.html#afd9b078a1bb48de9b91f3766edbbf058',1,'caffe::MVNLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1NeuronLayer.html#abb6c0e6acd2863baf47d6e6acda6f55f',1,'caffe::NeuronLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1ParameterLayer.html#a0acd33d14dd208c5a439940c50c6d3d3',1,'caffe::ParameterLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1PoolingLayer.html#a07dc8b1c3bfa3a997dd86b4e53f54019',1,'caffe::PoolingLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1ReductionLayer.html#a64694af2e56723590072cac88bf825c7',1,'caffe::ReductionLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1ReshapeLayer.html#ad97ea6043b01351e85b39b512ae0e489',1,'caffe::ReshapeLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1SliceLayer.html#abfc6e86b0b22c156ddc350168cd7757b',1,'caffe::SliceLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1SoftmaxLayer.html#afe44488dde78e6bcf6d4bdad97ee4986',1,'caffe::SoftmaxLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1SplitLayer.html#a8ff310ac37e1e79ce6ef8fbc95be0cd9',1,'caffe::SplitLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1SPPLayer.html#a0fcc7996823cba1a468e82b3f9058ff0',1,'caffe::SPPLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1TileLayer.html#ac7e0da0e543f134e04b00d8625132b71',1,'caffe::TileLayer::ExactNumBottomBlobs()'],['../classcaffe_1_1WindowDataLayer.html#ac982c8170a7f899366321412a7bb91d7',1,'caffe::WindowDataLayer::ExactNumBottomBlobs()']]], - ['exactnumtopblobs',['ExactNumTopBlobs',['../classcaffe_1_1Layer.html#a64e2ca72c719e4b2f1f9216ccfb0d37f',1,'caffe::Layer::ExactNumTopBlobs()'],['../classcaffe_1_1AbsValLayer.html#aaf18bf4b77994475e8b55e5cefaa654a',1,'caffe::AbsValLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ArgMaxLayer.html#a45e9c6e7b572b915be8731fcb6403695',1,'caffe::ArgMaxLayer::ExactNumTopBlobs()'],['../classcaffe_1_1BatchNormLayer.html#ab8575decdd0c5c42e24b9c3424f708ad',1,'caffe::BatchNormLayer::ExactNumTopBlobs()'],['../classcaffe_1_1BatchReindexLayer.html#a7d5c537334359c2a83cce489fb534342',1,'caffe::BatchReindexLayer::ExactNumTopBlobs()'],['../classcaffe_1_1BiasLayer.html#a9552dc137a5bcbdd17bdb3321d678595',1,'caffe::BiasLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ConcatLayer.html#a0f19a4cac8676927f9c83010957a2921',1,'caffe::ConcatLayer::ExactNumTopBlobs()'],['../classcaffe_1_1CropLayer.html#a7e4a9aa634577308bc189adcf0ac22ed',1,'caffe::CropLayer::ExactNumTopBlobs()'],['../classcaffe_1_1EltwiseLayer.html#a60ae4a38cade1cc7f6111e51cabb441b',1,'caffe::EltwiseLayer::ExactNumTopBlobs()'],['../classcaffe_1_1EmbedLayer.html#af02f4561fa25a979e523aae851bed39d',1,'caffe::EmbedLayer::ExactNumTopBlobs()'],['../classcaffe_1_1FlattenLayer.html#a09d5ccd980598cce0472b3bd66316c08',1,'caffe::FlattenLayer::ExactNumTopBlobs()'],['../classcaffe_1_1HDF5OutputLayer.html#ad11b8da0a6217a0f9a63789b360b1c99',1,'caffe::HDF5OutputLayer::ExactNumTopBlobs()'],['../classcaffe_1_1Im2colLayer.html#ab2cf1f7dd41b801ed32471ec492d423c',1,'caffe::Im2colLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ImageDataLayer.html#aa9182d46877b8514fca86e3588249567',1,'caffe::ImageDataLayer::ExactNumTopBlobs()'],['../classcaffe_1_1InnerProductLayer.html#a652d8a5b07b72938a81f50305c1a8ee1',1,'caffe::InnerProductLayer::ExactNumTopBlobs()'],['../classcaffe_1_1LossLayer.html#aa5d5ab714a14082f5343dc9c49025b23',1,'caffe::LossLayer::ExactNumTopBlobs()'],['../classcaffe_1_1LRNLayer.html#ac0ee88b119c38749c50e914521cdc148',1,'caffe::LRNLayer::ExactNumTopBlobs()'],['../classcaffe_1_1LSTMUnitLayer.html#a5f56fd304b6581697cbf309ebb8bc9b7',1,'caffe::LSTMUnitLayer::ExactNumTopBlobs()'],['../classcaffe_1_1MemoryDataLayer.html#af714b4cbc022be1592ad26c300b63ae4',1,'caffe::MemoryDataLayer::ExactNumTopBlobs()'],['../classcaffe_1_1MVNLayer.html#ae10d9ef135adf3cd25e86ce06188c814',1,'caffe::MVNLayer::ExactNumTopBlobs()'],['../classcaffe_1_1NeuronLayer.html#a47ac5e7208e4b14ad1e4040a621dbfbc',1,'caffe::NeuronLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ParameterLayer.html#aeb70ea5cec478f098259356690b01c9b',1,'caffe::ParameterLayer::ExactNumTopBlobs()'],['../classcaffe_1_1RecurrentLayer.html#a4cb9032f0942c0fef5f6c7094c7b2ab8',1,'caffe::RecurrentLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ReductionLayer.html#a14224774af732030c5f1c8a3d79e1fc3',1,'caffe::ReductionLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ReshapeLayer.html#a3318c2404c6072ba07178b48d39ef0f5',1,'caffe::ReshapeLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ScaleLayer.html#aeffb8fcfc522f7365c23b0e6ae5c232e',1,'caffe::ScaleLayer::ExactNumTopBlobs()'],['../classcaffe_1_1SilenceLayer.html#a1e072cbda98dbc57001ce92432b045b8',1,'caffe::SilenceLayer::ExactNumTopBlobs()'],['../classcaffe_1_1SoftmaxLayer.html#a6bc4748c20e0940e5367ed4d50f4a11b',1,'caffe::SoftmaxLayer::ExactNumTopBlobs()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a9035d000b2ce51a973f255a5eb2df8e3',1,'caffe::SoftmaxWithLossLayer::ExactNumTopBlobs()'],['../classcaffe_1_1SPPLayer.html#a345f640e6c1d3e9ee929d706b68300e9',1,'caffe::SPPLayer::ExactNumTopBlobs()'],['../classcaffe_1_1TileLayer.html#a1040cc3b4fb028d54f67a685513d745b',1,'caffe::TileLayer::ExactNumTopBlobs()'],['../classcaffe_1_1WindowDataLayer.html#a7bd9264758f462b3392d2eedec8b1c99',1,'caffe::WindowDataLayer::ExactNumTopBlobs()']]], + ['exactnumtopblobs',['ExactNumTopBlobs',['../classcaffe_1_1Layer.html#a64e2ca72c719e4b2f1f9216ccfb0d37f',1,'caffe::Layer::ExactNumTopBlobs()'],['../classcaffe_1_1AbsValLayer.html#aaf18bf4b77994475e8b55e5cefaa654a',1,'caffe::AbsValLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ArgMaxLayer.html#a45e9c6e7b572b915be8731fcb6403695',1,'caffe::ArgMaxLayer::ExactNumTopBlobs()'],['../classcaffe_1_1BatchNormLayer.html#ab8575decdd0c5c42e24b9c3424f708ad',1,'caffe::BatchNormLayer::ExactNumTopBlobs()'],['../classcaffe_1_1BatchReindexLayer.html#a7d5c537334359c2a83cce489fb534342',1,'caffe::BatchReindexLayer::ExactNumTopBlobs()'],['../classcaffe_1_1BiasLayer.html#a9552dc137a5bcbdd17bdb3321d678595',1,'caffe::BiasLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ConcatLayer.html#a0f19a4cac8676927f9c83010957a2921',1,'caffe::ConcatLayer::ExactNumTopBlobs()'],['../classcaffe_1_1CropLayer.html#a7e4a9aa634577308bc189adcf0ac22ed',1,'caffe::CropLayer::ExactNumTopBlobs()'],['../classcaffe_1_1EltwiseLayer.html#a60ae4a38cade1cc7f6111e51cabb441b',1,'caffe::EltwiseLayer::ExactNumTopBlobs()'],['../classcaffe_1_1EmbedLayer.html#af02f4561fa25a979e523aae851bed39d',1,'caffe::EmbedLayer::ExactNumTopBlobs()'],['../classcaffe_1_1FlattenLayer.html#a09d5ccd980598cce0472b3bd66316c08',1,'caffe::FlattenLayer::ExactNumTopBlobs()'],['../classcaffe_1_1HDF5OutputLayer.html#ad11b8da0a6217a0f9a63789b360b1c99',1,'caffe::HDF5OutputLayer::ExactNumTopBlobs()'],['../classcaffe_1_1Im2colLayer.html#ab2cf1f7dd41b801ed32471ec492d423c',1,'caffe::Im2colLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ImageDataLayer.html#aa9182d46877b8514fca86e3588249567',1,'caffe::ImageDataLayer::ExactNumTopBlobs()'],['../classcaffe_1_1InfogainLossLayer.html#aaf55e75f2296586b1fee0175e2d72fbb',1,'caffe::InfogainLossLayer::ExactNumTopBlobs()'],['../classcaffe_1_1InnerProductLayer.html#a652d8a5b07b72938a81f50305c1a8ee1',1,'caffe::InnerProductLayer::ExactNumTopBlobs()'],['../classcaffe_1_1LossLayer.html#aa5d5ab714a14082f5343dc9c49025b23',1,'caffe::LossLayer::ExactNumTopBlobs()'],['../classcaffe_1_1LRNLayer.html#ac0ee88b119c38749c50e914521cdc148',1,'caffe::LRNLayer::ExactNumTopBlobs()'],['../classcaffe_1_1LSTMUnitLayer.html#a5f56fd304b6581697cbf309ebb8bc9b7',1,'caffe::LSTMUnitLayer::ExactNumTopBlobs()'],['../classcaffe_1_1MemoryDataLayer.html#af714b4cbc022be1592ad26c300b63ae4',1,'caffe::MemoryDataLayer::ExactNumTopBlobs()'],['../classcaffe_1_1MVNLayer.html#ae10d9ef135adf3cd25e86ce06188c814',1,'caffe::MVNLayer::ExactNumTopBlobs()'],['../classcaffe_1_1NeuronLayer.html#a47ac5e7208e4b14ad1e4040a621dbfbc',1,'caffe::NeuronLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ParameterLayer.html#aeb70ea5cec478f098259356690b01c9b',1,'caffe::ParameterLayer::ExactNumTopBlobs()'],['../classcaffe_1_1RecurrentLayer.html#a4cb9032f0942c0fef5f6c7094c7b2ab8',1,'caffe::RecurrentLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ReductionLayer.html#a14224774af732030c5f1c8a3d79e1fc3',1,'caffe::ReductionLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ReshapeLayer.html#a3318c2404c6072ba07178b48d39ef0f5',1,'caffe::ReshapeLayer::ExactNumTopBlobs()'],['../classcaffe_1_1ScaleLayer.html#aeffb8fcfc522f7365c23b0e6ae5c232e',1,'caffe::ScaleLayer::ExactNumTopBlobs()'],['../classcaffe_1_1SilenceLayer.html#a1e072cbda98dbc57001ce92432b045b8',1,'caffe::SilenceLayer::ExactNumTopBlobs()'],['../classcaffe_1_1SoftmaxLayer.html#a6bc4748c20e0940e5367ed4d50f4a11b',1,'caffe::SoftmaxLayer::ExactNumTopBlobs()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a9035d000b2ce51a973f255a5eb2df8e3',1,'caffe::SoftmaxWithLossLayer::ExactNumTopBlobs()'],['../classcaffe_1_1SPPLayer.html#a345f640e6c1d3e9ee929d706b68300e9',1,'caffe::SPPLayer::ExactNumTopBlobs()'],['../classcaffe_1_1TileLayer.html#a1040cc3b4fb028d54f67a685513d745b',1,'caffe::TileLayer::ExactNumTopBlobs()'],['../classcaffe_1_1WindowDataLayer.html#a7bd9264758f462b3392d2eedec8b1c99',1,'caffe::WindowDataLayer::ExactNumTopBlobs()']]], ['explayer',['ExpLayer',['../classcaffe_1_1ExpLayer.html#a87a0fae261ad3d2c8947f463686a6de0',1,'caffe::ExpLayer']]] ]; diff --git a/doxygen/search/functions_5.html b/doxygen/search/functions_5.html index 54f53d07228..03149184b8b 100644 --- a/doxygen/search/functions_5.html +++ b/doxygen/search/functions_5.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/functions_6.html b/doxygen/search/functions_6.html index c7bc6fbc7a6..c50612362cd 100644 --- a/doxygen/search/functions_6.html +++ b/doxygen/search/functions_6.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/functions_6.js b/doxygen/search/functions_6.js index 54997079050..c6c06770555 100644 --- a/doxygen/search/functions_6.js +++ b/doxygen/search/functions_6.js @@ -1,5 +1,5 @@ var searchData= [ - ['get_5fnormalizer',['get_normalizer',['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#af8ce9b84227c0be01d4a1cc248a7aa52',1,'caffe::SigmoidCrossEntropyLossLayer::get_normalizer()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#aef4567bafcd7b1665f2a2cc71ea02ff4',1,'caffe::SoftmaxWithLossLayer::get_normalizer()']]], + ['get_5fnormalizer',['get_normalizer',['../classcaffe_1_1InfogainLossLayer.html#a0e5e9667b19fb88ece7298e3e83d2fdb',1,'caffe::InfogainLossLayer::get_normalizer()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#af8ce9b84227c0be01d4a1cc248a7aa52',1,'caffe::SigmoidCrossEntropyLossLayer::get_normalizer()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#aef4567bafcd7b1665f2a2cc71ea02ff4',1,'caffe::SoftmaxWithLossLayer::get_normalizer()']]], ['getfiller',['GetFiller',['../namespacecaffe.html#a819e1b2fe30b54d6df0fd88e646ec126',1,'caffe']]] ]; diff --git a/doxygen/search/functions_7.html b/doxygen/search/functions_7.html index 7f10e2bd1a3..83a7b84b775 100644 --- a/doxygen/search/functions_7.html +++ b/doxygen/search/functions_7.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/functions_8.html b/doxygen/search/functions_8.html index 347734a8342..b55f0e65f43 100644 --- a/doxygen/search/functions_8.html +++ b/doxygen/search/functions_8.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/functions_9.html b/doxygen/search/functions_9.html index 6999e7e0071..c73f07bb52a 100644 --- a/doxygen/search/functions_9.html +++ b/doxygen/search/functions_9.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/functions_a.html b/doxygen/search/functions_a.html index 8ca8f111ab6..f10ad638c38 100644 --- a/doxygen/search/functions_a.html +++ b/doxygen/search/functions_a.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/functions_a.js b/doxygen/search/functions_a.js index 0e356c7b36e..77f0253c719 100644 --- a/doxygen/search/functions_a.js +++ b/doxygen/search/functions_a.js @@ -1,7 +1,7 @@ var searchData= [ ['maxbottomblobs',['MaxBottomBlobs',['../classcaffe_1_1Layer.html#af8bdc989053e0363ab032026b46de7c3',1,'caffe::Layer::MaxBottomBlobs()'],['../classcaffe_1_1BiasLayer.html#abdb89e3bc940f999d1d4da83de90a97c',1,'caffe::BiasLayer::MaxBottomBlobs()'],['../classcaffe_1_1InfogainLossLayer.html#a9b2372959a16da1e80ae7a98b7689a4c',1,'caffe::InfogainLossLayer::MaxBottomBlobs()'],['../classcaffe_1_1RecurrentLayer.html#a983e1ead91884f9d2049a3000254961c',1,'caffe::RecurrentLayer::MaxBottomBlobs()'],['../classcaffe_1_1ScaleLayer.html#a7867d035776f78fe486ce633ec0520ad',1,'caffe::ScaleLayer::MaxBottomBlobs()']]], - ['maxtopblobs',['MaxTopBlobs',['../classcaffe_1_1Layer.html#ac6c03df0b6e40e776c94001e19994a2e',1,'caffe::Layer::MaxTopBlobs()'],['../classcaffe_1_1AccuracyLayer.html#a7591ae6d50dd7d96b91241b5b0368997',1,'caffe::AccuracyLayer::MaxTopBlobs()'],['../classcaffe_1_1DataLayer.html#ac47e9f3bff3db9d7364f6c392427745c',1,'caffe::DataLayer::MaxTopBlobs()'],['../classcaffe_1_1PoolingLayer.html#a76539d04ef7252c12e932ea703f8246b',1,'caffe::PoolingLayer::MaxTopBlobs()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a5a0b4c02fe76ae9087cd8b1b9edd9910',1,'caffe::SoftmaxWithLossLayer::MaxTopBlobs()']]], + ['maxtopblobs',['MaxTopBlobs',['../classcaffe_1_1Layer.html#ac6c03df0b6e40e776c94001e19994a2e',1,'caffe::Layer::MaxTopBlobs()'],['../classcaffe_1_1AccuracyLayer.html#a7591ae6d50dd7d96b91241b5b0368997',1,'caffe::AccuracyLayer::MaxTopBlobs()'],['../classcaffe_1_1DataLayer.html#ac47e9f3bff3db9d7364f6c392427745c',1,'caffe::DataLayer::MaxTopBlobs()'],['../classcaffe_1_1InfogainLossLayer.html#a93019601c6256354fd4758da91d9311f',1,'caffe::InfogainLossLayer::MaxTopBlobs()'],['../classcaffe_1_1PoolingLayer.html#a76539d04ef7252c12e932ea703f8246b',1,'caffe::PoolingLayer::MaxTopBlobs()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a5a0b4c02fe76ae9087cd8b1b9edd9910',1,'caffe::SoftmaxWithLossLayer::MaxTopBlobs()']]], ['minbottomblobs',['MinBottomBlobs',['../classcaffe_1_1Layer.html#aca3cb2bafaefda5d4760aaebd0b72def',1,'caffe::Layer::MinBottomBlobs()'],['../classcaffe_1_1BaseConvolutionLayer.html#aa3d861ed15f6e41c6257d6a10defa7eb',1,'caffe::BaseConvolutionLayer::MinBottomBlobs()'],['../classcaffe_1_1BiasLayer.html#ab75a2e05bbb1eb37bed5995288143f67',1,'caffe::BiasLayer::MinBottomBlobs()'],['../classcaffe_1_1ConcatLayer.html#a314de9eb00a296ffd3cf84120bd1601e',1,'caffe::ConcatLayer::MinBottomBlobs()'],['../classcaffe_1_1EltwiseLayer.html#a802079d89e0f007c15b39e0c1fb0d275',1,'caffe::EltwiseLayer::MinBottomBlobs()'],['../classcaffe_1_1FilterLayer.html#af4c97961e859653ef0fa21d796af0259',1,'caffe::FilterLayer::MinBottomBlobs()'],['../classcaffe_1_1InfogainLossLayer.html#ad8a1ef702a695e379e5d0450369b4a0c',1,'caffe::InfogainLossLayer::MinBottomBlobs()'],['../classcaffe_1_1RecurrentLayer.html#ac31b705bc02d333ae768f7c2184fbfae',1,'caffe::RecurrentLayer::MinBottomBlobs()'],['../classcaffe_1_1ScaleLayer.html#a12c10840f0fc3327854864a12054beb2',1,'caffe::ScaleLayer::MinBottomBlobs()'],['../classcaffe_1_1SilenceLayer.html#af916fa4138f5d8761ec4490588eeccd1',1,'caffe::SilenceLayer::MinBottomBlobs()']]], - ['mintopblobs',['MinTopBlobs',['../classcaffe_1_1Layer.html#ab9e4c8d642e413948b131d851a8462a4',1,'caffe::Layer::MinTopBlobs()'],['../classcaffe_1_1AccuracyLayer.html#a568dd59acff7a172fa614c88ac56aff7',1,'caffe::AccuracyLayer::MinTopBlobs()'],['../classcaffe_1_1BaseConvolutionLayer.html#ae4092cf1b48e18e5d82cd714ae6e8547',1,'caffe::BaseConvolutionLayer::MinTopBlobs()'],['../classcaffe_1_1DataLayer.html#ab0c5a7504085a6699272cdcfa8611887',1,'caffe::DataLayer::MinTopBlobs()'],['../classcaffe_1_1DummyDataLayer.html#a2a63e36dd6b39287981d0bee466975aa',1,'caffe::DummyDataLayer::MinTopBlobs()'],['../classcaffe_1_1FilterLayer.html#af8c6eb9b1986e03dd14a907b5caa1324',1,'caffe::FilterLayer::MinTopBlobs()'],['../classcaffe_1_1HDF5DataLayer.html#a6833e081c29049b1392eb98fb4451697',1,'caffe::HDF5DataLayer::MinTopBlobs()'],['../classcaffe_1_1InputLayer.html#a5d0512129e9c2955dde297a2f15595d2',1,'caffe::InputLayer::MinTopBlobs()'],['../classcaffe_1_1PoolingLayer.html#abb61ab67b2bd809c5633a2722b83feeb',1,'caffe::PoolingLayer::MinTopBlobs()'],['../classcaffe_1_1SliceLayer.html#a2673c06234a234362c1e2592880567a1',1,'caffe::SliceLayer::MinTopBlobs()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a9969336702fb1bbf31750629fb38fb45',1,'caffe::SoftmaxWithLossLayer::MinTopBlobs()'],['../classcaffe_1_1SplitLayer.html#a48dafac272f2f098798e3caa09afbabe',1,'caffe::SplitLayer::MinTopBlobs()']]] + ['mintopblobs',['MinTopBlobs',['../classcaffe_1_1Layer.html#ab9e4c8d642e413948b131d851a8462a4',1,'caffe::Layer::MinTopBlobs()'],['../classcaffe_1_1AccuracyLayer.html#a568dd59acff7a172fa614c88ac56aff7',1,'caffe::AccuracyLayer::MinTopBlobs()'],['../classcaffe_1_1BaseConvolutionLayer.html#ae4092cf1b48e18e5d82cd714ae6e8547',1,'caffe::BaseConvolutionLayer::MinTopBlobs()'],['../classcaffe_1_1DataLayer.html#ab0c5a7504085a6699272cdcfa8611887',1,'caffe::DataLayer::MinTopBlobs()'],['../classcaffe_1_1DummyDataLayer.html#a2a63e36dd6b39287981d0bee466975aa',1,'caffe::DummyDataLayer::MinTopBlobs()'],['../classcaffe_1_1FilterLayer.html#af8c6eb9b1986e03dd14a907b5caa1324',1,'caffe::FilterLayer::MinTopBlobs()'],['../classcaffe_1_1HDF5DataLayer.html#a6833e081c29049b1392eb98fb4451697',1,'caffe::HDF5DataLayer::MinTopBlobs()'],['../classcaffe_1_1InfogainLossLayer.html#a15c4916e5de27151eb745491d8d14d41',1,'caffe::InfogainLossLayer::MinTopBlobs()'],['../classcaffe_1_1InputLayer.html#a5d0512129e9c2955dde297a2f15595d2',1,'caffe::InputLayer::MinTopBlobs()'],['../classcaffe_1_1PoolingLayer.html#abb61ab67b2bd809c5633a2722b83feeb',1,'caffe::PoolingLayer::MinTopBlobs()'],['../classcaffe_1_1SliceLayer.html#a2673c06234a234362c1e2592880567a1',1,'caffe::SliceLayer::MinTopBlobs()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a9969336702fb1bbf31750629fb38fb45',1,'caffe::SoftmaxWithLossLayer::MinTopBlobs()'],['../classcaffe_1_1SplitLayer.html#a48dafac272f2f098798e3caa09afbabe',1,'caffe::SplitLayer::MinTopBlobs()']]] ]; diff --git a/doxygen/search/functions_b.html b/doxygen/search/functions_b.html index a6efa74805f..172ea1b3136 100644 --- a/doxygen/search/functions_b.html +++ b/doxygen/search/functions_b.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/functions_c.html b/doxygen/search/functions_c.html index 65786650580..99492ba8e8b 100644 --- a/doxygen/search/functions_c.html +++ b/doxygen/search/functions_c.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/functions_d.html b/doxygen/search/functions_d.html index 9f4209c9877..5be9eccb7f9 100644 --- a/doxygen/search/functions_d.html +++ b/doxygen/search/functions_d.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/functions_e.html b/doxygen/search/functions_e.html index 3c23488430d..e256cb630f0 100644 --- a/doxygen/search/functions_e.html +++ b/doxygen/search/functions_e.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/functions_f.html b/doxygen/search/functions_f.html index 07e22cf6a9e..424126cd79a 100644 --- a/doxygen/search/functions_f.html +++ b/doxygen/search/functions_f.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/functions_f.js b/doxygen/search/functions_f.js index e64532378be..6b33ccde418 100644 --- a/doxygen/search/functions_f.js +++ b/doxygen/search/functions_f.js @@ -15,6 +15,7 @@ var searchData= ['startinternalthread',['StartInternalThread',['../classcaffe_1_1InternalThread.html#acffc1d9bc9e78f4146ba2d16f593fca7',1,'caffe::InternalThread']]], ['statemeetsrule',['StateMeetsRule',['../classcaffe_1_1Net.html#a54e8c43fe3a0cd9bbbcfdefd2b1603d2',1,'caffe::Net']]], ['stopinternalthread',['StopInternalThread',['../classcaffe_1_1InternalThread.html#ac72d8e2a23dbbe5203d5003dd67af73e',1,'caffe::InternalThread']]], + ['sum_5frows_5fof_5fh',['sum_rows_of_H',['../classcaffe_1_1InfogainLossLayer.html#a030296e6af30acd17a3cfe4463456147',1,'caffe::InfogainLossLayer']]], ['sumsq_5fdata',['sumsq_data',['../classcaffe_1_1Blob.html#a2ea640466fc339a02dabba4e8a1f0de2',1,'caffe::Blob']]], ['sumsq_5fdiff',['sumsq_diff',['../classcaffe_1_1Blob.html#a2df1894f11323235f9d7c7a1f0fe010f',1,'caffe::Blob']]] ]; diff --git a/doxygen/search/namespaces_0.html b/doxygen/search/namespaces_0.html index becd52be14b..605ac452c96 100644 --- a/doxygen/search/namespaces_0.html +++ b/doxygen/search/namespaces_0.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/namespaces_1.html b/doxygen/search/namespaces_1.html index 7c1852bd78e..f093550a670 100644 --- a/doxygen/search/namespaces_1.html +++ b/doxygen/search/namespaces_1.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/typedefs_0.html b/doxygen/search/typedefs_0.html index 3a58062eab1..05722e1ccd2 100644 --- a/doxygen/search/typedefs_0.html +++ b/doxygen/search/typedefs_0.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/variables_0.html b/doxygen/search/variables_0.html index 164aa544753..74ce8072487 100644 --- a/doxygen/search/variables_0.html +++ b/doxygen/search/variables_0.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/variables_1.html b/doxygen/search/variables_1.html index 857fbbda708..84237b6e770 100644 --- a/doxygen/search/variables_1.html +++ b/doxygen/search/variables_1.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/variables_10.html b/doxygen/search/variables_10.html index 3143a875478..548ac843ecf 100644 --- a/doxygen/search/variables_10.html +++ b/doxygen/search/variables_10.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/variables_11.html b/doxygen/search/variables_11.html index d27fb7aabc0..d5be9145130 100644 --- a/doxygen/search/variables_11.html +++ b/doxygen/search/variables_11.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/variables_2.html b/doxygen/search/variables_2.html index 35233e3cbef..5c9de1aabf5 100644 --- a/doxygen/search/variables_2.html +++ b/doxygen/search/variables_2.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/variables_3.html b/doxygen/search/variables_3.html index e45e6131da1..f95e34c60f4 100644 --- a/doxygen/search/variables_3.html +++ b/doxygen/search/variables_3.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/variables_4.html b/doxygen/search/variables_4.html index 97ec255732d..d7db285eee2 100644 --- a/doxygen/search/variables_4.html +++ b/doxygen/search/variables_4.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/variables_5.html b/doxygen/search/variables_5.html index d77fa844e5b..7bbceeb0db7 100644 --- a/doxygen/search/variables_5.html +++ b/doxygen/search/variables_5.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/variables_6.html b/doxygen/search/variables_6.html index c656bb6f758..4eb162d6742 100644 --- a/doxygen/search/variables_6.html +++ b/doxygen/search/variables_6.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/variables_6.js b/doxygen/search/variables_6.js index 558804eaf16..ef0a167a55a 100644 --- a/doxygen/search/variables_6.js +++ b/doxygen/search/variables_6.js @@ -1,5 +1,5 @@ var searchData= [ - ['has_5fignore_5flabel_5f',['has_ignore_label_',['../classcaffe_1_1AccuracyLayer.html#a4acdfaf6db79fbe1983b8439391ad15e',1,'caffe::AccuracyLayer::has_ignore_label_()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#a7e2ebf45542532439096caaec42a2a85',1,'caffe::SigmoidCrossEntropyLossLayer::has_ignore_label_()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#ad77bc32fa576ad025102d29acf79aefb',1,'caffe::SoftmaxWithLossLayer::has_ignore_label_()']]], + ['has_5fignore_5flabel_5f',['has_ignore_label_',['../classcaffe_1_1AccuracyLayer.html#a4acdfaf6db79fbe1983b8439391ad15e',1,'caffe::AccuracyLayer::has_ignore_label_()'],['../classcaffe_1_1InfogainLossLayer.html#a421720fc0f85daf8b6b7808719b1f9e8',1,'caffe::InfogainLossLayer::has_ignore_label_()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#a7e2ebf45542532439096caaec42a2a85',1,'caffe::SigmoidCrossEntropyLossLayer::has_ignore_label_()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#ad77bc32fa576ad025102d29acf79aefb',1,'caffe::SoftmaxWithLossLayer::has_ignore_label_()']]], ['hidden_5fdim_5f',['hidden_dim_',['../classcaffe_1_1LSTMUnitLayer.html#a7ffcad2a4e6ca83f03cc88dffa32b7ca',1,'caffe::LSTMUnitLayer']]] ]; diff --git a/doxygen/search/variables_7.html b/doxygen/search/variables_7.html index 8aac836390e..04088295800 100644 --- a/doxygen/search/variables_7.html +++ b/doxygen/search/variables_7.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/variables_7.js b/doxygen/search/variables_7.js index eedc8a91d7a..8f6dd52c906 100644 --- a/doxygen/search/variables_7.js +++ b/doxygen/search/variables_7.js @@ -1,5 +1,5 @@ var searchData= [ - ['ignore_5flabel_5f',['ignore_label_',['../classcaffe_1_1AccuracyLayer.html#a2b8c2d647f43ffd6aa14e81f1c5b2bde',1,'caffe::AccuracyLayer::ignore_label_()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#ab99d98ce823df6c90cd4c3cf8b0a793f',1,'caffe::SigmoidCrossEntropyLossLayer::ignore_label_()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a117d31c7ac538dd7851fb493bfc75d95',1,'caffe::SoftmaxWithLossLayer::ignore_label_()']]], + ['ignore_5flabel_5f',['ignore_label_',['../classcaffe_1_1AccuracyLayer.html#a2b8c2d647f43ffd6aa14e81f1c5b2bde',1,'caffe::AccuracyLayer::ignore_label_()'],['../classcaffe_1_1InfogainLossLayer.html#ad3f7c2efdf32f99510186495ba7c5cff',1,'caffe::InfogainLossLayer::ignore_label_()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#ab99d98ce823df6c90cd4c3cf8b0a793f',1,'caffe::SigmoidCrossEntropyLossLayer::ignore_label_()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a117d31c7ac538dd7851fb493bfc75d95',1,'caffe::SoftmaxWithLossLayer::ignore_label_()']]], ['inferred_5faxis_5f',['inferred_axis_',['../classcaffe_1_1ReshapeLayer.html#a41111d585f1a9a64fd774ca1bf7d4160',1,'caffe::ReshapeLayer']]] ]; diff --git a/doxygen/search/variables_8.html b/doxygen/search/variables_8.html index a74c6cafd65..d54d0966604 100644 --- a/doxygen/search/variables_8.html +++ b/doxygen/search/variables_8.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/variables_9.html b/doxygen/search/variables_9.html index 3968526732e..234dc60a4ac 100644 --- a/doxygen/search/variables_9.html +++ b/doxygen/search/variables_9.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/variables_a.html b/doxygen/search/variables_a.html index ce54923fe9d..0892488159c 100644 --- a/doxygen/search/variables_a.html +++ b/doxygen/search/variables_a.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/variables_b.html b/doxygen/search/variables_b.html index 4825aed0c3f..ea46965c3ad 100644 --- a/doxygen/search/variables_b.html +++ b/doxygen/search/variables_b.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/variables_b.js b/doxygen/search/variables_b.js index f0b4ba3ca59..9571695ed89 100644 --- a/doxygen/search/variables_b.js +++ b/doxygen/search/variables_b.js @@ -3,7 +3,7 @@ var searchData= ['n_5f',['N_',['../classcaffe_1_1RecurrentLayer.html#a4bf3c3a87b2a740987aec46e40717907',1,'caffe::RecurrentLayer']]], ['name_5f',['name_',['../classcaffe_1_1Net.html#aef7021f31e355ab8f8991755125f6b2b',1,'caffe::Net']]], ['net_5finput_5fblob_5findices_5f',['net_input_blob_indices_',['../classcaffe_1_1Net.html#a083a9a4c3919721c833b53d5571a7400',1,'caffe::Net']]], - ['normalization_5f',['normalization_',['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#ad4e3c7105f896bd7792e53ef3a0a2dd8',1,'caffe::SigmoidCrossEntropyLossLayer::normalization_()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a4b1fa348fc885339931f132573467b81',1,'caffe::SoftmaxWithLossLayer::normalization_()']]], + ['normalization_5f',['normalization_',['../classcaffe_1_1InfogainLossLayer.html#ab7fe88c996d31d67f5e13fc0ffc803c2',1,'caffe::InfogainLossLayer::normalization_()'],['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#ad4e3c7105f896bd7792e53ef3a0a2dd8',1,'caffe::SigmoidCrossEntropyLossLayer::normalization_()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a4b1fa348fc885339931f132573467b81',1,'caffe::SoftmaxWithLossLayer::normalization_()']]], ['num_5f',['num_',['../classcaffe_1_1ReductionLayer.html#a7c336b1554118959a13cecfd9701998e',1,'caffe::ReductionLayer']]], ['nums_5fbuffer_5f',['nums_buffer_',['../classcaffe_1_1AccuracyLayer.html#a9acf4fa826e787fe64a55bcd2c62e66c',1,'caffe::AccuracyLayer']]] ]; diff --git a/doxygen/search/variables_c.html b/doxygen/search/variables_c.html index 40b9b9a31a8..94bf1a67c14 100644 --- a/doxygen/search/variables_c.html +++ b/doxygen/search/variables_c.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/variables_d.html b/doxygen/search/variables_d.html index 125bf94a4f8..b9381e99e3c 100644 --- a/doxygen/search/variables_d.html +++ b/doxygen/search/variables_d.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/variables_d.js b/doxygen/search/variables_d.js index c7aa18e4882..37cafe2c6c2 100644 --- a/doxygen/search/variables_d.js +++ b/doxygen/search/variables_d.js @@ -11,5 +11,5 @@ var searchData= ['pooling_5foutputs_5f',['pooling_outputs_',['../classcaffe_1_1SPPLayer.html#aed09b8f30c285651c726ac7ca186f93f',1,'caffe::SPPLayer']]], ['pooling_5ftop_5fvecs_5f',['pooling_top_vecs_',['../classcaffe_1_1SPPLayer.html#a4bddcb27cbc0e9e2d153d134d5f9d760',1,'caffe::SPPLayer']]], ['power_5f',['power_',['../classcaffe_1_1PowerLayer.html#a882ce133988e4dd72a10d87fec4c04c3',1,'caffe::PowerLayer']]], - ['prob_5f',['prob_',['../classcaffe_1_1SoftmaxWithLossLayer.html#a02669f20097006452d877ea05e98b775',1,'caffe::SoftmaxWithLossLayer']]] + ['prob_5f',['prob_',['../classcaffe_1_1InfogainLossLayer.html#a4ae881c2950ca84a50b0f964797defd6',1,'caffe::InfogainLossLayer::prob_()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a02669f20097006452d877ea05e98b775',1,'caffe::SoftmaxWithLossLayer::prob_()']]] ]; diff --git a/doxygen/search/variables_e.html b/doxygen/search/variables_e.html index 3f5bb667906..375ad705d8f 100644 --- a/doxygen/search/variables_e.html +++ b/doxygen/search/variables_e.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/variables_f.html b/doxygen/search/variables_f.html index 20f5167684c..d3714186686 100644 --- a/doxygen/search/variables_f.html +++ b/doxygen/search/variables_f.html @@ -1,7 +1,7 @@ - + diff --git a/doxygen/search/variables_f.js b/doxygen/search/variables_f.js index f1a1b3e48b0..fc787393c88 100644 --- a/doxygen/search/variables_f.js +++ b/doxygen/search/variables_f.js @@ -6,9 +6,9 @@ var searchData= ['sigmoid_5flayer_5f',['sigmoid_layer_',['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#a69e0c8d2106b4b06c7c896e3069f531c',1,'caffe::SigmoidCrossEntropyLossLayer']]], ['sigmoid_5foutput_5f',['sigmoid_output_',['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#a1eb4c2e90dd4807dbfb0806a411a7bea',1,'caffe::SigmoidCrossEntropyLossLayer']]], ['sigmoid_5ftop_5fvec_5f',['sigmoid_top_vec_',['../classcaffe_1_1SigmoidCrossEntropyLossLayer.html#af6719c9685fcf910129db20cceb47be5',1,'caffe::SigmoidCrossEntropyLossLayer']]], - ['softmax_5fbottom_5fvec_5f',['softmax_bottom_vec_',['../classcaffe_1_1SoftmaxWithLossLayer.html#aa39f89b673da5e6f86c6b1f79ced1270',1,'caffe::SoftmaxWithLossLayer']]], - ['softmax_5flayer_5f',['softmax_layer_',['../classcaffe_1_1SoftmaxWithLossLayer.html#a886b9e8c044917b03e7d2d04e713a05b',1,'caffe::SoftmaxWithLossLayer']]], - ['softmax_5ftop_5fvec_5f',['softmax_top_vec_',['../classcaffe_1_1SoftmaxWithLossLayer.html#a0fd219e185b46acce8fd74cb71dabf44',1,'caffe::SoftmaxWithLossLayer']]], + ['softmax_5fbottom_5fvec_5f',['softmax_bottom_vec_',['../classcaffe_1_1InfogainLossLayer.html#ad919452e3fbb182cf56ded1e32ee001d',1,'caffe::InfogainLossLayer::softmax_bottom_vec_()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#aa39f89b673da5e6f86c6b1f79ced1270',1,'caffe::SoftmaxWithLossLayer::softmax_bottom_vec_()']]], + ['softmax_5flayer_5f',['softmax_layer_',['../classcaffe_1_1InfogainLossLayer.html#a1992ffcac64ab6d61ebce80c7d9e8405',1,'caffe::InfogainLossLayer::softmax_layer_()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a886b9e8c044917b03e7d2d04e713a05b',1,'caffe::SoftmaxWithLossLayer::softmax_layer_()']]], + ['softmax_5ftop_5fvec_5f',['softmax_top_vec_',['../classcaffe_1_1InfogainLossLayer.html#abce0ff34e57ed3660e39633535c97e41',1,'caffe::InfogainLossLayer::softmax_top_vec_()'],['../classcaffe_1_1SoftmaxWithLossLayer.html#a0fd219e185b46acce8fd74cb71dabf44',1,'caffe::SoftmaxWithLossLayer::softmax_top_vec_()']]], ['split_5flayer_5f',['split_layer_',['../classcaffe_1_1SPPLayer.html#a9312cb2eb190ce25d9269d9319cf5e4b',1,'caffe::SPPLayer']]], ['split_5ftop_5fvec_5f',['split_top_vec_',['../classcaffe_1_1SPPLayer.html#aa4c2a009d84367e72b98b3b8542e3a0f',1,'caffe::SPPLayer']]], ['static_5finput_5f',['static_input_',['../classcaffe_1_1RecurrentLayer.html#a7da45d2f90a99fe6e4250ffa6a533d97',1,'caffe::RecurrentLayer']]], diff --git a/doxygen/sgd__solvers_8hpp_source.html b/doxygen/sgd__solvers_8hpp_source.html index a253a6897b7..f0bf9914544 100644 --- a/doxygen/sgd__solvers_8hpp_source.html +++ b/doxygen/sgd__solvers_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/sgd_solvers.hpp Source File @@ -29,7 +29,7 @@ - + @@ -83,9 +83,9 @@ diff --git a/doxygen/sigmoid__cross__entropy__loss__layer_8hpp_source.html b/doxygen/sigmoid__cross__entropy__loss__layer_8hpp_source.html index 8596161c758..b7bbfb50522 100644 --- a/doxygen/sigmoid__cross__entropy__loss__layer_8hpp_source.html +++ b/doxygen/sigmoid__cross__entropy__loss__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/sigmoid_cross_entropy_loss_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -89,9 +89,9 @@ diff --git a/doxygen/sigmoid__layer_8hpp_source.html b/doxygen/sigmoid__layer_8hpp_source.html index 595b62b8918..f88af6fd374 100644 --- a/doxygen/sigmoid__layer_8hpp_source.html +++ b/doxygen/sigmoid__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/sigmoid_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -78,9 +78,9 @@ diff --git a/doxygen/signal__handler_8h_source.html b/doxygen/signal__handler_8h_source.html index 8b590ca78d0..095ef55bb6d 100644 --- a/doxygen/signal__handler_8h_source.html +++ b/doxygen/signal__handler_8h_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/util/signal_handler.h Source File @@ -29,7 +29,7 @@ - + @@ -72,9 +72,9 @@ diff --git a/doxygen/silence__layer_8hpp_source.html b/doxygen/silence__layer_8hpp_source.html index 63f871ace45..991a72570b8 100644 --- a/doxygen/silence__layer_8hpp_source.html +++ b/doxygen/silence__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/silence_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -81,9 +81,9 @@ diff --git a/doxygen/slice__layer_8hpp_source.html b/doxygen/slice__layer_8hpp_source.html index d3242ad85ad..b23b92a6f79 100644 --- a/doxygen/slice__layer_8hpp_source.html +++ b/doxygen/slice__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/slice_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -82,9 +82,9 @@ diff --git a/doxygen/softmax__layer_8hpp_source.html b/doxygen/softmax__layer_8hpp_source.html index 23cf8b7b78d..82f69a8a10a 100644 --- a/doxygen/softmax__layer_8hpp_source.html +++ b/doxygen/softmax__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/softmax_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -83,9 +83,9 @@ diff --git a/doxygen/softmax__loss__layer_8hpp_source.html b/doxygen/softmax__loss__layer_8hpp_source.html index 2ca40942144..c1f64ef3874 100644 --- a/doxygen/softmax__loss__layer_8hpp_source.html +++ b/doxygen/softmax__loss__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/softmax_loss_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -92,9 +92,9 @@ diff --git a/doxygen/solver_8hpp_source.html b/doxygen/solver_8hpp_source.html index 2c6561ded30..bee95512f38 100644 --- a/doxygen/solver_8hpp_source.html +++ b/doxygen/solver_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/solver.hpp Source File @@ -29,7 +29,7 @@ - + @@ -75,9 +75,9 @@ diff --git a/doxygen/solver__factory_8hpp_source.html b/doxygen/solver__factory_8hpp_source.html index b8b7444b649..1be98bbd362 100644 --- a/doxygen/solver__factory_8hpp_source.html +++ b/doxygen/solver__factory_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/solver_factory.hpp Source File @@ -29,7 +29,7 @@ - + @@ -73,9 +73,9 @@ diff --git a/doxygen/split__layer_8hpp_source.html b/doxygen/split__layer_8hpp_source.html index 2061361a023..6b607c5cade 100644 --- a/doxygen/split__layer_8hpp_source.html +++ b/doxygen/split__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/split_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -81,9 +81,9 @@ diff --git a/doxygen/spp__layer_8hpp_source.html b/doxygen/spp__layer_8hpp_source.html index 73e414aa2c0..a279aae34b8 100644 --- a/doxygen/spp__layer_8hpp_source.html +++ b/doxygen/spp__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/spp_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -91,9 +91,9 @@ diff --git a/doxygen/syncedmem_8hpp_source.html b/doxygen/syncedmem_8hpp_source.html index c3bb86a3f9e..479b7677607 100644 --- a/doxygen/syncedmem_8hpp_source.html +++ b/doxygen/syncedmem_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/syncedmem.hpp Source File @@ -29,7 +29,7 @@ - + @@ -71,9 +71,9 @@ diff --git a/doxygen/tanh__layer_8hpp_source.html b/doxygen/tanh__layer_8hpp_source.html index 30679c479c5..4bef98cd78e 100644 --- a/doxygen/tanh__layer_8hpp_source.html +++ b/doxygen/tanh__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/tanh_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -78,9 +78,9 @@ diff --git a/doxygen/threshold__layer_8hpp_source.html b/doxygen/threshold__layer_8hpp_source.html index 3384183e1c0..1899b5ec2f4 100644 --- a/doxygen/threshold__layer_8hpp_source.html +++ b/doxygen/threshold__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/threshold_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -79,9 +79,9 @@ diff --git a/doxygen/tile__layer_8hpp_source.html b/doxygen/tile__layer_8hpp_source.html index 8d3a7e55093..f9d60b5fc5f 100644 --- a/doxygen/tile__layer_8hpp_source.html +++ b/doxygen/tile__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/tile_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -81,9 +81,9 @@ diff --git a/doxygen/upgrade__proto_8hpp_source.html b/doxygen/upgrade__proto_8hpp_source.html index fb9d01eba24..e28d4eaef9d 100644 --- a/doxygen/upgrade__proto_8hpp_source.html +++ b/doxygen/upgrade__proto_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/util/upgrade_proto.hpp Source File @@ -29,7 +29,7 @@ - + @@ -70,9 +70,9 @@ diff --git a/doxygen/vision__layers_8hpp_source.html b/doxygen/vision__layers_8hpp_source.html deleted file mode 100644 index 872230f8bf0..00000000000 --- a/doxygen/vision__layers_8hpp_source.html +++ /dev/null @@ -1,737 +0,0 @@ - - - - - - -Caffe: include/caffe/vision_layers.hpp Source File - - - - - - - - - - -
        -
        - - - - - - -
        -
        Caffe -
        -
        -
        - - - - - - -
        -
        - - -
        - -
        - - -
        -
        -
        -
        vision_layers.hpp
        -
        -
        -
        1 #ifndef CAFFE_VISION_LAYERS_HPP_
        -
        2 #define CAFFE_VISION_LAYERS_HPP_
        -
        3 
        -
        4 #include <string>
        -
        5 #include <utility>
        -
        6 #include <vector>
        -
        7 
        -
        8 #include "caffe/blob.hpp"
        -
        9 #include "caffe/common.hpp"
        -
        10 #include "caffe/common_layers.hpp"
        -
        11 #include "caffe/data_layers.hpp"
        -
        12 #include "caffe/layer.hpp"
        -
        13 #include "caffe/loss_layers.hpp"
        -
        14 #include "caffe/neuron_layers.hpp"
        -
        15 #include "caffe/proto/caffe.pb.h"
        -
        16 
        -
        17 namespace caffe {
        -
        18 
        -
        23 template <typename Dtype>
        -
        24 class BaseConvolutionLayer : public Layer<Dtype> {
        -
        25  public:
        -
        26  explicit BaseConvolutionLayer(const LayerParameter& param)
        -
        27  : Layer<Dtype>(param) {}
        -
        28  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        -
        29  const vector<Blob<Dtype>*>& top);
        -
        30  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        -
        31  const vector<Blob<Dtype>*>& top);
        -
        32 
        -
        33  virtual inline int MinBottomBlobs() const { return 1; }
        -
        34  virtual inline int MinTopBlobs() const { return 1; }
        -
        35  virtual inline bool EqualNumBottomTopBlobs() const { return true; }
        -
        36 
        -
        37  protected:
        -
        38  // Helper functions that abstract away the column buffer and gemm arguments.
        -
        39  // The last argument in forward_cpu_gemm is so that we can skip the im2col if
        -
        40  // we just called weight_cpu_gemm with the same input.
        -
        41  void forward_cpu_gemm(const Dtype* input, const Dtype* weights,
        -
        42  Dtype* output, bool skip_im2col = false);
        -
        43  void forward_cpu_bias(Dtype* output, const Dtype* bias);
        -
        44  void backward_cpu_gemm(const Dtype* input, const Dtype* weights,
        -
        45  Dtype* output);
        -
        46  void weight_cpu_gemm(const Dtype* input, const Dtype* output, Dtype*
        -
        47  weights);
        -
        48  void backward_cpu_bias(Dtype* bias, const Dtype* input);
        -
        49 
        -
        50 #ifndef CPU_ONLY
        -
        51  void forward_gpu_gemm(const Dtype* col_input, const Dtype* weights,
        -
        52  Dtype* output, bool skip_im2col = false);
        -
        53  void forward_gpu_bias(Dtype* output, const Dtype* bias);
        -
        54  void backward_gpu_gemm(const Dtype* input, const Dtype* weights,
        -
        55  Dtype* col_output);
        -
        56  void weight_gpu_gemm(const Dtype* col_input, const Dtype* output, Dtype*
        -
        57  weights);
        -
        58  void backward_gpu_bias(Dtype* bias, const Dtype* input);
        -
        59 #endif
        -
        60 
        -
        62  inline int input_shape(int i) {
        -
        63  return (*bottom_shape_)[channel_axis_ + i];
        -
        64  }
        -
        65  // reverse_dimensions should return true iff we are implementing deconv, so
        -
        66  // that conv helpers know which dimensions are which.
        -
        67  virtual bool reverse_dimensions() = 0;
        -
        68  // Compute height_out_ and width_out_ from other parameters.
        -
        69  virtual void compute_output_shape() = 0;
        -
        70 
        - - - - -
        80  vector<int> col_buffer_shape_;
        -
        82  vector<int> output_shape_;
        -
        83  const vector<int>* bottom_shape_;
        -
        84 
        -
        85  int num_spatial_axes_;
        -
        86  int bottom_dim_;
        -
        87  int top_dim_;
        -
        88 
        -
        89  int channel_axis_;
        -
        90  int num_;
        -
        91  int channels_;
        -
        92  int group_;
        -
        93  int out_spatial_dim_;
        -
        94  int weight_offset_;
        -
        95  int num_output_;
        -
        96  bool bias_term_;
        -
        97  bool is_1x1_;
        -
        98  bool force_nd_im2col_;
        -
        99 
        -
        100  private:
        -
        101  // wrap im2col/col2im so we don't have to remember the (long) argument lists
        -
        102  inline void conv_im2col_cpu(const Dtype* data, Dtype* col_buff) {
        -
        103  if (!force_nd_im2col_ && num_spatial_axes_ == 2) {
        -
        104  im2col_cpu(data, conv_in_channels_,
        -
        105  conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2],
        -
        106  kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1],
        -
        107  pad_.cpu_data()[0], pad_.cpu_data()[1],
        -
        108  stride_.cpu_data()[0], stride_.cpu_data()[1], col_buff);
        -
        109  } else {
        -
        110  im2col_nd_cpu(data, num_spatial_axes_, conv_input_shape_.cpu_data(),
        -
        111  col_buffer_shape_.data(), kernel_shape_.cpu_data(),
        -
        112  pad_.cpu_data(), stride_.cpu_data(), col_buff);
        -
        113  }
        -
        114  }
        -
        115  inline void conv_col2im_cpu(const Dtype* col_buff, Dtype* data) {
        -
        116  if (!force_nd_im2col_ && num_spatial_axes_ == 2) {
        -
        117  col2im_cpu(col_buff, conv_in_channels_,
        -
        118  conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2],
        -
        119  kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1],
        -
        120  pad_.cpu_data()[0], pad_.cpu_data()[1],
        -
        121  stride_.cpu_data()[0], stride_.cpu_data()[1], data);
        -
        122  } else {
        -
        123  col2im_nd_cpu(col_buff, num_spatial_axes_, conv_input_shape_.cpu_data(),
        -
        124  col_buffer_shape_.data(), kernel_shape_.cpu_data(),
        -
        125  pad_.cpu_data(), stride_.cpu_data(), data);
        -
        126  }
        -
        127  }
        -
        128 #ifndef CPU_ONLY
        -
        129  inline void conv_im2col_gpu(const Dtype* data, Dtype* col_buff) {
        -
        130  if (!force_nd_im2col_ && num_spatial_axes_ == 2) {
        -
        131  im2col_gpu(data, conv_in_channels_,
        -
        132  conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2],
        -
        133  kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1],
        -
        134  pad_.cpu_data()[0], pad_.cpu_data()[1],
        -
        135  stride_.cpu_data()[0], stride_.cpu_data()[1], col_buff);
        -
        136  } else {
        -
        137  im2col_nd_gpu(data, num_spatial_axes_, num_kernels_im2col_,
        -
        138  conv_input_shape_.gpu_data(), col_buffer_.gpu_shape(),
        -
        139  kernel_shape_.gpu_data(), pad_.gpu_data(),
        -
        140  stride_.gpu_data(), col_buff);
        -
        141  }
        -
        142  }
        -
        143  inline void conv_col2im_gpu(const Dtype* col_buff, Dtype* data) {
        -
        144  if (!force_nd_im2col_ && num_spatial_axes_ == 2) {
        -
        145  col2im_gpu(col_buff, conv_in_channels_,
        -
        146  conv_input_shape_.cpu_data()[1], conv_input_shape_.cpu_data()[2],
        -
        147  kernel_shape_.cpu_data()[0], kernel_shape_.cpu_data()[1],
        -
        148  pad_.cpu_data()[0], pad_.cpu_data()[1],
        -
        149  stride_.cpu_data()[0], stride_.cpu_data()[1], data);
        -
        150  } else {
        -
        151  col2im_nd_gpu(col_buff, num_spatial_axes_, num_kernels_col2im_,
        -
        152  conv_input_shape_.gpu_data(), col_buffer_.gpu_shape(),
        -
        153  kernel_shape_.gpu_data(), pad_.gpu_data(), stride_.gpu_data(),
        -
        154  data);
        -
        155  }
        -
        156  }
        -
        157 #endif
        -
        158 
        -
        159  int num_kernels_im2col_;
        -
        160  int num_kernels_col2im_;
        -
        161  int conv_out_channels_;
        -
        162  int conv_in_channels_;
        -
        163  int conv_out_spatial_dim_;
        -
        164  int kernel_dim_;
        -
        165  int col_offset_;
        -
        166  int output_offset_;
        -
        167 
        -
        168  Blob<Dtype> col_buffer_;
        -
        169  Blob<Dtype> bias_multiplier_;
        -
        170 };
        -
        171 
        -
        188 template <typename Dtype>
        -
        189 class ConvolutionLayer : public BaseConvolutionLayer<Dtype> {
        -
        190  public:
        -
        219  explicit ConvolutionLayer(const LayerParameter& param)
        -
        220  : BaseConvolutionLayer<Dtype>(param) {}
        -
        221 
        -
        222  virtual inline const char* type() const { return "Convolution"; }
        -
        223 
        -
        224  protected:
        -
        225  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        -
        226  const vector<Blob<Dtype>*>& top);
        -
        227  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        228  const vector<Blob<Dtype>*>& top);
        -
        229  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        -
        230  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        231  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        -
        232  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        233  virtual inline bool reverse_dimensions() { return false; }
        -
        234  virtual void compute_output_shape();
        -
        235 };
        -
        236 
        -
        251 template <typename Dtype>
        - -
        253  public:
        -
        254  explicit DeconvolutionLayer(const LayerParameter& param)
        -
        255  : BaseConvolutionLayer<Dtype>(param) {}
        -
        256 
        -
        257  virtual inline const char* type() const { return "Deconvolution"; }
        -
        258 
        -
        259  protected:
        -
        260  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        -
        261  const vector<Blob<Dtype>*>& top);
        -
        262  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        263  const vector<Blob<Dtype>*>& top);
        -
        264  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        -
        265  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        266  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        -
        267  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        268  virtual inline bool reverse_dimensions() { return true; }
        -
        269  virtual void compute_output_shape();
        -
        270 };
        -
        271 
        -
        272 #ifdef USE_CUDNN
        -
        273 /*
        -
        274  * @brief cuDNN implementation of ConvolutionLayer.
        -
        275  * Fallback to ConvolutionLayer for CPU mode.
        -
        276  *
        -
        277  * cuDNN accelerates convolution through forward kernels for filtering and bias
        -
        278  * plus backward kernels for the gradient w.r.t. the filters, biases, and
        -
        279  * inputs. Caffe + cuDNN further speeds up the computation through forward
        -
        280  * parallelism across groups and backward parallelism across gradients.
        -
        281  *
        -
        282  * The CUDNN engine does not have memory overhead for matrix buffers. For many
        -
        283  * input and filter regimes the CUDNN engine is faster than the CAFFE engine,
        -
        284  * but for fully-convolutional models and large inputs the CAFFE engine can be
        -
        285  * faster as long as it fits in memory.
        -
        286 */
        -
        287 template <typename Dtype>
        -
        288 class CuDNNConvolutionLayer : public ConvolutionLayer<Dtype> {
        -
        289  public:
        -
        290  explicit CuDNNConvolutionLayer(const LayerParameter& param)
        -
        291  : ConvolutionLayer<Dtype>(param), handles_setup_(false) {}
        -
        292  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        -
        293  const vector<Blob<Dtype>*>& top);
        -
        294  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        -
        295  const vector<Blob<Dtype>*>& top);
        -
        296  virtual ~CuDNNConvolutionLayer();
        -
        297 
        -
        298  protected:
        -
        299  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        300  const vector<Blob<Dtype>*>& top);
        -
        301  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        -
        302  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        303 
        -
        304  bool handles_setup_;
        -
        305  cudnnHandle_t* handle_;
        -
        306  cudaStream_t* stream_;
        -
        307 
        -
        308  // algorithms for forward and backwards convolutions
        -
        309  cudnnConvolutionFwdAlgo_t *fwd_algo_;
        -
        310  cudnnConvolutionBwdFilterAlgo_t *bwd_filter_algo_;
        -
        311  cudnnConvolutionBwdDataAlgo_t *bwd_data_algo_;
        -
        312 
        -
        313  vector<cudnnTensorDescriptor_t> bottom_descs_, top_descs_;
        -
        314  cudnnTensorDescriptor_t bias_desc_;
        -
        315  cudnnFilterDescriptor_t filter_desc_;
        -
        316  vector<cudnnConvolutionDescriptor_t> conv_descs_;
        -
        317  int bottom_offset_, top_offset_, bias_offset_;
        -
        318 
        -
        319  size_t *workspace_fwd_sizes_;
        -
        320  size_t *workspace_bwd_data_sizes_;
        -
        321  size_t *workspace_bwd_filter_sizes_;
        -
        322  size_t workspaceSizeInBytes; // size of underlying storage
        -
        323  void *workspaceData; // underlying storage
        -
        324  void **workspace; // aliases into workspaceData
        -
        325 };
        -
        326 #endif
        -
        327 
        -
        335 template <typename Dtype>
        -
        336 class Im2colLayer : public Layer<Dtype> {
        -
        337  public:
        -
        338  explicit Im2colLayer(const LayerParameter& param)
        -
        339  : Layer<Dtype>(param) {}
        -
        340  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        -
        341  const vector<Blob<Dtype>*>& top);
        -
        342  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        -
        343  const vector<Blob<Dtype>*>& top);
        -
        344 
        -
        345  virtual inline const char* type() const { return "Im2col"; }
        -
        346  virtual inline int ExactNumBottomBlobs() const { return 1; }
        -
        347  virtual inline int ExactNumTopBlobs() const { return 1; }
        -
        348 
        -
        349  protected:
        -
        350  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        -
        351  const vector<Blob<Dtype>*>& top);
        -
        352  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        353  const vector<Blob<Dtype>*>& top);
        -
        354  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        -
        355  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        356  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        -
        357  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        358 
        - - - -
        365 
        -
        366  int num_spatial_axes_;
        -
        367  int bottom_dim_;
        -
        368  int top_dim_;
        -
        369 
        -
        370  int channel_axis_;
        -
        371  int num_;
        -
        372  int channels_;
        -
        373 
        -
        374  bool force_nd_im2col_;
        -
        375 };
        -
        376 
        -
        377 // Forward declare PoolingLayer and SplitLayer for use in LRNLayer.
        -
        378 template <typename Dtype> class PoolingLayer;
        -
        379 template <typename Dtype> class SplitLayer;
        -
        380 
        -
        386 template <typename Dtype>
        -
        387 class LRNLayer : public Layer<Dtype> {
        -
        388  public:
        -
        389  explicit LRNLayer(const LayerParameter& param)
        -
        390  : Layer<Dtype>(param) {}
        -
        391  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        -
        392  const vector<Blob<Dtype>*>& top);
        -
        393  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        -
        394  const vector<Blob<Dtype>*>& top);
        -
        395 
        -
        396  virtual inline const char* type() const { return "LRN"; }
        -
        397  virtual inline int ExactNumBottomBlobs() const { return 1; }
        -
        398  virtual inline int ExactNumTopBlobs() const { return 1; }
        -
        399 
        -
        400  protected:
        -
        401  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        -
        402  const vector<Blob<Dtype>*>& top);
        -
        403  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        404  const vector<Blob<Dtype>*>& top);
        -
        405  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        -
        406  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        407  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        -
        408  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        409 
        -
        410  virtual void CrossChannelForward_cpu(const vector<Blob<Dtype>*>& bottom,
        -
        411  const vector<Blob<Dtype>*>& top);
        -
        412  virtual void CrossChannelForward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        413  const vector<Blob<Dtype>*>& top);
        -
        414  virtual void WithinChannelForward(const vector<Blob<Dtype>*>& bottom,
        -
        415  const vector<Blob<Dtype>*>& top);
        -
        416  virtual void CrossChannelBackward_cpu(const vector<Blob<Dtype>*>& top,
        -
        417  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        418  virtual void CrossChannelBackward_gpu(const vector<Blob<Dtype>*>& top,
        -
        419  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        420  virtual void WithinChannelBackward(const vector<Blob<Dtype>*>& top,
        -
        421  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        422 
        -
        423  int size_;
        -
        424  int pre_pad_;
        -
        425  Dtype alpha_;
        -
        426  Dtype beta_;
        -
        427  Dtype k_;
        -
        428  int num_;
        -
        429  int channels_;
        -
        430  int height_;
        -
        431  int width_;
        -
        432 
        -
        433  // Fields used for normalization ACROSS_CHANNELS
        -
        434  // scale_ stores the intermediate summing results
        -
        435  Blob<Dtype> scale_;
        -
        436 
        -
        437  // Fields used for normalization WITHIN_CHANNEL
        -
        438  shared_ptr<SplitLayer<Dtype> > split_layer_;
        -
        439  vector<Blob<Dtype>*> split_top_vec_;
        -
        440  shared_ptr<PowerLayer<Dtype> > square_layer_;
        -
        441  Blob<Dtype> square_input_;
        -
        442  Blob<Dtype> square_output_;
        -
        443  vector<Blob<Dtype>*> square_bottom_vec_;
        -
        444  vector<Blob<Dtype>*> square_top_vec_;
        -
        445  shared_ptr<PoolingLayer<Dtype> > pool_layer_;
        -
        446  Blob<Dtype> pool_output_;
        -
        447  vector<Blob<Dtype>*> pool_top_vec_;
        -
        448  shared_ptr<PowerLayer<Dtype> > power_layer_;
        -
        449  Blob<Dtype> power_output_;
        -
        450  vector<Blob<Dtype>*> power_top_vec_;
        -
        451  shared_ptr<EltwiseLayer<Dtype> > product_layer_;
        -
        452  Blob<Dtype> product_input_;
        -
        453  vector<Blob<Dtype>*> product_bottom_vec_;
        -
        454 };
        -
        455 
        -
        456 #ifdef USE_CUDNN
        -
        457 
        -
        458 template <typename Dtype>
        -
        459 class CuDNNLRNLayer : public LRNLayer<Dtype> {
        -
        460  public:
        -
        461  explicit CuDNNLRNLayer(const LayerParameter& param)
        -
        462  : LRNLayer<Dtype>(param), handles_setup_(false) {}
        -
        463  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        -
        464  const vector<Blob<Dtype>*>& top);
        -
        465  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        -
        466  const vector<Blob<Dtype>*>& top);
        -
        467  virtual ~CuDNNLRNLayer();
        -
        468 
        -
        469  protected:
        -
        470  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        471  const vector<Blob<Dtype>*>& top);
        -
        472  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        -
        473  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        474 
        -
        475  bool handles_setup_;
        -
        476  cudnnHandle_t handle_;
        -
        477  cudnnLRNDescriptor_t norm_desc_;
        -
        478  cudnnTensorDescriptor_t bottom_desc_, top_desc_;
        -
        479 
        -
        480  int size_;
        -
        481  Dtype alpha_, beta_, k_;
        -
        482 };
        -
        483 
        -
        484 template <typename Dtype>
        -
        485 class CuDNNLCNLayer : public LRNLayer<Dtype> {
        -
        486  public:
        -
        487  explicit CuDNNLCNLayer(const LayerParameter& param)
        -
        488  : LRNLayer<Dtype>(param), handles_setup_(false), tempDataSize(0),
        -
        489  tempData1(NULL), tempData2(NULL) {}
        -
        490  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        -
        491  const vector<Blob<Dtype>*>& top);
        -
        492  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        -
        493  const vector<Blob<Dtype>*>& top);
        -
        494  virtual ~CuDNNLCNLayer();
        -
        495 
        -
        496  protected:
        -
        497  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        498  const vector<Blob<Dtype>*>& top);
        -
        499  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        -
        500  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        501 
        -
        502  bool handles_setup_;
        -
        503  cudnnHandle_t handle_;
        -
        504  cudnnLRNDescriptor_t norm_desc_;
        -
        505  cudnnTensorDescriptor_t bottom_desc_, top_desc_;
        -
        506 
        -
        507  int size_, pre_pad_;
        -
        508  Dtype alpha_, beta_, k_;
        -
        509 
        -
        510  size_t tempDataSize;
        -
        511  void *tempData1, *tempData2;
        -
        512 };
        -
        513 
        -
        514 #endif
        -
        515 
        -
        521 template <typename Dtype>
        -
        522 class PoolingLayer : public Layer<Dtype> {
        -
        523  public:
        -
        524  explicit PoolingLayer(const LayerParameter& param)
        -
        525  : Layer<Dtype>(param) {}
        -
        526  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        -
        527  const vector<Blob<Dtype>*>& top);
        -
        528  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        -
        529  const vector<Blob<Dtype>*>& top);
        -
        530 
        -
        531  virtual inline const char* type() const { return "Pooling"; }
        -
        532  virtual inline int ExactNumBottomBlobs() const { return 1; }
        -
        533  virtual inline int MinTopBlobs() const { return 1; }
        -
        534  // MAX POOL layers can output an extra top blob for the mask;
        -
        535  // others can only output the pooled inputs.
        -
        536  virtual inline int MaxTopBlobs() const {
        -
        537  return (this->layer_param_.pooling_param().pool() ==
        -
        538  PoolingParameter_PoolMethod_MAX) ? 2 : 1;
        -
        539  }
        -
        540 
        -
        541  protected:
        -
        542  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        -
        543  const vector<Blob<Dtype>*>& top);
        -
        544  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        545  const vector<Blob<Dtype>*>& top);
        -
        546  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        -
        547  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        548  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        -
        549  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        550 
        -
        551  int kernel_h_, kernel_w_;
        -
        552  int stride_h_, stride_w_;
        -
        553  int pad_h_, pad_w_;
        -
        554  int channels_;
        -
        555  int height_, width_;
        -
        556  int pooled_height_, pooled_width_;
        -
        557  bool global_pooling_;
        -
        558  Blob<Dtype> rand_idx_;
        -
        559  Blob<int> max_idx_;
        -
        560 };
        -
        561 
        -
        562 #ifdef USE_CUDNN
        -
        563 /*
        -
        564  * @brief cuDNN implementation of PoolingLayer.
        -
        565  * Fallback to PoolingLayer for CPU mode.
        -
        566 */
        -
        567 template <typename Dtype>
        -
        568 class CuDNNPoolingLayer : public PoolingLayer<Dtype> {
        -
        569  public:
        -
        570  explicit CuDNNPoolingLayer(const LayerParameter& param)
        -
        571  : PoolingLayer<Dtype>(param), handles_setup_(false) {}
        -
        572  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        -
        573  const vector<Blob<Dtype>*>& top);
        -
        574  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        -
        575  const vector<Blob<Dtype>*>& top);
        -
        576  virtual ~CuDNNPoolingLayer();
        -
        577  // Currently, cuDNN does not support the extra top blob.
        -
        578  virtual inline int MinTopBlobs() const { return -1; }
        -
        579  virtual inline int ExactNumTopBlobs() const { return 1; }
        -
        580 
        -
        581  protected:
        -
        582  virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom,
        -
        583  const vector<Blob<Dtype>*>& top);
        -
        584  virtual void Backward_gpu(const vector<Blob<Dtype>*>& top,
        -
        585  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        586 
        -
        587  bool handles_setup_;
        -
        588  cudnnHandle_t handle_;
        -
        589  cudnnTensorDescriptor_t bottom_desc_, top_desc_;
        -
        590  cudnnPoolingDescriptor_t pooling_desc_;
        -
        591  cudnnPoolingMode_t mode_;
        -
        592 };
        -
        593 #endif
        -
        594 
        -
        601 template <typename Dtype>
        -
        602 class SPPLayer : public Layer<Dtype> {
        -
        603  public:
        -
        604  explicit SPPLayer(const LayerParameter& param)
        -
        605  : Layer<Dtype>(param) {}
        -
        606  virtual void LayerSetUp(const vector<Blob<Dtype>*>& bottom,
        -
        607  const vector<Blob<Dtype>*>& top);
        -
        608  virtual void Reshape(const vector<Blob<Dtype>*>& bottom,
        -
        609  const vector<Blob<Dtype>*>& top);
        -
        610 
        -
        611  virtual inline const char* type() const { return "SPP"; }
        -
        612  virtual inline int ExactNumBottomBlobs() const { return 1; }
        -
        613  virtual inline int ExactNumTopBlobs() const { return 1; }
        -
        614 
        -
        615  protected:
        -
        616  virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom,
        -
        617  const vector<Blob<Dtype>*>& top);
        -
        618  virtual void Backward_cpu(const vector<Blob<Dtype>*>& top,
        -
        619  const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom);
        -
        620  // calculates the kernel and stride dimensions for the pooling layer,
        -
        621  // returns a correctly configured LayerParameter for a PoolingLayer
        -
        622  virtual LayerParameter GetPoolingParam(const int pyramid_level,
        -
        623  const int bottom_h, const int bottom_w, const SPPParameter spp_param);
        -
        624 
        -
        625  int pyramid_height_;
        -
        626  int bottom_h_, bottom_w_;
        -
        627  int num_;
        -
        628  int channels_;
        -
        629  int kernel_h_, kernel_w_;
        -
        630  int pad_h_, pad_w_;
        -
        631  bool reshaped_first_time_;
        -
        632 
        -
        634  shared_ptr<SplitLayer<Dtype> > split_layer_;
        -
        636  vector<Blob<Dtype>*> split_top_vec_;
        -
        638  vector<vector<Blob<Dtype>*>*> pooling_bottom_vecs_;
        -
        640  vector<shared_ptr<PoolingLayer<Dtype> > > pooling_layers_;
        -
        642  vector<vector<Blob<Dtype>*>*> pooling_top_vecs_;
        -
        644  vector<Blob<Dtype>*> pooling_outputs_;
        -
        646  vector<FlattenLayer<Dtype>*> flatten_layers_;
        -
        648  vector<vector<Blob<Dtype>*>*> flatten_top_vecs_;
        -
        650  vector<Blob<Dtype>*> flatten_outputs_;
        -
        652  vector<Blob<Dtype>*> concat_bottom_vec_;
        -
        654  shared_ptr<ConcatLayer<Dtype> > concat_layer_;
        -
        655 };
        -
        656 
        -
        657 } // namespace caffe
        -
        658 
        -
        659 #endif // CAFFE_VISION_LAYERS_HPP_
        -
        Blob< int > kernel_shape_
        The spatial dimensions of a filter kernel.
        Definition: vision_layers.hpp:72
        -
        virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Does layer-specific setup: your layer should implement this function as well as Reshape.
        Definition: lrn_layer.cpp:10
        -
        A helper for image operations that rearranges image regions into column vectors. Used by ConvolutionL...
        Definition: vision_layers.hpp:336
        -
        virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        -
        virtual int ExactNumTopBlobs() const
        Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
        Definition: vision_layers.hpp:398
        -
        An interface for the units of computation which can be composed into a Net.
        Definition: layer.hpp:33
        -
        A layer factory that allows one to register layers. During runtime, registered layers could be called...
        Definition: blob.hpp:15
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: vision_layers.hpp:222
        -
        virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
        -
        virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
        -
        virtual bool EqualNumBottomTopBlobs() const
        Returns true if the layer requires an equal number of bottom and top blobs.
        Definition: vision_layers.hpp:35
        -
        virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
        Definition: im2col_layer.cpp:95
        -
        virtual int ExactNumBottomBlobs() const
        Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
        Definition: vision_layers.hpp:532
        -
        vector< shared_ptr< PoolingLayer< Dtype > > > pooling_layers_
        the internal Pooling layers of different kernel sizes
        Definition: vision_layers.hpp:640
        -
        virtual int MaxTopBlobs() const
        Returns the maximum number of top blobs required by the layer, or -1 if no maximum number is required...
        Definition: vision_layers.hpp:536
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        Definition: conv_layer.cpp:45
        -
        virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Does layer-specific setup: your layer should implement this function as well as Reshape.
        Definition: spp_layer.cpp:65
        -
        vector< vector< Blob< Dtype > * > * > flatten_top_vecs_
        top vector holders used in call to the underlying FlattenLayer::Forward
        Definition: vision_layers.hpp:648
        -
        vector< vector< Blob< Dtype > * > * > pooling_top_vecs_
        top vector holders used in call to the underlying PoolingLayer::Forward
        Definition: vision_layers.hpp:642
        -
        virtual int ExactNumBottomBlobs() const
        Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
        Definition: vision_layers.hpp:397
        -
        vector< Blob< Dtype > * > split_top_vec_
        top vector holder used in call to the underlying SplitLayer::Forward
        Definition: vision_layers.hpp:636
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Using the CPU device, compute the layer output.
        Definition: deconv_layer.cpp:27
        -
        virtual int ExactNumBottomBlobs() const
        Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
        Definition: vision_layers.hpp:612
        -
        int input_shape(int i)
        The spatial dimensions of the input.
        Definition: vision_layers.hpp:62
        -
        virtual int MinBottomBlobs() const
        Returns the minimum number of bottom blobs required by the layer, or -1 if no minimum number is requi...
        Definition: vision_layers.hpp:33
        -
        Does spatial pyramid pooling on the input image by taking the max, average, etc. within regions so th...
        Definition: vision_layers.hpp:602
        -
        virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: vision_layers.hpp:531
        -
        virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: vision_layers.hpp:345
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Using the CPU device, compute the layer output.
        Definition: spp_layer.cpp:188
        -
        Blob< int > pad_
        The spatial dimensions of the padding.
        Definition: vision_layers.hpp:364
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: vision_layers.hpp:257
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: vision_layers.hpp:611
        -
        virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
        Definition: base_conv_layer.cpp:173
        -
        virtual int MinTopBlobs() const
        Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
        Definition: vision_layers.hpp:533
        -
        virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        -
        Abstract base class that factors out the BLAS code common to ConvolutionLayer and DeconvolutionLayer...
        Definition: vision_layers.hpp:24
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        Definition: lrn_layer.cpp:166
        -
        virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Does layer-specific setup: your layer should implement this function as well as Reshape.
        Definition: im2col_layer.cpp:11
        -
        vector< vector< Blob< Dtype > * > * > pooling_bottom_vecs_
        bottom vector holder used in call to the underlying PoolingLayer::Forward
        Definition: vision_layers.hpp:638
        -
        vector< Blob< Dtype > * > concat_bottom_vec_
        bottom vector holder used in call to the underlying ConcatLayer::Forward
        Definition: vision_layers.hpp:652
        -
        virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
        Definition: pooling_layer.cpp:82
        -
        virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Does layer-specific setup: your layer should implement this function as well as Reshape.
        Definition: base_conv_layer.cpp:13
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Using the CPU device, compute the layer output.
        Definition: conv_layer.cpp:27
        -
        Blob< int > pad_
        The spatial dimensions of the padding.
        Definition: vision_layers.hpp:76
        -
        virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
        -
        vector< FlattenLayer< Dtype > * > flatten_layers_
        the internal Flatten layers that the Pooling layers feed into
        Definition: vision_layers.hpp:646
        -
        virtual void LayerSetUp(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Does layer-specific setup: your layer should implement this function as well as Reshape.
        Definition: pooling_layer.cpp:17
        -
        virtual int ExactNumTopBlobs() const
        Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
        Definition: vision_layers.hpp:613
        -
        virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
        Definition: lrn_layer.cpp:70
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        Definition: im2col_layer.cpp:146
        -
        Layer(const LayerParameter &param)
        Definition: layer.hpp:40
        -
        vector< Blob< Dtype > * > flatten_outputs_
        flatten_outputs stores the outputs of the FlattenLayers
        Definition: vision_layers.hpp:650
        -
        virtual const char * type() const
        Returns the layer type.
        Definition: vision_layers.hpp:396
        -
        vector< int > col_buffer_shape_
        The spatial dimensions of the col_buffer.
        Definition: vision_layers.hpp:80
        -
        virtual void Reshape(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Adjust the shapes of top blobs and internal buffers to accommodate the shapes of the bottom blobs...
        Definition: spp_layer.cpp:146
        -
        virtual int ExactNumBottomBlobs() const
        Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
        Definition: vision_layers.hpp:346
        -
        virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        -
        ConvolutionLayer(const LayerParameter &param)
        Definition: vision_layers.hpp:219
        -
        Convolve the input with a bank of learned filters, and (optionally) add biases, treating filters and ...
        Definition: vision_layers.hpp:252
        -
        Blob< int > kernel_shape_
        The spatial dimensions of a filter kernel.
        Definition: vision_layers.hpp:360
        -
        LayerParameter layer_param_
        Definition: layer.hpp:322
        -
        Pools the input image by taking the max, average, etc. within regions.
        Definition: vision_layers.hpp:378
        -
        Creates a "split" path in the network by copying the bottom Blob into multiple top Blobs to be used b...
        Definition: common_layers.hpp:663
        -
        virtual void Forward_gpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Using the GPU device, compute the layer output. Fall back to Forward_cpu() if unavailable.
        -
        virtual void Backward_gpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Using the GPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        -
        shared_ptr< ConcatLayer< Dtype > > concat_layer_
        the internal Concat layers that the Flatten layers feed into
        Definition: vision_layers.hpp:654
        -
        vector< int > output_shape_
        The spatial dimensions of the output.
        Definition: vision_layers.hpp:82
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        Definition: spp_layer.cpp:205
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Using the CPU device, compute the layer output.
        Definition: im2col_layer.cpp:117
        -
        shared_ptr< SplitLayer< Dtype > > split_layer_
        the internal Split layer that feeds the pooling layers
        Definition: vision_layers.hpp:634
        -
        Convolves the input image with a bank of learned filters, and (optionally) adds biases.
        Definition: vision_layers.hpp:189
        -
        Blob< int > conv_input_shape_
        The spatial dimensions of the convolution input.
        Definition: vision_layers.hpp:78
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        Definition: deconv_layer.cpp:45
        -
        virtual void Backward_cpu(const vector< Blob< Dtype > * > &top, const vector< bool > &propagate_down, const vector< Blob< Dtype > * > &bottom)
        Using the CPU device, compute the gradients for any parameters and for the bottom blobs if propagate_...
        Definition: pooling_layer.cpp:233
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Using the CPU device, compute the layer output.
        Definition: pooling_layer.cpp:131
        -
        virtual int ExactNumTopBlobs() const
        Returns the exact number of top blobs required by the layer, or -1 if no exact number is required...
        Definition: vision_layers.hpp:347
        -
        Normalize the input in a local region across or within feature maps.
        Definition: vision_layers.hpp:387
        -
        vector< Blob< Dtype > * > pooling_outputs_
        pooling_outputs stores the outputs of the PoolingLayers
        Definition: vision_layers.hpp:644
        -
        Blob< int > stride_
        The spatial dimensions of the stride.
        Definition: vision_layers.hpp:362
        -
        Blob< int > stride_
        The spatial dimensions of the stride.
        Definition: vision_layers.hpp:74
        -
        A wrapper around SyncedMemory holders serving as the basic computational unit through which Layers...
        Definition: blob.hpp:25
        -
        virtual int MinTopBlobs() const
        Returns the minimum number of top blobs required by the layer, or -1 if no minimum number is required...
        Definition: vision_layers.hpp:34
        -
        virtual void Forward_cpu(const vector< Blob< Dtype > * > &bottom, const vector< Blob< Dtype > * > &top)
        Using the CPU device, compute the layer output.
        Definition: lrn_layer.cpp:94
        -
        - - - - diff --git a/doxygen/window__data__layer_8hpp_source.html b/doxygen/window__data__layer_8hpp_source.html index fff6b7fcc83..403c2b77bcb 100644 --- a/doxygen/window__data__layer_8hpp_source.html +++ b/doxygen/window__data__layer_8hpp_source.html @@ -3,7 +3,7 @@ - + Caffe: include/caffe/layers/window_data_layer.hpp Source File @@ -29,7 +29,7 @@ - + @@ -66,8 +66,8 @@
        window_data_layer.hpp
        -
        1 #ifndef CAFFE_WINDOW_DATA_LAYER_HPP_
        2 #define CAFFE_WINDOW_DATA_LAYER_HPP_
        3 
        4 #include <string>
        5 #include <utility>
        6 #include <vector>
        7 
        8 #include "caffe/blob.hpp"
        9 #include "caffe/data_transformer.hpp"
        10 #include "caffe/internal_thread.hpp"
        11 #include "caffe/layer.hpp"
        12 #include "caffe/layers/base_data_layer.hpp"
        13 #include "caffe/proto/caffe.pb.h"
        14 
        15 namespace caffe {
        16 
        23 template <typename Dtype>
        25  public:
        26  explicit WindowDataLayer(const LayerParameter& param)
        28  virtual ~WindowDataLayer();
        29  virtual void DataLayerSetUp(const vector<Blob<Dtype>*>& bottom,
        30  const vector<Blob<Dtype>*>& top);
        31 
        32  virtual inline const char* type() const { return "WindowData"; }
        33  virtual inline int ExactNumBottomBlobs() const { return 0; }
        34  virtual inline int ExactNumTopBlobs() const { return 2; }
        35 
        36  protected:
        37  virtual unsigned int PrefetchRand();
        38  virtual void load_batch(Batch<Dtype>* batch);
        39 
        40  shared_ptr<Caffe::RNG> prefetch_rng_;
        41  vector<std::pair<std::string, vector<int> > > image_database_;
        42  enum WindowField { IMAGE_INDEX, LABEL, OVERLAP, X1, Y1, X2, Y2, NUM };
        43  vector<vector<float> > fg_windows_;
        44  vector<vector<float> > bg_windows_;
        45  Blob<Dtype> data_mean_;
        46  vector<Dtype> mean_values_;
        47  bool has_mean_file_;
        48  bool has_mean_values_;
        49  bool cache_images_;
        50  vector<std::pair<std::string, Datum > > image_database_cache_;
        51 };
        52 
        53 } // namespace caffe
        54 
        55 #endif // CAFFE_WINDOW_DATA_LAYER_HPP_
        Definition: base_data_layer.hpp:49
        -
        Definition: base_data_layer.hpp:55
        +
        1 #ifndef CAFFE_WINDOW_DATA_LAYER_HPP_
        2 #define CAFFE_WINDOW_DATA_LAYER_HPP_
        3 
        4 #include <string>
        5 #include <utility>
        6 #include <vector>
        7 
        8 #include "caffe/blob.hpp"
        9 #include "caffe/data_transformer.hpp"
        10 #include "caffe/internal_thread.hpp"
        11 #include "caffe/layer.hpp"
        12 #include "caffe/layers/base_data_layer.hpp"
        13 #include "caffe/proto/caffe.pb.h"
        14 
        15 namespace caffe {
        16 
        23 template <typename Dtype>
        25  public:
        26  explicit WindowDataLayer(const LayerParameter& param)
        28  virtual ~WindowDataLayer();
        29  virtual void DataLayerSetUp(const vector<Blob<Dtype>*>& bottom,
        30  const vector<Blob<Dtype>*>& top);
        31 
        32  virtual inline const char* type() const { return "WindowData"; }
        33  virtual inline int ExactNumBottomBlobs() const { return 0; }
        34  virtual inline int ExactNumTopBlobs() const { return 2; }
        35 
        36  protected:
        37  virtual unsigned int PrefetchRand();
        38  virtual void load_batch(Batch<Dtype>* batch);
        39 
        40  shared_ptr<Caffe::RNG> prefetch_rng_;
        41  vector<std::pair<std::string, vector<int> > > image_database_;
        42  enum WindowField { IMAGE_INDEX, LABEL, OVERLAP, X1, Y1, X2, Y2, NUM };
        43  vector<vector<float> > fg_windows_;
        44  vector<vector<float> > bg_windows_;
        45  Blob<Dtype> data_mean_;
        46  vector<Dtype> mean_values_;
        47  bool has_mean_file_;
        48  bool has_mean_values_;
        49  bool cache_images_;
        50  vector<std::pair<std::string, Datum > > image_database_cache_;
        51 };
        52 
        53 } // namespace caffe
        54 
        55 #endif // CAFFE_WINDOW_DATA_LAYER_HPP_
        Definition: base_data_layer.hpp:47
        +
        Definition: base_data_layer.hpp:53
        A layer factory that allows one to register layers. During runtime, registered layers can be called b...
        Definition: blob.hpp:14
        Provides data to the Net from windows of images files, specified by a window data file...
        Definition: window_data_layer.hpp:24
        virtual int ExactNumBottomBlobs() const
        Returns the exact number of bottom blobs required by the layer, or -1 if no exact number is required...
        Definition: window_data_layer.hpp:33
        @@ -77,9 +77,9 @@
        diff --git a/gathered/examples/00-classification.ipynb b/gathered/examples/00-classification.ipynb index 6cce2dc7d5d..a4cdbf98829 100644 --- a/gathered/examples/00-classification.ipynb +++ b/gathered/examples/00-classification.ipynb @@ -36,7 +36,7 @@

        Caffe

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

        Created by diff --git a/gathered/examples/01-learning-lenet.ipynb b/gathered/examples/01-learning-lenet.ipynb index 15fcd2448d4..e764383e389 100644 --- a/gathered/examples/01-learning-lenet.ipynb +++ b/gathered/examples/01-learning-lenet.ipynb @@ -36,7 +36,7 @@

        Caffe

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

        Created by diff --git a/gathered/examples/02-fine-tuning.ipynb b/gathered/examples/02-fine-tuning.ipynb index beed35a5a9e..8c3ce152cae 100644 --- a/gathered/examples/02-fine-tuning.ipynb +++ b/gathered/examples/02-fine-tuning.ipynb @@ -36,7 +36,7 @@

        Caffe

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

        Created by @@ -202,7 +202,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)" ] }, diff --git a/gathered/examples/brewing-logreg.ipynb b/gathered/examples/brewing-logreg.ipynb index a75bd257be7..1981e4420f0 100644 --- a/gathered/examples/brewing-logreg.ipynb +++ b/gathered/examples/brewing-logreg.ipynb @@ -36,7 +36,7 @@

        Caffe

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

        Created by diff --git a/gathered/examples/cifar10.html b/gathered/examples/cifar10.html index 6956d286115..d099b5504ec 100644 --- a/gathered/examples/cifar10.html +++ b/gathered/examples/cifar10.html @@ -36,7 +36,7 @@

        Caffe

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

        Created by diff --git a/gathered/examples/cpp_classification.html b/gathered/examples/cpp_classification.html index b8ee3e543b7..72ff1efb979 100644 --- a/gathered/examples/cpp_classification.html +++ b/gathered/examples/cpp_classification.html @@ -36,7 +36,7 @@

        Caffe

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

        Created by @@ -83,34 +83,34 @@

        Usage

        To use the pre-trained CaffeNet model with the classification example, you need to download it from the “Model Zoo” using the following -script: - -./scripts/download_model_binary.py models/bvlc_reference_caffenet - -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 - -Using the files that were downloaded, we can classify the provided cat -image (examples/images/cat.jpg) using this command: - -./build/examples/cpp_classification/classification.bin \ +script:

        +
        ./scripts/download_model_binary.py models/bvlc_reference_caffenet
        +
        +
        +

        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
        +
        +
        +

        Using the files that were downloaded, we can classify the provided cat +image (examples/images/cat.jpg) using this command:

        +
        ./build/examples/cpp_classification/classification.bin \
           models/bvlc_reference_caffenet/deploy.prototxt \
           models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel \
           data/ilsvrc12/imagenet_mean.binaryproto \
           data/ilsvrc12/synset_words.txt \
           examples/images/cat.jpg
        -
        -The output should look like this:
        -
        ----------- Prediction for examples/images/cat.jpg ----------
        +
        +
        +

        The output should look like this:

        +
        ---------- Prediction for examples/images/cat.jpg ----------
         0.3134 - "n02123045 tabby, tabby cat"
         0.2380 - "n02123159 tiger cat"
         0.1235 - "n02124075 Egyptian cat"
         0.1003 - "n02119022 red fox, Vulpes vulpes"
         0.0715 - "n02127052 lynx, catamount"
        -

        +
        +

        Improving Performance

        diff --git a/gathered/examples/detection.ipynb b/gathered/examples/detection.ipynb index 86cb3d0eb56..6b21d86818e 100644 --- a/gathered/examples/detection.ipynb +++ b/gathered/examples/detection.ipynb @@ -36,7 +36,7 @@

        Caffe

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

        Created by diff --git a/gathered/examples/feature_extraction.html b/gathered/examples/feature_extraction.html index fe73c5cab3c..2e8a69647ec 100644 --- a/gathered/examples/feature_extraction.html +++ b/gathered/examples/feature_extraction.html @@ -36,7 +36,7 @@

        Caffe

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

        Created by diff --git a/gathered/examples/finetune_flickr_style.html b/gathered/examples/finetune_flickr_style.html index ada1fe19025..f178b7698bd 100644 --- a/gathered/examples/finetune_flickr_style.html +++ b/gathered/examples/finetune_flickr_style.html @@ -36,7 +36,7 @@

        Caffe

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

        Created by @@ -57,7 +57,7 @@

        Caffe

        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, to predict image style instead of object category.

        +Let’s fine-tune the BAIR-distributed CaffeNet model on a different dataset, Flickr Style, to predict image style instead of object category.

        Explanation

        diff --git a/gathered/examples/imagenet.html b/gathered/examples/imagenet.html index 8e9e4575695..68a6619f947 100644 --- a/gathered/examples/imagenet.html +++ b/gathered/examples/imagenet.html @@ -36,7 +36,7 @@

        Caffe

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

        Created by diff --git a/gathered/examples/mnist.html b/gathered/examples/mnist.html index 4bbf2e2909e..92539e6ed77 100644 --- a/gathered/examples/mnist.html +++ b/gathered/examples/mnist.html @@ -36,7 +36,7 @@

        Caffe

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

        Created by diff --git a/gathered/examples/net_surgery.ipynb b/gathered/examples/net_surgery.ipynb index 3c1ddaf6511..a88da6008eb 100644 --- a/gathered/examples/net_surgery.ipynb +++ b/gathered/examples/net_surgery.ipynb @@ -36,7 +36,7 @@

        Caffe

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

        Created by diff --git a/gathered/examples/pascal-multilabel-with-datalayer.ipynb b/gathered/examples/pascal-multilabel-with-datalayer.ipynb index 34aa94e334d..f3865298b6f 100644 --- a/gathered/examples/pascal-multilabel-with-datalayer.ipynb +++ b/gathered/examples/pascal-multilabel-with-datalayer.ipynb @@ -36,7 +36,7 @@

        Caffe

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

        Created by diff --git a/gathered/examples/siamese.html b/gathered/examples/siamese.html index d28447d9e32..e4503e56559 100644 --- a/gathered/examples/siamese.html +++ b/gathered/examples/siamese.html @@ -36,7 +36,7 @@

        Caffe

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

        Created by diff --git a/gathered/examples/siamese/mnist_siamese.ipynb b/gathered/examples/siamese/mnist_siamese.ipynb index ffeda21ade3..d4ae7a9b72b 100644 --- a/gathered/examples/siamese/mnist_siamese.ipynb +++ b/gathered/examples/siamese/mnist_siamese.ipynb @@ -36,7 +36,7 @@

        Caffe

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

        Created by diff --git a/gathered/examples/web_demo.html b/gathered/examples/web_demo.html index fbec5daa457..05fa5d717fc 100644 --- a/gathered/examples/web_demo.html +++ b/gathered/examples/web_demo.html @@ -36,7 +36,7 @@

        Caffe

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

        Created by diff --git a/index.html b/index.html index 9318597dd5c..991f978ad97 100644 --- a/index.html +++ b/index.html @@ -36,7 +36,7 @@

        Caffe

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

        Created by @@ -57,7 +57,7 @@

        Caffe

        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) and by community contributors. +It is developed by Berkeley AI Research (BAIR) and by community contributors. Yangqing Jia created the project during his PhD at UC Berkeley. Caffe is released under the BSD 2-Clause license.

        @@ -75,22 +75,21 @@

        Why Caffe?

        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 and Github.

        -* With the ILSVRC2012-winning SuperVision model and caching IO. -Consult performance details. +* With the ILSVRC2012-winning SuperVision model and prefetching IO.

        Documentation

        -

        Examples

        +

        Notebook Examples

        -

        Notebook Examples

        +

        Command Line Examples

        @@ -176,8 +177,7 @@

        Citing Caffe

        -

        If you do publish a paper where Caffe helped your research, we encourage you to update the publications wiki. -Citations are also tracked automatically by Google Scholar.

        +

        If you do publish a paper where Caffe helped your research, we encourage you to cite the framework for tracking by Google Scholar.

        Contacting Us

        @@ -185,17 +185,12 @@

        Contacting Us

        Framework development discussions and thorough bug reports are collected on Issues.

        -

        Contact caffe-dev 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 instead.

        - -

        The core Caffe developers offer consulting services for appropriate projects.

        -

        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 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 for guidance.

        -

        The BVLC members who have contributed to Caffe are (alphabetical by first name): -Eric Tzeng, Evan Shelhamer, Jeff Donahue, Jon Long, Ross Girshick, Sergey Karayev, Sergio Guadarrama, and Yangqing Jia.

        +

        The BAIR members who have contributed to Caffe are (alphabetical by first name): +Carl Doersch, Eric Tzeng, Evan Shelhamer, Jeff Donahue, Jon Long, Philipp Krähenbühl, Ronghang Hu, Ross Girshick, Sergey Karayev, Sergio Guadarrama, Takuya Narihira, and Yangqing Jia.

        The open-source community plays an important and growing role in Caffe’s development. Check out the Github project pulse for recent activity and the contributors for the full list.

        @@ -203,7 +198,7 @@

        Acknowledgements

        We sincerely appreciate your interest and contributions! If you’d like to contribute, please read the developing & contributing guide.

        -

        Yangqing would like to give a personal thanks to the NVIDIA Academic program for providing GPUs, Oriol Vinyals for discussions along the journey, and BVLC PI Trevor Darrell for advice.

        +

        Yangqing would like to give a personal thanks to the NVIDIA Academic program for providing GPUs, Oriol Vinyals for discussions along the journey, and BAIR PI Trevor Darrell for advice.

        diff --git a/install_apt.html b/install_apt.html index ed4601d1d74..d97677603b1 100644 --- a/install_apt.html +++ b/install_apt.html @@ -36,7 +36,7 @@

        Caffe

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

        Created by @@ -68,7 +68,7 @@

        Ubuntu Installation

        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.

        @@ -89,8 +89,8 @@

        Ubuntu Installation

        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
        diff --git a/install_apt_debian.html b/install_apt_debian.html
        index b0f7319d283..fc9bc8ac6d0 100644
        --- a/install_apt_debian.html
        +++ b/install_apt_debian.html
        @@ -36,7 +36,7 @@
               

        Caffe

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

        Created by @@ -57,12 +57,12 @@

        Caffe

        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
         
        @@ -74,33 +74,34 @@

        Debian Installation

      • 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 there is something like the follows in your /etc/apt/sources.list: - -deb http://MIRROR/debian CODENAME main contrib non-free - -where MIRROR is your favorate Debian mirror, and CODENAME ∈ {testing,stretch,sid}.

      +

      Make sure that your /etc/apt/sources.list contains contrib and non-free +sections if you want to install the CUDA version, for instance:

      + +
      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 ] -# caffe # command line interface working -# python3 -c 'import caffe; print(caffe.__path__)' # python3 interface working - -It should work out of box.

      +the cuda version cannot coexist.

      + +
      $ 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
      +
      +
      + +

      These Caffe packages should work for you out of box.

      Customizing caffe packages

      @@ -108,48 +109,50 @@

      Customizing caffe packages

      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: - -deb http://ftp2.cn.debian.org/debian sid main contrib non-free +

      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 +

      +
      + +

      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 ... ]
      -$ 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
      -
      -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. +$ 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 +

      +
      + +

      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 -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.

      +

      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. - -CXX compiler | CUDA 7.5 | CUDA 8.0 | +

      Some users may find their favorate compiler doesn’t work with CUDA.

      + +
      CXX compiler |  CUDA 7.5  |  CUDA 8.0  |
       -------------+------------+------------+-
       GCC-7        |     ?      |     ?      |
       GCC-6        |     ✘      |     ✘      |
      @@ -157,7 +160,8 @@ 

      Compiler Combinations

      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.

      @@ -215,8 +219,8 @@

      FAQ

    • 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
     
    @@ -224,9 +228,10 @@

    FAQ

  • 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)

    +
    https://tracker.debian.org/pkg/caffe          (for the CPU_ONLY version)
    +https://tracker.debian.org/pkg/caffe-contrib  (for the CUDA version)
    +
    +
    diff --git a/install_osx.html b/install_osx.html index 063b1670dd0..745b63bc60b 100644 --- a/install_osx.html +++ b/install_osx.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by diff --git a/install_yum.html b/install_yum.html index 4abb76c8e8c..9482842451c 100644 --- a/install_yum.html +++ b/install_yum.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by diff --git a/installation.html b/installation.html index dd5d3f24573..521ccddad25 100644 --- a/installation.html +++ b/installation.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -104,7 +104,7 @@

    Prerequisites

    • OpenCV >= 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.

    @@ -114,7 +114,7 @@

    Prerequisites

  • For MATLAB Caffe: MATLAB with the mex compiler.
  • -

    cuDNN Caffe: for fastest operation Caffe is accelerated by drop-in integration of NVIDIA 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. 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.

    @@ -130,7 +130,7 @@

    CUDA and BLAS

    • ATLAS: free, open source, and so the default for Caffe.
    • -
    • Intel MKL: commercial and optimized for Intel CPUs, with a free trial and student licenses. +
    • Intel MKL: commercial and optimized for Intel CPUs, with free licenses.
      1. Install MKL.
      2. Set up MKL environment (Details: Linux, OS X). Example: source /opt/intel/mkl/bin/mklvars.sh intel64
      3. diff --git a/model_zoo.html b/model_zoo.html index 9bc145287df..db3e36928e4 100644 --- a/model_zoo.html +++ b/model_zoo.html @@ -36,7 +36,7 @@

        Caffe

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

        Created by @@ -56,7 +56,7 @@

        Caffe

        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! 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:

        @@ -69,19 +69,19 @@

        Caffe Model Zoo

        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 for details. +See the BAIR model license for details. Each one of these can be downloaded by running scripts/download_model_binary.py <dirname> where <dirname> 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 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 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 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 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 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 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 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 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. +

        Community models made by Caffe users are posted to a publicly editable model zoo wiki page. These models are subject to conditions of their respective authors such as citation and license. Thank you for sharing your models!

        @@ -107,6 +107,8 @@

        Model info format

      4. [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.

    @@ -120,14 +122,14 @@

    Hosting model info

    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 <dirname> downloads the .caffemodel from the URL specified in the <dirname>/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 and training data includes internet photos that may be subject to copyright.

    diff --git a/multigpu.html b/multigpu.html index 8dea5a3e466..6f8302f60bd 100644 --- a/multigpu.html +++ b/multigpu.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by diff --git a/performance_hardware.html b/performance_hardware.html deleted file mode 100644 index a9119d2d42e..00000000000 --- a/performance_hardware.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - - Caffe | Performance and Hardware Configuration - - - - - - - - - - - - - -

    -
    -

    Caffe

    -

    - Deep learning framework by the BVLC -

    -

    - Created by -
    - Yangqing Jia -
    - Lead Developer -
    - Evan Shelhamer -

    -
    -
    - -

    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: BVLC 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:

    - -
      -
    • 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).

    - - -
    -
    - - diff --git a/tutorial/convolution.html b/tutorial/convolution.html index 75abe25e561..924569651a2 100644 --- a/tutorial/convolution.html +++ b/tutorial/convolution.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by diff --git a/tutorial/data.html b/tutorial/data.html index 5fd01ba86d1..e967c652a1e 100644 --- a/tutorial/data.html +++ b/tutorial/data.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by diff --git a/tutorial/forward_backward.html b/tutorial/forward_backward.html index 38ae26dceca..b98b6786152 100644 --- a/tutorial/forward_backward.html +++ b/tutorial/forward_backward.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by diff --git a/tutorial/index.html b/tutorial/index.html index 99b0cf4f319..8027a112bae 100644 --- a/tutorial/index.html +++ b/tutorial/index.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by diff --git a/tutorial/interfaces.html b/tutorial/interfaces.html index 49542d7bcfe..5150d569519 100644 --- a/tutorial/interfaces.html +++ b/tutorial/interfaces.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -162,7 +162,7 @@

    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 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 to run it).

    Build MatCaffe

    @@ -189,7 +189,7 @@

    Use MatCaffe

    MatCaffe is very similar to PyCaffe in usage.

    -

    Examples below shows detailed usages and assumes you have downloaded BVLC CaffeNet from Model Zoo and started matlab from caffe root folder.

    +

    Examples below shows detailed usages and assumes you have downloaded BAIR CaffeNet from Model Zoo 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/tutorial/layers.html b/tutorial/layers.html
    index c71cbe00ea8..00da376169d 100644
    --- a/tutorial/layers.html
    +++ b/tutorial/layers.html
    @@ -36,7 +36,7 @@
           

    Caffe

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

    Created by @@ -207,7 +207,7 @@

    Loss Layers

  • Infogain Loss - a generalization of MultinomialLogisticLossLayer.
  • Softmax with Loss - 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 - computes the sum of squares of differences of its two inputs, .
  • -
  • Hinge / Margin - The hinge loss layer computes a one-vs-all hinge (L1) or squared hinge loss (L2).
  • +
  • Hinge / Margin - The hinge loss layer computes a one-vs-all hinge (L1) or squared hinge loss (L2).
  • Sigmoid Cross-Entropy Loss - computes the cross-entropy (logistic) loss, often used for predicting targets interpreted as probabilities.
  • Accuracy / Top-k layer - scores the output as an accuracy with respect to target – it is not actually a loss and has no backward step.
  • Contrastive Loss
  • diff --git a/tutorial/layers/absval.html b/tutorial/layers/absval.html index 563074c3cfa..59ba51bc185 100644 --- a/tutorial/layers/absval.html +++ b/tutorial/layers/absval.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by diff --git a/tutorial/layers/accuracy.html b/tutorial/layers/accuracy.html index bf45619e352..d4a2252e0a4 100644 --- a/tutorial/layers/accuracy.html +++ b/tutorial/layers/accuracy.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -63,7 +63,6 @@

    Accuracy and Top-k

  • Doxygen Documentation
  • Header: ./include/caffe/layers/accuracy_layer.hpp
  • CPU implementation: ./src/caffe/layers/accuracy_layer.cpp
  • -
  • CUDA GPU implementation: ./src/caffe/layers/accuracy_layer.cu
  • Parameters

    @@ -72,22 +71,23 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto):
  • -
    message AccuracyParameter {
    -  // When computing accuracy, count as correct by comparing the true label to
    -  // the top k scoring classes.  By default, only compare to the top scoring
    -  // class (i.e. argmax).
    -  optional uint32 top_k = 1 [default = 1];
    +
    message AccuracyParameter {
    +  // When computing accuracy, count as correct by comparing the true label to
    +  // the top k scoring classes.  By default, only compare to the top scoring
    +  // class (i.e. argmax).
    +  optional uint32 top_k = 1 [default = 1];
     
    -  // The "label" axis of the prediction blob, whose argmax corresponds to the
    -  // predicted label -- may be negative to index from the end (e.g., -1 for the
    -  // last axis).  For example, if axis == 1 and the predictions are
    -  // (N x C x H x W), the label blob is expected to contain N*H*W ground truth
    -  // labels with integer values in {0, 1, ..., C-1}.
    -  optional int32 axis = 2 [default = 1];
    +  // The "label" axis of the prediction blob, whose argmax corresponds to the
    +  // predicted label -- may be negative to index from the end (e.g., -1 for the
    +  // last axis).  For example, if axis == 1 and the predictions are
    +  // (N x C x H x W), the label blob is expected to contain N*H*W ground truth
    +  // labels with integer values in {0, 1, ..., C-1}.
    +  optional int32 axis = 2 [default = 1];
    +
    +  // If specified, ignore instances with the given label.
    +  optional int32 ignore_label = 3;
    +}
    - // If specified, ignore instances with the given label. - optional int32 ignore_label = 3; -}
    diff --git a/tutorial/layers/argmax.html b/tutorial/layers/argmax.html index 57cc8b0ea6b..9ecde5ab5b4 100644 --- a/tutorial/layers/argmax.html +++ b/tutorial/layers/argmax.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -61,7 +61,6 @@

    ArgMax Layer

  • Doxygen Documentation
  • Header: ./include/caffe/layers/argmax_layer.hpp
  • CPU implementation: ./src/caffe/layers/argmax_layer.cpp
  • -
  • CUDA GPU implementation: ./src/caffe/layers/argmax_layer.cu
  • Parameters

    @@ -70,16 +69,17 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto):
  • -
    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 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;
    +}
    + diff --git a/tutorial/layers/batchnorm.html b/tutorial/layers/batchnorm.html index e09a24f9bc7..9620e87b002 100644 --- a/tutorial/layers/batchnorm.html +++ b/tutorial/layers/batchnorm.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -71,17 +71,27 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    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 BatchNormParameter {
    +  // 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;
    +  // 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.
    +  optional float eps = 3 [default = 1e-5];
    +}
    diff --git a/tutorial/layers/batchreindex.html b/tutorial/layers/batchreindex.html index 4d549719e6a..25333e25d46 100644 --- a/tutorial/layers/batchreindex.html +++ b/tutorial/layers/batchreindex.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by diff --git a/tutorial/layers/bias.html b/tutorial/layers/bias.html index cdb5fc1a9b3..6c418693763 100644 --- a/tutorial/layers/bias.html +++ b/tutorial/layers/bias.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -70,37 +70,37 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto):
  • -
    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];
    +
    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];
     
    -  // (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];
    +  // (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;
    -}
    + // (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; +}
    diff --git a/tutorial/layers/bnll.html b/tutorial/layers/bnll.html index 505ce3837a5..0c12d47f664 100644 --- a/tutorial/layers/bnll.html +++ b/tutorial/layers/bnll.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by diff --git a/tutorial/layers/concat.html b/tutorial/layers/concat.html index 7c52c655312..eb9db91c025 100644 --- a/tutorial/layers/concat.html +++ b/tutorial/layers/concat.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -107,16 +107,16 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto):
  • -
    message ConcatParameter {
    -  // The axis along which to concatenate -- may be negative to index from the
    -  // end (e.g., -1 for the last axis).  Other axes must have the
    -  // same dimension for all the bottom blobs.
    -  // By default, ConcatLayer concatenates blobs along the "channels" axis (1).
    -  optional int32 axis = 2 [default = 1];
    +
    message ConcatParameter {
    +  // The axis along which to concatenate -- may be negative to index from the
    +  // end (e.g., -1 for the last axis).  Other axes must have the
    +  // same dimension for all the bottom blobs.
    +  // By default, ConcatLayer concatenates blobs along the "channels" axis (1).
    +  optional int32 axis = 2 [default = 1];
     
    -  // DEPRECATED: alias for "axis" -- does not support negative indexing.
    -  optional uint32 concat_dim = 1 [default = 1];
    -}
    + // DEPRECATED: alias for "axis" -- does not support negative indexing. + optional uint32 concat_dim = 1 [default = 1]; +}
    diff --git a/tutorial/layers/contrastiveloss.html b/tutorial/layers/contrastiveloss.html index 59876042856..d383afa114b 100644 --- a/tutorial/layers/contrastiveloss.html +++ b/tutorial/layers/contrastiveloss.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -71,17 +71,17 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto):
  • -
    message ContrastiveLossParameter {
    -  // margin for dissimilar pair
    -  optional float margin = 1 [default = 1.0];
    -  // The first implementation of this cost did not exactly match the cost of
    -  // Hadsell et al 2006 -- using (margin - d^2) instead of (margin - d)^2.
    -  // legacy_version = false (the default) uses (margin - d)^2 as proposed in the
    -  // Hadsell paper. New models should probably use this version.
    -  // legacy_version = true uses (margin - d^2). This is kept to support /
    -  // reproduce existing models and results
    -  optional bool legacy_version = 2 [default = false];
    -}
    +
    message ContrastiveLossParameter {
    +  // margin for dissimilar pair
    +  optional float margin = 1 [default = 1.0];
    +  // The first implementation of this cost did not exactly match the cost of
    +  // Hadsell et al 2006 -- using (margin - d^2) instead of (margin - d)^2.
    +  // legacy_version = false (the default) uses (margin - d)^2 as proposed in the
    +  // Hadsell paper. New models should probably use this version.
    +  // legacy_version = true uses (margin - d^2). This is kept to support /
    +  // reproduce existing models and results
    +  optional bool legacy_version = 2 [default = false];
    +}
    diff --git a/tutorial/layers/convolution.html b/tutorial/layers/convolution.html index a1dafe34ada..34837d2807a 100644 --- a/tutorial/layers/convolution.html +++ b/tutorial/layers/convolution.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -134,58 +134,58 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto):
  • -
    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 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
    -  // 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
    -  // 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 FillerParameter weight_filler = 7; // The filler for the weight
    -  optional FillerParameter bias_filler = 8; // The filler for the bias
    -  enum Engine {
    -    DEFAULT = 0;
    -    CAFFE = 1;
    -    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];
    -
    -  // 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 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 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
    +  // 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
    +  // 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 FillerParameter weight_filler = 7; // The filler for the weight
    +  optional FillerParameter bias_filler = 8; // The filler for the bias
    +  enum Engine {
    +    DEFAULT = 0;
    +    CAFFE = 1;
    +    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];
    +
    +  // 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];
    +}
    diff --git a/tutorial/layers/crop.html b/tutorial/layers/crop.html index 360d83bc3b3..30e82637684 100644 --- a/tutorial/layers/crop.html +++ b/tutorial/layers/crop.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -71,23 +71,23 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto):
  • -
    message CropParameter {
    -  // 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,
    -  // 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;
    -}
    +
    message CropParameter {
    +  // 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,
    +  // 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/tutorial/layers/data.html b/tutorial/layers/data.html index ab851d8799c..faf488565d8 100644 --- a/tutorial/layers/data.html +++ b/tutorial/layers/data.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -70,39 +70,39 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto):
  • -
    message DataParameter {
    -  enum DB {
    -    LEVELDB = 0;
    -    LMDB = 1;
    -  }
    -  // Specify the data source.
    -  optional string source = 1;
    -  // Specify the batch size.
    -  optional uint32 batch_size = 4;
    -  // The rand_skip variable is for the data layer to skip a few data points
    -  // to avoid all asynchronous sgd clients to start at the same point. The skip
    -  // point would be set as rand_skip * rand(0,1). Note that rand_skip should not
    -  // be larger than the number of keys in the database.
    -  // DEPRECATED. Each solver accesses a different subset of the database.
    -  optional uint32 rand_skip = 7 [default = 0];
    -  optional DB backend = 8 [default = LEVELDB];
    -  // DEPRECATED. See TransformationParameter. For data pre-processing, we can do
    -  // simple scaling and subtracting the data mean, if provided. Note that the
    -  // mean subtraction is always carried out before scaling.
    -  optional float scale = 2 [default = 1];
    -  optional string mean_file = 3;
    -  // DEPRECATED. See TransformationParameter. Specify if we would like to randomly
    -  // crop an image.
    -  optional uint32 crop_size = 5 [default = 0];
    -  // DEPRECATED. See TransformationParameter. Specify if we want to randomly mirror
    -  // data.
    -  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 (Increase if data feeding bandwidth varies, within the
    -  // limit of device memory for GPU training)
    -  optional uint32 prefetch = 10 [default = 4];
    -}
    +
    message DataParameter {
    +  enum DB {
    +    LEVELDB = 0;
    +    LMDB = 1;
    +  }
    +  // Specify the data source.
    +  optional string source = 1;
    +  // Specify the batch size.
    +  optional uint32 batch_size = 4;
    +  // The rand_skip variable is for the data layer to skip a few data points
    +  // to avoid all asynchronous sgd clients to start at the same point. The skip
    +  // point would be set as rand_skip * rand(0,1). Note that rand_skip should not
    +  // be larger than the number of keys in the database.
    +  // DEPRECATED. Each solver accesses a different subset of the database.
    +  optional uint32 rand_skip = 7 [default = 0];
    +  optional DB backend = 8 [default = LEVELDB];
    +  // DEPRECATED. See TransformationParameter. For data pre-processing, we can do
    +  // simple scaling and subtracting the data mean, if provided. Note that the
    +  // mean subtraction is always carried out before scaling.
    +  optional float scale = 2 [default = 1];
    +  optional string mean_file = 3;
    +  // DEPRECATED. See TransformationParameter. Specify if we would like to randomly
    +  // crop an image.
    +  optional uint32 crop_size = 5 [default = 0];
    +  // DEPRECATED. See TransformationParameter. Specify if we want to randomly mirror
    +  // data.
    +  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 (Increase if data feeding bandwidth varies, within the
    +  // limit of device memory for GPU training)
    +  optional uint32 prefetch = 10 [default = 4];
    +}
    • Parameters diff --git a/tutorial/layers/deconvolution.html b/tutorial/layers/deconvolution.html index 94cc26ebd4f..050d28945d2 100644 --- a/tutorial/layers/deconvolution.html +++ b/tutorial/layers/deconvolution.html @@ -36,7 +36,7 @@

      Caffe

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

      Created by @@ -73,58 +73,58 @@

      Parameters

    • From ./src/caffe/proto/caffe.proto):
    -
    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 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
    -  // 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
    -  // 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 FillerParameter weight_filler = 7; // The filler for the weight
    -  optional FillerParameter bias_filler = 8; // The filler for the bias
    -  enum Engine {
    -    DEFAULT = 0;
    -    CAFFE = 1;
    -    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];
    -
    -  // 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 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 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
    +  // 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
    +  // 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 FillerParameter weight_filler = 7; // The filler for the weight
    +  optional FillerParameter bias_filler = 8; // The filler for the bias
    +  enum Engine {
    +    DEFAULT = 0;
    +    CAFFE = 1;
    +    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];
    +
    +  // 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];
    +}
    diff --git a/tutorial/layers/dropout.html b/tutorial/layers/dropout.html index 8118ed725fb..17061eb7c27 100644 --- a/tutorial/layers/dropout.html +++ b/tutorial/layers/dropout.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -71,9 +71,9 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto):
  • -
    message DropoutParameter {
    -  optional float dropout_ratio = 1 [default = 0.5]; // dropout ratio
    -}
    +
    message DropoutParameter {
    +  optional float dropout_ratio = 1 [default = 0.5]; // dropout ratio
    +}
    diff --git a/tutorial/layers/dummydata.html b/tutorial/layers/dummydata.html index 28ff17d0ef3..dcfe4124b07 100644 --- a/tutorial/layers/dummydata.html +++ b/tutorial/layers/dummydata.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -70,24 +70,24 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto):
  • -
    // DummyDataLayer fills any number of arbitrarily shaped blobs with random
    +
    // DummyDataLayer fills any number of arbitrarily shaped blobs with random
     // (or constant) data generated by "Fillers" (see "message FillerParameter").
    -message DummyDataParameter {
    -  // This layer produces N >= 1 top blobs.  DummyDataParameter must specify 1 or N
    -  // shape fields, and 0, 1 or N data_fillers.
    -  //
    -  // If 0 data_fillers are specified, ConstantFiller with a value of 0 is used.
    -  // If 1 data_filler is specified, it is applied to all top blobs.  If N are
    -  // specified, the ith is applied to the ith top blob.
    -  repeated FillerParameter data_filler = 1;
    -  repeated BlobShape shape = 6;
    +message DummyDataParameter {
    +  // This layer produces N >= 1 top blobs.  DummyDataParameter must specify 1 or N
    +  // shape fields, and 0, 1 or N data_fillers.
    +  //
    +  // If 0 data_fillers are specified, ConstantFiller with a value of 0 is used.
    +  // If 1 data_filler is specified, it is applied to all top blobs.  If N are
    +  // specified, the ith is applied to the ith top blob.
    +  repeated FillerParameter data_filler = 1;
    +  repeated BlobShape shape = 6;
     
    -  // 4D dimensions -- deprecated.  Use "shape" instead.
    -  repeated uint32 num = 2;
    -  repeated uint32 channels = 3;
    -  repeated uint32 height = 4;
    -  repeated uint32 width = 5;
    -}
    + // 4D dimensions -- deprecated. Use "shape" instead. + repeated uint32 num = 2; + repeated uint32 channels = 3; + repeated uint32 height = 4; + repeated uint32 width = 5; +}
    diff --git a/tutorial/layers/eltwise.html b/tutorial/layers/eltwise.html index 9a3572eb36e..b333ad9e0ec 100644 --- a/tutorial/layers/eltwise.html +++ b/tutorial/layers/eltwise.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -71,19 +71,19 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto):
  • -
    message EltwiseParameter {
    -  enum EltwiseOp {
    -    PROD = 0;
    -    SUM = 1;
    -    MAX = 2;
    -  }
    -  optional EltwiseOp operation = 1 [default = SUM]; // element-wise operation
    -  repeated float coeff = 2; // blob-wise coefficient for SUM operation
    -
    -  // Whether to use an asymptotically slower (for >2 inputs) but stabler method
    -  // of computing the gradient for the PROD operation. (No effect for SUM op.)
    -  optional bool stable_prod_grad = 3 [default = true];
    -}
    +
    message EltwiseParameter {
    +  enum EltwiseOp {
    +    PROD = 0;
    +    SUM = 1;
    +    MAX = 2;
    +  }
    +  optional EltwiseOp operation = 1 [default = SUM]; // element-wise operation
    +  repeated float coeff = 2; // blob-wise coefficient for SUM operation
    +
    +  // Whether to use an asymptotically slower (for >2 inputs) but stabler method
    +  // of computing the gradient for the PROD operation. (No effect for SUM op.)
    +  optional bool stable_prod_grad = 3 [default = true];
    +}
    diff --git a/tutorial/layers/elu.html b/tutorial/layers/elu.html index 7553469bc34..6140499e3c2 100644 --- a/tutorial/layers/elu.html +++ b/tutorial/layers/elu.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -78,13 +78,13 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    // 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 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];
    +}
    diff --git a/tutorial/layers/embed.html b/tutorial/layers/embed.html index 9d99ac2441a..dcc900f4768 100644 --- a/tutorial/layers/embed.html +++ b/tutorial/layers/embed.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -71,19 +71,19 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    // Message that stores parameters used by EmbedLayer
    -message EmbedParameter {
    -  optional uint32 num_output = 1; // The number of outputs for the layer
    -  // The input is given as integers to be interpreted as one-hot
    -  // vector indices with dimension num_input.  Hence num_input should be
    -  // 1 greater than the maximum possible input value.
    -  optional uint32 input_dim = 2;
    +
    // Message that stores parameters used by EmbedLayer
    +message EmbedParameter {
    +  optional uint32 num_output = 1; // The number of outputs for the layer
    +  // The input is given as integers to be interpreted as one-hot
    +  // vector indices with dimension num_input.  Hence num_input should be
    +  // 1 greater than the maximum possible input value.
    +  optional uint32 input_dim = 2;
     
    -  optional bool bias_term = 3 [default = true]; // Whether to use a bias term
    -  optional FillerParameter weight_filler = 4; // The filler for the weight
    -  optional FillerParameter bias_filler = 5; // The filler for the bias
    -
    -}
    + optional bool bias_term = 3 [default = true]; // Whether to use a bias term + optional FillerParameter weight_filler = 4; // The filler for the weight + optional FillerParameter bias_filler = 5; // The filler for the bias + +}
    diff --git a/tutorial/layers/euclideanloss.html b/tutorial/layers/euclideanloss.html index 16a8981522a..4b4d1adf7e4 100644 --- a/tutorial/layers/euclideanloss.html +++ b/tutorial/layers/euclideanloss.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by diff --git a/tutorial/layers/exp.html b/tutorial/layers/exp.html index b60d0f1e0e9..70ad0228808 100644 --- a/tutorial/layers/exp.html +++ b/tutorial/layers/exp.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -71,15 +71,15 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    // Message that stores parameters used by ExpLayer
    -message ExpParameter {
    -  // ExpLayer computes outputs y = base ^ (shift + scale * x), for base > 0.
    -  // Or if base is set to the default (-1), base is set to e,
    -  // so y = exp(shift + scale * x).
    -  optional float base = 1 [default = -1.0];
    -  optional float scale = 2 [default = 1.0];
    -  optional float shift = 3 [default = 0.0];
    -}
    +
    // Message that stores parameters used by ExpLayer
    +message ExpParameter {
    +  // ExpLayer computes outputs y = base ^ (shift + scale * x), for base > 0.
    +  // Or if base is set to the default (-1), base is set to e,
    +  // so y = exp(shift + scale * x).
    +  optional float base = 1 [default = -1.0];
    +  optional float scale = 2 [default = 1.0];
    +  optional float shift = 3 [default = 0.0];
    +}

    See also

    diff --git a/tutorial/layers/filter.html b/tutorial/layers/filter.html index 580e874d9e1..495089575a6 100644 --- a/tutorial/layers/filter.html +++ b/tutorial/layers/filter.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by diff --git a/tutorial/layers/flatten.html b/tutorial/layers/flatten.html index 4433e131134..525f829e62e 100644 --- a/tutorial/layers/flatten.html +++ b/tutorial/layers/flatten.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -72,17 +72,17 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    /// Message that stores parameters used by FlattenLayer
    -message FlattenParameter {
    -  // The first axis to flatten: 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 = 1 [default = 1];
    +
    /// Message that stores parameters used by FlattenLayer
    +message FlattenParameter {
    +  // The first axis to flatten: 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 = 1 [default = 1];
     
    -  // The last axis to flatten: all following axes are retained in the output.
    -  // May be negative to index from the end (e.g., the default -1 for the last
    -  // axis).
    -  optional int32 end_axis = 2 [default = -1];
    -}
    + // The last axis to flatten: all following axes are retained in the output. + // May be negative to index from the end (e.g., the default -1 for the last + // axis). + optional int32 end_axis = 2 [default = -1]; +}
    diff --git a/tutorial/layers/hdf5data.html b/tutorial/layers/hdf5data.html index 1f94f1cb372..cf94af6e389 100644 --- a/tutorial/layers/hdf5data.html +++ b/tutorial/layers/hdf5data.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -71,20 +71,20 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    // Message that stores parameters used by HDF5DataLayer
    -message HDF5DataParameter {
    -  // Specify the data source.
    -  optional string source = 1;
    -  // Specify the batch size.
    -  optional uint32 batch_size = 2;
    +
    // Message that stores parameters used by HDF5DataLayer
    +message HDF5DataParameter {
    +  // Specify the data source.
    +  optional string source = 1;
    +  // Specify the batch size.
    +  optional uint32 batch_size = 2;
     
    -  // Specify whether to shuffle the data.
    -  // If shuffle == true, the ordering of the HDF5 files is shuffled,
    -  // and the ordering of data within any given HDF5 file is shuffled,
    -  // but data between different files are not interleaved; all of a file's
    -  // data are output (in a random order) before moving onto another file.
    -  optional bool shuffle = 3 [default = false];
    -}
    + // Specify whether to shuffle the data. + // If shuffle == true, the ordering of the HDF5 files is shuffled, + // and the ordering of data within any given HDF5 file is shuffled, + // but data between different files are not interleaved; all of a file's + // data are output (in a random order) before moving onto another file. + optional bool shuffle = 3 [default = false]; +}
    diff --git a/tutorial/layers/hdf5output.html b/tutorial/layers/hdf5output.html index 26ab5e2e9ad..eb9f06f1a97 100644 --- a/tutorial/layers/hdf5output.html +++ b/tutorial/layers/hdf5output.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -81,9 +81,9 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    message HDF5OutputParameter {
    -  optional string file_name = 1;
    -}
    +
    message HDF5OutputParameter {
    +  optional string file_name = 1;
    +}
    diff --git a/tutorial/layers/hingeloss.html b/tutorial/layers/hingeloss.html index 614af426659..26612e696c5 100644 --- a/tutorial/layers/hingeloss.html +++ b/tutorial/layers/hingeloss.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -70,14 +70,14 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    message HingeLossParameter {
    -  enum Norm {
    -    L1 = 1;
    -    L2 = 2;
    -  }
    -  // Specify the Norm to use L1 or L2
    -  optional Norm norm = 1 [default = L1];
    -}
    +
    message HingeLossParameter {
    +  enum Norm {
    +    L1 = 1;
    +    L2 = 2;
    +  }
    +  // Specify the Norm to use L1 or L2
    +  optional Norm norm = 1 [default = L1];
    +}
    diff --git a/tutorial/layers/im2col.html b/tutorial/layers/im2col.html index 64bc2aa4ee0..d2e4c52fc46 100644 --- a/tutorial/layers/im2col.html +++ b/tutorial/layers/im2col.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by diff --git a/tutorial/layers/imagedata.html b/tutorial/layers/imagedata.html index 2cfe013d255..906e8635fb4 100644 --- a/tutorial/layers/imagedata.html +++ b/tutorial/layers/imagedata.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -86,36 +86,36 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    message ImageDataParameter {
    -  // Specify the data source.
    -  optional string source = 1;
    -  // Specify the batch size.
    -  optional uint32 batch_size = 4 [default = 1];
    -  // The rand_skip variable is for the data layer to skip a few data points
    -  // to avoid all asynchronous sgd clients to start at the same point. The skip
    -  // point would be set as rand_skip * rand(0,1). Note that rand_skip should not
    -  // be larger than the number of keys in the database.
    -  optional uint32 rand_skip = 7 [default = 0];
    -  // Whether or not ImageLayer should shuffle the list of files at every epoch.
    -  optional bool shuffle = 8 [default = false];
    -  // It will also resize images if new_height or new_width are not zero.
    -  optional uint32 new_height = 9 [default = 0];
    -  optional uint32 new_width = 10 [default = 0];
    -  // Specify if the images are color or gray
    -  optional bool is_color = 11 [default = true];
    -  // DEPRECATED. See TransformationParameter. For data pre-processing, we can do
    -  // simple scaling and subtracting the data mean, if provided. Note that the
    -  // mean subtraction is always carried out before scaling.
    -  optional float scale = 2 [default = 1];
    -  optional string mean_file = 3;
    -  // DEPRECATED. See TransformationParameter. Specify if we would like to randomly
    -  // crop an image.
    -  optional uint32 crop_size = 5 [default = 0];
    -  // DEPRECATED. See TransformationParameter. Specify if we want to randomly mirror
    -  // data.
    -  optional bool mirror = 6 [default = false];
    -  optional string root_folder = 12 [default = ""];
    -}
    +
    message ImageDataParameter {
    +  // Specify the data source.
    +  optional string source = 1;
    +  // Specify the batch size.
    +  optional uint32 batch_size = 4 [default = 1];
    +  // The rand_skip variable is for the data layer to skip a few data points
    +  // to avoid all asynchronous sgd clients to start at the same point. The skip
    +  // point would be set as rand_skip * rand(0,1). Note that rand_skip should not
    +  // be larger than the number of keys in the database.
    +  optional uint32 rand_skip = 7 [default = 0];
    +  // Whether or not ImageLayer should shuffle the list of files at every epoch.
    +  optional bool shuffle = 8 [default = false];
    +  // It will also resize images if new_height or new_width are not zero.
    +  optional uint32 new_height = 9 [default = 0];
    +  optional uint32 new_width = 10 [default = 0];
    +  // Specify if the images are color or gray
    +  optional bool is_color = 11 [default = true];
    +  // DEPRECATED. See TransformationParameter. For data pre-processing, we can do
    +  // simple scaling and subtracting the data mean, if provided. Note that the
    +  // mean subtraction is always carried out before scaling.
    +  optional float scale = 2 [default = 1];
    +  optional string mean_file = 3;
    +  // DEPRECATED. See TransformationParameter. Specify if we would like to randomly
    +  // crop an image.
    +  optional uint32 crop_size = 5 [default = 0];
    +  // DEPRECATED. See TransformationParameter. Specify if we want to randomly mirror
    +  // data.
    +  optional bool mirror = 6 [default = false];
    +  optional string root_folder = 12 [default = ""];
    +}
    diff --git a/tutorial/layers/infogainloss.html b/tutorial/layers/infogainloss.html index 3d243dd4968..d32041bc1d0 100644 --- a/tutorial/layers/infogainloss.html +++ b/tutorial/layers/infogainloss.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -61,12 +61,11 @@

    Infogain Loss Layer

  • Doxygen Documentation
  • Header: ./include/caffe/layers/infogain_loss_layer.hpp
  • CPU implementation: ./src/caffe/layers/infogain_loss_layer.cpp
  • -
  • CUDA GPU implementation: ./src/caffe/layers/infogain_loss_layer.cu
  • -

    A generalization of MultinomialLogisticLossLayer that takes an “information gain” (infogain) matrix specifying the “value” of all label pairs.

    +

    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.

    +

    Equivalent to the MultinomialLogisticLossLayer if the infogain matrix is the identity.

    Parameters

    @@ -75,10 +74,11 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    message InfogainLossParameter {
    -  // Specify the infogain matrix source.
    -  optional string source = 1;
    -}
    +
    message InfogainLossParameter {
    +  // Specify the infogain matrix source.
    +  optional string source = 1;
    +  optional int32 axis = 2 [default = 1]; // axis of prob
    +}
    diff --git a/tutorial/layers/innerproduct.html b/tutorial/layers/innerproduct.html index 764326e545d..eb6c4f07295 100644 --- a/tutorial/layers/innerproduct.html +++ b/tutorial/layers/innerproduct.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -131,22 +131,22 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    message InnerProductParameter {
    -  optional uint32 num_output = 1; // The number of outputs for the layer
    -  optional bool bias_term = 2 [default = true]; // whether to have bias terms
    -  optional FillerParameter weight_filler = 3; // The filler for the weight
    -  optional FillerParameter bias_filler = 4; // The filler for the bias
    -
    -  // The first axis to be lumped into a single inner product computation;
    -  // 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 InnerProductParameter {
    +  optional uint32 num_output = 1; // The number of outputs for the layer
    +  optional bool bias_term = 2 [default = true]; // whether to have bias terms
    +  optional FillerParameter weight_filler = 3; // The filler for the weight
    +  optional FillerParameter bias_filler = 4; // The filler for the bias
    +
    +  // The first axis to be lumped into a single inner product computation;
    +  // 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];
    +}
    diff --git a/tutorial/layers/input.html b/tutorial/layers/input.html index 73f3501046b..e735c047065 100644 --- a/tutorial/layers/input.html +++ b/tutorial/layers/input.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -70,13 +70,13 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto):
  • -
    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 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;
    +}
    diff --git a/tutorial/layers/log.html b/tutorial/layers/log.html index 07d3e1ac041..fa3eacc4ba5 100644 --- a/tutorial/layers/log.html +++ b/tutorial/layers/log.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -71,15 +71,15 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    // Message that stores parameters used by LogLayer
    -message LogParameter {
    -  // LogLayer computes outputs y = log_base(shift + scale * x), for base > 0.
    -  // Or if base is set to the default (-1), base is set to e,
    -  // so y = ln(shift + scale * x) = log_e(shift + scale * x)
    -  optional float base = 1 [default = -1.0];
    -  optional float scale = 2 [default = 1.0];
    -  optional float shift = 3 [default = 0.0];
    -}
    +
    // Message that stores parameters used by LogLayer
    +message LogParameter {
    +  // LogLayer computes outputs y = log_base(shift + scale * x), for base > 0.
    +  // Or if base is set to the default (-1), base is set to e,
    +  // so y = ln(shift + scale * x) = log_e(shift + scale * x)
    +  optional float base = 1 [default = -1.0];
    +  optional float scale = 2 [default = 1.0];
    +  optional float shift = 3 [default = 0.0];
    +}
    diff --git a/tutorial/layers/lrn.html b/tutorial/layers/lrn.html index 5a70fc56b30..98ce688868c 100644 --- a/tutorial/layers/lrn.html +++ b/tutorial/layers/lrn.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -81,21 +81,28 @@

    Local Response Normalization (LRN)

    Parameters -
    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 that stores parameters used by LRNLayer
    +message LRNParameter {
    +  optional uint32 local_size = 1 [default = 5];
    +  optional float alpha = 2 [default = 1.];
    +  optional float beta = 3 [default = 0.75];
    +  enum NormRegion {
    +    ACROSS_CHANNELS = 0;
    +    WITHIN_CHANNEL = 1;
    +  }
    +  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];
    +}
    diff --git a/tutorial/layers/lstm.html b/tutorial/layers/lstm.html index 18cb0bbca95..b59759af844 100644 --- a/tutorial/layers/lstm.html +++ b/tutorial/layers/lstm.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -72,24 +72,24 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    // 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];
    +
    // 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
    +  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 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];
    -}
    + // 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]; +}
    diff --git a/tutorial/layers/memorydata.html b/tutorial/layers/memorydata.html index 75360f8a158..406d87c2b19 100644 --- a/tutorial/layers/memorydata.html +++ b/tutorial/layers/memorydata.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -60,7 +60,7 @@

    Memory Data Layer

  • Layer type: MemoryData
  • Doxygen Documentation
  • Header: ./include/caffe/layers/memory_data_layer.hpp
  • -
  • CPU implementation: ./src/caffe/layers/memory_data_layer.cpu
  • +
  • CPU implementation: ./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.

    @@ -72,12 +72,12 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    message MemoryDataParameter {
    -  optional uint32 batch_size = 1;
    -  optional uint32 channels = 2;
    -  optional uint32 height = 3;
    -  optional uint32 width = 4;
    -}
    +
    message MemoryDataParameter {
    +  optional uint32 batch_size = 1;
    +  optional uint32 channels = 2;
    +  optional uint32 height = 3;
    +  optional uint32 width = 4;
    +}

    Parameters

    @@ -70,34 +70,34 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    // Message that stores parameters shared by loss layers
    -message LossParameter {
    -  // If specified, ignore instances with the given label.
    -  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 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
    -    // 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;
    -  }
    -  // 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
    -  // normalization = BATCH_SIZE to be consistent with previous behavior.
    -  optional bool normalize = 2;
    -}
    +
    // Message that stores parameters shared by loss layers
    +message LossParameter {
    +  // If specified, ignore instances with the given label.
    +  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 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
    +    // 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;
    +  }
    +  // 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
    +  // normalization = BATCH_SIZE to be consistent with previous behavior.
    +  optional bool normalize = 2;
    +}
    diff --git a/tutorial/layers/mvn.html b/tutorial/layers/mvn.html index 5aa125a33a1..f9a71dcbb51 100644 --- a/tutorial/layers/mvn.html +++ b/tutorial/layers/mvn.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -71,16 +71,16 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    message MVNParameter {
    -  // This parameter can be set to false to normalize mean only
    -  optional bool normalize_variance = 1 [default = true];
    +
    message MVNParameter {
    +  // This parameter can be set to false to normalize mean only
    +  optional bool normalize_variance = 1 [default = true];
     
    -  // This parameter can be set to true to perform DNN-like MVN
    -  optional bool across_channels = 2 [default = false];
    +  // This parameter can be set to true to perform DNN-like MVN
    +  optional bool across_channels = 2 [default = false];
     
    -  // Epsilon for not dividing by zero while normalizing variance
    -  optional float eps = 3 [default = 1e-9];
    -}
    + // Epsilon for not dividing by zero while normalizing variance + optional float eps = 3 [default = 1e-9]; +}
    diff --git a/tutorial/layers/parameter.html b/tutorial/layers/parameter.html index 8da63b86525..d45fa4a92c6 100644 --- a/tutorial/layers/parameter.html +++ b/tutorial/layers/parameter.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -72,9 +72,9 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    message ParameterParameter {
    -  optional BlobShape shape = 1;
    -}
    +
    message ParameterParameter {
    +  optional BlobShape shape = 1;
    +}
    diff --git a/tutorial/layers/pooling.html b/tutorial/layers/pooling.html index 07e6ff0d9b3..7784aae4e2e 100644 --- a/tutorial/layers/pooling.html +++ b/tutorial/layers/pooling.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -98,34 +98,34 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    message PoolingParameter {
    -  enum PoolMethod {
    -    MAX = 0;
    -    AVE = 1;
    -    STOCHASTIC = 2;
    -  }
    -  optional PoolMethod pool = 1 [default = MAX]; // The pooling method
    -  // 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 = 4 [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 = 2; // The kernel size (square)
    -  optional uint32 kernel_h = 5; // The kernel height
    -  optional uint32 kernel_w = 6; // The kernel width
    -  optional uint32 stride = 3 [default = 1]; // The stride (equal in Y, X)
    -  optional uint32 stride_h = 7; // The stride height
    -  optional uint32 stride_w = 8; // The stride width
    -  enum Engine {
    -    DEFAULT = 0;
    -    CAFFE = 1;
    -    CUDNN = 2;
    -  }
    -  optional Engine engine = 11 [default = DEFAULT];
    -  // If global_pooling then it will pool over the size of the bottom by doing
    -  // kernel_h = bottom->height and kernel_w = bottom->width
    -  optional bool global_pooling = 12 [default = false];
    -}
    +
    message PoolingParameter {
    +  enum PoolMethod {
    +    MAX = 0;
    +    AVE = 1;
    +    STOCHASTIC = 2;
    +  }
    +  optional PoolMethod pool = 1 [default = MAX]; // The pooling method
    +  // 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 = 4 [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 = 2; // The kernel size (square)
    +  optional uint32 kernel_h = 5; // The kernel height
    +  optional uint32 kernel_w = 6; // The kernel width
    +  optional uint32 stride = 3 [default = 1]; // The stride (equal in Y, X)
    +  optional uint32 stride_h = 7; // The stride height
    +  optional uint32 stride_w = 8; // The stride width
    +  enum Engine {
    +    DEFAULT = 0;
    +    CAFFE = 1;
    +    CUDNN = 2;
    +  }
    +  optional Engine engine = 11 [default = DEFAULT];
    +  // If global_pooling then it will pool over the size of the bottom by doing
    +  // kernel_h = bottom->height and kernel_w = bottom->width
    +  optional bool global_pooling = 12 [default = false];
    +}

    Sample

      diff --git a/tutorial/layers/power.html b/tutorial/layers/power.html index 11f59141c19..6b32d905e62 100644 --- a/tutorial/layers/power.html +++ b/tutorial/layers/power.html @@ -36,7 +36,7 @@

      Caffe

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

      Created by @@ -82,12 +82,12 @@

      Parameters

    • From ./src/caffe/proto/caffe.proto:
    -
    message PowerParameter {
    -  // PowerLayer computes outputs y = (shift + scale * x) ^ power.
    -  optional float power = 1 [default = 1.0];
    -  optional float scale = 2 [default = 1.0];
    -  optional float shift = 3 [default = 0.0];
    -}
    +
    message PowerParameter {
    +  // PowerLayer computes outputs y = (shift + scale * x) ^ power.
    +  optional float power = 1 [default = 1.0];
    +  optional float scale = 2 [default = 1.0];
    +  optional float shift = 3 [default = 0.0];
    +}

    Sample

    diff --git a/tutorial/layers/prelu.html b/tutorial/layers/prelu.html index 0afe36d323e..30bca82d778 100644 --- a/tutorial/layers/prelu.html +++ b/tutorial/layers/prelu.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -71,15 +71,15 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    message PReLUParameter {
    -  // Parametric ReLU described in K. He et al, Delving Deep into Rectifiers:
    -  // Surpassing Human-Level Performance on ImageNet Classification, 2015.
    -
    -  // Initial value of a_i. Default is a_i=0.25 for all i.
    -  optional FillerParameter filler = 1;
    -  // Whether or not slope parameters are shared across channels.
    -  optional bool channel_shared = 2 [default = false];
    -}
    +
    message PReLUParameter {
    +  // Parametric ReLU described in K. He et al, Delving Deep into Rectifiers:
    +  // Surpassing Human-Level Performance on ImageNet Classification, 2015.
    +
    +  // Initial value of a_i. Default is a_i=0.25 for all i.
    +  optional FillerParameter filler = 1;
    +  // Whether or not slope parameters are shared across channels.
    +  optional bool channel_shared = 2 [default = false];
    +}
    diff --git a/tutorial/layers/python.html b/tutorial/layers/python.html index 162c1cafe8c..928b823b5ef 100644 --- a/tutorial/layers/python.html +++ b/tutorial/layers/python.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -71,19 +71,17 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    message PythonParameter {
    -  optional string module = 1;
    -  optional string layer = 2;
    -  // This value is set to the attribute `param_str` of the `PythonLayer` object
    -  // in Python before calling the `setup()` method. This could be a number,
    -  // 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.
    -  optional bool share_in_parallel = 4 [default = false];
    -}
    +
    message PythonParameter {
    +  optional string module = 1;
    +  optional string layer = 2;
    +  // This value is set to the attribute `param_str` of the `PythonLayer` object
    +  // in Python before calling the `setup()` method. This could be a number,
    +  // 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 = ''];
    +  // DEPRECATED
    +  optional bool share_in_parallel = 4 [default = false];
    +}

    Examples and tutorials

    diff --git a/tutorial/layers/recurrent.html b/tutorial/layers/recurrent.html index c81774e95bc..13641a53100 100644 --- a/tutorial/layers/recurrent.html +++ b/tutorial/layers/recurrent.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -71,24 +71,24 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    // 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];
    +
    // 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
    +  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 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];
    -}
    + // 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]; +}
    diff --git a/tutorial/layers/reduction.html b/tutorial/layers/reduction.html index ead0f1fff7a..38ab174d065 100644 --- a/tutorial/layers/reduction.html +++ b/tutorial/layers/reduction.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -71,34 +71,34 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    // Message that stores parameters used by ReductionLayer
    -message ReductionParameter {
    -  enum ReductionOp {
    -    SUM = 1;
    -    ASUM = 2;
    -    SUMSQ = 3;
    -    MEAN = 4;
    -  }
    +
    // Message that stores parameters used by ReductionLayer
    +message ReductionParameter {
    +  enum ReductionOp {
    +    SUM = 1;
    +    ASUM = 2;
    +    SUMSQ = 3;
    +    MEAN = 4;
    +  }
     
    -  optional ReductionOp operation = 1 [default = SUM]; // reduction operation
    +  optional ReductionOp operation = 1 [default = SUM]; // reduction operation
    +
    +  // The first axis to reduce to a scalar -- may be negative to index from the
    +  // end (e.g., -1 for the last axis).
    +  // (Currently, only reduction along ALL "tail" axes is supported; reduction
    +  // of axis M through N, where N < num_axes - 1, is unsupported.)
    +  // Suppose we have an n-axis bottom Blob with shape:
    +  //     (d0, d1, d2, ..., d(m-1), dm, d(m+1), ..., d(n-1)).
    +  // If axis == m, the output Blob will have shape
    +  //     (d0, d1, d2, ..., d(m-1)),
    +  // and the ReductionOp operation is performed (d0 * d1 * d2 * ... * d(m-1))
    +  // times, each including (dm * d(m+1) * ... * d(n-1)) individual data.
    +  // If axis == 0 (the default), the output Blob always has the empty shape
    +  // (count 1), performing reduction across the entire input --
    +  // often useful for creating new loss functions.
    +  optional int32 axis = 2 [default = 0];
     
    -  // The first axis to reduce to a scalar -- may be negative to index from the
    -  // end (e.g., -1 for the last axis).
    -  // (Currently, only reduction along ALL "tail" axes is supported; reduction
    -  // of axis M through N, where N < num_axes - 1, is unsupported.)
    -  // Suppose we have an n-axis bottom Blob with shape:
    -  //     (d0, d1, d2, ..., d(m-1), dm, d(m+1), ..., d(n-1)).
    -  // If axis == m, the output Blob will have shape
    -  //     (d0, d1, d2, ..., d(m-1)),
    -  // and the ReductionOp operation is performed (d0 * d1 * d2 * ... * d(m-1))
    -  // times, each including (dm * d(m+1) * ... * d(n-1)) individual data.
    -  // If axis == 0 (the default), the output Blob always has the empty shape
    -  // (count 1), performing reduction across the entire input --
    -  // often useful for creating new loss functions.
    -  optional int32 axis = 2 [default = 0];
    -
    -  optional float coeff = 3 [default = 1.0]; // coefficient for output
    -}
    + optional float coeff = 3 [default = 1.0]; // coefficient for output +}
    diff --git a/tutorial/layers/relu.html b/tutorial/layers/relu.html index 1fdbfbbed78..1714ef77d35 100644 --- a/tutorial/layers/relu.html +++ b/tutorial/layers/relu.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -93,21 +93,21 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    // Message that stores parameters used by ReLULayer
    -message ReLUParameter {
    -  // Allow non-zero slope for negative inputs to speed up optimization
    -  // Described in:
    -  // Maas, A. L., Hannun, A. Y., & Ng, A. Y. (2013). Rectifier nonlinearities
    -  // improve neural network acoustic models. In ICML Workshop on Deep Learning
    -  // for Audio, Speech, and Language Processing.
    -  optional float negative_slope = 1 [default = 0];
    -  enum Engine {
    -    DEFAULT = 0;
    -    CAFFE = 1;
    -    CUDNN = 2;
    -  }
    -  optional Engine engine = 2 [default = DEFAULT];
    -}
    +
    // Message that stores parameters used by ReLULayer
    +message ReLUParameter {
    +  // Allow non-zero slope for negative inputs to speed up optimization
    +  // Described in:
    +  // Maas, A. L., Hannun, A. Y., & Ng, A. Y. (2013). Rectifier nonlinearities
    +  // improve neural network acoustic models. In ICML Workshop on Deep Learning
    +  // for Audio, Speech, and Language Processing.
    +  optional float negative_slope = 1 [default = 0];
    +  enum Engine {
    +    DEFAULT = 0;
    +    CAFFE = 1;
    +    CUDNN = 2;
    +  }
    +  optional Engine engine = 2 [default = DEFAULT];
    +}
    diff --git a/tutorial/layers/reshape.html b/tutorial/layers/reshape.html index 90bee0588fc..0cbe1d39c25 100644 --- a/tutorial/layers/reshape.html +++ b/tutorial/layers/reshape.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -120,69 +120,69 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    message ReshapeParameter {
    -  // Specify the output dimensions. If some of the dimensions are set to 0,
    -  // the corresponding dimension from the bottom layer is used (unchanged).
    -  // Exactly one dimension may be set to -1, in which case its value is
    -  // inferred from the count of the bottom blob and the remaining dimensions.
    -  // For example, suppose we want to reshape a 2D blob "input" with shape 2 x 8:
    -  //
    -  //   layer {
    -  //     type: "Reshape" bottom: "input" top: "output"
    -  //     reshape_param { ... }
    -  //   }
    -  //
    -  // If "input" is 2D with shape 2 x 8, then the following reshape_param
    -  // specifications are all equivalent, producing a 3D blob "output" with shape
    -  // 2 x 2 x 4:
    -  //
    -  //   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:  0  dim:-1  dim:  4 } }
    -  //
    -  optional BlobShape shape = 1;
    -
    -  // axis and num_axes control the portion of the bottom blob's shape that are
    -  // replaced by (included in) the reshape. By default (axis == 0 and
    -  // num_axes == -1), the entire bottom blob shape is included in the reshape,
    -  // and hence the shape field must specify the entire output shape.
    -  //
    -  // axis may be non-zero to retain some portion of the beginning of the input
    -  // shape (and may be negative to index from the end; e.g., -1 to begin the
    -  // reshape after the last axis, including nothing in the reshape,
    -  // -2 to include only the last axis, etc.).
    -  //
    -  // For example, suppose "input" is a 2D blob with shape 2 x 8.
    -  // Then the following ReshapeLayer specifications are all equivalent,
    -  // producing a blob "output" with shape 2 x 2 x 4:
    -  //
    -  //   reshape_param { shape { dim: 2  dim: 2  dim: 4 } }
    -  //   reshape_param { shape { dim: 2  dim: 4 } axis:  1 }
    -  //   reshape_param { shape { dim: 2  dim: 4 } axis: -3 }
    -  //
    -  // num_axes specifies the extent of the reshape.
    -  // If num_axes >= 0 (and axis >= 0), the reshape will be performed only on
    -  // input axes in the range [axis, axis+num_axes].
    -  // num_axes may also be -1, the default, to include all remaining axes
    -  // (starting from axis).
    -  //
    -  // For example, suppose "input" is a 2D blob with shape 2 x 8.
    -  // Then the following ReshapeLayer specifications are equivalent,
    -  // producing a blob "output" with shape 1 x 2 x 8.
    -  //
    -  //   reshape_param { shape { dim:  1  dim: 2  dim:  8 } }
    -  //   reshape_param { shape { dim:  1  dim: 2  }  num_axes: 1 }
    -  //   reshape_param { shape { dim:  1  }  num_axes: 0 }
    -  //
    -  // On the other hand, these would produce output blob shape 2 x 1 x 8:
    -  //
    -  //   reshape_param { shape { dim: 2  dim: 1  dim: 8  }  }
    -  //   reshape_param { shape { dim: 1 }  axis: 1  num_axes: 0 }
    -  //
    -  optional int32 axis = 2 [default = 0];
    -  optional int32 num_axes = 3 [default = -1];
    -}
    +
    message ReshapeParameter {
    +  // Specify the output dimensions. If some of the dimensions are set to 0,
    +  // the corresponding dimension from the bottom layer is used (unchanged).
    +  // Exactly one dimension may be set to -1, in which case its value is
    +  // inferred from the count of the bottom blob and the remaining dimensions.
    +  // For example, suppose we want to reshape a 2D blob "input" with shape 2 x 8:
    +  //
    +  //   layer {
    +  //     type: "Reshape" bottom: "input" top: "output"
    +  //     reshape_param { ... }
    +  //   }
    +  //
    +  // If "input" is 2D with shape 2 x 8, then the following reshape_param
    +  // specifications are all equivalent, producing a 3D blob "output" with shape
    +  // 2 x 2 x 4:
    +  //
    +  //   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:  0  dim:-1  dim:  4 } }
    +  //
    +  optional BlobShape shape = 1;
    +
    +  // axis and num_axes control the portion of the bottom blob's shape that are
    +  // replaced by (included in) the reshape. By default (axis == 0 and
    +  // num_axes == -1), the entire bottom blob shape is included in the reshape,
    +  // and hence the shape field must specify the entire output shape.
    +  //
    +  // axis may be non-zero to retain some portion of the beginning of the input
    +  // shape (and may be negative to index from the end; e.g., -1 to begin the
    +  // reshape after the last axis, including nothing in the reshape,
    +  // -2 to include only the last axis, etc.).
    +  //
    +  // For example, suppose "input" is a 2D blob with shape 2 x 8.
    +  // Then the following ReshapeLayer specifications are all equivalent,
    +  // producing a blob "output" with shape 2 x 2 x 4:
    +  //
    +  //   reshape_param { shape { dim: 2  dim: 2  dim: 4 } }
    +  //   reshape_param { shape { dim: 2  dim: 4 } axis:  1 }
    +  //   reshape_param { shape { dim: 2  dim: 4 } axis: -3 }
    +  //
    +  // num_axes specifies the extent of the reshape.
    +  // If num_axes >= 0 (and axis >= 0), the reshape will be performed only on
    +  // input axes in the range [axis, axis+num_axes].
    +  // num_axes may also be -1, the default, to include all remaining axes
    +  // (starting from axis).
    +  //
    +  // For example, suppose "input" is a 2D blob with shape 2 x 8.
    +  // Then the following ReshapeLayer specifications are equivalent,
    +  // producing a blob "output" with shape 1 x 2 x 8.
    +  //
    +  //   reshape_param { shape { dim:  1  dim: 2  dim:  8 } }
    +  //   reshape_param { shape { dim:  1  dim: 2  }  num_axes: 1 }
    +  //   reshape_param { shape { dim:  1  }  num_axes: 0 }
    +  //
    +  // On the other hand, these would produce output blob shape 2 x 1 x 8:
    +  //
    +  //   reshape_param { shape { dim: 2  dim: 1  dim: 8  }  }
    +  //   reshape_param { shape { dim: 1 }  axis: 1  num_axes: 0 }
    +  //
    +  optional int32 axis = 2 [default = 0];
    +  optional int32 num_axes = 3 [default = -1];
    +}
    diff --git a/tutorial/layers/rnn.html b/tutorial/layers/rnn.html index 1e82e0870ae..d26f3ca6c20 100644 --- a/tutorial/layers/rnn.html +++ b/tutorial/layers/rnn.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -70,24 +70,24 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    // 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];
    +
    // 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
    +  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 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];
    -}
    + // 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]; +}
    diff --git a/tutorial/layers/scale.html b/tutorial/layers/scale.html index 9ab2970015f..4d6e9c504a4 100644 --- a/tutorial/layers/scale.html +++ b/tutorial/layers/scale.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -71,42 +71,42 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    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];
    +
    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];
    +  // (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;
    +  // (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;
    -}
    + // 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; +}
    diff --git a/tutorial/layers/sigmoid.html b/tutorial/layers/sigmoid.html index 995f8662221..498acdffdc4 100644 --- a/tutorial/layers/sigmoid.html +++ b/tutorial/layers/sigmoid.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -62,8 +62,22 @@

    Sigmoid Layer

  • Header: ./include/caffe/layers/sigmoid_layer.hpp
  • CPU implementation: ./src/caffe/layers/sigmoid_layer.cpp
  • CUDA GPU implementation: ./src/caffe/layers/sigmoid_layer.cu
  • +
  • +

    Example (from ./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

    -
    message SigmoidParameter {
    -  enum Engine {
    -    DEFAULT = 0;
    -    CAFFE = 1;
    -    CUDNN = 2;
    -  }
    -  optional Engine engine = 1 [default = DEFAULT];
    -}
    +
    message SigmoidParameter {
    +  enum Engine {
    +    DEFAULT = 0;
    +    CAFFE = 1;
    +    CUDNN = 2;
    +  }
    +  optional Engine engine = 1 [default = DEFAULT];
    +}
    diff --git a/tutorial/layers/sigmoidcrossentropyloss.html b/tutorial/layers/sigmoidcrossentropyloss.html index feed41fb1f1..1d63a724754 100644 --- a/tutorial/layers/sigmoidcrossentropyloss.html +++ b/tutorial/layers/sigmoidcrossentropyloss.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by diff --git a/tutorial/layers/silence.html b/tutorial/layers/silence.html index b109c64b424..416b9a9fb0f 100644 --- a/tutorial/layers/silence.html +++ b/tutorial/layers/silence.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -68,23 +68,7 @@

    Silence Layer

    Parameters

    - - -
    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];
    -}
    - +

    No parameters.

    diff --git a/tutorial/layers/slice.html b/tutorial/layers/slice.html index d9f2ceab083..d15bb56da24 100644 --- a/tutorial/layers/slice.html +++ b/tutorial/layers/slice.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -98,16 +98,16 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    message SliceParameter {
    -  // The axis along which to slice -- may be negative to index from the end
    -  // (e.g., -1 for the last axis).
    -  // By default, SliceLayer concatenates blobs along the "channels" axis (1).
    -  optional int32 axis = 3 [default = 1];
    -  repeated uint32 slice_point = 2;
    +
    message SliceParameter {
    +  // The axis along which to slice -- may be negative to index from the end
    +  // (e.g., -1 for the last axis).
    +  // By default, SliceLayer concatenates blobs along the "channels" axis (1).
    +  optional int32 axis = 3 [default = 1];
    +  repeated uint32 slice_point = 2;
     
    -  // DEPRECATED: alias for "axis" -- does not support negative indexing.
    -  optional uint32 slice_dim = 1 [default = 1];
    -}
    + // DEPRECATED: alias for "axis" -- does not support negative indexing. + optional uint32 slice_dim = 1 [default = 1]; +}
    diff --git a/tutorial/layers/softmax.html b/tutorial/layers/softmax.html index 8f78f711eb5..fc6978b7faa 100644 --- a/tutorial/layers/softmax.html +++ b/tutorial/layers/softmax.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -71,20 +71,20 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    // Message that stores parameters used by SoftmaxLayer, SoftmaxWithLossLayer
    -message SoftmaxParameter {
    -  enum Engine {
    -    DEFAULT = 0;
    -    CAFFE = 1;
    -    CUDNN = 2;
    -  }
    -  optional Engine engine = 1 [default = DEFAULT];
    +
    // Message that stores parameters used by SoftmaxLayer, SoftmaxWithLossLayer
    +message SoftmaxParameter {
    +  enum Engine {
    +    DEFAULT = 0;
    +    CAFFE = 1;
    +    CUDNN = 2;
    +  }
    +  optional Engine engine = 1 [default = DEFAULT];
     
    -  // The axis along which to perform the softmax -- may be negative to index
    -  // from the end (e.g., -1 for the last axis).
    -  // Any other axes will be evaluated as independent softmaxes.
    -  optional int32 axis = 2 [default = 1];
    -}
    + // The axis along which to perform the softmax -- may be negative to index + // from the end (e.g., -1 for the last axis). + // Any other axes will be evaluated as independent softmaxes. + optional int32 axis = 2 [default = 1]; +}

    See also

    diff --git a/tutorial/layers/softmaxwithloss.html b/tutorial/layers/softmaxwithloss.html index 5bee89450de..5f0a557a943 100644 --- a/tutorial/layers/softmaxwithloss.html +++ b/tutorial/layers/softmaxwithloss.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -73,54 +73,54 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    // Message that stores parameters used by SoftmaxLayer, SoftmaxWithLossLayer
    -message SoftmaxParameter {
    -  enum Engine {
    -    DEFAULT = 0;
    -    CAFFE = 1;
    -    CUDNN = 2;
    -  }
    -  optional Engine engine = 1 [default = DEFAULT];
    -
    -  // The axis along which to perform the softmax -- may be negative to index
    -  // from the end (e.g., -1 for the last axis).
    -  // Any other axes will be evaluated as independent softmaxes.
    -  optional int32 axis = 2 [default = 1];
    -}
    +
    // Message that stores parameters used by SoftmaxLayer, SoftmaxWithLossLayer
    +message SoftmaxParameter {
    +  enum Engine {
    +    DEFAULT = 0;
    +    CAFFE = 1;
    +    CUDNN = 2;
    +  }
    +  optional Engine engine = 1 [default = DEFAULT];
    +
    +  // The axis along which to perform the softmax -- may be negative to index
    +  // from the end (e.g., -1 for the last axis).
    +  // Any other axes will be evaluated as independent softmaxes.
    +  optional int32 axis = 2 [default = 1];
    +}
    -
    // Message that stores parameters shared by loss layers
    -message LossParameter {
    -  // If specified, ignore instances with the given label.
    -  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 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
    -    // 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;
    -  }
    -  // 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
    -  // normalization = BATCH_SIZE to be consistent with previous behavior.
    -  optional bool normalize = 2;
    -}
    +
    // Message that stores parameters shared by loss layers
    +message LossParameter {
    +  // If specified, ignore instances with the given label.
    +  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 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
    +    // 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;
    +  }
    +  // 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
    +  // normalization = BATCH_SIZE to be consistent with previous behavior.
    +  optional bool normalize = 2;
    +}

    See also

    diff --git a/tutorial/layers/split.html b/tutorial/layers/split.html index 0d2ba9c0adb..35ada75abbc 100644 --- a/tutorial/layers/split.html +++ b/tutorial/layers/split.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by diff --git a/tutorial/layers/spp.html b/tutorial/layers/spp.html index f46cbd87c6f..5a71ade0704 100644 --- a/tutorial/layers/spp.html +++ b/tutorial/layers/spp.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -70,21 +70,21 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    message SPPParameter {
    -  enum PoolMethod {
    -    MAX = 0;
    -    AVE = 1;
    -    STOCHASTIC = 2;
    -  }
    -  optional uint32 pyramid_height = 1;
    -  optional PoolMethod pool = 2 [default = MAX]; // The pooling method
    -  enum Engine {
    -    DEFAULT = 0;
    -    CAFFE = 1;
    -    CUDNN = 2;
    -  }
    -  optional Engine engine = 6 [default = DEFAULT];
    -}
    +
    message SPPParameter {
    +  enum PoolMethod {
    +    MAX = 0;
    +    AVE = 1;
    +    STOCHASTIC = 2;
    +  }
    +  optional uint32 pyramid_height = 1;
    +  optional PoolMethod pool = 2 [default = MAX]; // The pooling method
    +  enum Engine {
    +    DEFAULT = 0;
    +    CAFFE = 1;
    +    CUDNN = 2;
    +  }
    +  optional Engine engine = 6 [default = DEFAULT];
    +}
    diff --git a/tutorial/layers/tanh.html b/tutorial/layers/tanh.html index 442331700d3..fa591027faf 100644 --- a/tutorial/layers/tanh.html +++ b/tutorial/layers/tanh.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -69,14 +69,14 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    message TanHParameter {
    -  enum Engine {
    -    DEFAULT = 0;
    -    CAFFE = 1;
    -    CUDNN = 2;
    -  }
    -  optional Engine engine = 1 [default = DEFAULT];
    -}
    +
    message TanHParameter {
    +  enum Engine {
    +    DEFAULT = 0;
    +    CAFFE = 1;
    +    CUDNN = 2;
    +  }
    +  optional Engine engine = 1 [default = DEFAULT];
    +}
    diff --git a/tutorial/layers/threshold.html b/tutorial/layers/threshold.html index 00c91c9b7a2..ec5f5a955fd 100644 --- a/tutorial/layers/threshold.html +++ b/tutorial/layers/threshold.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -69,10 +69,10 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    // Message that stores parameters used by ThresholdLayer
    -message ThresholdParameter {
    -  optional float threshold = 1 [default = 0]; // Strictly positive values
    -}
    +
    // Message that stores parameters used by ThresholdLayer
    +message ThresholdParameter {
    +  optional float threshold = 1 [default = 0]; // Strictly positive values
    +}
    diff --git a/tutorial/layers/tile.html b/tutorial/layers/tile.html index da508757d34..d769ed04ef3 100644 --- a/tutorial/layers/tile.html +++ b/tutorial/layers/tile.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -71,14 +71,14 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    // Message that stores parameters used by TileLayer
    -message TileParameter {
    -  // The index of the axis to tile.
    -  optional int32 axis = 1 [default = 1];
    +
    // Message that stores parameters used by TileLayer
    +message TileParameter {
    +  // The index of the axis to tile.
    +  optional int32 axis = 1 [default = 1];
     
    -  // The number of copies (tiles) of the blob to output.
    -  optional int32 tiles = 2;
    -}
    + // The number of copies (tiles) of the blob to output. + optional int32 tiles = 2; +}
    diff --git a/tutorial/layers/windowdata.html b/tutorial/layers/windowdata.html index 6967e82f899..c671f41af43 100644 --- a/tutorial/layers/windowdata.html +++ b/tutorial/layers/windowdata.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -70,38 +70,38 @@

    Parameters

  • From ./src/caffe/proto/caffe.proto:
  • -
    message WindowDataParameter {
    -  // Specify the data source.
    -  optional string source = 1;
    -  // For data pre-processing, we can do simple scaling and subtracting the
    -  // data mean, if provided. Note that the mean subtraction is always carried
    -  // out before scaling.
    -  optional float scale = 2 [default = 1];
    -  optional string mean_file = 3;
    -  // Specify the batch size.
    -  optional uint32 batch_size = 4;
    -  // Specify if we would like to randomly crop an image.
    -  optional uint32 crop_size = 5 [default = 0];
    -  // Specify if we want to randomly mirror data.
    -  optional bool mirror = 6 [default = false];
    -  // Foreground (object) overlap threshold
    -  optional float fg_threshold = 7 [default = 0.5];
    -  // Background (non-object) overlap threshold
    -  optional float bg_threshold = 8 [default = 0.5];
    -  // Fraction of batch that should be foreground objects
    -  optional float fg_fraction = 9 [default = 0.25];
    -  // Amount of contextual padding to add around a window
    -  // (used only by the window_data_layer)
    -  optional uint32 context_pad = 10 [default = 0];
    -  // Mode for cropping out a detection window
    -  // warp: cropped window is warped to a fixed size and aspect ratio
    -  // square: the tightest square around the window is cropped
    -  optional string crop_mode = 11 [default = "warp"];
    -  // cache_images: will load all images in memory for faster access
    -  optional bool cache_images = 12 [default = false];
    -  // append root_folder to locate images
    -  optional string root_folder = 13 [default = ""];
    -}
    +
    message WindowDataParameter {
    +  // Specify the data source.
    +  optional string source = 1;
    +  // For data pre-processing, we can do simple scaling and subtracting the
    +  // data mean, if provided. Note that the mean subtraction is always carried
    +  // out before scaling.
    +  optional float scale = 2 [default = 1];
    +  optional string mean_file = 3;
    +  // Specify the batch size.
    +  optional uint32 batch_size = 4;
    +  // Specify if we would like to randomly crop an image.
    +  optional uint32 crop_size = 5 [default = 0];
    +  // Specify if we want to randomly mirror data.
    +  optional bool mirror = 6 [default = false];
    +  // Foreground (object) overlap threshold
    +  optional float fg_threshold = 7 [default = 0.5];
    +  // Background (non-object) overlap threshold
    +  optional float bg_threshold = 8 [default = 0.5];
    +  // Fraction of batch that should be foreground objects
    +  optional float fg_fraction = 9 [default = 0.25];
    +  // Amount of contextual padding to add around a window
    +  // (used only by the window_data_layer)
    +  optional uint32 context_pad = 10 [default = 0];
    +  // Mode for cropping out a detection window
    +  // warp: cropped window is warped to a fixed size and aspect ratio
    +  // square: the tightest square around the window is cropped
    +  optional string crop_mode = 11 [default = "warp"];
    +  // cache_images: will load all images in memory for faster access
    +  optional bool cache_images = 12 [default = false];
    +  // append root_folder to locate images
    +  optional string root_folder = 13 [default = ""];
    +}
    diff --git a/tutorial/loss.html b/tutorial/loss.html index 674171c6d9c..5ccbf59abcb 100644 --- a/tutorial/loss.html +++ b/tutorial/loss.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by diff --git a/tutorial/net_layer_blob.html b/tutorial/net_layer_blob.html index 0171d45d00e..bd8bcca5fb8 100644 --- a/tutorial/net_layer_blob.html +++ b/tutorial/net_layer_blob.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by diff --git a/tutorial/solver.html b/tutorial/solver.html index 3aef87463d8..982ba6124dc 100644 --- a/tutorial/solver.html +++ b/tutorial/solver.html @@ -36,7 +36,7 @@

    Caffe

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

    Created by @@ -128,7 +128,7 @@

    SGD

    Stochastic Gradient Descent Tricks. Neural Networks: Tricks of the Trade: Springer, 2012.

    -

    Rules of thumb for setting the learning rate and momentum

    +

    Rules of thumb for setting the learning rate and momentum

    A good strategy for deep learning with SGD is to initialize the learning rate to a value around , and dropping it by a constant factor (e.g., 10) throughout training when the loss begins to reach an apparent “plateau”, repeating this several times. Generally, you probably want to use a momentum or similar value.