sigmoid kernel avoid overflow

This commit is contained in:
lucasdelimanogueira 2024-05-22 13:24:01 -03:00
parent 0972a0873f
commit cebf890165
18 changed files with 126 additions and 9 deletions

View file

@ -405,6 +405,22 @@ void sin_tensor_cpu(Tensor* tensor, float* result_data) {
}
}
void sigmoid_tensor_cpu(Tensor* tensor, float* result_data) {
for (int i = 0; i < tensor->size; i++) {
// avoid overflow
if (tensor->data[i] >= 0) {
float z = expf(-tensor->data[i]);
result_data[i] = 1 / (1 + z);
} else {
float z = expf(tensor->data[i]);
result_data[i] = z / (1 + z);
}
}
}
void cos_tensor_cpu(Tensor* tensor, float* result_data) {
for (int i = 0; i < tensor->size; i++) {
result_data[i] = cosf(tensor->data[i]);