swishVector function
Implementation
Tensor<Vector> swishVector(Tensor<Vector> v) {
int N = v.data.length;
Vector outValue = [];
for (int i = 0; i < N; i = i + 1) {
double x = v.data[i];
double sigVal = 1.0 / (1.0 + exp(-x));
outValue.add(x * sigVal);
}
Tensor<Vector> out = Tensor<Vector>(outValue);
out.creator = Node(
[v],
() {
for (int i = 0; i < N; i = i + 1) {
double x = v.data[i];
double sigVal = 1.0 / (1.0 + exp(-x));
double derivative = sigVal * (1.0 + x * (1.0 - sigVal));
v.grad[i] = v.grad[i] + out.grad[i] * derivative;
}
},
opName: 'swish_vector',
cost: N * 2,
);
return out;
}