CIN_layer

推荐算法(六)—— xDeepFM 通俗理解及代码实战 目录1 介绍2 原理3 总结4 实验5 代码实践写在最后 1 介绍 本文为推荐系统专栏的第七篇文章,内容围绕 xDeepFM 的原理及代码展开。 xDeepFM 是由中科大、北大、微软联合发表在 KDD’18 上的文章,颇为经典。 论文传送门:xDeepFM: Combining Explicit and Implicit Feature Interactionsfor Recommender Systems 代码传送门:xDeepFM xDeepFM 是 Wide & Deep 的改进版,在此基 阅读详情

在这里插入图片描述

#coding=utf-8

import tensorflow as tf
from tensorflow.python.keras.layers import Concatenate,Conv1D,Reshape

## 只计算其中一层交叉的结果
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个特征
    x0_cols = tf.split(x0, D, axis=-1)  # ?, m, D x0 shape: (batch_size, m, d)
    xl_cols = tf.split(xl, D, axis=-1)  # ?, h, D xl shape:  (batch_size, 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):
        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 为步长, n个filter卷积后输出的向量长度为 1*n_filters
    # 按嵌入维度 D 的方向进行卷积,最终得到形状为 ?, D, n_filters 的输出
    ## Conv1D的使用方法 Conv1D 就类似于加权平均
    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

def compressed_interaction_net_v2(x0, xl, D, n_filters):
    x0_cols = tf.split(x0, D, axis=-1) # x (batch_size, m, D)
    xl_cols = tf.split(xl, D, axis=-1) # x (batch_size, h, D)

    ## (batch_size, dim, h, m)
    feature_map_list = []
    for i in range(D):
        print()
        feature_map = tf.matmul(xl_cols[i], x0_cols[i], transpose_b=True)
        feature_map_list.append(feature_map) ## (batch_size, h, m)

    feature_map_tensor = tf.convert_to_tensor(feature_map_list) #这一步计算 (D, batch_size, h, m)
    transposed_feature_map_tensor = tf.transpose(feature_map_tensor, [1, 0, 2, 3])  # ?, D, h, m

    x0_n_feats = x0.get_shape()[1]  # m
    xl_n_feats = xl.get_shape()[1]  # h

    reshaped_feature_maps = \
        Reshape(target_shape=(D, x0_n_feats * xl_n_feats))(transposed_feature_map_tensor)  #  ?, D,  h*m
    ### 注意 Conv1D每次都是随机初始化的,所以同样的逻辑现实的结果不同
    new_feature_maps = Conv1D(n_filters, kernel_size=1, strides=1)(reshaped_feature_maps)  # ?, D, n_filters
    new_feature_maps = tf.transpose(new_feature_maps, [0, 2, 1])  # ?, n_filters, D

    return new_feature_maps

if __name__ == '__main__':

    ## (batch_size, feature_num, embedding_size)
    x0 = tf.constant([
        [[1, 2, 3, 4],
        [2, 3, 4, 5],
        [3, 4, 5, 3]],

        [[5, 6, 7, 1],
         [8, 9, 10, 11],
         [11, 12, 13, 14]]
    ],  dtype=tf.float32)

    xl = tf.constant([
        [[1, 2, 3, 7],
        [2, 3, 4, 9]],
        [[1, 2, 3, 4],
         [2, 3, 4, 6]]
    ],  dtype=tf.float32)

    res_v1 = compressed_interaction_net(x0, xl, 4, 3)
    print("res_v1:", res_v1)
    
    res_v2 = compressed_interaction_net_v2(x0, xl, 4, 3)
    print("res_v2:",res_v2)

机器学习笔记 - 构建推荐系统(5) 前馈神经网络用于协同过滤 协同过滤算法最常用于推荐系统的应用中。由于互联网的使用和产生的大量信息,用户找到自己的喜好成为一项非常繁琐的任务。用户对物品的偏好以评分矩阵的形式表示,用于建立用户和物品之间的关系以找到用户的相关物品。因此,如今的协同过滤算法面临着数据集大、评分矩阵稀疏的问题。在各种协同过滤技术中,矩阵分解是最流行的一种,它将用户和项目投影到共享的潜在空间中,使用潜在特征向量来表示用户或项目。之后,用户对项目的交互被建模为其潜在向量的内积........................................... 阅读详情

相关推荐

【Python深度学习】零基础掌握Pytorch Convolution Layers nn.Conv方法

