一.引言

Tensorflow Esitimator 场景下常用到 feature column 对原始特征进行处理,TF1 与 TF2 在 feature column 的使用上有一些不同,下面通过两个简单例子区分。

二.TF 1.x feature column

1.定义特征列

常见的特征列如下,这里我们结合 bucketized_column + numeric_column 构造特征列

CSDN-BITDDD

年龄分桶,这里通过 10-90 作为边界,形成了10个分桶。

    age_bucket = tf.feature_column.bucketized_column(tf.feature_column.numeric_column(key='age_bucket', shape=(1,),default_value=0,dtype=tf.dtypes.float32),boundaries=[10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0])

2.通过特征列处理特征

通过 feature_column.input_layer 处理 features 得到 dense feature。

    age_bucket = tf.feature_column.bucketized_column(tf.feature_column.numeric_column(key='age_bucket', shape=(1,),default_value=0,dtype=tf.dtypes.float32),boundaries=[10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0])

示例:

fetures 构造特征 Map,通过与 feature_column 相同的 key 建立关联,得到特征值的 one-hot 向量,这里特征值维度为3,分桶数为10,所以最终的结果维度为 3x10。

    features = {}features['age_bucket'] = [[23.0], [35.0], [68.0]]one_hot = tf.feature_column.input_layer(features, [age_bucket])with tf.Session() as sess:print(sess.run(one_hot))
Tensor("input_layer/concat:0", shape=(3, 10), dtype=float32)
[[0. 0. 1. 0. 0. 0. 0. 0. 0. 0.][0. 0. 0. 1. 0. 0. 0. 0. 0. 0.][0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]]

三.TF 2.x feature column

在 TF2 复现代码时,发现很多 TF1 的 API 已经不支持了,定义特征列的方法没有变,但是调用特征列生成对应特征的方式发生了改变。

1.定义特征列

特征列定义不变,仍然是 bucketized_column + numeric_column 构造的年龄分桶。

    age_bucket = tf.feature_column.bucketized_column(tf.feature_column.numeric_column(key='age_bucket', shape=(1,),default_value=0,dtype=tf.dtypes.float32),boundaries=[10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0])

2.通过特征列处理特征

通过 layers.DenseFeatures 处理 features 得到 dense feature。

class DenseFeatures(dense_features.DenseFeatures):def __init__(self,feature_columns,trainable=True,name=None,**kwargs):super(DenseFeatures, self).__init__(feature_columns=feature_columns,trainable=trainable,name=name,**kwargs)self._state_manager = fc._StateManagerImplV2(self, self.trainable)  # pylint: disable=protected-access

示例: 

    features = {}features['age_bucket'] = [[23.0], [35.0], [68.0]]feature_layer = tf.keras.layers.DenseFeatures(age_bucket)inputs = feature_layer(features)  print(inputs)

通过 bucket- feature_column 可以得到 None x BucketSize 的 one-hot 向量。TF1 与 TF2 的主要区别就是特征处理阶段,前者通过 feature_column 的 input_layer API 实现 ,后者则可以通过 layers.DenseFeatures 实现,其中 input_layer 接口已经不存在。

tf.Tensor(
[[0. 0. 1. 0. 0. 0. 0. 0. 0. 0.][0. 0. 0. 1. 0. 0. 0. 0. 0. 0.][0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]], shape=(3, 10), dtype=float32)

更多推荐算法相关深度学习:深度学习导读专栏

