Skip to content

Commit

Permalink
Merge pull request PaddlePaddle#239 from Qdriving/master
Browse files Browse the repository at this point in the history
Update reader.py
  • Loading branch information
fuyinno4 authored Oct 28, 2020
2 parents b54e00c + b4d6ac7 commit 904d21d
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 43 deletions.
77 changes: 49 additions & 28 deletions models/rank/dien/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
from paddlerec.core.utils import envs
from paddlerec.core.model import ModelBase

import numpy as np


class Model(ModelBase):
def __init__(self, config):
Expand Down Expand Up @@ -131,14 +133,22 @@ def net(self, inputs, is_infer=False):
hist_cat_seq = inputs[1] # history category sequence
target_item = inputs[2] # one dim target item
target_cat = inputs[3] # one dim target category
label = inputs[4] # label
label = inputs[4] # label
mask = inputs[5] # mask
target_item_seq = inputs[6] # target item expand to sequence
target_cat_seq = inputs[7] # traget category expand to sequence
neg_hist_item_seq = inputs[8] # neg item sampling for aux loss
neg_hist_cat_seq = inputs[9] # neg cat sampling for aux loss

item_emb_attr = fluid.ParamAttr(name="item_emb")
cur_program = fluid.Program()
cur_block = cur_program.current_block()
item_emb_copy = cur_block.create_var(
name="item_emb",
shape=[self.item_count, self.item_emb_size],
dtype='float32')
#item_emb_copy = fluid.layers.Print(item_emb_copy, message="Testing:")
##item_emb_attr = fluid.layers.Print(item_emb_attr, summarize=2)
cat_emb_attr = fluid.ParamAttr(name="cat_emb")

# ------------------------- Embedding Layer --------------------------
Expand All @@ -148,7 +158,11 @@ def net(self, inputs, is_infer=False):
size=[self.item_count, self.item_emb_size],
param_attr=item_emb_attr,
is_sparse=self.is_sparse)

item_emb_copy = fluid.layers.Print(
item_emb_copy,
message="Testing:",
summarize=20,
print_phase='backward')
neg_hist_cat_emb = fluid.embedding(
input=neg_hist_cat_seq,
size=[self.cat_count, self.cat_emb_size],
Expand Down Expand Up @@ -229,31 +243,36 @@ def net(self, inputs, is_infer=False):
neg_seq_pad, _ = fluid.layers.sequence_pad(neg_reshape_hist_item_emb,
pad_value)
seq_shape = fluid.layers.shape(pos_seq_pad)
test_pos = fluid.layers.reduce_sum(
fluid.layers.reduce_sum(
fluid.layers.log(
fluid.layers.sigmoid(
fluid.layers.reduce_sum(
gru_out_pad[:, start_value:seq_shape[1] - 1, :] *
pos_seq_pad[:, start_value + 1:seq_shape[1], :],
dim=2,
keep_dim=True))),
dim=2),
dim=1,
keep_dim=True)
test_neg = fluid.layers.reduce_sum(
fluid.layers.reduce_sum(
fluid.layers.log(
fluid.layers.sigmoid(
fluid.layers.reduce_sum(
gru_out_pad[:, start_value:seq_shape[1] - 1, :] *
neg_seq_pad[:, start_value + 1:seq_shape[1], :],
dim=2,
keep_dim=True))),
dim=2),
dim=1,
keep_dim=True)
aux_loss = fluid.layers.mean(test_neg + test_pos)
if (seq_shape[1] == 1):
aux_loss = 0
else:
test_pos = fluid.layers.reduce_sum(
fluid.layers.reduce_sum(
fluid.layers.log(
fluid.layers.sigmoid(
fluid.layers.reduce_sum(
gru_out_pad[:, start_value:seq_shape[1] - 1, :]
* pos_seq_pad[:, start_value + 1:seq_shape[
1], :],
dim=2,
keep_dim=True))),
dim=2),
dim=1,
keep_dim=True)
test_neg = fluid.layers.reduce_sum(
fluid.layers.reduce_sum(
fluid.layers.log(
fluid.layers.sigmoid(
fluid.layers.reduce_sum(
gru_out_pad[:, start_value:seq_shape[1] - 1, :]
* neg_seq_pad[:, start_value + 1:seq_shape[
1], :],
dim=2,
keep_dim=True))),
dim=2),
dim=1,
keep_dim=True)
aux_loss = fluid.layers.mean(test_neg + test_pos)

# ------------------------- Interest Evolving Layer (GRU with attentional input (AIGRU)) --------------------------

Expand All @@ -263,7 +282,7 @@ def net(self, inputs, is_infer=False):
concat_weighted_vector = fluid.layers.concat(
[weighted_vector] * 3, axis=2)

attention_rnn = fluid.layers.StaticRNN(name="attnention_evolution")
attention_rnn = fluid.layers.StaticRNN(name="attention_evolution")

with attention_rnn.step():
word = attention_rnn.step_input(concat_weighted_vector)
Expand Down Expand Up @@ -302,11 +321,13 @@ def net(self, inputs, is_infer=False):

self.predict = fluid.layers.sigmoid(logit)
predict_2d = fluid.layers.concat([1 - self.predict, self.predict], 1)

label_int = fluid.layers.cast(label, 'int64')
auc_var, batch_auc_var, _ = fluid.layers.auc(input=predict_2d,
label=label_int,
slide_steps=0)
self._metrics["AUC"] = auc_var
self._metrics["BATCH_AUC"] = batch_auc_var

if is_infer:
self._infer_results["AUC"] = auc_var
24 changes: 9 additions & 15 deletions models/rank/dien/reader.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,33 +90,27 @@ def make_data(self, b):
for i in range(len(b)):
neg_item[i] = []
neg_cat[i] = []
# Neg item and neg cat should be paried
if len(self.neg_candidate_item) < self.max_neg_item:
self.neg_candidate_item.extend(b[i][0])
self.neg_candidate_cat.extend(b[i][1])
if len(self.neg_candidate_item) > self.max_neg_item:
self.neg_candidate_item = self.neg_candidate_item[
0:self.max_neg_item]
self.neg_candidate_cat = self.neg_candidate_cat[
0:self.max_neg_item]
else:
len_seq = len(b[i][0])
start_idx = random.randint(0, self.max_neg_item - len_seq - 1)
self.neg_candidate_item[start_idx:start_idx + len_seq + 1] = b[
i][0]

if len(self.neg_candidate_cat) < self.max_neg_cat:
self.neg_candidate_cat.extend(b[i][1])
if len(self.neg_candidate_cat) > self.max_neg_cat:
self.neg_candidate_cat = self.neg_candidate_cat[
0:self.max_neg_cat]
else:
len_seq = len(b[i][1])
start_idx = random.randint(0, self.max_neg_cat - len_seq - 1)
self.neg_candidate_item[start_idx:start_idx + len_seq + 1] = b[
self.neg_candidate_cat[start_idx:start_idx + len_seq + 1] = b[
i][1]

for _ in range(len(b[i][0])):
neg_item[i].append(self.neg_candidate_item[random.randint(
0, len(self.neg_candidate_item) - 1)])
for _ in range(len(b[i][1])):
neg_cat[i].append(self.neg_candidate_cat[random.randint(
0, len(self.neg_candidate_cat) - 1)])
randindex = random.randint(0, len(self.neg_candidate_item) - 1)
neg_item[i].append(self.neg_candidate_item[randindex])
neg_cat[i].append(self.neg_candidate_cat[randindex])

len_array = [len(x[0]) for x in b]
mask = np.array(
Expand Down

0 comments on commit 904d21d

Please sign in to comment.