踩坑内容包含以下

  1. feature_column的输入输出类型,用一个数据集给出demo
  2. feature_column接estimator
  3. feature_column接Keras

feature_column 输入输出类型

输入输出类型

feature_column输入可以是原始特征的列名,或者是feature_column。初上手感觉feature_column设计的有点奇怪,不过熟悉了逻辑后用起来还是很方便的。几个需要习惯一下的点:

  1. 深度模型的输入必须是Dense类型,所有输出是categorical类型需要经过indicator或者embedding的转换才可以
  2. indicator, embedding, bucketized的输入不能是原始特征,前两者只能是categorical类型的feature_column, 后者只能是numeric_column
feature_column 输入 输出 输出是否为dense
categorical_column_with_identity 数值型离散 categorical N
categorical_column_with_vocabulary_list 字符型/数值型离散 categorical N
categorical_column_with_hash_bucket 类别太多的离散值 categorical N
crossed_column categorical/离散值 categorical N
indicator_column categorical one/multi-hot Y
embedding_column categorical dense vector Y
numeric_column 数值型连续值 numeric Y
bucketzied_column numeric_column one-hot Y

以下给出各种特征工程的demo,原始特征如下

输入-连续值

输入-离散值

输入-categorical

feature_column接estimator

如果是使用预定义的estimator, feature_column可以直接作为输入,不需要任何额外操作,只需要注意深度模型只支持Dense类型的feature_column即可。

如果是自定义estimator,则需要多一步用feature_column先创建input_layer

input_layer = tf.feature_column.input_layer(features, feature_columns)

如果input_layer之后连接的是tf.layers,那直接进行操作即可,如果是进行自定义variable的各种操作,还有一个坑!因为上面input_layer的shape需要动态地赋给tf.get_vairable但tf.get_variable是不接受TensorShape作为shape输入的,所以以下代码会报错

input_dim = input.get_shape().as_list()[-1]
w = tf.get_variable('w', shape = [input_dim,1], dtype = tf.float32, validate_shape = False)

绕过的办法就是使用initializer, 因为initializer是可以动态定义shape的

input_dim = input.get_shape().as_list()[-1]
init = tf.random_normal( shape = (input_dim,1) )
w = tf.get_variable('w', dtype = tf.float32, initializer = init, validate_shape = False)

feature_column接keras

为什么要这么搭配呢,好像是没啥必要,只不过进一步证明tf的官方文档确实坑而已。。。

def model_fn():
#define Keras input
input = {}
for f in FEATURE_NAME:
input[f] = Input(shape=(1,), name = f, dtype = DTYPE[f])
#generate feature_columns
feature_columns = build_features() #Define transformation from feature_columns to Dense Tensor
feature_layer = tf.keras.layers.DenseFeatures( feature_columns )
#Transform input
dense_feature = feature_layer(input) output = Dense(1, activation='sigmoid')(dense_feature)
#feed input placeholder as list
model = Model(inputs = [i for i in input.values()], outputs = output) return model

持续更新中...

