Sacred是一个能够帮助你配置,组织,记录和重现实验的工具。它旨在完成我们需要围绕实验进行的所有繁琐的日常工作,以便:
持续跟进我们实验的所有参数
简单的进行不同设置的实验
将单次运行的实验配置信息保存到数据库中
重现我们的结果
Sacred实现这些通过下面的机制:
ConfigScopes:函数中局部变量定义实验所用参数的一种非常方便的方法。
Config Injection:可以从每个函数访问我们配置的所有参数。 它们会按名称自动注入。
Command-line interface:我们可以为每个实验获得一个强大的命令行接口,可以使用它来更改参数并运行不同的变体。
Observers:Sacred提供了一个Observers,它可以记录我们实验中的各种信息:实验的依赖项,使用到的配置信息,运行的机器信息以及实验结果。这些可以保存到MongoDB中,以便后续的访问。
Automatic seeding:帮助控制实验中的随机性,从而使结果保持可重复性。
在iris数据集上训练SVM的脚本:
from numpy.random import permutation
from sklearn import svm, datasets
C = 1.0
gamma = 0.7
iris = datasets.load_iris()
perm = permutation(iris.target.size)
iris.data = iris.data[perm]
iris.target = iris.target[perm]
clf = svm.SVC(C, 'rbf', gamma=gamma)
clf.fit(iris.data[:90],
iris.target[:90])
print(clf.score(iris.data[90:],
iris.target[90:]))
用Sacred进行实验的脚本:
from numpy.random import permutation
from sklearn import svm, datasets
from sacred import Experiment
ex = Experiment('iris_rbf_svm')
@ex.config
def cfg():
C = 1.0
gamma = 0.7
@ex.automain
def run(C, gamma):
iris = datasets.load_iris()
per = permutation(iris.target.size)
iris.data = iris.data[per]
iris.target = iris.target[per]
clf = svm.SVC(C, 'rbf', gamma=gamma)
clf.fit(iris.data[:90],
iris.target[:90])
return clf.score(iris.data[90:],
iris.target[90:])