在人工智能的奇妙世界中,深度学习已经成为推动技术进步的核心力量。特别是在计算机视觉和语音识别等领域,深度学习模型,尤其是卷积神经网络(CNN),已经成为了不可或缺的工具。本文将引导深入了解卷积神经网络中最关键的组成部分:卷积层。将从最基本的一维卷积层(nn.Conv1d)开始,逐步深入到更复杂的二维(nn.Conv2d)和三维卷积层(nn.Conv3d),并通过解析和应用案例来阐明这些技术的重要性和实用性。

Mr数据杨 414

压缩,让网络更快

原文 Use compression to make the web faster 压缩,让网络更快作者: By Arvind Jain, Engineering Director and Jason Glasgow, Staff Software Engineer简介互联网上,每天有超过99人年浪费在下载未经压缩的内容上面。虽然支持压缩已经是每个现代的浏览器的标准功能了,

Emu的专栏 —— 关注前端技术,关注网络优化 7544

基于WFP构建Windows内核级流量监控与转发系统实战指南

网络流量监控是网络运维、安全分析和性能调优的基础技术,其核心原理在于对网络协议栈中的数据包进行捕获、解析与处理。传统工具如Wireshark工作在数据链路层,虽能获取原始帧,但信息嘈杂且难以实现精细控制。Windows Filtering Platform(WFP)作为微软提供的网络过滤平台,允许开发者在网络协议栈的各个关键层(如传输层、应用层授权层)插入可编程的“检查点”,实现对数据包的深度观测、精准拦截乃至修改转发。这项技术对于实现高性能、内核态的流量审计、负载均衡旁路检测或透明代理等场景具有重要价值。

weixin_33894640的博客 846

浅谈几种Normalization方法

前言 本文主要对以下几种Normalization方法进行讨论: Batch Normalization(BN) Instance Normalization(IN) Conditional Instance Normalization(CIN) Adaptive Instance Normalization(AdaIN) SPatially-Adaptive (DE) normalization(SPADE) 以下Normalization方法本文不做讨论,请自行搜索相应资料。 Local Res

TracelessLe的专栏 6752

自建邮局服务器| 批量邮件群发系统PowerMTA+oem(mumara,mailwizz, interspire)

世界顶级自建邮局服务器PowerMTA+oem(mumara,mailwizz, interspire) PowerMTA4.5(最好用的 群发邮件软件)是用于大批量多ip开发的邮件传递邮寄。可按每小时发送数近百万条电子邮件,发送IP地址和域可以详细配置,加上目前流行前端oem,mumara,mailwizz, interspire等,可定时发送,定时重复发送,实现全自动化 邮件群发 方案。 官网(powermta4.5下载) https://www.sparkpost.com/powermta/ 使用Po

ytrsexpo的博客 6499

XGBoost调参新姿势:Bayesian优化实战指南(附完整代码)

本文详细介绍了如何使用Bayesian优化方法高效调优XGBoost模型参数。通过解析Bayesian优化核心原理和XGBoost关键参数,提供完整的实战代码示例,帮助读者掌握这一智能调参技术,显著提升模型性能。文章特别适合机器学习工程师和数据科学家阅读。

weixin_42536058的博客 366

【推荐系统】深入理解推荐系统:无需人工特征工程的xDeepFM

【推荐系统】专栏历史部分文章:深入理解推荐系统:召回深入理解推荐系统:排序深入理解推荐系统:Fairness、Bias和Debias深入理解推荐系统:推荐系统中的attention机制深入...

fengdu78的博客 732

最佳解决Maven同一依赖多版本共存问题,重复依赖(同一个jar包,多个版本)-maven-shade-plugin

公司的历史项目在导出功能上引用的是poi-3.12版本,后续再做word模板导出功能时用到了poi-3.15版本,升级完后发现项目的很多导出功能都瘫痪了。用旧版本,新功能无法使用;用新版本,旧功能瘫痪,且整改的工作量比较大。使用maven-shade-plugin,将某个版本的依赖名称进行修改,重新引入即可。

S_White_Island的博客 1万+

一条命令迁移 50 种输入法词库:深蓝词库转换从构建到批量转换实战

深蓝词库转换(imewlconverter)是一款开源免费的输入法词库转换程序:给定一个搜狗 `.scel`、`.qpyd`、`.bdict` 或其他格式的词库文件,它会输出 Rime、谷歌拼音、Win10 微软拼音等 50 余种输入法规格可用的词库文件。工具提供命令行与图形界面两种形态,跨平台支持 Windows、Linux、macOS,是跨平台词库迁移场景下最常见的方案之一。 本文以一次真实

gitblog_00664的博客 644

[QMT量化交易小白入门]-七十九、增加标的后,五年回测收益率达到了2493%

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 1573

YOLOv11改进 | 注意力篇 | YOLOv11引入24年最新的ELA注意力机制,并构建C2PSA_ELA

为了解决这些限制,本文介绍了一种高效的本地注意力(ELA)方法,实现了一个简单的结构,大幅度的性能改善。我们精心设计了ELA中的三个超参数,产生了四个不同的版本:ELA-T,ELAB,ELA-S和ELA-L,以满足不同视觉任务的具体要求,如图像分类,目标检测和语义分割。到此本文的正式分享内容就结束了,在这里给大家推荐我的YOLOv11改进有效涨点专栏,本专栏目前为新开的,后期我会根据各种前沿顶会进行论文复现,也会对一些老的改进机制进行补充,如果大家觉得本文帮助到你了,订阅本专栏,关注后续更多的更新~

tsg6698的博客 1284

DeepFM、xDeepFM

可以看到,整个模型大体分为两部分:FM(左边)和DNN(右边)。 FM Layer负责提取Wide特征,DNN部分(上图中的Hidden Layer 部分)提取deep特征,注意FM Layer 和Hidden Layer 共享输入层(Dense Embedding 层, 这个Embedding层得权重矩阵就是FM算法中的辅助矩阵V) 最后将两部分特征拼接到一起输出,这样该模型就具有学习高阶和低阶特征的能力。 模型大概的流程如下: 1.首先利用FM进行embedding得到Dense Embeddings.

weixin_49717022的博客 1103

DRV8311HRRWR直流无刷(BLDC)电机驱动原理图设计

DRV8311HRRWR集成三个MOSFET 半H桥,用于驱动三相无刷直流电机(BLDC),适用于5V、9V、12V或18V直流电源轨或1S至4S电池供电应用。内部集成三个具有集成电流感测功能的电流感测放大器(CSA),可感测BLDC电机的三相电流,从而实现FOC和电流控制系统设计方案。集成保护特性:VM 欠压锁定 (UVLO)、 电荷泵欠压 (CPUV)、过流保护 (OCP)、热警告和热关断 (OTW/OTSD)、故障条件指示引脚 (nFAULT)支持 1.8V、3.3V 和 5V 逻辑输入。

zhusl6688的博客 1226

MediaCrawler 抖音免登录搜索:不扫码也能跑,改动只有两行

跑 MediaCrawler 抓抖音搜索数据时,程序是不是总卡在登录界面,等你扫码?夜间定时任务、无显示的服务器环境里,根本没人扫。这里给出一套 MediaCrawler 抖音免登录搜索的修改方法:跳过两个登录相关调用,让浏览器在登录态之外的状态下直接完成搜索,原理并不复杂。 ## 为什么免登录也能搜索 关键只有一点:抖音 Web 搜索接口对"未持通行证"的请求并不严格设卡。 把 cooki

gitblog_01195的博客 703

从误检率30%到99.7%:YOLOv8/v9工业零件缺陷检测实战(附产线部署全流程与参数调优秘籍)

工业场景YOLO实战:从实验室到车间的关键调优策略 本文针对工业缺陷检测的特殊性,系统总结了YOLOv8/v9在工业应用中的实战经验。通过齿轮厂缺陷检测案例,揭示了实验室模型与工业场景的三点本质差异:小目标特性(0.2-1mm缺陷)、复杂背景干扰(油污/反光)和数据量不足问题。重点提出了工业级解决方案:1)数据采集需覆盖极端工况(不同光照/污染/角度);2)标注采用LabelStudio+预标注提升效率;3)定制工业增强策略(反光模拟/缺陷复制粘贴)。文章还提供了完整的参数调优记录和TensorRT加速部署

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1730

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

免费开源在线问卷工具指南:快速上手 LimeSurvey 与 Formbricks

**awesome-open-source-systems** 是一个精选免费开源软件(FOSS)清单项目,其中的 **Survey 分类**收录了两款强大的免费开源在线问卷工具:**LimeSurvey** 与 **Formbricks**。本指南帮你快速理解两款工具的差异与适用场景,轻松完成从选型到自托管部署的准备。 ## 📑 目录 - [如何在清单中找到问卷工具](#1-如何在awes

gitblog_00463的博客 217

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

RPCS3 模拟器 0xc0000142 启动失败完整指南:修复 Visual C++ 运行库的五步法

