【CTR模型】TensorFlow2.0 的 xDeepFM 实现与实战(附代码+数据)

DeepFM vs DCN vs xDeepFM:3 大 CTR 预估模型在 TensorFlow 2.x 下的性能对比 本文对比了DeepFM、DCN和xDeepFM三大CTR预估模型在TensorFlow 2.x下的性能表现,详细解析了各模型的架构设计和技术演进路径。通过基准测试和性能分析,揭示了xDeepFM在AUC指标上的优势及其计算成本,为推荐系统开发者提供了模型选型和工业级部署的实践指南。 阅读详情

CTR 系列文章:

  1. 广告点击率(CTR)预测经典模型 GBDT + LR 理解与实践(附数据 + 代码)
  2. CTR经典模型串讲:FM / FFM / 双线性 FFM 相关推导与理解
  3. CTR深度学习模型之 DeepFM 模型解读
  4. 【CTR模型】TensorFlow2.0 的 DeepFM 实现与实战(附代码+数据)
  5. CTR 模型之 Deep & Cross (DCN) 与 xDeepFM 解读
  6. 【CTR模型】TensorFlow2.0 的 DCN(Deep & Cross Network) 实现与实战(附代码+数据)
  7. 【CTR模型】TensorFlow2.0 的 xDeepFM 实现与实战(附代码+数据)

本篇文章讲解 xDeepFM 的 tensorflow2.0 实现,并使用 Criteo 数据集的子集加以实践。如果在看本文时有所困惑,可以看看 xDeepFM 的相关理论:CTR 模型之 Deep & Cross (DCN) 与 xDeepFM 解读。

本文使用的数据下载地址于代码获取地址在文末获取。

首先了解一下 Criteo数据集,它由有39个特征,1个label列,其中以I开头的为数值型特征,以C开头的为类别特征:

在这里插入图片描述

可以看到数据中有缺失值需要填充,并且类别变量需要进行类别编码(onehot 编码的任务交给模型),这部分预处理的代码不详细讲了。

为了方便后面建立模型,先将特征划分为 dense 特征与 sparse 特征两个类别:

# 数值型
dense_feats = [f for f in cols if f[0] == "I"]
# 类别型
sparse_feats = [f for f in cols if f[0] == "C"]

xDeepFM 网络结构如下:

在这里插入图片描述

构造模型输入

对于 dense 特征,按下面的代码构造输入:

# 构造每个 dense 特征的输入
dense_inputs = []
for f in dense_feats:
    _input = Input([1], name=f)
    dense_inputs.append(_input)

# 将输入拼接到一起
concat_dense_inputs = Concatenate(axis=1)(dense_inputs)  # ?, 13

# 对dense特征加权求和
fst_order_dense_layer = Dense(1)(concat_dense_inputs)

上面代码的注释中 ? 表示输入数据的 batch_size。

对于每一个 sparse 特征,一般都是进行one-hot以后再转化为embedding特征,但实际上由于稀疏性的存在,很多位置的 x i x_i xi​ 取0时,对应的 w i x i w_i x_i wi​xi​ 也为0。因此,可以将 sparse 特征 embedding 到 1维,然后通过 embedding lookup 的方式来找到对应的 w i w_i wi​ 。

这里举个例子:假设我们的性别特征取值有-1,0,1三种,某个样本的取值为1,则其one-hot以后为[0, 0, 1]向量,我们进行线性回归时会得到 w 1 × 0 + w 2 × 0 + w 3 × 1 w_1 \times 0 + w_2 \times 0 +w_3 \times 1 w1​×0+w2​×0+w3​×1 ,仅仅只有 w 3 w_3 w3​ 被保留下来。因此,可以对性别构造一个 3*1 的 embedding 向量,然后通过 embedding lookup 得到系数。

对于 sparse 特征,按下面的代码构造输入:

# 这里单独对每一个 sparse 特征构造输入,
# 目的是方便后面构造交叉特征
sparse_inputs = []
for f in sparse_feats:
    _input = Input([1], name=f)
    sparse_inputs.append(_input)
    
