Fix compile errors: NeuralNet input param rename, Orchestrator refs to pointers, EVT_MaxAbsZ call, SYMBOL_MARGIN_INITIAL, remove unused var
This commit is contained in:
@@ -255,50 +255,50 @@ public:
|
||||
m_lossCsvFn = "";
|
||||
}
|
||||
|
||||
void ForwardPass(vector &input, vector &output, vector &h1Cache) {
|
||||
h1Cache.Resize(m_hidden);
|
||||
for(int i = 0; i < m_hidden; i++) {
|
||||
double sum = m_b1[i];
|
||||
for(int j = 0; j < m_inputs; j++)
|
||||
sum += input[j] * m_W1[j][i];
|
||||
h1Cache[i] = ReLU(sum);
|
||||
}
|
||||
// BatchNorm inferenza: normalizza con running stats (NeuroBook §6.3)
|
||||
ApplyBN(h1Cache);
|
||||
// Dropout scaling in inferenza: scale = 1 - dropoutRate (NeuroBook §6.2)
|
||||
if(m_dropoutRate > 0) {
|
||||
for(int i = 0; i < h1Cache.Size(); i++)
|
||||
h1Cache[i] *= (1.0 - m_dropoutRate);
|
||||
}
|
||||
void ForwardPass(vector &inp, vector &output, vector &h1Cache) {
|
||||
h1Cache.Resize(m_hidden);
|
||||
for(int i = 0; i < m_hidden; i++) {
|
||||
double sum = m_b1[i];
|
||||
for(int j = 0; j < m_inputs; j++)
|
||||
sum += inp[j] * m_W1[j][i];
|
||||
h1Cache[i] = ReLU(sum);
|
||||
}
|
||||
// BatchNorm inferenza: normalizza con running stats (NeuroBook §6.3)
|
||||
ApplyBN(h1Cache);
|
||||
// Dropout scaling in inferenza: scale = 1 - dropoutRate (NeuroBook §6.2)
|
||||
if(m_dropoutRate > 0) {
|
||||
for(int i = 0; i < h1Cache.Size(); i++)
|
||||
h1Cache[i] *= (1.0 - m_dropoutRate);
|
||||
}
|
||||
|
||||
output.Resize(m_outputs);
|
||||
for(int i = 0; i < m_outputs; i++) {
|
||||
double sum = m_b2[i];
|
||||
for(int j = 0; j < m_hidden; j++)
|
||||
sum += h1Cache[j] * m_W2[j][i];
|
||||
output[i] = sum;
|
||||
}
|
||||
Softmax(output);
|
||||
}
|
||||
output.Resize(m_outputs);
|
||||
for(int i = 0; i < m_outputs; i++) {
|
||||
double sum = m_b2[i];
|
||||
for(int j = 0; j < m_hidden; j++)
|
||||
sum += h1Cache[j] * m_W2[j][i];
|
||||
output[i] = sum;
|
||||
}
|
||||
Softmax(output);
|
||||
}
|
||||
|
||||
void Forward(vector &input, vector &output) {
|
||||
vector h1Cache;
|
||||
ForwardPass(input, output, h1Cache);
|
||||
}
|
||||
void Forward(vector &inp, vector &output) {
|
||||
vector h1Cache;
|
||||
ForwardPass(inp, output, h1Cache);
|
||||
}
|
||||
|
||||
double TrainSample(vector &input, vector &target, double lr, double weight = 1.0) {
|
||||
double TrainSample(vector &inp, vector &target, double lr, double weight = 1.0) {
|
||||
if(!m_initialized) return -1.0;
|
||||
|
||||
// ── Forward ──
|
||||
// Layer 1: W1*x + b1 → z1 → ReLU → h1_raw → Dropout → h1_drop → BN → h1_norm
|
||||
vector z1(m_hidden);
|
||||
vector h1_raw(m_hidden);
|
||||
for(int i = 0; i < m_hidden; i++) {
|
||||
z1[i] = m_b1[i];
|
||||
for(int j = 0; j < m_inputs; j++)
|
||||
z1[i] += input[j] * m_W1[j][i];
|
||||
h1_raw[i] = ReLU(z1[i]);
|
||||
}
|
||||
for(int i = 0; i < m_hidden; i++) {
|
||||
z1[i] = m_b1[i];
|
||||
for(int j = 0; j < m_inputs; j++)
|
||||
z1[i] += inp[j] * m_W1[j][i];
|
||||
h1_raw[i] = ReLU(z1[i]);
|
||||
}
|
||||
|
||||
// Dropout (NeuroBook §6.2): salva in m_dropoutMask, applica a h1_drop
|
||||
vector h1_drop(m_hidden);
|
||||
@@ -390,11 +390,11 @@ public:
|
||||
for(int i = 0; i < m_hidden; i++)
|
||||
dL_dz1[i] = dL_dh1_drop[i] * ReLUDeriv(z1[i]);
|
||||
|
||||
// dL/dW1 = input ⊗ dL/dz1
|
||||
// dL/dW1 = inp ⊗ dL/dz1
|
||||
matrix dL_dW1(m_inputs, m_hidden);
|
||||
for(int i = 0; i < m_inputs; i++)
|
||||
for(int j = 0; j < m_hidden; j++)
|
||||
dL_dW1[i][j] = input[i] * dL_dz1[j];
|
||||
dL_dW1[i][j] = inp[i] * dL_dz1[j];
|
||||
|
||||
// dL/db1 = dL/dz1
|
||||
vector dL_db1(m_hidden);
|
||||
|
||||
Reference in New Issue
Block a user