我从教程中了解到,你首先创建数据,然后使用protobuf编写模型,接着编写求解器文件。最后,你训练模型并得到生成的文件。所有这些操作都是通过命令行完成的。现在有两个问题需要解答
1) 假设我已经生成了模型,现在我想加载一个不在测试文件夹中的新图像并进行前向传递。这应该通过命令行还是通过某种编程语言(如C++、Python)来完成?
2) 上述方法可能是一种方式。训练分类器的最佳方法是什么(是通过命令行训练还是通过编程)?以及如何在代码中使用训练后的生成模型文件?
我想将Caffe与我的代码进行接口,但找不到一个简短的教程,可以逐步指导我使用任何数据库(比如mnist),并且模型不需要像LeNet那样复杂,一个简单的全连接层也可以。但有谁能告诉我如何仅使用C++或Python编写一个简单的代码,从头开始训练任何数据集呢?
提供一个使用Caffe训练分类器并使用它预测新数据的C++/Python样本代码也将非常受欢迎。
回答:
训练最好通过命令行完成。请参见此教程。
一旦你训练了一个模型,并且你有了一个myModel.caffemodel
文件(一个存储不同层权重的二进制文件)和一个deploy.prototxt
文件(一个描述你的网络的文本文件),你就可以使用Python接口来对图像进行分类。
你可以运行Python脚本classify.py
从命令行对图像进行分类。这个脚本包装了classifier.py
– 一个Python对象,它保存了一个训练好的网络,并允许你在Python中进行前向传递。