class_docstr: y_i = A x_i + b
class_docstr_tok: ["y_i","=","A","x_i","+","b"]
docstr: A is a matrix which maps each element of X to Y, b is an additive
  constant.
docstr_tok: ["A","is","a","matrix","which","maps","each","element","of","X","to","Y",",","b","is","an","additive","constant","."]
code: def __init__(
      self, A: TensorType = None, b: TensorType = None
  ) -> None:
      """
      A is a matrix which maps each element of X to Y, b is an additive
      constant.
      """
      MeanFunction.__init__(self)
      A = np.ones((1, 1), dtype=default_float()) if A is None else A
      b = np.zeros(1, dtype=default_float()) if b is None else b
      if isinstance(A, Parameter):
          if len(A._shape) >= 2:
              self.A = A
          else:
              raise ValueError(
                  "Error 'gpflow.funcitons.Linear()' mean function. A has not the correct shape (at least 2d)."
              )
      else:
          self.A = Parameter(np.atleast_2d(A))
      self.b = Parameter(b)
  
imports: from typing import Collection, Optional, Sequence, Tuple
  import numpy
  import tensorflow
  from check_shapes import check_shape
  from check_shapes import check_shapes, inherit_check_shapes
  from .base import Module, Parameter, TensorType
  from .config import default_float, default_int
label_desc: Use image node_id 1 to create a new Linear object from inherited base classes: MeanFunction, Function with example: obj = Linear(A, b)