sparse_1d_embed = []
for i, _input in enumerate(sparse_inputs):
    f = sparse_feats[i]
    voc_size = total_data[f].nunique()
    # 使用 l2 正则化防止过拟合
    reg = tf.keras.regularizers.l2(0.5)
    _embed = Embedding(voc_size, 1, embeddings_regularizer=reg)(_input)
    # 由于 Embedding 的结果是二维的,
    # 因此如果需要在 Embedding 之后加入 Dense 层,则需要先连接上 Flatten 层
    _embed = Flatten()(_embed)
    sparse_1d_embed.append(_embed)
    
# 对sparse特征加权求和
fst_order_sparse_layer = Add()(sparse_1d_embed)

然后将 dense 特征与 sparse 特征加权求和结果相加,完成模型最左侧的 Linear 部分:

linear_part = Add()([fst_order_dense_layer, fst_order_sparse_layer])

Compressed Interaction Network

终于来到最核心的 CIN 部分,此部分的网络结构如下图所示:

在这里插入图片描述

CIN 的输入来自 embedding 层,假设有 m 个 field,每个 field 的 embedding 维度为 D ,则输入可以表示为矩阵 X 0 ∈ R m ∗ D X^0 \in \mathbb R^{m * D} X0∈Rm∗D。为了得到 X 0 X^0 X0,在进入 CIN 网络之前,需要先将 sparse 特征进行 embedding 并构建 X 0 X^0 X0:

# embedding size
D = 8

sparse_kd_embed = []
for i, _input in enumerate(sparse_inputs):
    f = sparse_feats[i]
    voc_size = data[f].nunique()
    reg = tf.keras.regularizers.l2(0.7)
    _embed = Embedding(voc_size+1, D, embeddings_regularizer=reg)(_input)
    sparse_kd_embed.append(_embed)
    
# 构建feature mmap X0
input_feature_map = Concatenate(axis=1)(sparse_kd_embed)

CIN 内部有 k 层,每一层都会输出一个矩阵 X k ∈ R H k ∗ D X^k \in \mathbb R^{H_k * D} Xk∈RHk​∗D ,k 表示第 k 层的输出, H k H_k Hk​ 表示第 k 层有 H k H_k Hk​ 个维度为 D 的向量。要得到 X k X^{k} Xk ,需要接收两个矩阵作为输入,一个是 X k − 1 X^{k-1} Xk−1 ,另一个是 X 0 X^0 X0 ,具体的计算公式如下:
X h , ∗ k = ∑ i = 1 H k − 1 ∑ j = 1 m W i j k , h ( X i , ∗ k − 1 ∘ X j , ∗ 0 ) ∈ R 1 ∗ D ,  where  1 ≤ h ≤ H k \boldsymbol{X}_{h, *}^{k}=\sum_{i=1}^{H_{k-1}} \sum_{j=1}^{m} \boldsymbol{W}_{i j}^{k, h}\left(\boldsymbol{X}_{i, *}^{k-1} \circ \boldsymbol{X}_{j, *}^{0}\right) \in \mathbb{R}^{1 * D}, \quad \text { where } 1 \leq h \leq H_{k} Xh,∗k​=i=1∑Hk−1​​j=1∑m​Wijk,h​(Xi,∗k−1​∘Xj,∗0​)∈R1∗D, where 1≤h≤Hk​
其中 W k , h ∈ R H k − 1 ∗ m W^{k, h} \in \mathbb R^{H_{k-1} * m} Wk,h∈RHk−1​∗m,表示要得到第 k 层第 h 个向量所需要的权重矩阵, H k − 1 H_{k-1} Hk−1​ 表示第 k − 1 k-1 k−1 层的输出矩阵 X k − 1 X^{k-1} Xk−1 由 H k − 1 H_{k-1} Hk−1​ 个维度为 D 的向量组成。 ∘ \circ ∘ 表示Hadamard乘积。式子中 X i , ∗ k − 1 ∘ X j , ∗ 0 \boldsymbol{X}_{i, *}^{k-1} \circ \boldsymbol{X}_{j, *}^{0} Xi,∗k−1​∘Xj,∗0​ 是表示取出 X k − 1 X^{k-1} Xk−1 的第 i i i 个向量与输入层 X 0 X^{0} X0 中第 j j j 个向量进行 Hadamard 乘积运算。这个部分的计算过程如下图所示:

在这里插入图片描述

