|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- # Copyright 2020 Huawei Technologies Co., Ltd
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- # ============================================================================
- """Utils."""
- import math
- from mindinsight.datavisual.common.log import logger
-
-
- def calc_histogram_bins(count):
- """
- Calculates experience-based optimal bins number for histogram.
-
- To suppress re-sample bias, there should be enough number in each bin. So we calc bin numbers according to
- count. For very small count(1 - 10), we assign carefully chosen number. For large count, we tried to make
- sure there are 9-10 numbers in each bucket on average. Too many bins will also distract users, so we set max
- number of bins to 30.
-
- Args:
- count (int): Valid number count for the tensor.
-
- Returns:
- int, number of histogram bins.
- """
- number_per_bucket = 10
- max_bins = 30
-
- if not count:
- return 1
- if count <= 5:
- return 2
- if count <= 10:
- return 3
- if count <= 280:
- # note that math.ceil(281/10) + 1 equals 30
- return math.ceil(count / number_per_bucket) + 1
-
- return max_bins
-
-
- def contains_null_byte(**kwargs):
- """
- Check if arg contains null byte.
-
- Args:
- kwargs (Any): Check if arg contains null byte.
-
- Returns:
- bool, indicates if any arg contains null byte.
- """
- for key, value in kwargs.items():
- if not isinstance(value, str):
- continue
- if '\x00' in value:
- logger.warning('%s contains null byte \\x00.', key)
- return True
-
- return False
|