public static DoubleAD logSum(DoubleAD[] logInputs) { return logSum(logInputs,0,logInputs.length); }
for (int feature : features) { int i = indexOf(feature, c); sums[c] = ADMath.plus(sums[c], xAD[i]); DoubleAD total = ADMath.logSum(sums); probs[c] = ADMath.exp( ADMath.minus(sums[c], total) ); if (dataWeights != null) { probs[c] = ADMath.multConst(probs[c], dataWeights[d]); for(int i = 0; i < x.length; i++){ tmp[i] = derivativeAD[i].getval(); derivativeAD[i].plusEquals(ADMath.multConst(xAD[i], batch.length/(data.length * prior.getSigma()*prior.getSigma()))); derivative[i] = derivativeAD[i].getval(); HdotV[i] = derivativeAD[i].getdot();
for (int feature : features) { int i = indexOf(feature, c); sums[c] = ADMath.plus(sums[c], xAD[i]); DoubleAD total = ADMath.logSum(sums); probs[c] = ADMath.exp( ADMath.minus(sums[c], total) ); if (dataWeights != null) { probs[c] = ADMath.multConst(probs[c], dataWeights[d]); for(int i = 0; i < x.length; i++){ tmp[i] = derivativeAD[i].getval(); derivativeAD[i].plusEquals(ADMath.multConst(xAD[i], batch.length/(data.length * prior.getSigma()*prior.getSigma()))); derivative[i] = derivativeAD[i].getval(); HdotV[i] = derivativeAD[i].getdot();
for (int f = 0; f < features.length; f++) { int i = indexOf(features[f], c); sums[c] = ADMath.plus(sums[c],xAD[i]); DoubleAD total = ADMath.logSum(sums); probs[c] = ADMath.exp( ADMath.minus(sums[c], total) ); if (dataweights != null) { probs[c] = ADMath.multConst(probs[c], dataweights[d]); for(int i = 0; i < x.length; i++){ tmp[i] = derivativeAD[i].getval(); derivativeAD[i].plusEquals(ADMath.multConst(xAD[i], batch.length/(data.length * prior.getSigma()*prior.getSigma()))); derivative[i] = derivativeAD[i].getval(); HdotV[i] = derivativeAD[i].getdot();
public static DoubleAD logSum(DoubleAD[] logInputs) { return logSum(logInputs,0,logInputs.length); } // Some of this might need to change for optimal AD
for (int feature : features) { int i = indexOf(feature, c); sums[c] = ADMath.plus(sums[c], xAD[i]); DoubleAD total = ADMath.logSum(sums); probs[c] = ADMath.exp( ADMath.minus(sums[c], total) ); if (dataWeights != null) { probs[c] = ADMath.multConst(probs[c], dataWeights[d]); for(int i = 0; i < x.length; i++){ tmp[i] = derivativeAD[i].getval(); derivativeAD[i].plusEquals(ADMath.multConst(xAD[i], batch.length/(data.length * prior.getSigma()*prior.getSigma()))); derivative[i] = derivativeAD[i].getval(); HdotV[i] = derivativeAD[i].getdot();
public static DoubleAD logSum(DoubleAD[] logInputs) { return logSum(logInputs,0,logInputs.length); }
public static DoubleAD logSum(DoubleAD[] logInputs) { return logSum(logInputs,0,logInputs.length); }