Files
circomlib-ml/circuits/Dense.circom
2022-05-12 01:59:57 +08:00

23 lines
585 B
Plaintext

pragma circom 2.0.3;
include "../node_modules/circomlib-matrix/circuits/matMul.circom";
// Dense layer
template Dense (nInputs,nOutputs) {
signal input in[nInputs];
signal input weights[nInputs][nOutputs];
signal input bias[nOutputs];
signal output out[nOutputs];
component dot[nOutputs];
for (var i=0; i<nOutputs; i++) {
dot[i] = matMul(1,nInputs,1);
for (var j=0; j<nInputs; j++) {
dot[i].a[0][j] <== in[j];
dot[i].b[j][0] <== weights[j][i];
}
out[i] <== dot[i].out[0][0] + bias[i];
}
}