「SINQ」の版間の差分

編集の要約なし
 
119行目: 119行目:
         }
         }
         return new QuantizedBlock { Values = qVals, Stats = stats };
         return new QuantizedBlock { Values = qVals, Stats = stats };
    }
    // 行方向の分散
    private float RowVariance(float[,] W, int row, float[] colScale)
    {
        int C = W.GetLength(1);
        float mean = 0f;
        for (int j = 0; j < C; j++)
            mean += W[row, j] * colScale[j];
        mean /= C;
        float var = 0f;
        for (int j = 0; j < C; j++)
        {
            float val = W[row, j] * colScale[j] - mean;
            var += val * val;
        }
        return var / C;
    }
    // 列方向の分散
    private float ColVariance(float[,] W, int col, float[] rowScale)
    {
        int R = W.GetLength(0);
        float mean = 0f;
        for (int i = 0; i < R; i++)
            mean += rowScale[i] * W[i, col];
        mean /= R;
        float var = 0f;
        for (int i = 0; i < R; i++)
        {
            float val = rowScale[i] * W[i, col] - mean;
            var += val * val;
        }
        return var / R;
     }
     }
}
}