在理解如何使caffe运行之后,我们要理解它是如何运行的,即了解Solver类的Solve()函数做了什么,对于Solver类中如何初始化网络以及其他参数,有兴趣的可以深入研究。
源码中Solver()函数是有参数形式的
// The main entry of the solver function. In default, iter will be zero. Pass
// in a non-zero iter number to resume training for a pre-trained net.
virtual void Solve(const char* resume_file = NULL);
inline void Solve(const string resume_file) { Solve(resume_file.c_str()); }各位一看就明白了吧。再看Solve函数的定义
template <typename Dtype>
void Solver<Dtype>::Solve(const char* resume_file) {
CHECK(Caffe::root_solver());
LOG(INFO) << "Solving " << net_->name();
LOG(INFO) << "Learning Rate Policy: " << param_.lr_policy();
// Initialize to false every time we start solving.
requested_early_exit_ = false;
if (resume_file) {
LOG(INFO) << "Restoring previous solver status from " << resume_file;
Restor

本文主要探讨Caffe框架中的Solver类,特别是Solve()函数的工作原理。通过源码解读,揭示网络初始化和训练过程的关键细节。在训练结束后,Caffe会自动保存当前模型。
最低0.47元/天 解锁文章
753

被折叠的 条评论
为什么被折叠?



