def _strip_raw_data(tensor: onnx.TensorProto) -> onnx.TensorProto: arr = onnx.numpy_helper.to_array(tensor) meta_dict = {} meta_dict['type'] = "stripped" meta_dict['average'] = float(arr.mean()) # type: ignore[assignment] meta_dict['variance'] = float(arr.var()) # type: ignore[assignment] if not tensor.HasField("raw_data"): tensor.raw_data = onnx.numpy_helper.from_array(arr, tensor.name).raw_data onnx.external_data_helper.set_external_data(tensor, location=json.dumps(meta_dict), length=arr.nbytes) tensor.data_location = onnx.TensorProto.EXTERNAL tensor.ClearField('raw_data') tensor.ClearField('float_data') return tensor
def make_external_tensor(name, data_type, dims, raw_data=None, **kwargs): tensor = TensorProto() tensor.data_type = data_type tensor.name = name tensor.dims.extend(dims) tensor.raw_data = raw_data if raw_data is not None else b'' external_data_helper.set_external_data(tensor, **kwargs) if raw_data is None: tensor.ClearField("raw_data") order_repeated_field(tensor.external_data, 'key', kwargs.keys()) return tensor