Class DiagonalCachingKernel
- All Implemented Interfaces:
Serializable
,SVMKernel
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:
-
Constructor Summary
ConstructorsConstructorDescriptionCreate a new CachingKernel.Creates a new DiagonalCachingKernel that nests k. -
Method Summary
Methods inherited from class org.biojava.stats.svm.NestedKernel
getNestedKernel
-
Constructor Details
-
DiagonalCachingKernel
public DiagonalCachingKernel()Create a new CachingKernel. -
DiagonalCachingKernel
Creates a new DiagonalCachingKernel that nests k.
-
-
Method Details
-
setNestedKernel
Set the kernel to nest.
This will flush the cache.
- Overrides:
setNestedKernel
in classNestedKernel
- Parameters:
k
- the kernel to nest.
-
evaluate
Returns the kernel product of two Objects.
This returns
getNestedKernel.evaluate(x, y)
. Ifx.equals(y)
then it will cache the result first time, and do a hash table look up to retrieve the value in subsequent calls. -
toString
-