admin管理员组文章数量:1633102
一、一些工具
1、三种本地打印输出非序列sequence数据的feature_column转换后的值的方法
适用于TensorFlow1.x
import tensorflow as tf
from tensorflow.python.feature_column import feature_column_v2 as fc_v2
from tensorflow.python.feature_column import feature_column as fc
# 注意:只有方式2会检查输入数据是否符合feature_column的定义
def numeric_column():
column = tf.feature_column.numeric_column(
key="feature",
shape=(3,2,1,),
default_value=100,
dtype=tf.float32,
normalizer_fn=lambda x: x / 2)
features = {"feature": tf.constant(value=[
[[1, 2], [3, 4], [5, 6]],
[[7, 8], [9, 10], [11, 12]]
])}
# feature_column处理方式:1
feature_cache = fc_v2.FeatureTransformationCache(features=
features
)
rs_1 = column.get_dense_tensor(transformation_cache=feature_cache, state_manager=None)
# feature_column处理方式:2
net = tf.feature_column.input_layer(features,column)
# feature_column处理方式:3
builder = fc._LazyBuilder(features)
rs_3 = column._get_dense_tensor(builder,None)
with tf.Session() as sess:
print(sess.run(rs_1))
print(sess.run(net))
print(sess.run(rs_3))
numeric_column()
2、三种打印序列sequence数据的feature_column转换后的值的方法
适用于TensorFlow1.x
2.1、序列特征sequence的作用
参考:深度学习之TensorFlow工程化项目实战
2.2、如何使用序列sequence特征
import tensorflow as tf
from tensorflow.python.feature_column import feature_column_v2 as fc_v2
from tensorflow.python.feature_column import feature_column as fc
from tensorflow.python.feature_column import feature_column_lib as fcl
from tensorflow.python.feature_column import sequence_feature_column as sqfc
def sequence_numeric_column():
# 用法同numeric_column基本一致
column = tf.feature_column.sequence_numeric_column(
key="feature",
# shape指定序列中每个元素的形状
# 最终返回结构的形状为[batch_size, element_count/sum(shape[:]) ,shape]
# 该值的设置只会影响dense_tensor。sequence_length只和实际输入数据有关
shape=(3,),
default_value=60,
dtype=tf.float32,
normalizer_fn=lambda x: x / 2)
column2 = tf.contrib.feature_column.sequence_numeric_column(
key="feature",
shape=(3,),
default_value=60,
dtype=tf.float32,
normalizer_fn=lambda x: x / 2)
features = {
# feature对应的值必须为SparseTensor
"feature": tf.SparseTensor(
# indices要按顺序写
indices=[
[0, 0, 1],
[0, 1, 0],
[0, 5, 0],
[0, 5, 1],
[1, 2, 1],
[1, 3, 0],
[1, 3, 1]
],
values=[4, 1, 7, 9, 3, 4., 4],
dense_shape=[2, 6, 2])
}
# 方式:1
feature_cache = feature_column_lib.FeatureTransformationCache(features=features)
rs_1 = column.get_sequence_dense_tensor(transformation_cache=feature_cache, state_manager=None)
# 方式:2
rs_2 = tf.contrib.feature_column.sequence_input_layer(features,column2)
builder = fc._LazyBuilder(features)
# 方式:3
rs_3 = column2._get_sequence_dense_tensor(builder,None)
with tf.Session() as sess:
print(sess.run(rs_1))
print("111"*20)
print(sess.run(rs_2))
print("222"*20)
print(sess.run(rs_3))
sequence_numeric_column()
3、说明
input_layer的输入要求:
All items should be instances of classes derived from
`_DenseColumn` such as `numeric_column`, `embedding_column`,
`bucketized_column`, `indicator_column`. If you have categorical features,
you can wrap them with an `embedding_column` or `indicator_column`.
简单说就是input_layer的输入要求是dense稠密数据
二、feature_column的介绍
1、feature_column是啥
tf.feature_column是一套处理数据的工具,我一般把它用做TensorFlow内的“特征工程”。
2、能做哪些数据处理
非sequence(非序列)固定长度的连续实数特征
sequence(序列)固定长度的连续实数特征(缺失值会用设置的默认值替代)
对于int型、string型分类特征:可以做成数值表示的特征、multi_hot特征、加权multi_hot特征、embedding特征、加权后的embedding特征。(适用于sequence和非sequence)
对于int型分类特征还可以做成one_hot特征。仅适用于非sequence。
还可以做int型、string型分类特征之间的交叉特征,以及share embedding特征
3、可以处理固定长度的连续实数(int或者float)特征
3.1、数据举例
- 非序列(非sequence)的特征数据样式,必须为稠密tensor:
“fea_1”:0.123
“fea_2”:[0.123,0.222]
"fea_3":[1,3,5]
"fea_4":10
"fea_0":[ [[1, 2], [3, 4], [5, 6]], [[7, 8], [9, 10], [11, 12]] ]
- 序列(sequence)的特征数据样式,必须为sparse tensor
"fea_sparse_1" : tf.SparseTensor( # indices要按顺序写 indices=[ [0, 0, 1], [0, 1, 0], [0, 5, 0], [0, 5, 1], [1, 2, 1], [1, 3, 0], [1, 3, 1] ], values=[4, 1, 7, 9, 3, 4., 4], dense_shape=[2, 6, 2])
3.2、可以利用normalizer_fn方法对输入的数据进行处理
normalizer_fn=lambda x: x/2
3.3、非序列&#x
本文标签: 特征工具系列tensorflowfeaturecolumn
版权声明:本文标题:TensorFlow系列——feature_column特征工具说明 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1729159037a1188199.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论