tensorpack.utils package¶
Common utils. These utils should be irrelevant to tensorflow.
-
tensorpack.utils.
get_rng
(obj=None)[source]¶ Get a good RNG seeded with time, pid and the object.
- Parameters
obj – some object to use to generate random seed.
- Returns
np.random.RandomState – the RNG.
-
tensorpack.utils.
fix_rng_seed
(seed)[source]¶ Call this function at the beginning of program to fix rng seed within tensorpack.
- Parameters
seed (int) –
Example
Fix random seed in both tensorpack and tensorflow.
seed = 42 utils.fix_rng_seed(seed) tesnorflow.set_random_seed(seed) # run trainer
-
tensorpack.utils.
get_tqdm
(*args, **kwargs)[source]¶ Similar to
tqdm.tqdm()
, but use tensorpack’s default options to have consistent style.
tensorpack.utils.argtools module¶
-
tensorpack.utils.argtools.
map_arg
(**maps)[source]¶ Apply a mapping on certain argument before calling the original function.
- Parameters
maps (dict) – {argument_name: map_func}
-
tensorpack.utils.argtools.
memoized
(user_function)¶ Alias to
functools.lru_cache()
WARNING: memoization will keep keys and values alive!
-
tensorpack.utils.argtools.
memoized_method
(func)[source]¶ A decorator that performs memoization on methods. It stores the cache on the object instance itself.
-
tensorpack.utils.argtools.
graph_memoized
(func)[source]¶ Like memoized, but keep one cache per default graph.
-
tensorpack.utils.argtools.
shape2d
(a)[source]¶ Ensure a 2D shape.
- Parameters
a – a int or tuple/list of length 2
- Returns
list – of length 2. if
a
is a int, return[a, a]
.
-
tensorpack.utils.argtools.
shape4d
(a, data_format='NHWC')[source]¶ Ensuer a 4D shape, to use with 4D symbolic functions.
- Parameters
a – a int or tuple/list of length 2
- Returns
list –
- of length 4. if
a
is a int, return[1, a, a, 1]
or
[1, 1, a, a]
depending on data_format.
- of length 4. if
tensorpack.utils.concurrency module¶
-
class
tensorpack.utils.concurrency.
StoppableThread
(evt=None)[source]¶ Bases:
threading.Thread
A thread that has a ‘stop’ event.
-
__init__
(evt=None)[source]¶ - Parameters
evt (threading.Event) – if None, will create one.
-
-
class
tensorpack.utils.concurrency.
LoopThread
(func, pausable=True)[source]¶ Bases:
tensorpack.utils.concurrency.StoppableThread
A pausable thread that simply runs a loop
-
run
()[source]¶ Method representing the thread’s activity.
You may override this method in a subclass. The standard run() method invokes the callable object passed to the object’s constructor as the target argument, if any, with sequential and keyword arguments taken from the args and kwargs arguments, respectively.
-
Bases:
threading.Thread
A wrapper around thread so that the thread uses the default session at “start()” time.
- Parameters
th (threading.Thread or None) –
Method representing the thread’s activity.
You may override this method in a subclass. The standard run() method invokes the callable object passed to the object’s constructor as the target argument, if any, with sequential and keyword arguments taken from the args and kwargs arguments, respectively.
Start the thread’s activity.
It must be called at most once per thread object. It arranges for the object’s run() method to be invoked in a separate thread of control.
This method will raise a RuntimeError if called more than once on the same thread object.
-
tensorpack.utils.concurrency.
ensure_proc_terminate
(proc)[source]¶ Make sure processes terminate when main process exit.
- Parameters
proc (multiprocessing.Process or list) –
tensorpack.utils.fs module¶
-
tensorpack.utils.fs.
mkdir_p
(dirname)[source]¶ Like “mkdir -p”, make a dir recursively, but do nothing if the dir exists
- Parameters
dirname (str) –
-
tensorpack.utils.fs.
download
(url, dir, filename=None, expect_size=None)[source]¶ Download URL to a directory. Will figure out the filename automatically from URL, if not given.
-
tensorpack.utils.fs.
recursive_walk
(rootdir)[source]¶ - Yields
str – All files in rootdir, recursively.
tensorpack.utils.loadcaffe module¶
tensorpack.utils.logger module¶
The logger module itself has the common logging functions of Python’s
logging.Logger
. For example:
from tensorpack.utils import logger
logger.set_logger_dir('train_log/test')
logger.info("Test")
logger.error("Error happened!")
-
tensorpack.utils.logger.
set_logger_dir
(dirname, action=None)[source]¶ Set the directory for global logging.
- Parameters
dirname (str) – log directory
action (str) –
an action of [“k”,”d”,”q”] to be performed when the directory exists. Will ask user by default.
”d”: delete the directory. Note that the deletion may fail when the directory is used by tensorboard.
”k”: keep the directory. This is useful when you resume from a previous training and want the directory to look as if the training was not interrupted. Note that this option does not load old models or any other old states for you. It simply does nothing.
-
tensorpack.utils.logger.
auto_set_dir
(action=None, name=None)[source]¶ Use
logger.set_logger_dir()
to set log directory to “./train_log/{scriptname}:{name}”. “scriptname” is the name of the main python file currently running
-
tensorpack.utils.logger.
get_logger_dir
()[source]¶ - Returns
The logger directory, or None if not set. The directory is used for general logging, tensorboard events, checkpoints, etc.
-
tensorpack.utils.logger.
info
(msg, *args, **kwargs)[source]¶ Log ‘msg % args’ with severity ‘INFO’.
To pass exception information, use the keyword argument exc_info with a true value, e.g.
logger.info(“Houston, we have a %s”, “interesting problem”, exc_info=1)
-
tensorpack.utils.logger.
warning
(msg, *args, **kwargs)[source]¶ Log ‘msg % args’ with severity ‘WARNING’.
To pass exception information, use the keyword argument exc_info with a true value, e.g.
logger.warning(“Houston, we have a %s”, “bit of a problem”, exc_info=1)
-
tensorpack.utils.logger.
error
(msg, *args, **kwargs)[source]¶ Log ‘msg % args’ with severity ‘ERROR’.
To pass exception information, use the keyword argument exc_info with a true value, e.g.
logger.error(“Houston, we have a %s”, “major problem”, exc_info=1)
-
tensorpack.utils.logger.
critical
(msg, *args, **kwargs)[source]¶ Log ‘msg % args’ with severity ‘CRITICAL’.
To pass exception information, use the keyword argument exc_info with a true value, e.g.
logger.critical(“Houston, we have a %s”, “major disaster”, exc_info=1)
-
tensorpack.utils.logger.
exception
(msg, *args, exc_info=True, **kwargs)[source]¶ Convenience method for logging an ERROR with exception information.
-
tensorpack.utils.logger.
debug
(msg, *args, **kwargs)[source]¶ Log ‘msg % args’ with severity ‘DEBUG’.
To pass exception information, use the keyword argument exc_info with a true value, e.g.
logger.debug(“Houston, we have a %s”, “thorny problem”, exc_info=1)
-
tensorpack.utils.logger.
setLevel
(level)¶ Set the logging level of this logger. level must be an int or a str.
-
tensorpack.utils.logger.
addFilter
(filter)¶ Add the specified filter to this handler.
tensorpack.utils.serialize module¶
-
tensorpack.utils.serialize.
loads
(buf)¶ - Parameters
bytes –
-
tensorpack.utils.serialize.
dumps
(obj)¶ - Returns
bytes
tensorpack.utils.stats module¶
-
class
tensorpack.utils.stats.
StatCounter
[source]¶ Bases:
object
A simple counter
-
property
average
¶
-
property
count
¶
-
property
max
¶
-
property
min
¶
-
property
sum
¶
-
property
-
class
tensorpack.utils.stats.
BinaryStatistics
[source]¶ Bases:
object
Statistics for binary decision, including precision, recall, false positive, false negative
-
property
false_negative
¶
-
property
false_positive
¶
-
feed
(pred, label)[source]¶ - Parameters
pred (np.ndarray) – binary array.
label (np.ndarray) – binary array of the same size.
-
property
precision
¶
-
property
recall
¶
-
property
-
class
tensorpack.utils.stats.
RatioCounter
[source]¶ Bases:
object
A counter to count ratio of something.
-
property
count
¶ Returns: int: the total
-
property
ratio
¶
-
property
total
¶ Returns: int: the total
-
property
-
class
tensorpack.utils.stats.
Accuracy
[source]¶ Bases:
tensorpack.utils.stats.RatioCounter
A RatioCounter with a fancy name
-
property
accuracy
¶
-
property
tensorpack.utils.timer module¶
-
tensorpack.utils.timer.
timed_operation
(msg, log_start=False)[source]¶ Surround a context with a timer.
Example
with timed_operation('Good Stuff'): time.sleep(1)
Will print:
Good stuff finished, time:1sec.
tensorpack.utils.viz module¶
-
tensorpack.utils.viz.
interactive_imshow
(img, lclick_cb=None, rclick_cb=None, **kwargs)[source]¶ - Parameters
img (np.ndarray) – an image (expect BGR) to show.
rclick_cb (lclick_cb,) – a callback
func(img, x, y)
for left/right click event.kwargs – can be {key_cb_a: callback_img, key_cb_b: callback_img}, to specify a callback
func(img)
for keypress.
Some existing keypress event handler:
q: destroy the current window
x: execute
sys.exit()
s: save image to “out.png”
-
tensorpack.utils.viz.
stack_patches
(patch_list, nr_row, nr_col, border=None, pad=False, bgcolor=255, viz=False, lclick_cb=None)[source]¶ Stacked patches into grid, to produce visualizations like the following:
- Parameters
patch_list (list[ndarray] or ndarray) – NHW or NHWC images in [0,255].
nr_row (int), nr_col(int) – rows and cols of the grid.
nr_col * nr_row
must be no less thanlen(patch_list)
.border (int) – border length between images. Defaults to
0.05 * min(patch_width, patch_height)
.pad (boolean) – when patch_list is a list, pad all patches to the maximum height and width. This option allows stacking patches of different shapes together.
bgcolor (int or 3-tuple) – background color in [0, 255]. Either an int or a BGR tuple.
viz (bool) – whether to use
interactive_imshow()
to visualize the results.lclick_cb – A callback function
f(patch, patch index in patch_list)
to get called when a patch get clicked in imshow.
- Returns
np.ndarray – the stacked image.
-
tensorpack.utils.viz.
gen_stack_patches
(patch_list, nr_row=None, nr_col=None, border=None, max_width=1000, max_height=1000, bgcolor=255, viz=False, lclick_cb=None)[source]¶ Similar to
stack_patches()
but with a generator interface. It takes a much-longer list and yields stacked results one by one. For example, ifpatch_list
contains 1000 images andnr_row==nr_col==10
, this generator yields 10 stacked images.- Parameters
max_width (int), max_height(int) – Maximum allowed size of the stacked image. If
nr_row/nr_col
are None, this number will be used to infer the rows and cols. Otherwise the option is ignored.border, viz, lclick_cb (patch_list,) – same as in
stack_patches()
.
- Yields
np.ndarray – the stacked image.
-
tensorpack.utils.viz.
dump_dataflow_images
(df, index=0, batched=True, number=1000, output_dir=None, scale=1, resize=None, viz=None, flipRGB=False)[source]¶ Dump or visualize images of a
DataFlow
.- Parameters
df (DataFlow) – the DataFlow.
index (int) – the index of the image component.
batched (bool) – whether the component contains batched images (NHW or NHWC) or not (HW or HWC).
number (int) – how many datapoint to take from the DataFlow.
output_dir (str) – output directory to save images, default to not save.
scale (float) – scale the value, usually either 1 or 255.
resize (tuple or None) – tuple of (h, w) to resize the images to.
viz (tuple or None) – tuple of (h, w) determining the grid size to use with
gen_stack_patches()
for visualization. No visualization will happen by default.flipRGB (bool) – apply a RGB<->BGR conversion or not.
-
tensorpack.utils.viz.
intensity_to_rgb
(intensity, cmap='cubehelix', normalize=False)[source]¶ Convert a 1-channel matrix of intensities to an RGB image employing a colormap. This function requires matplotlib. See matplotlib colormaps for a list of available colormap.
-
tensorpack.utils.viz.
draw_boxes
(im, boxes, labels=None, color=None)[source]¶ - Parameters
im (np.ndarray) – a BGR image in range [0,255]. It will not be modified.
boxes (np.ndarray) – a numpy array of shape Nx4 where each row is [x1, y1, x2, y2].
labels – (list[str] or None)
color – a 3-tuple BGR color (in range [0, 255])
- Returns
np.ndarray – a new image.