tensorfx, 面向训练和服务机器学习模型的TensorFlow框架

分享于 

10分钟阅读

GitHub

  繁體 雙語
TensorFlow framework for training and serving machine learning models
  • 源代码名称:tensorfx
  • 源代码网址:http://www.github.com/TensorLab/tensorfx
  • tensorfx源代码文档
  • tensorfx源代码下载
  • Git URL:
    git://www.github.com/TensorLab/tensorfx.git
    Git Clone代码到本地:
    git clone http://www.github.com/TensorLab/tensorfx
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/TensorLab/tensorfx
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    TensorFX简介

    TensorFX是结束应用程序框架的一个结束,用 TensorFlow 简化机器学习,同时使用两种训练模型来预测。 方案从底层设计,使主线场景简单,具有较高级别的构建块,同时确保定制或者复杂场景仍然能够保持 TensorFlow api的灵活性。

    框架的设计有一些重要的原则:

    在整个文件中,无论代码执行方式如何,都必须在内存数据或者大数据分片中使用简单的。一致的一组使用模式。单个或者分布式执行,否则必须编写代码。

    利用有用的抽象为工具箱提供任务entrypoint从off-the-shelf算法开始,让你专注于特性工程和hyperparam调优。 如果你需要解决某些问题,你可以关注构建TensorFlow图,而不是基础设施代码(。分布式群集设置,检查点,日志记录,导出模型 等等 )。

    使用 YAML。JSON和简化的接口的声明式,以最小化样板代码数量。

    有足够的上下文。这里有一些信息可以让你开始。

    启动

    当你拥有 python 环境( 推荐: 使用 Miniconda ),安装非常简单:

    
    pip install tensorflow
    
    
    pip install tensorfx
    
    
    
    

    注意TensorFX依赖于 TensorFlow 1.0,支持诸如numpy和 Pandas 这样的支持库。

    文档

    文档位于 https://tensorlab.github.io/tensorfx/。 这包括API参考主题,以及概念和如何主题。 他们是 work-in-progress,但请检查一下 ! 有几个示例演示如何在存储库中启动。 同样地,随着时间的推移,。

    的贡献和发展

    我们欢迎以想法。问题。样本和代码为形式的贡献。 因为项目是一个超级早期的阶段,并且快速发展,最好开始讨论任何捐赠的问题。

    插件构建和测试

    如果要在知识库中进行开发,请克隆它,并运行以下命令:

    
    # Install requirements and setup envionment
    
    
    source init.sh install
    
    
    
    # Build and Test
    
    
    ./build.sh test
    
    
    
    

    相关链接

    • 开发工作流[ todo: 添加wiki条目]

    Hello World - Iris分类模型

    这里示例是对使用TensorFX的快速 5-minute 介绍。 本文给出了一种针对数据集的前向神经网络分类模型的编码。

    
    import tensorfx as tfx
    
    
    import tensorfx.models.nn as nn
    
    
    
    # Hyperparameters, training parameters, and data
    
    
    args, job = nn.FeedForwardClassificationArguments.parse(parse_job=True)
    
    
    dataset = tfx.data.CsvDataSet(args.data_schema,
    
    
     train=args.data_train,
    
    
     eval=args.data_eval,
    
    
     metadata=args.data_metadata,
    
    
     features=args.data_features)
    
    
    
    # Instantiating the model builder
    
    
    classification = nn.FeedForwardClassification(args, dataset)
    
    
    
    # Training
    
    
    trainer = tfx.training.ModelTrainer()
    
    
    model = trainer.train(classification, job)
    
    
    
    # Prediction
    
    
    instances = [
    
    
     '6.3,3.3,6,2.5', # virginica
    
    
     '4.4,3,1.3,0.2', # setosa
    
    
     '6.1,2.8,4.7,1.2' # versicolor
    
    
    ]
    
    
    predictions = model.predict(instances)
    
    
    
    

    以下是TensorFX提供的基本用法的概要步骤:

    • 解析( 或者生成) 对象,通常从命令行定义 hyperparameters。 这里对象对应于你训练的模型类型,因此在本例中为 FeedForwardClassificationArguments
    • 创建一个数据集来引用培训和评估数据,以及支持配置- - 架构,元数据和功能( 更多关于下面的内容)。
    • 初始化模型生成器- 在本例中为 FeedForwardClassification
    • 初始化模型训练器,调用运行训练流程的train() 以返回模型。
    • 加载要在模型中运行的一些实例并调用 predict()
    • 架构- schema.yaml

    架构描述数据的结构。 这可以编程方式定义,但是可以方便地用声明式vmkernel表单表示,并放置在。

    
    fields:
    
    
    - name: species
    
    
     type: discrete
    
    
    - name: petal_length
    
    
     type: numeric
    
    
    - name: petal_width
    
    
     type: numeric
    
    
    - name: sepal_length
    
    
     type: numeric
    
    
    - name: sepal_width
    
    
     type: numeric
    
    
    
    
    元数据- metadata.json

    元数据是分析训练数据的结果,基于模式中的类型信息。 Iris是一个小数据集,因此使用简单的代码循环在数据上使用简单的代码即可。 对于真实和大型数据集,你将发现Spark和 BigQuery ( Google云平台) 作为基本的数据处理。 保持调优- TensorFX将为这些功能提供支持。

    
    {
    
    
    "species": {"entries": ["setosa","virginica","versicolor"] },
    
    
    "petal_length": {"min": 4.3,"max": 7.9 },
    
    
    "petal_width": {"min": 2.0,"max": 4.4 },
    
    
    "sepal_length": {"min": 1.1,"max": 6.9 },
    
    
    "sepal_width": {"min": 0.1,"max": 2.5 }
    
    
    }
    
    
    
    
    特性- features.yaml

    和模式一样,功能也可以编程方式定义,或者用。 特性描述模型操作的输入集,以及如何通过对数据中的字段应用转换来生成它们。 这些转换转化为TensorFlow图构造,并一致地应用于训练和预测数据。

    在这个特定的例子中,FeedForwardClassification模型需要两个特性: X 定义模型用于生成推理的值,Y,该模型预期预测的目标标签,如下所示:

    
    features:
    
    
    - name: X
    
    
     type: concat
    
    
     features:
    
    
     - name: petal_width
    
    
     type: scale
    
    
     - name: petal_length
    
    
     type: scale
    
    
     - name: sepal_width
    
    
     type: log
    
    
     - name: sepal_length
    
    
     type: log
    
    
    - name: Y
    
    
     type: target
    
    
     fields: species
    
    
    
    
    运行模型

    示例中的python 代码可以直接运行,也可以使用 train 工具,如下所示:

    
    cd samples
    
    
    tfx train 
    
    
     --module iris.trainer.main 
    
    
     --output/tmp/tensorfx/iris/csv 
    
    
     --data-train iris/data/train.csv 
    
    
     --data-eval iris/data/eval.csv 
    
    
     --data-schema iris/data/schema.yaml 
    
    
     --data-metadata iris/data/metadata.json 
    
    
     --data-features iris/features.yaml 
    
    
     --log-level-tensorflow ERROR 
    
    
     --log-level INFO 
    
    
     --batch-size 5 
    
    
     --max-steps 2000 
    
    
     --checkpoint-interval-secs 1 
    
    
     --hidden-layers:1 20 
    
    
     --hidden-layers:2 10
    
    
    
    

    训练完成后,你可以列出输出目录的内容。 你应该在 model 子目录中看到模型( 预测图,学习变量),以及检查点和概要。

    
    ls -R/tmp/tensorfx/iris/csv
    
    
    checkpoints job.yaml model summaries
    
    
    
    /tmp/tensorfx/iris/csv/checkpoints:
    
    
    checkpoint model.ckpt-2000.index
    
    
    model.ckpt-1.data-00000-of-00001 model.ckpt-2000.meta
    
    
    model.ckpt-1.index model.ckpt-2001.data-00000-of-00001
    
    
    model.ckpt-1.meta model.ckpt-2001.index
    
    
    model.ckpt-1562.data-00000-of-00001 model.ckpt-2001.meta
    
    
    model.ckpt-1562.index model.ckpt-778.data-00000-of-00001
    
    
    model.ckpt-1562.meta model.ckpt-778.index
    
    
    model.ckpt-2000.data-00000-of-00001 model.ckpt-778.meta
    
    
    
    /tmp/tensorfx/iris/csv/model:
    
    
    saved_model.pb variables
    
    
    
    /tmp/tensorfx/iris/csv/model/variables:
    
    
    variables.data-00000-of-00001 variables.index
    
    
    
    /tmp/tensorfx/iris/csv/summaries:
    
    
    eval prediction train
    
    
    
    /tmp/tensorfx/iris/csv/summaries/eval:
    
    
    events.out.tfevents.1488351760
    
    
    events.out.tfevents.1488352853
    
    
    
    /tmp/tensorfx/iris/csv/summaries/prediction:
    
    
    events.out.tfevents.1488351765
    
    
    
    /tmp/tensorfx/iris/csv/summaries/train:
    
    
    events.out.tfevents.1488351760
    
    
    events.out.tfevents.1488352852
    
    
    
    

    摘要是在培训期间记录的TensorFlow事件。 在训练作业运行时可以观察到它们,以了解训练是如何进行的,或者模型是如何聚合的,而不是。

    
    tensorboard --logdir/tmp/tensorfx/iris/csv
    
    
    
    

    这应该会引起 TensorBoard。 它可以看到图结构。度量和其他被自动发布的张量。

    培训图

    Graphs in TensorBoard

    培训指标--精确度,损失和吞吐量评估

    Metrics in TensorBoard

    模型变量--权重,渐变等。

    Watchin Learnt Variables

    你可以看到,out-of-box模型负责许多细节。 相同的代码可以在单个机器上运行,也可以在集群( 当然,iris的问题太简单了) 中运行。


      framework  mac  模式  learn  MACH