NOTE: This function calculates the vector norm for dim >= 2.
(
input, porder=2, axis=None, keepdim=False, asvector=False, name=None
)
| 505 | return reduce_out |
| 506 | |
| 507 | def vector_norm_axis_tuple( |
| 508 | input, porder=2, axis=None, keepdim=False, asvector=False, name=None |
| 509 | ): |
| 510 | """ |
| 511 | NOTE: |
| 512 | This function calculates the vector norm for dim >= 2. |
| 513 | """ |
| 514 | if in_dynamic_or_pir_mode(): |
| 515 | abs_out = _C_ops.abs(input) |
| 516 | pow_out = _C_ops.pow(abs_out, porder) |
| 517 | sum_out = _C_ops.sum(pow_out, axis, None, keepdim) |
| 518 | out = _C_ops.pow(sum_out, float(1.0 / porder)) |
| 519 | return out |
| 520 | |
| 521 | block = LayerHelper('norm', **locals()) |
| 522 | out = block.create_variable_for_type_inference( |
| 523 | dtype=block.input_dtype() |
| 524 | ) |
| 525 | abs_out = block.create_variable_for_type_inference( |
| 526 | dtype=block.input_dtype() |
| 527 | ) |
| 528 | block.append_op( |
| 529 | type='abs', inputs={'X': input}, outputs={'Out': abs_out} |
| 530 | ) |
| 531 | pow_out = block.create_variable_for_type_inference( |
| 532 | dtype=block.input_dtype() |
| 533 | ) |
| 534 | |
| 535 | block.append_op( |
| 536 | type='pow', |
| 537 | inputs={'X': abs_out}, |
| 538 | outputs={'Out': pow_out}, |
| 539 | attrs={'factor': porder}, |
| 540 | ) |
| 541 | sum_out = block.create_variable_for_type_inference( |
| 542 | dtype=block.input_dtype() |
| 543 | ) |
| 544 | reduce_all, axis = _get_reduce_axis(axis, x) |
| 545 | block.append_op( |
| 546 | type='reduce_sum', |
| 547 | inputs={'X': pow_out}, |
| 548 | outputs={'Out': sum_out}, |
| 549 | attrs={ |
| 550 | 'dim': axis, |
| 551 | 'keep_dim': keepdim, |
| 552 | 'reduce_all': reduce_all, |
| 553 | }, |
| 554 | ) |
| 555 | block.append_op( |
| 556 | type='pow', |
| 557 | inputs={'X': sum_out}, |
| 558 | outputs={'Out': out}, |
| 559 | attrs={'factor': float(1.0 / porder)}, |
| 560 | ) |
| 561 | return out |
| 562 | |
| 563 | def vector_norm_axis_int( |
| 564 | input, porder=2, axis=None, keepdim=False, asvector=False, name=None |
no test coverage detected