class_docstr: The linear kernel. Functions drawn from a GP with this kernel are linear, i.e. f(x) = cx.
  The kernel equation is
  
      k(x, y) = σ²xy
  
  where σ² is the variance parameter.
class_docstr_tok: ["The","linear","kernel",".","Functions","drawn","from","a","GP","with","this","kernel","are","linear",",","i.e",".","f","(","x",")","=","cx",".","The","kernel","equation","is","k","(","x",",","y",")","=","\u03c3\u00b2xy","where","\u03c3\u00b2","is","the","variance","parameter","."]
code: def K(
      self, X: TensorType, X2: Optional[TensorType] = None
  ) -> tf.Tensor:
      if X2 is None:
          return tf.matmul(X * self.variance, X, transpose_b=True)
      else:
          return tf.tensordot(X * self.variance, X2, [[-1], [-1]])
  
file_path: GPflow/gpflow/kernels/linears.py
imports: from typing import Optional
  import tensorflow
  from check_shapes import check_shapes, inherit_check_shapes
  from ..base import Parameter, TensorType
  from ..utilities import positive
  from .base import ActiveDims, Kernel
label_desc: Use image node_id 3 for calling the Linear obj's underlying member method code with example usage: obj.K(X, X2) and returns: tf, tf