此公式的实现代码如下:

def compressed_interaction_net(x0, xl, D, n_filters):
    """
    @param x0: 原始输入
    @param xl: 第l层的输入
    @param D: embedding dim
    @param n_filters: 压缩网络filter的数量
    """
    # 这里设x0中共有m个特征,xl中共有h个特征
    
    # 1.将x0与xl按照k所在的维度(-1)进行拆分,每个都可以拆成D列
    x0_cols = tf.split(x0, D, axis=-1)  # ?, m, D
    xl_cols = tf.split(xl, D, axis=-1)  # ?, h, D
    
    assert len(x0_cols)==len(xl_cols), print("error shape!")
    
    # 2.遍历D列,对于x0与xl所在的第i列进行外积计算,存在feature_maps中
    feature_maps = []
    for i in range(D):
        # transpose_b=True 将 x0_cols[i] 转置
        feature_map = tf.matmul(xl_cols[i], x0_cols[i], transpose_b=True)  # 外积 ?, h, m
        feature_map = tf.expand_dims(feature_map, axis=-1)  # ?, h, m, 1
        feature_maps.append(feature_map)
    
    # 3.得到 h × m × D 的三维tensor
    feature_maps = Concatenate(axis=-1)(feature_maps)  # ?, h, m, D
    
    # 3.压缩网络
    x0_n_feats = x0.get_shape()[1]  # m
    xl_n_feats = xl.get_shape()[1]  # h
    reshaped_feature_maps = Reshape(target_shape=(x0_n_feats * xl_n_feats, D))(feature_maps)  # ?, h*m, D
    transposed_feature_maps = tf.transpose(reshaped_feature_maps, [0, 2, 1])  # ?, D, h*m
    
    # Conv1D:使用 n_filters 个形状为 1 * (h*m) 的卷积核以 1 为步长,
    # 按嵌入维度 D 的方向进行卷积,最终得到形状为 ?, D, n_filters 的输出
    new_feature_maps = Conv1D(n_filters, kernel_size=1, strides=1)(transposed_feature_maps)  # ?, D, n_filters
    # 为了保持输出结果最后一维 为嵌入维度 D ,需要进行转置操作
    new_feature_maps = tf.transpose(new_feature_maps, [0, 2, 1])  # ?, n_filters, D
    
    return new_feature_maps

代码中分为三步:

  • 第一步将输入的两个需要交互的 feature maps 分成 D 列
  • 第二步计算交互的三维 tensor,即在每个维度上进行向外积操作
  • 第三步使用一维的卷积操作得到当前层的输出

这里 n_filters 是经过该 CIN 层后,输出的 feature map 的个数,也就是说最终生成了由 n_filters 个 D 维向量组成的输出矩阵。

有了单层的 CIN 实现,我们紧接着可以实现多层的CIN网络,这里要注意的是 CIN 网络的输出是将每一层的 feature maps 进行 sum pooling,然后 concat 起来。相关代码实现如下:

def build_cin(x0, D=8, n_layers=3, n_filters=12):
    """
    构建多层CIN网络
    @param x0: 原始输入的feature maps: ?, m, D
    @param D: 特征embedding的维度
    @param n_layers: CIN网络层数
    @param n_filters: 每层CIN网络输出的feature_maps的个数
    """
    # 存储每一层cin sum pooling的结果
    pooling_layers = []
    xl = x0
    for layer in range(n_layers):
        xl = compressed_interaction_net(x0, xl, D, n_filters)
        # sum pooling
        pooling = Lambda(lambda x: K.sum(x, axis=-1))(xl)
        pooling_layers.append(pooling)
    
    # 将所有层的pooling结果concat起来
    output = Concatenate(axis=-1)(pooling_layers)
    
    return output
# 生成 CIN 
cin_layer = build_cin(input_feature_map)

经过 3 层的 CIN 网络,每一层的 filter 是12,意味着会产出 3 个 12*D 的 feature maps,再经过 sum-pooling 和 concat 操作后,就得到 3*12=36 维的向量。

DNN 部分

这部分好理解,直接上代码吧:

embed_inputs = Flatten()(Concatenate(axis=-1)(sparse_kd_embed))

