Changeset 8585 for branches/HeuristicLab.Mono/HeuristicLab.Algorithms.DataAnalysis/3.4/GaussianProcess/MeanProd.cs
- Timestamp:
- 09/06/12 09:52:52 (12 years ago)
- Location:
- branches/HeuristicLab.Mono
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.Mono
-
branches/HeuristicLab.Mono/HeuristicLab.Algorithms.DataAnalysis
-
branches/HeuristicLab.Mono/HeuristicLab.Algorithms.DataAnalysis/3.4/GaussianProcess/MeanProd.cs
r8451 r8585 82 82 public double[] GetGradients(int k, double[,] x) { 83 83 double[] res = Enumerable.Repeat(1.0, x.GetLength(0)).ToArray(); 84 foreach (var f in factors) { 85 var numParam = f.GetNumberOfParameters(numberOfVariables); 86 if (k >= 0 && k < numParam) { 84 // find index of factor for the given k 85 int j = 0; 86 while (k >= factors[j].GetNumberOfParameters(numberOfVariables)) { 87 k -= factors[j].GetNumberOfParameters(numberOfVariables); 88 j++; 89 } 90 for (int i = 0; i < factors.Count; i++) { 91 var f = factors[i]; 92 if (i == j) { 87 93 // multiply gradient 88 94 var g = f.GetGradients(k, x); 89 for (int i = 0; i < res.Length; i++) res[i] *= g[i]; 90 k -= numParam; 95 for (int ii = 0; ii < res.Length; ii++) res[ii] *= g[ii]; 91 96 } else { 92 97 // multiply mean 93 98 var m = f.GetMean(x); 94 for (int i = 0; i < res.Length; i++) res[i] *= m[i]; 95 k -= numParam; 99 for (int ii = 0; ii < res.Length; ii++) res[ii] *= m[ii]; 96 100 } 97 101 }
Note: See TracChangeset
for help on using the changeset viewer.