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)
上一篇 2025年8月14日 下午5:01
下一篇 2025年8月14日 下午5:22


相关推荐

  • Web Service进阶(一)运行原理[通俗易懂]

    Web Service进阶(一)运行原理[通俗易懂]利用清明小假期,温习了一遍WebService的相关内容,对其工作原理进行了简要总结。以供有需求的朋友和自己日后参考。文章若有不当之处,敬请朋友们提出宝贵建议,以求共勉。Web服务中,我们应该首先了解相关的术语含义:WSDL、UDDI….相关术语方面的介绍在此不再赘述,重点放在原理上。在Web服务中,存在三个角色:服务提供者、服务请求者和服务中介,三者之间的关系如图1…

    2022年7月24日
    15
  • HDU 5929 Basic Data Structure 模拟

    HDU 5929 Basic Data Structure 模拟

    2022年3月6日
    44
  • .pfx 证书和 .cer 证书

    .pfx 证书和 .cer 证书证书系列:1:.pfx证书和.cer证书2:导入pfx证书通常情况下,作为文件形式存在的证书一般有三种格式:第一种:带有私钥的证书,由PublicKeyCryptographyStandards#12,PKCS#12标准定义,包含了公钥和私钥的二进制格式的证书形式,以.pfx作为证书文件后缀名。 第二种:DEREncodedBinary(.cer)二进制编码的证书,证书中没有私钥,DER编码二进制格式的证书文件,以.cer作为证书文件后缀名。 第三种:Bas.

    2022年6月3日
    97
  • java使用xquery_java xquery

    java使用xquery_java xquery选择特定 XML 文档 为 XPath 返回的节点增加选择条件的附加语法 API 接口 如 XQJ XQueryforJav 应用 XQuery 需要使用具体的编程语言对 XQuery 简化 XQuery 解析器的设计与实现 ASimplifiedX 1 人 已定 90XML 在 RDB 的存储机制 1 人 已定 91 一种有效的内存数据库索

    2026年3月18日
    2
  • PHP利用纯真IP数据库在本地实现IP地址信息查询

    PHP利用纯真IP数据库在本地实现IP地址信息查询

    2021年10月18日
    72
  • Java 字符串包含_实现字符串的复制

    Java 字符串包含_实现字符串的复制1问题描述给定一长字符串A和一短字符串B。请问,如何最快地判断出短字符串B中的所有字符是否都在长字符串A中?请编写一个判断函数实现此功能。为简单起见,假设输入的字符串只包含小写英文字母。下面举几个例子。(1)如果字符串A是”abcd”,字符串B是”bad”,答案是包含,因为字符串B中的字母都在字符串A中,或者说B是A的真子集。(2)如果字符串A是”abcd”,字符串B是”bce”,答案是…

    2022年10月9日
    4

发表回复

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

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