fc_layer = Dropout(0.5)(Dense(128, activation='relu')(embed_inputs))
fc_layer = Dropout(0.3)(Dense(128, activation='relu')(fc_layer))
fc_layer_output = Dropout(0.1)(Dense(128, activation='relu')(fc_layer))

输出部分

代码如下:

concat_layer = Concatenate()([linear_part, cin_layer, fc_layer_output])
output_layer = Dense(1, activation='sigmoid')(concat_layer)
model.compile(optimizer="adam", 
              loss="binary_crossentropy", 
              metrics=["binary_crossentropy", tf.keras.metrics.AUC(name='auc')])

完善模型

model = Model(dense_inputs+sparse_inputs, output_layer)
model.compile(optimizer="adam", 
              loss="binary_crossentropy", 
              metrics=["binary_crossentropy", tf.keras.metrics.AUC(name='auc')])

训练模型

train_data = total_data.loc[:500000-1]
valid_data = total_data.loc[500000:]

train_dense_x = [train_data[f].values for f in dense_feats]
train_sparse_x = [train_data[f].values for f in sparse_feats]
train_label = [train_data['label'].values]

val_dense_x = [valid_data[f].values for f in dense_feats]
val_sparse_x = [valid_data[f].values for f in sparse_feats]
val_label = [valid_data['label'].values]

model.fit(train_dense_x+train_sparse_x, 
          train_label, epochs=5, batch_size=128,
          validation_data=(val_dense_x+val_sparse_x, val_label),
         )

最后,本文的代码链接在:https://github.com/zxxwin/tf2_xDeepFM 。

数据下载地址为:链接:https://pan.baidu.com/s/1Qy3yemu1LYVtj0Wn47myHQ 提取码:pv7u

参考文章:

CTR预估模型:DeepFM/Deep&Cross/xDeepFM/AutoInt代码实战与讲解

NELSONZHAO/zhihu/ctr_models/xDeepFM

推荐系统CTR预估模型之xDeepFM  xDeepFM 是MSRA发表在KDD 2018上的一篇文章,用于CTR预估。  前面已经介绍过Deep FM和Deep & Cross Networks两种模型,xDeepFM可以看成结合了这两种模型的优点。DNN模型以bit-wise的形式把特征进行交叉,而FM则以vector-wise的形式进行特征交叉。Deep&Cross交叉的每一层和起始输入X0其实都是一个线性关系,而... 阅读详情

相关推荐

DeepFM vs DCN vs xDeepFM:3 大 CTR 预估模型核心差异与 TensorFlow 2.x 实现对比

本文深入对比了DeepFM、DCN和xDeepFM三大CTR预估模型的核心差异与TensorFlow 2.x实现。从特征交互演进、架构设计到工业实践,详细解析了各模型优势及适用场景,为推荐系统领域的算法工程师提供全面的技术选型指南。特别关注Factorization-Machine在模型中的应用与优化策略。

weixin_32597009的博客 307

xDeepFM 网络介绍与源码浅析

xDeepFM 网络介绍与源码浅析 前言 (与主题无关, 可以忽略) 哈哈哈, 十月第一篇博客, 希望这个季度能更奋进一些~~~ 不想当咸鱼了… ???????????? xDeepFM 文章信息 论文标题: xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems 论文地址: https://arxiv.org/abs/1803.05170 代码地址: https://github.com/

珍妮的选择的博客 1420

Github开源项目2.0---使用TensorFlow2.0对经典推荐论文进行复现【持续更新中...】

前言由于昨天复制未发现链接失效了,所以今天再发一遍。希望大家可以star一下我的GitHub开源项目:Recommended System with TF2.0。地址:https://...

Blank_Space 1414

tensorflow2.0实现xDeepFM

文章目录数据预处理模型的构建part1—Linear层Part2—CINpart3—DNN部分part4—输出部分模型的编译与运行 本文基于tensorflow2.0实现的 xDeepFM 结构。数据集: Criteo 的500000条数据子集。 必要的库 import numpy as np import pandas as pd import tensorflow as tf from tensorflow.keras.layers import * from tensorflow.keras.mode

zhong_ddbb的博客 1298

xDeepFM解析:如何通过压缩交互网络(CIN)实现显式与隐式特征交互的完美融合

