tensorflow estimator使用总结

tensorflow estimator使用总结最近在使用 estimator 做项目 发现官网对这个 estimator 整体的讲解和使用过程中的细节讲的比较少 结合我是用过程中的问题 对 estimator 的使用步骤进行了总结 如下 代码见 github 求 star 1 estimator 主要需要 model fn input fn 以及 serving fn2 model fn 主要是是用来定义 model input

最近在使用estimator做项目,发现 官网 对 这个 estimator整体的讲解 和使用 过程中的细节讲的比较少,结合 我是用过程中的问题,对 estimator的使用步骤进行了总结,如下:代码 见github,求star~~

1. estimator主要需要model_fn,input_fn 以及 serving_fn

2. model_fn主要是是用来定义model  ,input_fn主要是用来 定义输入(一般情况下只负责用来定义 train和evaluate),serving_fn用来定义 serving过程中的输入

针对代码中estimator_template.ipynb详细说一下,您可以 参照着代码来看说明:

1. 建立模型

def create_model(params):     # 定义网络结构 和 损失 以及 返回值     pass def  model_fn_builder(params):     # 该方法实际 创建 estimator的model_fn     # 可以 有其他操作     def model_fn(features, labels, mode, params,config) #estimator需要的model_fn 参数固定     '''     features: from input_fn的返回  切记返回的顺序     labels: from input_fn 的返回  切记返回的顺序     mode: tf.estimator.ModeKeys实例的一种     params: 在初始化estimator时 传入的参数列表,dict形式,或者直接使用self.params也可以     config:初始化estimator时 的 Runconfig          '''         create_model(params)         if mode==tf.estimator.ModeKeys.PREDICT: # 执行预测             #...         elif mode==tf.estimator.ModeKeys.EVAL: #评估             #...         elif mode=tf.estimator.ModeKeys.TRAIN: # 训练             #...                  #......其它操作                  # 最后返回         return tf.estimator.EstimatorSpec(......)     return model_fn

在此,我将 model_fn这块,进行了分拆:create_model,model_fn_builder(返回model_fn)

create_model 只负责网络架构的创建,而不包括 后续 损失计算和返回的定义,这个操作 我统一放在了 model_fn中进行定义(为了 让 各个方法 只负责对应的事情),还有一点 需要注意,在create_model中,最后一层的输出,最好不适用 激活函数,而是在model_fn中对model的输出 进行 相应的操作,这样就可以保证 model可以共用

2. 输入方法:

def input_fn_builder(params): ''' 创建 输入函数闭包 ''' # 可以执行其它操作 def input_fn(......): # 具体操作...... return features,labels # 返回的 顺序要和 model_fn一致 或者 dataset元素 格式为(features,label)元组 也可以 return input_fn

这个函数 返回 输入函数闭包 

3. serving_fn

def serving_input_receiver_fn(): ''' 定义模型导出后,serving的输入值 ''' #.......各种数据转换 # 在此处 多说一些 关于 batch_features以及 receiver_tensor # 1. 首先 这两个 参数,相互之间 并没有 直接 的 关系(切记,没有直接关系,说明还是 有间接关系的) # 2. batch_features这个参数的格式必须 满足 model_fn中features参数格式 # 2.1 关于值的格式,首先他必须是 tensor或者sparseTensor 或者 字典格式(value必须是tensor/sparsetensor),然后features被传给model # 2.2 如果 features不是字典,则 该方法会自动将其封装为dict(视为一个样本),并使用‘feature’作为key # 2.3 总结:model必须接受一个形如{'feature':tensor}的字典作为入参 # 3.receiver_tensor 这个参数 是用来接收 请求 的 参数,改参数 一般可以 用一个 placeholder代替,后续经过各种变化, # 将receiver_tensor的值 转换为model_fn中features格式 # 3.1 必须是 tensor或者sparseTensor 或者 字典格式(value必须是tensor/sparsetensor) return tf.estimator.export.ServingInputReceiver(batch_features,receiver_tensor)

强调一下,这一块 仔细的看,因为 涉及到 生产部署。这块也很容易出错 

3. 模型训练,评估,预测,导出

这块直接看代码 并参照 tf官网 就会明白

4. 部署

具体部署方法还是 看代码吧,没什么 可说的,部署的话 还是 建议 使用 tensorflow serving docker方法,太方便了,后续 对k8s支持的也很好

最后,estimator.ipynb文件 是我按照 这个 步骤 写的一个demo

 

知乎: https://zhuanlan.zhihu.com/albertwang

微信公众号:AI-Research-Studio

https://img-blog.csdnimg.cn/20190110102516916.png ​​

下面是赞赏码

tensorflow estimator使用总结

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233112.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm2021最新激活码[最新免费获取]

    (pycharm2021最新激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlS32PGH0SQB-eyJsaWN…

    2022年3月26日
    80
  • if (donutString.indexOf(“dozen”) != -1)是什么意思

    if (donutString.indexOf(“dozen”) != -1)是什么意思

    2021年10月29日
    65
  • C# TransactionScope「建议收藏」

    C# TransactionScope「建议收藏」TransactionScopeTransactionScope事务处理经常用到,老是用了又忘,做点记录。TransactionScope的定义跟使用介绍。TransactionScopeOptionTransactionScopeOption枚举型用来决定一个TransactionScope是用已有的事务,还是定义TransactionScope的新做一个事务,还是完全不用事务。默认是Required,Required表示如果已有事务,就加入该事务,否则新建一个事务。TransactionOp

    2022年7月19日
    18
  • 串口助手(简洁版)上位机软件零基础教程( C# + visual studio2017 )(一)[通俗易懂]

    串口助手(简洁版)上位机软件零基础教程( C# + visual studio2017 )(一)[通俗易懂]本人所在铁人战队的实验室同学们主要从事单片机的编程开发。但比赛和项目过程中,常常都需要与机器人进行人机交互。虽然实验室常用的HMI串口屏能满足我们的基本需求,但没东西在手的时候,就是个难题了。所以本文则介绍一下使用visualstudio软件,进行C#上位机软件的开发入门。以同学们常用的串口助手(简洁版)为例,来着手进行学习和入门。由于笔者知识有限,且是第一次写博客,有不足或错误之处,还…

    2022年5月31日
    46
  • java根据子节点获取它对应的所有父节点_java根据父节点查找子节点

    java根据子节点获取它对应的所有父节点_java根据父节点查找子节点递归获取所有子节点测试用例:/***递归获取所有子节点,不包含自己*/publicclassgetChildren{ staticList<Map<String,Object>>childCategoryList=newArrayList<Map<String,Object>>(); publicsta…

    2022年9月17日
    1
  • Android 平台的Python——基础篇(一)

    Android 平台的Python——基础篇(一)前言(本文以Python3为例,Python3是未来,大家都懂的)Python作为一个功能强大又语法简洁的语言,其应用已无需多言。要想在Android平台运行起Python,也有方案实现,其实质就是在Android系统上搭建Python环境。对此Google已经提供了SL4A(ScriptingLayerforAndroid)方案,支持多种脚本语言,除此之外,还可以使用一个

    2022年5月12日
    68

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号