hopwise.model.sequential_recommender.gcsan

Reference:

Chengfeng Xu et al. “Graph Contextualized Self-Attention Network for Session-based Recommendation.” in IJCAI 2019.

Classes

GNN

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

GCSAN

GCSAN captures rich local dependencies via graph neural network,

Module Contents

class hopwise.model.sequential_recommender.gcsan.GNN(embedding_size, step=1)[source]

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
linear_edge_in
linear_edge_out
_reset_parameters()[source]
GNNCell(A, hidden)[source]

Obtain latent vectors of nodes via gated graph neural network.

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)[source]
class hopwise.model.sequential_recommender.gcsan.GCSAN(config, dataset)[source]

Bases: hopwise.model.abstract_recommender.SequentialRecommender

GCSAN captures rich local dependencies via graph neural network,

and learns long-range dependencies by applying the self-attention mechanism.

Note

In the original paper, the attention mechanism in the self-attention layer is a single head, for the reusability of the project code, we use a unified transformer component. According to the experimental results, we only applied regularization to embedding.

n_layers
n_heads
hidden_size
inner_size
hidden_dropout_prob
attn_dropout_prob
hidden_act
layer_norm_eps
step
device
weight
reg_weight
loss_type
initializer_range
item_embedding
gnn
self_attention
reg_loss
_init_weights(module)[source]

Initialize the weights

_get_slice(item_seq)[source]
forward(item_seq, item_seq_len)[source]
calculate_loss(interaction)[source]

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)[source]

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)[source]

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