@Override
public double eval(Matrix W) {
Matrix resid = null;
if(W == null){
resid = X;
} else {
resid = MatlibMatrixUtils.dotProduct(X,W);
}
Matrix vnobias = MatlibMatrixUtils.copy(X);
if(this.bias!=null)
{
MatlibMatrixUtils.plusInplace(resid, bias);
}
Matrix v = MatlibMatrixUtils.copy(resid);
MatlibMatrixUtils.minusInplace(resid,Y);
double retval = 0;
for (int t = 0; t < resid.columnCount(); t++) {
double loss = resid.get(t, t);
retval += loss * loss;
logger.debug(
String.format(
"yr=%d,y=%3.2f,v=%3.2f,v(no bias)=%2.5f,error=%2.5f,serror=%2.5f",
t, Y.get(t, t), v.get(t, t), vnobias.get(t,t), loss, loss*loss
)
);
}
return retval;
}
@Override