public class DiagonalCachingKernel extends NestedKernel
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.
| Constructor and Description |
|---|
DiagonalCachingKernel()
Create a new CachingKernel.
|
DiagonalCachingKernel(SVMKernel k)
Creates a new DiagonalCachingKernel that nests k.
|
| Modifier and Type | Method and Description |
|---|---|
double |
evaluate(Object x,
Object y)
Returns the kernel product of two Objects.
|
void |
setNestedKernel(SVMKernel k)
Set the kernel to nest.
|
String |
toString() |
getNestedKernelpublic DiagonalCachingKernel()
public DiagonalCachingKernel(SVMKernel k)
public void setNestedKernel(SVMKernel k)
Set the kernel to nest.
This will flush the cache.
setNestedKernel in class NestedKernelk - the kernel to nest.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.
Copyright © 2020 BioJava. All rights reserved.