| 2733 | // ggml_xielu |
| 2734 | |
| 2735 | struct ggml_tensor * ggml_xielu( |
| 2736 | struct ggml_context * ctx, |
| 2737 | struct ggml_tensor * a, |
| 2738 | float alpha_n, |
| 2739 | float alpha_p, |
| 2740 | float beta, |
| 2741 | float eps) { |
| 2742 | struct ggml_tensor * result = ggml_dup_tensor(ctx, a); |
| 2743 | |
| 2744 | ggml_set_op_params_i32(result, 0, (int32_t) GGML_UNARY_OP_XIELU); |
| 2745 | ggml_set_op_params_f32(result, 1, beta + ggml_compute_softplus_f32(alpha_n)); |
| 2746 | ggml_set_op_params_f32(result, 2, ggml_compute_softplus_f32(alpha_p)); |
| 2747 | ggml_set_op_params_f32(result, 3, beta); |
| 2748 | ggml_set_op_params_f32(result, 4, eps); |
| 2749 | |
| 2750 | result->op = GGML_OP_UNARY; |
| 2751 | result->src[0] = a; |
| 2752 | |
| 2753 | return result; |
| 2754 | } |
| 2755 | |
| 2756 | // ggml_silu_back |
| 2757 | |