package org.algorithm.core.neural;

import org.algorithm.core.neural.dataset.NNDataSet;
import org.algorithm.core.neural.dataset.NNDataSetImpl;
import org.diagbot.pub.utils.PropertiesUtil;

/**
 * Tensorlflow 模型加载工厂
 * @Author: bijl
 * @Date: 2018年7月19日-下午7:28:58
 * @Description:
 */
public class TensorFlowModelLoadFactory {
    
    /**
     * 加载并创建模型类
     * @param exportDir  模型保存地址
     * @param inputOpName  输入op的名称
     * @param outputOpName  输出op的名称
     * @param dataSet     模型使用的数据集
     * @return 模型
     */
    public static TensorflowModel create(String modelVersion) {
        
        
        PropertiesUtil prop = new PropertiesUtil("/algorithm.properties");
        
        String inputOpName = "X";  // 统一输入op名称
        String outputOpName = "softmax/softmax";  // 统一输出op名称
        
        // TODO:修改的地方
//        NNDataSet dataSet = new NNDataSetImplNonParallel(modelVersion);  // 新模型
        NNDataSet dataSet = new NNDataSetImpl(modelVersion);  // 老模型
        
        String modelPath =prop.getProperty("basicPath");  // 模型基本路径
        modelVersion = prop.getProperty(modelVersion);
        modelPath = modelPath.replace("model_version_replacement", modelVersion);  // 生成模型路径
        
        TensorflowModel tm = new TensorflowModel(modelPath, inputOpName, outputOpName,
                dataSet);
        return tm;
    }

}
