我有一个超基本的机器学习问题。我一直在学习各种关于机器学习的教程和在线课程,以及学习如何使用机器的各种技术,但是我没有看到持久的应用程序。
例如,我训练一个网络来识别花园侏儒是什么样子的,但是,在我运行了训练集并用测试数据验证之后,我如何保持这个网络,以便我可以给它一张单独的图片,并让它告诉我图片是否是花园侏儒的?每个教程似乎都让您在培训/验证集中运行,而没有关于如何以有意义的方式托管网络以供将来使用的任何概念。
谢谢!
使用python pickle库将经过培训的模型转储到硬盘上,加载模型并测试 持久的结果 .
这个问题更适合 Cross Validated 或 Data Science 但要点是:训练完网络后,有一个程序通常被称为“冻结”,这意味着以“持久”的方式保存网络:重量不再改变,训练过程中发生的一些事情(如辍学)也会被丢弃。
您的网络保存在磁盘上的某个位置,然后可以使用专用功能重新加载。 然后,您可以像训练时那样将新图像传递到冻结的网络(例如 class=frozen_model(image) )
class=frozen_model(image)
要获得更具体的信息,您应该指定正在使用的库。
一旦模型/网络通过测试/开发集进行了培训和验证,最佳实践就是“冻结”它的状态并将其用于预测。
要在应用程序中集成网络或模型,应该维护模型的状态并将其存储,通常模型存储在 serializing ,标记它并将其保存到有状态存储(数据库或本地磁盘)。
python提供了各种序列化方法和库,包括内置的 pickle . 作为补充,这里有一个非常短的部分 pickling