| 6047 | // opt_step_sgd |
| 6048 | |
| 6049 | struct ggml_tensor * ggml_opt_step_sgd( |
| 6050 | struct ggml_context * ctx, |
| 6051 | struct ggml_tensor * a, |
| 6052 | struct ggml_tensor * grad, |
| 6053 | struct ggml_tensor * params) { |
| 6054 | GGML_ASSERT(a->flags & GGML_TENSOR_FLAG_PARAM); |
| 6055 | GGML_ASSERT(ggml_are_same_shape(a, grad)); |
| 6056 | GGML_ASSERT(params->type == GGML_TYPE_F32); |
| 6057 | GGML_ASSERT(ggml_nelements(params) == 2); |
| 6058 | |
| 6059 | struct ggml_tensor * result = ggml_view_tensor(ctx, a); |
| 6060 | |
| 6061 | result->op = GGML_OP_OPT_STEP_SGD; |
| 6062 | result->src[0] = a; |
| 6063 | result->src[1] = grad; |
| 6064 | result->src[2] = params; |
| 6065 | |
| 6066 | return result; |
| 6067 | } |
| 6068 | |
| 6069 | // solve_tri |
| 6070 | |