class_docstr: Caser is a model that incorporate CNN for recommendation.
  
  Note:
      We did not use the sliding window to generate training instances as in the paper, in order that
      the generation method we used is common to other sequential models.
      For comparison with other models, we set the parameter T in the paper as 1.
      In addition, to prevent excessive CNN layers (ValueError: Training loss is nan), please make sure the parameters MAX_ITEM_LIST_LENGTH small, such as 10.
class_docstr_tok: ["Caser","is","a","model","that","incorporate","CNN","for","recommendation",".","Note",":","We","did","not","use","the","sliding","window","to","generate","training","instances","as","in","the","paper",",","in","order","that","the","generation","method","we","used","is","common","to","other","sequential","models",".","For","comparison","with","other","models",",","we","set","the","parameter","T","in","the","paper","as","1",".","In","addition",",","to","prevent","excessive","CNN","layers","(","ValueError",":","Training","loss","is","nan",")",",","please","make","sure","the","parameters","MAX_ITEM_LIST_LENGTH","small",",","such","as","10","."]
docstr: L2 loss on conv_h
docstr_tok: ["L2","loss","on","conv_h"]
code: def reg_loss_conv_h(self):
      r"""
      L2 loss on conv_h
      """
      loss_conv_h = 0
      for name, parm in self.conv_h.named_parameters():
          if name.endswith("weight"):
              loss_conv_h = loss_conv_h + parm.norm(2)
      return self.reg_weight * loss_conv_h
  
file_path: RecBole/recbole/model/sequential_recommender/caser.py
imports: import torch
  from torch import nn
  from torch.nn import functional
  from torch.nn.init import normal_, xavier_normal_, constant_
  from recbole.model.abstract_recommender import SequentialRecommender
  from recbole.model.loss import RegLoss, BPRLoss
label_desc: Use image node_id 4 for calling the Caser obj's underlying member method code with example usage: obj.reg_loss_conv_h() and returns: unknown