升级 RPCS3 模拟器后遇到"RPCS3 0xc0000142:应用程序无法正常启动"报错?先别慌,也别急着重装系统或退回旧版。这份指南会先教你确认是不是 Visual C++ 运行库问题,再用五步清理重建运行库,让模拟器在 Windows 10 上恢复启动。 [![RPCS3 0xc0000142 启动失败排障指南](https://raw.gitcode.com/GitHub_Trendi

gitblog_00843的博客 178

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

如何 5 分钟装好 Bun:跨平台安装与使用指南

Bun 是把 JavaScript 运行时、包管理器、打包器和测试运行器装进同一个二进制文件的开发工具。这篇 Bun 安装教程带你走完最短路径:先装好并验证,再处理 PATH、版本升级、容器与卸载。面向新手,按自己的系统跳读即可,不用通篇看完。 ## 装前体检:确认系统要求与依赖 安装前花一分钟对一遍这张清单,能避开九成装不上的坑: | 平台 | 要求 | | --- | --- | | L

gitblog_00094的博客 407

Deep & Cross Network (DCN) 与 xDeepFM 解读

文章目录Deep & Cross NetworkxDeepFM Deep & Cross Network 在CTR模型中,FM可以自动组合特征,但也仅限于二阶叉乘。Deep & Cross 主要解决CTR模型中如何自动学习高阶的特征组合。Deep & Cross Network(DCN)自动构造有限高阶的交叉特征,并学习对应权重,告别了繁琐的人工叉乘。 Deep & Cross的网络结构如图所示: 主要包括四个部分,输入部分,Cross network部分,Deep

zhong_ddbb的博客 1967

深度推荐模型——xDeepFM [KDD 18][Microsoft]

【代码】深度推荐模型——xDeepFM [KDD 18][Microsoft]

670

normalization总结和实现

本博文大量引用张俊林老师的专栏:https://zhuanlan.zhihu.com/p/43200897 内化于己 默认你已经略懂BN,至少读过batch normalization论文! 介绍 normalization分为针对输入激活函数数据和权重两种方式。 1.输入激活函数数据 最为广泛使用的就是BatchNormalization(BN),它是一种典形的对输入数据的norm操作,包括它的...

how many roads a model must walk down 1392

DTC产生与恢复

参考文档:1.CAN Interaction Layer (谈谈我对交互层的理解)_蚂蚁小兵-优快云博客_interaction layer2.总线仿真,还可以这样玩!_怿星科技的博客-优快云博客3.CANoe DLL 导入与使用-优快云博客1.IL的理解IL层在message发送到总线上之前,默认情况下,IL层的参数是在DBC文件中定义的。IL层定义message 和signal的行为方式,比如什么时候发,发送周期是多少。

cpuaifatangemoij的博客 222

抖音无水印批量下载完整指南:整页搬运、直播录制与增量去重,一份配置全搞定

你收藏过 200 个抖音视频,三个月后要剪一条视频,翻遍相册也找不到那个"开头教做法"的——文件名是一串数字,画面上还压着水印。这类"当时随手一存、以后全成谜"的内容,正是 [douyin-downloader](https://link.gitcode.com/i/47b2696105e4eb12011d17f509db1ab1) 要解决的:**免费开源的抖音无水印批量下载工具**,粘链接拿无水

gitblog_09568的博客 409

第一章:神经网络原理

本章系统介绍了神经网络的基础原理,主要内容包括:1)神经元与感知机模型,从生物神经元类比引出人工神经元结构,给出数学定义和现代实现方式;2)激活函数详解,对比分析了Sigmoid、Tanh、ReLU、GELU等主流激活函数的数学特性、优缺点及适用场景;3)通过PyTorch代码实现了单个神经元和激活函数可视化。本章强调神经网络通过分层结构和非线性激活函数实现复杂函数逼近的能力,为后续深度学习模型奠定理论基础。

云天空的博客 381

深度学习试题_AI算法深度学习常见面试题

你觉得bn过程是什么样的?按batch进行期望和标准差计算对整体数据进行标准化对标准化的数据进行线性变换变换系数需要学习手写一下bn过程?mu = 1.0*np.sum(X,axis = 0)/X.shape[0]Xmu = X - musq = Xmu**2var = 1.0*np.sum(sq,axis=0)/X.shape[0]out = alhpa*(X-Xmu)/np.sqrt(var+...

weixin_39584529的博客 248
上一篇: deep_cross_layer
下一篇: afm_layer
github_元宝
博客等级 码龄9年 1粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值