 public class Adam<Model: Layer, Scalar: TensorFlowFloatingPoint>: Optimizer
     where Model.AllDifferentiableVariables == Model.CotangentVector {
     /// The learning rate.
-    public let learningRate: Scalar
+    public var learningRate: Scalar
     /// A coefficient used to calculate the first and second moments of
     /// gradients.
     public var beta1: Scalar

    /// gradients.
    public var beta2: Scalar
    /// A small scalar added to the denominator to improve numerical stability.
    public let epsilon: Scalar
    /// The weight decay.
    public let decay: Scalar

    public init(
        learningRate: Scalar = 1e-3,

public class SGD<Model: Layer, Scalar: TensorFlowFloatingPoint>: Optimizer
    where Model.AllDifferentiableVariables == Model.CotangentVector {
    /// The learning rate.
    public var learningRate: Scalar
    /// The momentum factor. It accelerates stochastic gradient descent in the relevant direction
    /// and dampens oscillations.
    public var momentum: Scalar
    /// The weight decay.
    public var decay: Scalar
    /// Use Nesterov momentum if true.
    public var nesterov: Bool

    public init(
        learningRate: Scalar = 0.01,
