recbole.data.interaction¶
- class recbole.data.interaction.Interaction(interaction)[source]¶
Bases:
object
The basic class representing a batch of interaction records.
Note
While training, there is no strict rules for data in one Interaction object.
While testing, it should be guaranteed that all interaction records of one single user will not appear in different Interaction object, and records of the same user should be continuous. Meanwhile, the positive cases of one user always need to occur earlier than this user’s negative cases.
- A correct example:
user_id
item_id
label
1
2
1
1
6
1
1
3
1
1
1
0
2
3
1
…
…
…
Some wrong examples for Interaction objects used in testing:
user_id
item_id
label
1
2
1
1
6
0
# positive cases of one user always need to
occur earlier than this user’s negative cases
1
3
1
1
1
0
2
3
1
…
…
…
user_id
item_id
label
1
2
1
1
6
1
1
3
1
2
3
1
# records of the same user should be continuous.
1
1
0
…
…
…
- interaction¶
keys are meaningful str (also can be called field name), and values are Torch Tensor of numpy Array with shape (batch_size, *).
- Type:
dict or pandas.DataFrame
- add_prefix(prefix)[source]¶
Add prefix to current interaction’s columns.
- Parameters:
prefix (str) – The prefix to be added.
- property columns¶
Returns: list of str: The columns of interaction.
- cpu()[source]¶
Transfer Tensors in this Interaction object to cpu.
- Returns:
a coped Interaction object with Tensors which are sent to cpu.
- Return type:
- drop(column)[source]¶
Drop column in interaction.
- Parameters:
column (str) – the column to be dropped.
- numpy()[source]¶
Transfer Tensors to numpy arrays.
- Returns:
keys the same as Interaction object, are values are corresponding numpy arrays transformed from Tensor.
- Return type:
dict
- repeat(sizes)[source]¶
Repeats each tensor along the batch dim.
- Parameters:
sizes (int) – repeat times.
Example
>>> a = Interaction({'k': torch.zeros(4)}) >>> a.repeat(3) The batch_size of interaction: 12 k, torch.Size([12]), cpu
>>> a = Interaction({'k': torch.zeros(4, 7)}) >>> a.repeat(3) The batch_size of interaction: 12 k, torch.Size([12, 7]), cpu
- Returns:
a copyed Interaction object with repeated Tensors.
- repeat_interleave(repeats, dim=0)[source]¶
Similar to repeat_interleave of PyTorch.
Details can be found in:
Note
torch.repeat_interleave()
is supported in PyTorch >= 1.2.0.
- sort(by, ascending=True)[source]¶
Sort the current interaction inplace.
- Parameters:
by (str or list of str) – Field that as the key in the sorting process.
ascending (bool or list of bool, optional) – Results are ascending if
True
, otherwise descending. Defaults toTrue
- to(device, selected_field=None)[source]¶
Transfer Tensors in this Interaction object to the specified device.
- Parameters:
device (torch.device) – target device.
selected_field (str or iterable object, optional) – if specified, only Tensors
device. (with keys in selected_field will be sent to) –
- Returns:
a coped Interaction object with Tensors which are sent to the specified device.
- Return type:
- update(new_inter)[source]¶
Similar to
dict.update()
- Parameters:
new_inter (Interaction) – current interaction will be updated by new_inter.
- recbole.data.interaction.cat_interactions(interactions)[source]¶
Concatenate list of interactions to single interaction.
- Parameters:
interactions (list of
Interaction
) – List of interactions to be concatenated.- Returns:
Concatenated interaction.
- Return type: