code: def _multiply_layer(self, source, result_size, activation=tf.nn.relu):
      with tf.compat.v1.device("/gpu:{}".format(self.use_gpu_device)):
          ntime_steps = tf.shape(input=source)[1]
          source_size = source.shape[2]
  
          W = tf.compat.v1.get_variable(
              "W",
              shape=[source_size, result_size],
              dtype=tf.float32,
              initializer=tf.compat.v1.keras.initializers.VarianceScaling(
                  scale=1.0, mode="fan_avg", distribution="uniform"
              ),
              use_resource=False,
          )
  
          b = tf.compat.v1.get_variable(
              "b",
              shape=[result_size],
              dtype=tf.float32,
              use_resource=False,
          )
  
          # batch x time, source_size
          source = tf.reshape(source, [-1, source_size])
          # batch x time, result_size
          result = tf.matmul(source, W) + b
  
          result = tf.reshape(result, [-1, ntime_steps, result_size])
          if activation:
              result = activation(result)
  
          return result
  
imports: import math
  import random
  import sys
  import numpy
  import tensorflow
  from .sentence_grouper import SentenceGrouper
  from ..tf2contrib import *
label_desc: Use image node_id 6 for calling the NerModel obj's underlying member method code with example usage: obj._multiply_layer(source, result_size, activation) and returns: result