public class DiagonalCachingKernel extends NestedKernelCaches 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.
- Matthew Pocock, Thomas Down
- See Also:
- Serialized Form
All Methods Instance Methods Concrete Methods Modifier and Type Method Description
evaluate(Object x, Object y)Returns the kernel product of two Objects.
setNestedKernel(SVMKernel k)Set the kernel to nest.
public void setNestedKernel(SVMKernel k)
Set the kernel to nest.
This will flush the cache.
Returns the kernel product of two Objects.
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.