本文深入解析xDeepFM模型如何通过压缩交互网络(CIN)实现显式与隐式特征交互的完美融合,提升推荐系统的CTR预测效果。CIN通过哈达玛积保持特征向量的完整语义单元,结合DNN捕捉潜在非线性关系,在电商推荐等场景中显著提升模型性能。文章详细介绍了CIN的数学原理、工程实现及优化策略,为开发者提供实用指南。

weixin_29165725的博客 337

deepFM实现基于TensorFlow

deepFM推荐模型,基于深度学习,内含测试数据和详细代码,可参考

DeepFM升级版XDeepFM模型

本文参考自 推荐系统遇上深度学习(二十二)--DeepFM升级版XDeepFM模型强势来袭!,在学习原文的基础上加入一些个人的理解和整理。 1、引言 对于预测性的系统来说,特征工程起到了至关重要的作用。特征工程中,挖掘交叉特征是至关重要的。交叉特征指的是两个或多个原始特征之间的交叉组合。例如,在新闻推荐场景中,一个三阶交叉特征为AND(user_organization=msra,item_c...

qfikh的博客 1158

Recommend-System-tf2.0:原理解析及代码实战,推荐算法也可以很简单:fire:想要系统的学习推荐算法的小伙伴,给个星支持一下吧!:rocket:有任何疑问欢迎提问题,也可加文末的联系方式向我询问!

推荐系统-TF2.0 此仓库用于记录在学习推荐系统过程中的知识积累,主要是对经典推荐算法的原理解析及代码实现。 算法包含但至少先前下图中的算法,持续更新中... 型号清单 模型 纸 [ICDM 2010]使用 [CIKM 2015] [RecSys 2016] [ECIR 2016]基于 [ICDM 2016] [DLRS 2016] [KDD 2016] [IJCAI 2017] [ADKDD 2017] [IJCAI 2017] [SIGIR 2017] 分段线性模型 [arxiv 2017] [KDD 2018] [KDD 2018] 调频调频 [WWW 2018] [CIKM 2019] 迪恩 [AAAI 2019] 恩恩 [arxiv 2019] [WWW 2019] DSIN [IJCAI 2019] 菲比网 [RecSys 2019] 弗伦 [arxiv 2019]

tensorflow2实现DeepFM(基于DataFrame格式训练数据)

tensorflow2实现实现DeepFM 网上有很多deepFM的实现版本,最广为人知的就是chenchenglong的那一版,这个实现是在Libsvm格式训练数据的基础上实现的,我下面的实现是在DateFrame格式训练数据的基础上实现的。 模型结构和训练数据的格式息息相关,为了配合DataFrame格式的训练数据,我把数据拆分成numeric部分和catogorical两部分,作为两个输入喂给模型(keras支持多输入和多输出),输出只有一个。 FM要求变量做embedding后还要和自身的值相乘,这

u012762419的博客 3062

TLSR8258蓝牙Mesh实战:从SDK下载到自定义通信指令全流程(附避坑指南)

本文详细介绍了TLSR8258蓝牙Mesh开发的完整流程,从SDK下载、环境搭建到自定义通信指令的实现。通过实战案例和避坑指南,帮助开发者快速掌握低功耗蓝牙Mesh网络构建技巧,适用于智能家居、工业监控等物联网场景。

weixin_29176179的博客 199

从晶体管到触发器:为什么芯片设计必须区分同步/异步复位?

本文深入探讨了芯片设计中同步复位与异步复位的物理本质与工程权衡。从晶体管级的CMOS结构出发,剖析了两种复位方式在物理实现、时序可靠性(如建立/保持时间、恢复/移除时间)上的根本差异,并分析了在不同应用场景下的选择策略。文章强调,理解复位信号的底层机制对于确保芯片时序收敛、系统上电确定性及整体鲁棒性至关重要。

time3的博客 221

tensorflow2实现deepfm

tensorflow2实现deepfm1.deepfm的概述2.FM侧的二阶组合tensorflow实现deepfm的实现 1.deepfm的概述 deepfm是wide&deep的衍生模型,将wide&deep模型中的wide侧替换成FM模型,从而实现二阶的特征组合,增强模型的“记忆性”,deep侧依旧使用传统的DNN模型,增强模型的泛化能力。 2.FM侧的二阶组合tensorflow实现 class FM(Layer): """Factorization Machine mode

l491899327的博客 687

实测对比:DJI O3、Walksnail Avatar、HDZero三大高清图传,谁才是低延迟王者?

本文对DJI O3、Walksnail Avatar V2和HDZero三大高清图传系统进行了实测对比,重点分析其在FPV飞行中的低延迟表现。通过专业测试环境和量化数据,揭示HDZero在原生低延迟架构上的优势,DJI O3在画质与延迟间的平衡,以及Walksnail的动态码率调整特点,为不同场景下的选购提供决策依据。

weixin_30756499的博客 444

【CTR模型】TensorFlow2.0 的 DeepFM 实现与实战(附代码+数据)

本篇文章讲解 DeepFM 的 tensorflow2.0 实现,并使用 Criteo 数据集的子集加以实践。如果在看本文时有所困惑,可以看看DeepFM的相关理论: CTR深度学习模型之 DeepFM 模型解读 。 本文使用的数据下载地址于代码获取地址在文末获取。 首先了解一下 Criteo数据集,它由有39个特征,1个label列,其中以I开头的为数值型特征,以C开头的为类别特征: 可以看到数据中有缺失值需要填充,并且类别变量需要进行类别编码(onehot 编码的任务交给模型),这部分预处理的代码不详

VariableX的博客 4476

硬件学习笔记(器件篇)—— 磁珠与磁环

因为有这些差别,所有经常会让人们觉得他们并不是一类器件,但实际上他们的原理是一样的。我们使用磁珠是为了利用损耗消耗高频能量,所以如果我们理解了磁珠是如何消耗高频能量的,我们就能理解磁珠的工作原理。

y_u_yu_yu_的博客 1万+

AI Agent在保险行业落地:从智能客服到核保理赔的实践路径

AI Agent作为大模型技术的核心应用形态,正从通用对话走向垂直行业深度落地。其本质是让机器理解自然语言、处理非结构化文档,并在复杂业务流程中辅助人类完成信息抽取、内容生成与多轮交互。在保险这一强监管、高客单价的行业中,智能客服与销售助手率先验证了降本增效的价值,核保与理赔环节则进一步展示了AI在文档理解与风控辅助上的高价值潜力。从技术原理到商业闭环,垂直场景正在成为AI应用的主战场。本文以保险行业为样本,剖析AI Agent如何嵌入真实业务流程,梳理可复用的三阶段落地路径,为企业在医疗、金融等类似高文本

weixin_29039773的博客 364

【CTR模型】TensorFlow2.0 的 DCN(Deep & Cross Network) 实现与实战(附代码+数据)

本篇文章讲解 DeepFM 的 tensorflow2.0 实现,并使用 Criteo 数据集的子集加以实践。如果在看本文时有所困惑,可以看看DeepFM的相关理论:CTR 模型之 Deep & Cross (DCN) 与 xDeepFM 解读。 本文使用的数据下载地址于代码获取地址在文末获取。 首先了解一下 Criteo数据集,它由有39个特征,1个label列,其中以I开头的为数值型特征,以C开头的为类别特征: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pTS

VariableX的博客 2537

ComfyUI全自动换装工作流:从零到一的实战指南

本文提供了一份详细的ComfyUI全自动换装工作流实战指南。从环境配置、模型准备到核心工作流架构的逐步拆解,手把手教你搭建一条高效的AI换装流水线。文章深入解析了从输入、预处理、融合到输出的四步核心逻辑,并分享了关键参数调优与进阶技巧,旨在帮助电商从业者、内容创作者及AI爱好者轻松实现高质量、高效率的“一键换装”。

weixin_29198045的博客 895

DeepCTR与TensorFlow 2.x深度整合:打造新一代CTR模型开发的终极指南

DeepCTR是一款基于深度学习的点击率(CTR)预测模型开发工具包,版本0.9.3已实现与TensorFlow 2.x的深度整合。本文将为你提供从环境搭建到模型部署的完整指南,帮助新手快速掌握CTR模型开发的核心技能。 ## 🌟 为什么选择DeepCTR? DeepCTR作为一款模块化、可扩展的CTR模型开发框架,具有三大核心优势: - **丰富的模型库**:内置20+主流CTR模型,包括

gitblog_00610的博客 1128

提取游戏音频文件.bnk

bnk其实是一种对音频的加密方式,一个.bnk文件中通常包含了多个语音文件,一般可以使用Wwise-Unpacker来解码.bnk格式文件该工具命名没有规律,需要手动整理文件名。市面上很多的游戏都把音频文件打成.bnk文件(比如永劫无间),用这种方式可以将你想要的游戏的音频都提取出来,本文内容仅供自己娱乐。

类人_猿的博客 8745

寒武纪面试——数字IC,数字逻辑岗

面试过程:面试是电话面试,通话时间大致在40分钟左右!面试体验挺不错的。面试的岗位是数字逻辑工程师。本人双非,拿过一个国一(南京FPGA大赛),一个数学建模省二。

FPGA/MATLAB学习教程/源码/项目合作开发 1374

搜广推经典模型复现系列(3)xDeepFM & FiBiNET 原理解析 + TensorFlow 复现实验总结(附代码)

【摘要】xDeepFM与FiBiNET是针对推荐系统中特征交叉问题的两大经典模型。xDeepFM通过压缩交互网络(CIN)显式构建高阶特征组合,每层明确计算向量外积实现结构化交叉;FiBiNET则结合SENet通道注意力机制(对特征embedding自适应加权)与双线性交互(为每对特征分配专属权重矩阵),实现细粒度特征交叉。

qq_53773797的博客 1152

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

终极指南:如何通过DeepCTR实现INT8量化,降低CTR模型推理延迟40%

DeepCTR是一个基于深度学习的点击率(CTR)预测模型工具包,提供了丰富的模型实现和灵活的扩展能力。本文将详细介绍如何通过INT8量化技术优化DeepCTR模型,实现推理性能的显著提升,帮助开发者在保持模型精度的同时,大幅降低部署成本。 ## 为什么INT8量化对CTR模型至关重要? 在数字营销和广告推荐系统中,CTR预测模型需要处理海量用户数据并实时返回预测结果。传统的FP32精度模型虽

gitblog_01185的博客 939

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

深度CTR模型实践指南:从零构建高效点击率预测系统

在当今的推荐系统和广告投放领域,点击率(CTR)预测是核心的技术挑战。面对海量的高维稀疏数据和复杂的特征交互,传统机器学习方法往往难以胜任。DeepCTR作为一个易用、模块化且可扩展的深度学习CTR模型包,为开发者和研究人员提供了构建高效点击率预测系统的完整解决方案。本文将深入解析DeepCTR的核心架构,并通过实际案例展示如何快速构建和优化CTR模型。 ## 🤔 为什么需要DeepCTR?解

gitblog_00001的博客 287

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

DeepCTR:深度学习点击率预测的终极解决方案

DeepCTR 是一个易于使用、模块化且可扩展的深度学习点击率(CTR)预测模型包。它为开发者和数据科学家提供了丰富的预构建模型和工具,帮助快速实现高性能的点击率预测系统,适用于推荐系统、广告投放等场景。 ## 🚀 为什么选择 DeepCTR? 在当今数据驱动的商业环境中,准确预测用户点击率对于提升转化率和用户体验至关重要。DeepCTR 凭借其强大的功能和灵活的架构,成为点击率预测领域的首

gitblog_01168的博客 632

DeepCTR实战教程:从安装到上线,CTR预测模型开发全流程详解

你是否还在为CTR(Click-Through Rate,点击率)预测模型的开发流程繁琐而困扰?是否想快速上手各类深度学习CTR模型却不知从何开始?本文将带你一步步掌握DeepCTR工具包的使用,从环境安装到模型训练、评估与上线,让你轻松应对CTR预测任务。读完本文,你将能够:熟练安装DeepCTR并配置环境;掌握数据预处理和特征工程的关键步骤;使用DeepCTR快速构建和训练多种经典CTR模型;...

gitblog_01178的博客 935
上一篇: 【CTR模型】TensorFlow2.0 的 DCN(Deep & Cross Network) 实现与实战(附代码+数据)
下一篇: 【面试相关】python实现快速幂取余算法详解
VariableX
博客等级 码龄7年 142粉丝 62原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值