This commit is contained in:
2026-05-15 18:45:50 +07:00
parent 9a296a404c
commit ea467f8298
36 changed files with 2175 additions and 615 deletions
+8 -7
View File
@@ -10,12 +10,12 @@ layout(std430, binding = 4) buffer Targets { float T[]; };
layout(push_constant) uniform Params {
uint mode; // 0: FF, 1: OutError, 2: BackProp, 3: Update
uint prevSize;
uint nextSize;
uint prevSize; // Суммарный размер всех входных слоев
uint nextSize; // Размер текущего слоя
uint wOff;
uint bOff;
uint oOff;
uint nextOOff;
uint oOff; // Смещение первого входного слоя
uint nextOOff; // Смещение текущего слоя
float lr;
} p;
@@ -35,24 +35,25 @@ void main() {
O[p.nextOOff + idx] = sigmoid(sum);
}
}
// MODE 1: Ошибка выходного слоя
// MODE 1: Ошибка выходного слоя (MSE derivative)
else if (p.mode == 1) {
if (idx < p.nextSize) {
float outVal = O[p.nextOOff + idx];
E[p.nextOOff + idx] = (T[idx] - outVal) * dSigmoid(outVal);
}
}
// MODE 2: Обратное распространение ошибки (Hidden layers)
// MODE 2: Обратное распространение ошибки (Error propagation)
else if (p.mode == 2) {
if (idx < p.prevSize) {
float errSum = 0.0;
for (uint i = 0; i < p.nextSize; i++) {
errSum += E[p.nextOOff + i] * W[p.wOff + i * p.prevSize + idx];
}
// Ошибка записывается в Errors входного слоя
E[p.oOff + idx] = errSum * dSigmoid(O[p.oOff + idx]);
}
}
// MODE 3: Обновление весов и смещений
// MODE 3: Обновление весов и смещений (Gradient Descent)
else if (p.mode == 3) {
if (idx < p.nextSize) {
float errTerm = E[p.nextOOff + idx] * p.lr;