| 6019 | // opt_step_adamw |
| 6020 | |
| 6021 | struct ggml_tensor * ggml_opt_step_adamw( |
| 6022 | struct ggml_context * ctx, |
| 6023 | struct ggml_tensor * a, |
| 6024 | struct ggml_tensor * grad, |
| 6025 | struct ggml_tensor * m, |
| 6026 | struct ggml_tensor * v, |
| 6027 | struct ggml_tensor * adamw_params) { |
| 6028 | GGML_ASSERT(a->flags & GGML_TENSOR_FLAG_PARAM); |
| 6029 | GGML_ASSERT(ggml_are_same_shape(a, grad)); |
| 6030 | GGML_ASSERT(ggml_are_same_shape(a, m)); |
| 6031 | GGML_ASSERT(ggml_are_same_shape(a, v)); |
| 6032 | GGML_ASSERT(adamw_params->type == GGML_TYPE_F32); |
| 6033 | GGML_ASSERT(ggml_nelements(adamw_params) == 7); |
| 6034 | |
| 6035 | struct ggml_tensor * result = ggml_view_tensor(ctx, a); |
| 6036 | |
| 6037 | result->op = GGML_OP_OPT_STEP_ADAMW; |
| 6038 | result->src[0] = a; |
| 6039 | result->src[1] = grad; |
| 6040 | result->src[2] = m; |
| 6041 | result->src[3] = v; |
| 6042 | result->src[4] = adamw_params; |
| 6043 | |
| 6044 | return result; |
| 6045 | } |
| 6046 | |
| 6047 | // opt_step_sgd |
| 6048 | |