hopwise.model.sequential_recommender.srgnn

Reference:

Shu Wu et al. “Session-based Recommendation with Graph Neural Networks.” in AAAI 2019.

Reference code:

https://github.com/CRIPAC-DIG/SR-GNN

Classes

GNN

Graph neural networks are well-suited for session-based recommendation,

SRGNN

SRGNN regards the conversation history as a directed graph.

Module Contents

class hopwise.model.sequential_recommender.srgnn.GNN(embedding_size, step=1)

Bases: torch.nn.Module

Graph neural networks are well-suited for session-based recommendation, because it can automatically extract features of session graphs with considerations of rich node connections.

step = 1
embedding_size
input_size
gate_size
w_ih
w_hh
b_ih
b_hh
b_iah
b_ioh
linear_edge_in
linear_edge_out
GNNCell(A, hidden)

Obtain latent vectors of nodes via graph neural networks.

Parameters:
  • A (torch.FloatTensor) – The connection matrix,shape of [batch_size, max_session_len, 2 * max_session_len]

  • hidden (torch.FloatTensor) – The item node embedding matrix, shape of [batch_size, max_session_len, embedding_size]

Returns:

Latent vectors of nodes,shape of [batch_size, max_session_len, embedding_size]

Return type:

torch.FloatTensor

forward(A, hidden)
class hopwise.model.sequential_recommender.srgnn.SRGNN(config, dataset)

Bases: hopwise.model.abstract_recommender.SequentialRecommender

SRGNN regards the conversation history as a directed graph. In addition to considering the connection between the item and the adjacent item, it also considers the connection with other interactive items.

Such as: A example of a session sequence(eg:item1, item2, item3, item2, item4) and the connection matrix A

Outgoing edges:

1

2

3

4

1

0

1

0

0

2

0

0

1/2

1/2

3

0

1

0

0

4

0

0

0

0

Incoming edges:

1

2

3

4

1

0

0

0

0

2

1/2

0

1/2

0

3

0

1

0

0

4

0

1

0

0

embedding_size
step
device
loss_type
item_embedding
gnn
linear_one
linear_two
linear_three
linear_transform
_reset_parameters()
_get_slice(item_seq)
forward(item_seq, item_seq_len)
calculate_loss(interaction)

Calculate the training loss for a batch data.

Parameters:

interaction (Interaction) – Interaction class of the batch.

Returns:

Training loss, shape: []

Return type:

torch.Tensor

predict(interaction)

Predict the scores between users and items.

Parameters:

interaction (Interaction) – Interaction class of the batch.

Returns:

Predicted scores for given users and items, shape: [batch_size]

Return type:

torch.Tensor

full_sort_predict(interaction)

Full sort prediction function. Given users, calculate the scores between users and all candidate items.

Parameters:

interaction (Interaction) – Interaction class of the batch.

Returns:

Predicted scores for given users and all candidate items, shape: [n_batch_users * n_candidate_items]

Return type:

torch.Tensor