admin管理员组文章数量:1650771
1.作用
将sparse/categrical特征转化为dense 向量。one-hot产生的向量,易造成数据的稀疏化,对于推荐系统而言,大维度的稀疏数据对于结果的影响较大,因此我们考虑使用embedding_column,来对数据进行压缩。
输入:
categorical_column | 一个CategoricalColumn 创建由categorical_column_with_* 功能。此列产生稀疏的ID为输入给嵌入查找。 |
dimension | 一个整数,指定嵌入的尺寸,必须> 0。 |
combiner | 如何指定一个字符串,以减少是否有单排多个条目。目前,“mean”,“sqrtn”和“sum”的支持,以“sqrtn”的默认值。 “sqrtn”经常取得了较好的精度,特别是与袋的词列。此每一个都可以被认为是在列水平归一化。欲了解更多信息,请参见tf.embedding_lookup_sparse 。 |
initializer | 在嵌入变量初始化所使用的变量的初始化功能。如果未指定,默认为truncated_normal_initializer 均值0.0 和标准偏差1/sqrt(dimension) 。 |
ckpt_to_load_from | 字符串代表关卡名称/从中还原列权重模式。如果需要的话tensor_name_in_ckpt 不None 。 |
tensor_name_in_ckpt | 该名Tensor 在ckpt_to_load_from 从中恢复列权重。如果需要的话ckpt_to_load_from 不None 。 |
max_norm | 如果不是None ,嵌入值L2-归到这个值。 |
trainable | 无论嵌入是能够接受训练。默认为True。 |
use_safe_embedding_lookup | 如果为真,使用safe_embedding_lookup_sparse而不是embedding_lookup_sparse。 safe_embedding_lookup_sparse确保没有空行和所有的权重和IDS是在额外的计算成本为代价的正面。这仅适用于秩2(N×M个)形状的输入张量。默认为真,认为如果不需要上述检查关闭。注意,具有空行不会触发任何错误,虽然输出结果可能是0或省略。 |
输出:
每一个类别生成一个dense的向量。
2.例子
import tensorflow as tf
sess=tf.Session()
#特征数据
features = {
'department': ['sport', 'sport', 'drawing', 'gardening', 'travelling'],
}
#特征列
department = tf.feature_column.categorical_column_with_hash_bucket('department', 10, dtype=tf.string)
print "—————1—————"
# print columns
columns = tf.feature_column.embedding_column(department, dimension=10)
#输入层(数据,特征列)
inputs = tf.feature_column.input_layer(features, columns)
#初始化并运行
init = tf.global_variables_initializer()
sess.run(tf.tables_initializer())
sess.run(init)
v=sess.run(inputs)
print(v)
输出:
[[ 0.53917825 0.12470714 0.36257058 -0.27178663 0.22339591 -0.07271086
0.06099864 0.520078 -0.33505204 -0.11995942]
[ 0.53917825 0.12470714 0.36257058 -0.27178663 0.22339591 -0.07271086
0.06099864 0.520078 -0.33505204 -0.11995942]
[ 0.02904907 0.47831646 0.32324752 0.48403072 0.26939172 0.38538367
-0.03237799 0.07358446 -0.09673704 -0.45041117]
[-0.26118422 0.36279836 -0.36552393 0.49025697 -0.34702778 -0.12992676
-0.43512756 0.5454379 -0.3286348 -0.03985294]
[ 0.02904907 0.47831646 0.32324752 0.48403072 0.26939172 0.38538367
-0.03237799 0.07358446 -0.09673704 -0.45041117]]
3.thinking:跟tf.feature_column.shared_embedding_columns()函数有什么区别
官方文档给的解释:shared_embedding_columns跟embedding_column
,不同之处在于它产生嵌入共享相同的嵌入权重列的列表。怎么理解共享权重?欢迎留言~
参考:
1.官方文档:https://www.tensorflow/versions/r1.15/api_docs/python/tf/feature_column/embedding_column
本文标签: 函数TFtensorflowembeddingcolumnfeaturecolumn
版权声明:本文标题:【TensorFlow】(四)tf.feature_column.embedding_column()函数 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1729533700a1205138.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论