This repository has been archived by the owner on Dec 3, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 37
Home
st-- edited this page May 13, 2015
·
13 revisions
-
Kernels
- Add Kernels
- Periodic kernel:
exp(-2sin(π*(x-y)/k.p)^2 / k.ell^2)
- improve numeric accuracy - kernel_dxdy and kernel_dp tests don't run through entirely
- Automatic Relevance Determination Kernel: one for each euclidean distance and scalar product kernel
- kernel, kernel_dx, kernel_dy
- kernel_dxdy
- kernel_dp: derivatives w.r.t. elements of the weight vector
- fast kernelmatrix_dx,_dy,_dxdy() methods
- test coverage
- Periodic kernel:
- Expand derivatives to the other kernels
- Composites of composite kernels
- Derivatives w.r.t. parameters of subkernels
- Add Kernels
-
Methods
- Efficient computation of weighted squared norms/scalar products
- Efficient computation of derivatives w.r.t. the weights
- Efficient computation of kernel derivatives
- Efficient computation of weighted gramians
- Efficient kernel matrix approximation (this should be last and it's not a hurry)
- Efficient computation of weighted squared norms/scalar products
- First derivatives are named using the pattern function_d* and second derivatives function_d*d*. For example, kernel_dxdy. Since the name of a function does not change when it is differentiated with respect to a variable, it is redundant to write something like 'function_dfunction_dxdy'
- Line lengths are variable - aim to keep lines of code under 80 characters but allow the definition of a function to be as long as needed as julia often has long function names/definitions
- Don't construct intermediate objects (vectors, matrices) inside loops - this leads to a lot of memory allocation and then the GC slows everything down. Instead, need to write functions such that everything is done in-place.
- When scanning an array, ensure that the innermost loop corresponds to the leftmost index when accessing an array - Julia's arrays are in column-major order
- When a function contains two or more loops in succession (not composition) or some set-up code, try to break these into separate functions
- Avoid operating on multiple arrays at once in Julia (eg. attempt to use BLAS where possible)
- more?