staticvoid gemm_accum(float *out, const opus_int8 *weights, int rows, int cols, int col_stride, constfloat *x)
{ int i, j; for (i=0;i<rows;i++)
{ for (j=0;j<cols;j++)
out[i] += weights[j*col_stride + i]*x[j];
}
}
void analysis_compute_dense(const AnalysisDenseLayer *layer, float *output, constfloat*input)
{ int i; int N, M; int stride;
M = layer->nb_inputs;
N = layer->nb_neurons;
stride = N; for (i=0;i<N;i++)
output[i] = layer->bias[i];
gemm_accum(output, layer->input_weights, N, M, stride, input); for (i=0;i<N;i++)
output[i] *= WEIGHTS_SCALE; if (layer->sigmoid) { for (i=0;i<N;i++)
output[i] = sigmoid_approx(output[i]);
} else { for (i=0;i<N;i++)
output[i] = tansig_approx(output[i]);
}
}
void analysis_compute_gru(const AnalysisGRULayer *gru, float *state, constfloat *input)
{ int i; int N, M; int stride; float tmp[MAX_NEURONS]; float z[MAX_NEURONS]; float r[MAX_NEURONS]; float h[MAX_NEURONS];
M = gru->nb_inputs;
N = gru->nb_neurons;
stride = 3*N; /* Compute update gate. */ for (i=0;i<N;i++)
z[i] = gru->bias[i];
gemm_accum(z, gru->input_weights, N, M, stride, input);
gemm_accum(z, gru->recurrent_weights, N, N, stride, state); for (i=0;i<N;i++)
z[i] = sigmoid_approx(WEIGHTS_SCALE*z[i]);
/* Compute reset gate. */ for (i=0;i<N;i++)
r[i] = gru->bias[N + i];
gemm_accum(r, &gru->input_weights[N], N, M, stride, input);
gemm_accum(r, &gru->recurrent_weights[N], N, N, stride, state); for (i=0;i<N;i++)
r[i] = sigmoid_approx(WEIGHTS_SCALE*r[i]);
/* Compute output. */ for (i=0;i<N;i++)
h[i] = gru->bias[2*N + i]; for (i=0;i<N;i++)
tmp[i] = state[i] * r[i];
gemm_accum(h, &gru->input_weights[2*N], N, M, stride, input);
gemm_accum(h, &gru->recurrent_weights[2*N], N, N, stride, tmp); for (i=0;i<N;i++)
h[i] = z[i]*state[i] + (1-z[i])*tansig_approx(WEIGHTS_SCALE*h[i]); for (i=0;i<N;i++)
state[i] = h[i];
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-09-28)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.