NF算法代码C语言,NFFM的原理与代码 - osc_acwq3gr9的个人空间 - OSCHINA - 中文开源技术交流社区...

本篇深入分析郭大nffm的代码

TensorFlow计算图

计算图的构建

ones = tf.ones_like(emb_inp_v2)

mask_a = tf.matrix_band_part(ones, 0, -1) # Upper triangular matrix of 0s and 1s

mask_b = tf.matrix_band_part(ones, 0, 0) # Diagonal matrix of 0s and 1s

mask = tf.cast(mask_a - mask_b, dtype=tf.bool) # Make a bool mask

'''

True - True = 0 and 0 = False

'''

#DNN

dnn_input = tf.boolean_mask(emb_inp_v2, mask) # 把上三角减去对角线的部分取出来

dnn_input = tf.reshape(dnn_input,[tf.shape(emb_inp_v2)[0],hparams.feature_nums*(hparams.feature_nums-1)//2])

input_size=int(dnn_input.shape[-1])

for idx in range(len(hparams.hidden_size)):

glorot = np.sqrt(2.0 / (input_size + hparams.hidden_size[idx]))

W = tf.Variable(np.random.normal(loc=0, scale=glorot, size=(input_size, hparams.hidden_size[idx])), dtype=np.float32)

dnn_input=tf.tensordot(dnn_input,W,[[-1],[0]])

if hparams.norm is True:

dnn_input=self.batch_norm_layer(dnn_input,\

self.use_norm,'norm_'+str(idx))

dnn_input=tf.nn.relu(dnn_input)

input_size=hparams.hidden_size[idx]

glorot = np.sqrt(2.0 / (hparams.hidden_size[-1] + 1))

W = tf.Variable(np.random.normal(loc=0, scale=glorot, size=(hparams.hidden_size[-1], 1)), dtype=np.float32)

b = tf.Variable(tf.constant(-3.5), dtype=np.float32)

w3=tf.tensordot(dnn_input,W,[[-1],[0]])+b

为什么没有把单项特征算进去?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值