Open
Description
void coefficients_sgd(double ** dataset, int col, double *coef, double l_rate, int n_epoch, int train_size) { int i; for (i = 0; i < n_epoch; i++) { int j = 0;//±éÀúÿһÐÐ for (j = 0; j < train_size; j++) { double yhat = predict(col,dataset[j], coef); double err = dataset[j][col - 1] - yhat; coef[0] += l_rate * err * yhat * (1 - yhat); int k; for (k = 0; k < col - 1; k++) { coef[k + 1] += l_rate * err * yhat * (1 - yhat) * dataset[j][k]; } } } for (i = 0; i < col; i++) { //printf("coef[%d]=%f\n",i, coef[i]); }
}
coef[k + 1] += l_rate * err * yhat * (1 - yhat) * dataset[j][k]
上面的梯度更新公式式改进的?
Metadata
Assignees
Labels
No labels