tensorflow定义多个优化器加速Embedding的训练

在大规模推荐算法训练中,稀疏特征的Embedding由于高维度导致训练慢。通过使用两个不同学习率的优化器,分别优化稀疏Embedding和稠密特征,可以提升训练效率。本文以tf.estimator和tf.feature_column为工具进行说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在遇到大规模推荐算法训练时,我们常常会有不同种类的特征,大体上可分为稀疏特征和稠密特征两类。

稀疏特征一般会经过Embedding转为稠密特征再传入全连接层。然而,当稀疏特征中包含大量ID类特征时,由于其原始维度非常高(如UserID几乎都是千万级以上),训练如此庞大的Embedding时会非常缓慢。一种解决方案是增大学习率,但学习率过大又会影响稠密特征(如一些向量特征)的训练,所以可以设计两个优化器分别以不同的学习率去优化稀疏Embedding和稠密特征。

这里以tf.estimator + tf.feature_column实现:

def isSparse(variable, fields):
    """ 判断变量是否为稀疏变量 """
    flag = False
    for filed in fields:
        if filed in variable.name:
            flag = True
            break
    return flag

# 获取全局步数
global_step = tf.train.get_global_step()
# 获取所有可训练的变量
trainable_variables = [variable for variable in tf.trainable_variables()]
# 获取稀疏变量列表
sparse_list = [x.name for x in params["feature_configs"].all_columns.values() 
               if "EmbeddingColumn" in str(type(x)) and 
                  "HashedCategoricalColumn
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值