深度学习 - 25.TF TF1.x VS TF2.x tf.feature_column
一.引言
Tensorflow Esitimator 场景下常用到 feature column 对原始特征进行处理,TF1 与 TF2 在 feature column 的使用上有一些不同,下面通过两个简单例子区分。
二.TF 1.x feature column
1.定义特征列
常见的特征列如下,这里我们结合 bucketized_column + numeric_column 构造特征列
年龄分桶,这里通过 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相关推荐
- Python 机器学习/深度学习/算法专栏 - 导读目录
目录 一.简介 二.机器学习 三.深度学习 四.数据结构与算法 五.日常工具 一.简介 Python 机器学习.深度学习.算法主要是博主从研究生到工作期间接触的一些机器学习.深度学习以及一些算法的实现 ...
- 深度学习 - 26.TF TF2.x tf.feature_column 详解
一.引言 上一篇文章 Tensorflow - TF1.x VS TF2.x tf.feature_column 介绍了 feature_column 在 TF1.x 与 TF 2.x 在使用上的区别 ...
- 学习分享——基于深度学习的NILM负荷分解(一)对DL的看法准备工作
好啦,我来填坑啦哈哈 经过了几个月的对深度学习的学习.了解和实践, 对于用深度学习来做NILM的经验也是积累了不少. 在此,做以小结. 在此,感谢~柳柳,小张,小田,小刘的支持和鼓励. 话不多说,下面 ...
- 深度解析】Google第二代深度学习引擎TensorFlow开源(CMU邢波独家点评、白皮书全文、视频翻译)
新智元原创1 作者:王嘉俊 王婉婷 TensorFlow 是 Google 第二代深度学习系统,今天宣布完全开源.TensorFlow 是一种编写机器学习算法的界面,也可以编译执行机器学习算法的代码. ...
- python神经网络教程16_Python深度学习之神经网络视频
Python深度学习之神经网络视频 课程简介 该阶段是深度学习的入门课程,主要介绍经典的深度学习框架TensorFlow的使用,IO操作,以及神经网络基础.卷积神经网络的相关知识,并用卷积神经网络原理 ...
- 深度学习开发环境及编程基础
1. 独立环境配置 conda 配置一套OS相关工具包(编译好库) 创建环境 conda create -n 环境名 python=3.7 其它conda包 进入环境 conda acitvate 环 ...
- 雷神新911PRO晖金二代win10+ubuntu16.04系统安装教程+Anaconda3搭建深度学习环境tensorflow-gpu
雷神新911PRO晖金二代win10+ubuntu16.04系统安装教程 雷神新911PRO晖金二代win10+ubuntu16.04系统安装教程 1.ubuntu16.04安装 1.1.ubuntu ...
- 深度学习 - 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: 对字符串数组进行分割 ...
- 深度学习框架 TensorFlow:张量、自动求导机制、tf.keras模块(Model、layers、losses、optimizer、metrics)、多层感知机(即多层全连接神经网络 MLP)
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 安装 TensorFlow2.CUDA10.cuDNN7.6. ...
最新文章
- jQuery判断checkbox是否选中
- ubuntu9.10配置编译xawtv-3.95
- html表格背景图片格式,HTML表格标记教程(8):背景图像属性BACKGROUND
- Some Notes About Design Pattern
- 原来在首席架构眼里MySQL果然如此不一样!
- 【java】System成员输入输出功能out、in、err
- 两个工作流:什么时候选择BizTalk,什么时候选择WWF?微软人士给了一个简单的判断原则...
- LINUX下载编译jpeglib
- (六)ModelSim 下载安装以及crack的注册
- python 网盘多帐号_教你怎么拥有(很多)百度网盘2T账号
- html九九乘法口诀表代码,JavaScript九九乘法口诀表的简单实现
- 正定矩阵、二次型与椭圆椭球
- 浦瑞克扫地机器人好用吗_爱她就送她浦瑞克扫地机器人
- 公众号淘客怎么运营推广,找到适合自己的的推广方法才有效
- 科技爱好者周刊(第 108 期):阵地战与奇袭战
- 微信授权demo php,PHP微信公众平台oauth2.0网页授权登录类的封装demo
- 2018年7月24日日报
- Java实现短信验证码最佳实践
- 从户外露营到登陆火星,火星玩家电核装备让太空黑科技成为现实
- MetaFormer-3