class_docstr: Shallow models for knowledge representation learning.
      
docstr: Update shared embeddings.
          
code: def step(self, ent_trace=None, rel_trace=None):
      """Update shared embeddings."""
      if self._ent_emb_on_cpu:
          if ent_trace is None:
              self.ent_embedding.step()
          else:
              self.ent_embedding.step_trace(ent_trace)
      else:
          if ent_trace is not None:
              raise ValueError(
                  "You are using gpu ent_emb, ent_trace must be None."
              )
  
      if self._rel_emb_on_cpu:
          if rel_trace is None:
              self.rel_embedding.step()
          else:
              self.rel_embedding.step_trace(rel_trace)
      else:
          if rel_trace is not None:
              raise ValueError(
                  "You are using gpu rel_emb, rel_trace must be None."
              )
  
imports: import os
  import json
  import math
  import warnings
  import numpy
  import paddle
  import paddle.nn
  import paddle.nn.functional
  from pgl.utils.shared_embedding import SharedEmbedding
  from models.score_funcs import TransEScore, RotatEScore, DistMultScore, ComplExScore, QuatEScore, OTEScore
  from models.init_func import InitFunction
  from utils import uniform, timer_wrapper
label_desc: Use image node_id 12 for calling the KGEModel obj's underlying member method code with example usage: obj.step(ent_trace, rel_trace) without return types