深度学习 - 25.TF TF1.x VS TF2.x tf.feature_column相关推荐

  1. Python 机器学习/深度学习/算法专栏 - 导读目录

    目录 一.简介 二.机器学习 三.深度学习 四.数据结构与算法 五.日常工具 一.简介 Python 机器学习.深度学习.算法主要是博主从研究生到工作期间接触的一些机器学习.深度学习以及一些算法的实现 ...

  2. 深度学习 - 26.TF TF2.x tf.feature_column 详解

    一.引言 上一篇文章 Tensorflow - TF1.x VS TF2.x tf.feature_column 介绍了 feature_column 在 TF1.x 与 TF 2.x 在使用上的区别 ...

  3. 学习分享——基于深度学习的NILM负荷分解(一)对DL的看法准备工作

    好啦,我来填坑啦哈哈 经过了几个月的对深度学习的学习.了解和实践, 对于用深度学习来做NILM的经验也是积累了不少. 在此,做以小结. 在此,感谢~柳柳,小张,小田,小刘的支持和鼓励. 话不多说,下面 ...

  4. 深度解析】Google第二代深度学习引擎TensorFlow开源(CMU邢波独家点评、白皮书全文、视频翻译)

    新智元原创1 作者:王嘉俊 王婉婷 TensorFlow 是 Google 第二代深度学习系统,今天宣布完全开源.TensorFlow 是一种编写机器学习算法的界面,也可以编译执行机器学习算法的代码. ...

  5. python神经网络教程16_Python深度学习之神经网络视频

    Python深度学习之神经网络视频 课程简介 该阶段是深度学习的入门课程,主要介绍经典的深度学习框架TensorFlow的使用,IO操作,以及神经网络基础.卷积神经网络的相关知识,并用卷积神经网络原理 ...

  6. 深度学习开发环境及编程基础

    1. 独立环境配置 conda 配置一套OS相关工具包(编译好库) 创建环境 conda create -n 环境名 python=3.7 其它conda包 进入环境 conda acitvate 环 ...

  7. 雷神新911PRO晖金二代win10+ubuntu16.04系统安装教程+Anaconda3搭建深度学习环境tensorflow-gpu

    雷神新911PRO晖金二代win10+ubuntu16.04系统安装教程 雷神新911PRO晖金二代win10+ubuntu16.04系统安装教程 1.ubuntu16.04安装 1.1.ubuntu ...

  8. 深度学习 - 22.TF TF1.x tf.string_split VS TF2.x tf.strings.split

    一.引言 开发时同时用到了TF1与TF2,使用中发现 split 函数在V1和V2中有一些区别,记录一下. 二.TF1.x tf.string_split 1.使用 Input: 对字符串数组进行分割 ...

  9. 深度学习框架 TensorFlow:张量、自动求导机制、tf.keras模块(Model、layers、losses、optimizer、metrics)、多层感知机(即多层全连接神经网络 MLP)

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 安装 TensorFlow2.CUDA10.cuDNN7.6. ...

最新文章

  1. jQuery判断checkbox是否选中
  2. ubuntu9.10配置编译xawtv-3.95
  3. html表格背景图片格式,HTML表格标记教程(8):背景图像属性BACKGROUND
  4. Some Notes About Design Pattern
  5. 原来在首席架构眼里MySQL果然如此不一样!
  6. 【java】System成员输入输出功能out、in、err
  7. 两个工作流:什么时候选择BizTalk,什么时候选择WWF?微软人士给了一个简单的判断原则...
  8. LINUX下载编译jpeglib
  9. (六)ModelSim 下载安装以及crack的注册
  10. python 网盘多帐号_教你怎么拥有(很多)百度网盘2T账号
  11. html九九乘法口诀表代码,JavaScript九九乘法口诀表的简单实现
  12. 正定矩阵、二次型与椭圆椭球
  13. 浦瑞克扫地机器人好用吗_爱她就送她浦瑞克扫地机器人
  14. 公众号淘客怎么运营推广,找到适合自己的的推广方法才有效
  15. 科技爱好者周刊(第 108 期):阵地战与奇袭战
  16. 微信授权demo php,PHP微信公众平台oauth2.0网页授权登录类的封装demo
  17. 2018年7月24日日报
  18. Java实现短信验证码最佳实践
  19. 从户外露营到登陆火星,火星玩家电核装备让太空黑科技成为现实
  20. MetaFormer-3

热门文章

  1. awstats 配置
  2. 大模型,化繁为简归文心
  3. PostgreSQL数据库插件Extension
  4. 7-11 图着色问题 (25分)
  5. 抖音风口:社交媒体黄金年代倒计时?
  6. Flex 4 stage.scaleMode详解 (第二部分 Flex 4 Web项目)
  7. 《飞驰人生》,韩寒不再少年
  8. 〖程序员的自我修养 - 精炼面试篇⑦〗- 从面试官角度分析候选人是否足够优选
  9. MySQL外键约束-foreign key
  10. springmvc返回JSP源码