tensorflow feature_column踩坑合集的更多相关文章

  1. better-scroll踩坑合集

    better-scroll踩坑合集:https://www.jianshu.com/p/6338a8033281

  2. 小程序框架WePY 从入门到放弃踩坑合集

    小程序框架WePY 从入门到放弃踩坑合集 一点点介绍WePY 因为小程序的语法设计略迷, 所以x1 模块化起来并不方便, 所以x2 各厂就出了不少的框架用以方便小程序的开发, 腾讯看到别人家都出了框架 ...

  3. tensorflow踩坑合集2. TF Serving & gRPC 踩坑

    这一章我们借着之前的NER的模型聊聊tensorflow serving,以及gRPC调用要注意的点.以下代码为了方便理解做了简化,完整代码详见Github-ChineseNER ,里面提供了训练好的 ...

  4. 服务器端 CentOS 下配置 JDK 和 Tonmcat 踩坑合集

    一.配置 JDK 时,在 /etc/profile 文件下配置环境变量,添加   #java environment export JAVA_HOME=/usr/java/jdk- export CL ...

  5. arm安装cuda9.0,tensorflow-gpu, jetson tx2安装Jetpack踩坑合集

    因为要在arm(aarch64)架构的linux环境中安装tensorflow-gpu,但是官方tf网上没有对应的版本,所以我们找了好久,找到一个其他人编译好的tensorflow on arm的gi ...

  6. echarts统计图踩坑合集

    1:折线图条的颜色修改 series : [ { name : 'SBP(收缩压)', type : 'line', itemStyle : { normal : { lineStyle:{ colo ...

  7. Nlog日志出坑合集

    .net core框架下nlog不记录: 1.安装NLog.Web.AspNetCore 2.在Startup.cs文件的方法public void Configure(IApplicationBui ...

  8. AI相关 TensorFlow -卷积神经网络 踩坑日记之一

    上次写完粗浅的BP算法 介绍 本来应该继续把 卷积神经网络算法写一下的 但是最近一直在踩 TensorFlow的坑.所以就先跳过算法介绍直接来应用场景,原谅我吧. TensorFlow 介绍 TF是g ...

  9. 人工智能(AI)库TensorFlow 踩坑日记之二

    上次 踩坑日志之一 遗留的问题终于解决了,所以作者(也就是我)终于有脸出来写第二篇了. 首先还是贴上 卷积算法的示例代码地址 :https://github.com/tensorflow/models ...

随机推荐

  1. [LC] 314. Binary Tree Vertical Order Traversal

    Given a binary tree, return the vertical order traversal of its nodes' values. (ie, from top to bott ...

  2. day10-time模块

    import time print(time.time()) #时间戳1553070877.0166008 print(time.strftime('%Y-%m-%d %H %M %S')) #201 ...

  3. 基于css完成网页的国际化

    css完成国际化 前提 在日常处理国际化的时候,通常是将key通过类似intl.xx(key)转换为对应环境的文案,可是如果需要在css中加入对应逻辑应该怎么做呢(比如在after的伪元素中显示不同的 ...

  4. redis的集群:

    集群策略:主从复制哨兵集群 参考:https://blog.csdn.net/q649381130/article/details/79931791 集群又分为如下:客户端分片基于代理的分片路由查询参 ...

  5. 算法之匹配:KMP

    public static int getIndexOf(String str1, String str2) { if (str1 == null || str2 == null || str1.le ...

  6. LeetCode No.85,86,87

    No.85 MaximalRectangle 最大矩形 题目 给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积. 示例 输入: [ ["1", ...

  7. auto uninstaller (autodesk 修复大师) 简体中文版 更新下载地址

    小伙伴是不是遇到 CAD/3dmax/maya/Revit/Inventor 安装失败或者安装不了的问题了呢?AUTODESK系列软件着实令人头疼,CAD/3dmax/maya/Revit/Inven ...

  8. 3dmax2017卸载/安装失败/如何彻底卸载清除干净3dmax2017注册表和文件的方法

    3dmax2017提示安装未完成,某些产品无法安装该怎样解决呢?一些朋友在win7或者win10系统下安装3dmax2017失败提示3dmax2017安装未完成,某些产品无法安装,也有时候想重新安装3 ...

  9. text-align和vertical-align

    1.text-align(水平对齐)text-align样式使元素在其定界区域内水平对齐,其取值可以是left.right.center或justify.justify使元素两端对齐.2.vertic ...

  10. python3下scrapy爬虫(第六卷:利用cookie模拟登陆抓取个人中心页面)

    之前我们爬取的都是那些无需登录就要可以使用的网站但是当我们想爬取自己或他人的个人中心时就需要做登录,一般进入登录页面有两种 ,一个是独立页面登陆,另一个是弹窗,我们先不管验证码登陆的问题 ,现在试一下 ...