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

深度推荐模型——AFM [IJCAI 17][浙大、新加坡国立大学]

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

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 PairWiseInteractionAttentionLayer(keras.layers.Layer):
    def __init__(self, vec_dim, attention_factor, **kwargs):
        self.vec_dim = vec_dim
        self.attention_factor = attention_factor
        super(PairWiseInteractionAttentionLayer, self).__init__(**kwargs)

    def build(self, input_shape):
        self.cnum = input_shape[1]
        self.cross_num = self.cnum * (self.cnum - 1) // 2
        self.W0 = self.add_weight(name='W0', shape=(self.vec_dim, self.attention_factor),
                                  initializer='uniform',trainable=True)
        self.W1 = self.add_weight(name='W1', shape=(self.attention_factor, 1), initializer='uniform',
                                  trainable=True)
        super(PairWiseInteractionAttentionLayer, self).build(input_shape)

    def call(self, Input, **kwargs):
        pi_emb = []
        for i in range(self.cnum):
            for j in range(i + 1, self.cnum):
                pi_emb.append(tf.multiply(Input[:, i, :], Input[:, j, :]))
        pi_emb = tf.stack(pi_emb, axis=1)  # [-1,coss_num,vec_dim]
        att = tf.matmul(tf.nn.relu(tf.matmul(pi_emb, self.W0)), self.W1)  # [-1,coss_num,1]
        att_score = tf.reshape(tf.nn.softmax(tf.reshape(att, shape=(-1, self.cross_num))),
                               shape=(-1, self.cross_num, 1))  # [-1,coss_num]
        weight_sum = tf.multiply(pi_emb, att_score)  # [-1,coss_num,vec_dim]
        weight_sum = tf.reduce_sum(weight_sum, axis=1)
        return weight_sum


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(PairWiseInteractionAttentionLayer(vec_dim=VEC_DIM, attention_factor=VEC_DIM))
    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 条评论
登录 后参与评论

相关文章

  • CTR点击率预估论文集锦

    CTR预估对于搜索、推荐和广告都是非常重要的一个场景,近年来CTR预估技术更新迭代,层出不穷。这篇文章将记录CTR预估著名模型的相关论文。以下按照年份整理。

    用户3578099
  • 香港、美国、新加坡三所高校新一轮 AI 博士生招生!快来一起发顶会论文

    AI科技评论今天继续推出海内外高校AI博士招生,来自香港、美国、新加坡三所高校的助理教授正在招收 2021/22级的博士生,他们分别是郭若城博士、刘宁昊 博士以...

    AI科技评论
  • 2021腾讯犀牛鸟精英科研人才培养计划课题(九)——信息检索与推荐系统

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

    腾讯高校合作
  • 推荐领域又一经典paper,分分钟搞清楚Attention机制

    大家好,今天选择的论文是一篇FM的升级论文,叫做Attentional Factorization Machines: Learning the Weight ...

    TechFlow-承志
  • 腾讯犀牛鸟精英人才培养计划课题介绍(一)——机器学习&量子计算

    ? 腾讯犀牛鸟精英人才培养计划是一项面向学生的校企联合培养方案,项目覆盖机器学习、量子计算、计算机视觉、语音技术、自然语言处理等产学研热点方向,入选学生将到腾...

    腾讯高校合作
  • CCF-腾讯犀牛鸟基金五周年系列报道(三)——笃行致远-2017年CCF-腾讯犀牛鸟基金成果分享(上篇)

    ? 学海无涯,业界无边。如何将日新月异的产业发展与枝繁叶茂的学术生态做扎实有效的对接,将无限的创想化为落地的实践,始终是激励CCF-腾讯犀牛鸟基金不断探索的初...

    腾讯高校合作
  • 以“犀牛鸟的名义”,助力青年学者

    2016年度CCF-腾讯犀牛鸟基金共计支持18项科研基金,22项创意基金。在过去的一年中,基金获奖者与腾讯研发团队在前沿科技领域的开展深入合作。 双方根据共同关...

    腾讯高校合作
  • 2020腾讯犀牛鸟精英人才培养计划课题介绍(八)——视觉及多媒体计算

    ? 精英人才培养计划是一项校企联合人才培养项目,入选学生将受到业界顶尖技术团队与高校导师的联合指导及培养。培养期间,学生将获得3个月以上到访腾讯开展科研访问的...

    腾讯高校合作
  • 动态 | 「AI's 10 to Watch」名单出炉,南大俞扬、腾讯AI Lab、NTU安波等华人学者当选

    新加坡南洋理工大学的安波教授,腾讯 AI Lab 总监刘威,以及南京大学的俞扬博士等多位华人 AI 学者上榜。

    AI科技评论
  • 2014 CCF-腾讯犀牛鸟基金获奖结果发布

    2014 CCF-腾讯犀牛鸟基金获奖结果发布 2013年,CCF与腾讯合作首次发起犀牛鸟基金,旨在助力青年学者把握时代赋予的机遇,开展致力于提升人类生活品质的创...

    腾讯高校合作

扫码关注云+社区

领取腾讯云代金券