code: def build_P_hat_paddle(self, C, P):
      F = self.F
      eps = self.eps
      n = P.shape[0]  # n (= self.I_r_width x self.I_r_height)
      # P_tile: n x 2 -> n x 1 x 2 -> n x F x 2
      P_tile = paddle.tile(paddle.unsqueeze(P, axis=1), (1, F, 1))
      C_tile = paddle.unsqueeze(C, axis=0)  # 1 x F x 2
      P_diff = P_tile - C_tile  # n x F x 2
      # rbf_norm: n x F
      rbf_norm = paddle.norm(P_diff, p=2, axis=2, keepdim=False)
  
      # rbf: n x F
      rbf = paddle.multiply(
          paddle.square(rbf_norm), paddle.log(rbf_norm + eps)
      )
      P_hat = paddle.concat(
          [paddle.ones((n, 1), dtype="float64"), P, rbf], axis=1
      )
      return P_hat
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import math
  import paddle
  from paddle import nn, ParamAttr
  from paddle.nn import functional
  import numpy
label_desc: Use image node_id 6 for calling the GridGenerator obj's underlying member method code with example usage: obj.build_P_hat_paddle(C, P) and returns: P_hat