专栏首页Soul Joy Hub深度推荐模型——NFM [SIGIR 17][新加坡国立大学]

深度推荐模型——NFM [SIGIR 17][新加坡国立大学]

视频讲解:https://www.yuque.com/chudi/tzqav9/ny150b#aalY8

import tensorflow as tf
from tensorflow import keras
from utils import *

EPOCH = 10
BATCH_SIZE = 32
VEC_DIM = 10
DNN_LAYERS = [64, 128, 64]
DROPOUT_RATE = 0.5

base, test = loadData()
# 所有的特征各个类别值个数之和
FEAT_CATE_NUM = base.shape[1] - 1
K = tf.keras.backend


class BiInteractionLayer(keras.layers.Layer):
    def __init__(self, **kwargs):
        super(BiInteractionLayer, self).__init__(**kwargs)

    def build(self, input_shape):
        super(BiInteractionLayer, self).build(input_shape)

    def call(self, Input, **kwargs):
        sum_square_part = tf.square(tf.reduce_sum(Input, axis=1))  # (batch, K)
        square_sum_part = tf.reduce_sum(tf.square(Input), axis=1)  # (batch, K)
        return 0.5 * (sum_square_part - square_sum_part)

def run():
    # 将所有的特征的各个类别值统一id化。x中每行为各特征的类别值的id
    val_x, val_y = getAllData(test)
    train_x, train_y = getAllData(base)

    model = keras.models.Sequential()
    model.add(keras.layers.Embedding(FEAT_CATE_NUM, VEC_DIM, input_length=val_x[0].shape[0]))
    model.add(BiInteractionLayer())
    model.add(keras.layers.BatchNormalization())
    model.add(keras.layers.Dropout(rate=DROPOUT_RATE))
    for units in DNN_LAYERS:
        model.add(keras.layers.Dense(units, activation='relu'))
        model.add(keras.layers.Dropout(DROPOUT_RATE))
    model.add(keras.layers.Dense(1, activation='sigmoid'))

    model.compile(loss='binary_crossentropy', optimizer=tf.train.AdamOptimizer(0.001), metrics=[keras.metrics.AUC()])
    tbCallBack = keras.callbacks.TensorBoard(log_dir='./logs',
                                             histogram_freq=0,
                                             write_graph=True,
                                             write_grads=True,
                                             write_images=True,
                                             embeddings_freq=0,
                                             embeddings_layer_names=None,
                                             embeddings_metadata=None)

    model.fit(train_x, train_y, batch_size=BATCH_SIZE, epochs=EPOCH, verbose=2, validation_data=(val_x, val_y),
              callbacks=[tbCallBack])


run()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一文看懂 FM ( Factorization Machine ) 模型的各种变式

    FM 模型最早由 Steffen Rendle 在2010年提出,解决了稀疏数据场景下的特征组合问题,在广告、推荐等领域被广泛使用。FM 模型简单而且效果好,可...

    石晓文
  • NLP 顶级科学家 Manning:深度学习将主导 SIGIR(信息检索)

    【新智元导读】国际计算机协会信息检索大会正在意大利的比萨举行,自然语言理解领域的顶级科学家Christopher Manning受邀发表主旨演讲。他认为,信息检...

    新智元
  • Factorization Machine模型的各种变式

    FM模型最早由Steffen Rendle在2010年提出,解决了稀疏数据场景下的特征组合问题,在广告、推荐等领域被广泛使用。FM模型简单而且效果好,可以作为业...

    用户3578099
  • 深度模型DNN在个性化推荐场景中的应用

    随着深度神经网络在语音和图像识别上取得的巨大成功,AlphaGo 战胜人类围棋顶尖高手,以深度网络为基础的人工智能迎来第三次高潮。与此同时互联网所面临的信息超载...

    美图数据技术团队
  • 腾讯Angel亮相VLDB,携全新Angel 2.0宣布加入LF深度学习基金会

    北京时间8月27日,全球数据库三大顶级会议之一——VLDB(Very Large Data Bases Conferences)在巴西里约热内卢召开。腾讯AI...

    腾讯高校合作
  • 腾讯Angel亮相VLDB,携全新Angel 2.0宣布加入LF深度学习基金会

    北京时间8月27日,全球数据库三大顶级会议之一——VLDB(Very Large Data Bases Conferences)在巴西里约热内卢召开。腾讯AI...

    腾讯开源
  • 业界 | 从FM推演各深度CTR预估模型(附代码)

    多年以后,当资深算法专家们看着无缝对接用户需求的广告收入节节攀升时,他们可能会想起自己之前痛苦推导FM与深度学习公式的某个夜晚……

    大数据文摘
  • 腾讯Angel亮相VLDB,携全新Angel 2.0宣布加入LF深度学习基金会

    ? 北京时间8月27日,全球数据库三大顶级会议之一——VLDB(Very Large Data Bases Conferences)在巴西里约热内卢召开。腾讯...

    腾讯技术工程官方号
  • 2021腾讯犀牛鸟精英科研人才培养计划课题(九)——信息检索与推荐系统

    12月11日,2021年腾讯犀牛鸟精英科研人才培养计划正式对外发布。计划截止申报时间为2021年1月28日24:00。 本年度精英科研人才计划将延续人工智能领...

    腾讯高校合作
  • 推荐系统遇上深度学习(七)--NFM模型理论和实践

    在CTR预估中,为了解决稀疏特征的问题,学者们提出了FM模型来建模特征之间的交互关系。但是FM模型只能表达特征之间两两组合之间的关系,无法建模两个特征之间深层次...

    石晓文

扫码关注云+社区

领取腾讯云代金券