# Copyright (c) ONNX Project Contributors # SPDX-License-Identifier: Apache-2.0 from __future__ import annotations import numpy as np from onnx.reference.ops._op import OpRunReduceNumpy class ReduceLogSum_1(OpRunReduceNumpy): def _run(self, data, axes=None, keepdims=True): tax = tuple(axes) if axes is not None else None if data.size == 0: return self.reduce_constant(data, -np.inf, tax, keepdims) res = np.sum(data, axis=tax, keepdims=keepdims) # type: ignore[arg-type] if len(res.shape) > 0: return (np.log(res, out=res),) return (np.log(res),) class ReduceLogSum_18(OpRunReduceNumpy): def _run(self, data, axes=None, keepdims=1, noop_with_empty_axes=0): axes = self.handle_axes(axes, noop_with_empty_axes) keepdims = keepdims != 0 if data.size == 0: return self.reduce_constant(data, -np.inf, axes, keepdims) res = np.sum(data, axis=axes, keepdims=keepdims) if len(res.shape) > 0: return (np.log(res, out=res),) return (np.log(res),)