Class DiagonalCachingKernel

  • All Implemented Interfaces:
    Serializable, SVMKernel

    public class DiagonalCachingKernel
    extends NestedKernel
    Caches the leading diagonal of a kernel matrix.

    Several kernels need to repeatedly access k(x,x) to do things like normalization, or to calculate distances. This kernel wraps k so that these leading diagonal elements do not need to be calculated each time.

    This kernel is thread-safe. However, care must be taken when setting the nested kernel that no other thread is retrieving values at the same time. This would cause a race condition in which the newly flushed cache may contain a value from the previous kernel.

    Author:
    Matthew Pocock, Thomas Down
    See Also:
    Serialized Form
    • Method Detail

      • evaluate

        public double evaluate​(Object x,
                               Object y)

        Returns the kernel product of two Objects.

        This returns getNestedKernel.evaluate(x, y). If x.equals(y) then it will cache the result first time, and do a hash table look up to retrieve the value in subsequent calls.