点燃:如何保存和重新加载训练模型

问题描述 投票:1回答:1

以下是我用来训练我的模型的代码段。在此之后如何以及在何处可以保存我的模型,并读回比FileExporter类其他?它是只在一个文件或者我可以将其存储在缓存和访问回来?

IgniteCache<Integer, double[]> cache = ignite.getOrCreateCache("MLData_IRIS");

// extracting   sepal length, sepal width, petal length, petal width
IgniteBiFunction<Integer, double[], Vector> featureExtractor = new RangeExtractor(1, 5);
IgniteBiFunction<Integer, double[], Double> labelExtractor = new PointExtractor(0);

System.out.println(">>> Create new training dataset splitter object.");
TrainTestSplit<Integer, double[]> split = new TrainTestDatasetSplitter<Integer, double[]>()
    .split(0.5, 0.5);

IgniteBiPredicate<Integer, double[]> testData = split.getTestFilter();
IgniteBiPredicate<Integer, double[]> trainData = split.getTrainFilter();

// Set up the trainer
KMeansTrainer trainer = new KMeansTrainer()
    .withDistance(new EuclideanDistance())  //other metrics are HammingDistance, ManhattanDistance
    .withAmountOfClusters(3) // number clusters want to create
    .withMaxIterations(100)
    .withEpsilon(1.0E-4D)
    .withSeed(1234L);

long t1 = System.currentTimeMillis();

KMeansModel mdl = trainer.fit(
    ignite,
    cache,
    trainData,
    featureExtractor,
    labelExtractor
);

long t2 = System.currentTimeMillis();
System.out.println("time taken to build the model : " + (t2 - t1) + " ms");

System.out.println(">>> --------------------------------------------");
System.out.println(">>> trained model: " + mdl.toString(true));
java intellij-idea ignite
1个回答
2
投票

现在点燃只有这种机制 - FileExporter。

但是,对于2.8版本中,我们已经实现了模型存储。

样品保存模型:

ModelStorage storage = new ModelStorageFactory().getModelStorage(ignite);
        storage.mkdirs("/");
        storage.putFile("/my_model", serializedMdl);

        ModelDescriptor desc = new ModelDescriptor(
            "MyModel",
            "My Cool Model",
            new ModelSignature("", "", ""),
            new ModelStorageModelReader("/my_model"),
            new IgniteModelParser<>()
        );
        ModelDescriptorStorage descStorage = new ModelDescriptorStorageFactory().getModelDescriptorStorage(ignite);
        descStorage.put("my_model", desc);

样品加载模型:

Ignite ignite = Ignition.ignite();

        ModelDescriptorStorage descStorage = new ModelDescriptorStorageFactory().getModelDescriptorStorage(ignite);
        ModelDescriptor desc = descStorage.get(mdl);

        Model<byte[], byte[]> infMdl = new SingleModelBuilder().build(desc.getReader(), desc.getParser());

        Vector input = VectorUtils.of(x);

        try {
            return deserialize(infMdl.predict(serialize(input)));
        }
        catch (IOException | ClassNotFoundException e) {
            throw new RuntimeException(e);
        }

其中X - 是双打和MDL的载体 - 是型号名称。

注意:此API将提供与发行2.8。但是,你可以,如果你从主分支建立的Ignite现在尝试。

© www.soinside.com 2019 - 2024. All rights reserved.