01 制作caffe 发布版本
caffe提供了linux下面制作发布版本的Makefile命令
当编译完caffe pycaffe matcaffe后,运行make distribue即可制作caffe的发布版本。在caffe根目录下运行:
make distribue
运行结果如下:
# add proto
cp -r src/caffe/proto distribute/
# add include
cp -r include distribute/
mkdir -p distribute/include/caffe/proto
cp .build_release/src/caffe/proto/caffe.pb.h distribute/include/caffe/proto
# add tool and example binaries
cp .build_release/tools/upgrade_net_proto_binary.bin .build_release/tools/device_query.bin .build_release/tools/finetune_net.bin .build_release/tools/upgrade_solver_proto_text.bin .build_release/tools/net_speed_benchmark.bin .build_release/tools/test_net.bin .build_release/tools/convert_imageset.bin .build_release/tools/train_net.bin .build_release/tools/compute_image_mean.bin .build_release/tools/extract_features.bin .build_release/tools/upgrade_net_proto_text.bin .build_release/tools/caffe.bin distribute/bin
cp .build_release/examples/siamese/convert_mnist_siamese_data.bin .build_release/examples/cpp_classification/classification.bin .build_release/examples/mnist/convert_mnist_data.bin .build_release/examples/cifar10/convert_cifar_data.bin distribute/bin
# add libraries
cp .build_release/lib/libcaffe.a distribute/lib
install -m 644 .build_release/lib/libcaffe.so.1.0.0-rc3 distribute/lib
cd distribute/lib; rm -f libcaffe.so; ln -s libcaffe.so.1.0.0-rc3 libcaffe.so
# add python - it's not the standard way, indeed...
cp -r python distribute/python
02 发布版本内容
运行tree ./distribute/
查看发布版本caffe/distribute目录的所有内容:
[比较奇怪的代码是rc4,编译结果 libcaffe.so.1.0.0-rc3]
./distribute/
├── bin
│ ├── caffe.bin
│ ├── classification.bin
│ ├── compute_image_mean.bin
│ ├── convert_cifar_data.bin
│ ├── convert_imageset.bin
│ ├── convert_mnist_data.bin
│ ├── convert_mnist_siamese_data.bin
│ ├── device_query.bin
│ ├── extract_features.bin
│ ├── finetune_net.bin
│ ├── net_speed_benchmark.bin
│ ├── test_net.bin
│ ├── train_net.bin
│ ├── upgrade_net_proto_binary.bin
│ ├── upgrade_net_proto_text.bin
│ └── upgrade_solver_proto_text.bin
├── include
│ └── caffe
│ ├── blob.hpp
│ ├── caffe.hpp
│ ├── common.hpp
│ ├── data_transformer.hpp
│ ├── filler.hpp
│ ├── internal_thread.hpp
│ ├── layer_factory.hpp
│ ├── layer.hpp
│ ├── layers
│ │ ├── absval_layer.hpp
│ │ ├── accuracy_layer.hpp
│ │ ├── argmax_layer.hpp
│ │ ├── base_conv_layer.hpp
│ │ ├── base_data_layer.hpp
│ │ ├── batch_norm_layer.hpp
│ │ ├── batch_reindex_layer.hpp
│ │ ├── bias_layer.hpp
│ │ ├── bnll_layer.hpp
│ │ ├── concat_layer.hpp
│ │ ├── contrastive_loss_layer.hpp
│ │ ├── conv_layer.hpp
│ │ ├── crop_layer.hpp
│ │ ├── cudnn_conv_layer.hpp
│ │ ├── cudnn_lcn_layer.hpp
│ │ ├── cudnn_lrn_layer.hpp
│ │ ├── cudnn_pooling_layer.hpp
│ │ ├── cudnn_relu_layer.hpp
│ │ ├── cudnn_sigmoid_layer.hpp
│ │ ├── cudnn_softmax_layer.hpp
│ │ ├── cudnn_tanh_layer.hpp
│ │ ├── data_layer.hpp
│ │ ├── deconv_layer.hpp
│ │ ├── dropout_layer.hpp
│ │ ├── dummy_data_layer.hpp
│ │ ├── eltwise_layer.hpp
│ │ ├── elu_layer.hpp
│ │ ├── embed_layer.hpp
│ │ ├── euclidean_loss_layer.hpp
│ │ ├── exp_layer.hpp
│ │ ├── filter_layer.hpp
│ │ ├── flatten_layer.hpp
│ │ ├── hdf5_data_layer.hpp
│ │ ├── hdf5_output_layer.hpp
│ │ ├── hinge_loss_layer.hpp
│ │ ├── im2col_layer.hpp
│ │ ├── image_data_layer.hpp
│ │ ├── infogain_loss_layer.hpp
│ │ ├── inner_product_layer.hpp
│ │ ├── input_layer.hpp
│ │ ├── log_layer.hpp
│ │ ├── loss_layer.hpp
│ │ ├── lrn_layer.hpp
│ │ ├── lstm_layer.hpp
│ │ ├── memory_data_layer.hpp
│ │ ├── multinomial_logistic_loss_layer.hpp
│ │ ├── mvn_layer.hpp
│ │ ├── neuron_layer.hpp
│ │ ├── parameter_layer.hpp
│ │ ├── pooling_layer.hpp
│ │ ├── power_layer.hpp
│ │ ├── prelu_layer.hpp
│ │ ├── python_layer.hpp
│ │ ├── recurrent_layer.hpp
│ │ ├── reduction_layer.hpp
│ │ ├── relu_layer.hpp
│ │ ├── reshape_layer.hpp
│ │ ├── rnn_layer.hpp
│ │ ├── scale_layer.hpp
│ │ ├── sigmoid_cross_entropy_loss_layer.hpp
│ │ ├── sigmoid_layer.hpp
│ │ ├── silence_layer.hpp
│ │ ├── slice_layer.hpp
│ │ ├── softmax_layer.hpp
│ │ ├── softmax_loss_layer.hpp
│ │ ├── split_layer.hpp
│ │ ├── spp_layer.hpp
│ │ ├── tanh_layer.hpp
│ │ ├── threshold_layer.hpp
│ │ ├── tile_layer.hpp
│ │ └── window_data_layer.hpp
│ ├── net.hpp
│ ├── parallel.hpp
│ ├── proto
│ │ └── caffe.pb.h
│ ├── sgd_solvers.hpp
│ ├── solver_factory.hpp
│ ├── solver.hpp
│ ├── syncedmem.hpp
│ ├── test
│ │ ├── test_caffe_main.hpp
│ │ └── test_gradient_check_util.hpp
│ └── util
│ ├── benchmark.hpp
│ ├── blocking_queue.hpp
│ ├── cudnn.hpp
│ ├── db.hpp
│ ├── db_leveldb.hpp
│ ├── db_lmdb.hpp
│ ├── device_alternate.hpp
│ ├── format.hpp
│ ├── gpu_util.cuh
│ ├── hdf5.hpp
│ ├── im2col.hpp
│ ├── insert_splits.hpp
│ ├── io.hpp
│ ├── math_functions.hpp
│ ├── mkl_alternate.hpp
│ ├── nccl.hpp
│ ├── rng.hpp
│ ├── signal_handler.h
│ └── upgrade_proto.hpp
├── lib
│ ├── libcaffe.a
│ ├── libcaffe.so -> libcaffe.so.1.0.0-rc3
│ └── libcaffe.so.1.0.0-rc3
├── proto
│ └── caffe.proto
└── python
├── caffe
│ ├── _caffe.cpp
│ ├── _caffe.so
│ ├── classifier.py
│ ├── classifier.pyc
│ ├── coord_map.py
│ ├── detector.py
│ ├── detector.pyc
│ ├── draw.py
│ ├── draw.pyc
│ ├── imagenet
│ │ └── ilsvrc_2012_mean.npy
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── io.py
│ ├── io.pyc
│ ├── net_spec.py
│ ├── net_spec.pyc
│ ├── proto
│ │ ├── caffe_pb2.py
│ │ ├── caffe_pb2.pyc
│ │ ├── __init__.py
│ │ └── __init__.pyc
│ ├── pycaffe.py
│ ├── pycaffe.pyc
│ └── test
│ ├── test_coord_map.py
│ ├── test_io.py
│ ├── test_layer_type_list.py
│ ├── test_net.py
│ ├── test_net_spec.py
│ ├── test_python_layer.py
│ ├── test_python_layer_with_param_str.py
│ └── test_solver.py
├── classify.py
├── CMakeLists.txt
├── detect.py
├── draw_net.py
├── requirements.txt
└── train.py
14 directories, 163 files