forked from TensorLayer/tensorlayer3
64 lines
1.6 KiB
Python
64 lines
1.6 KiB
Python
#! /usr/bin/python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
from __future__ import absolute_import
|
|
|
|
import hyperdash as hd
|
|
import tensorlayer as tl
|
|
|
|
__all__ = ["HyperDashHandler", "monitor", "Experiment", "IPythonMagicsWrapper"]
|
|
|
|
|
|
class HyperDashHandler(object):
|
|
apikey = None
|
|
|
|
@classmethod
|
|
def reset_apikey(cls):
|
|
cls.apikey = None
|
|
|
|
@classmethod
|
|
def set_apikey(cls, apikey):
|
|
cls.apikey = apikey
|
|
|
|
@classmethod
|
|
def get_apikey(cls):
|
|
|
|
if cls.apikey is None:
|
|
raise ValueError(
|
|
"Hyperdash API is not set.\n"
|
|
"You can obtain your API Key using: `hyperdash login --email` or `hyperdash login --github`\n"
|
|
"You should first call `HyperDashHandler.set_apikey('my_api_key')` in order to use `hyperdash`"
|
|
)
|
|
|
|
tl.logging.debug("Hyperdash API Key: %s" % cls.apikey)
|
|
|
|
return cls.apikey
|
|
|
|
@classmethod
|
|
def monitor(cls, model_name, api_key=None, capture_io=True):
|
|
|
|
if api_key is not None:
|
|
cls.set_apikey(api_key)
|
|
|
|
return hd.monitor(model_name, api_key_getter=cls.get_apikey, capture_io=capture_io)
|
|
|
|
|
|
class Experiment(hd.Experiment):
|
|
|
|
def __init__(
|
|
self,
|
|
model_name,
|
|
api_key=None,
|
|
capture_io=True,
|
|
):
|
|
|
|
if api_key is not None:
|
|
HyperDashHandler.set_apikey(api_key)
|
|
|
|
super(Experiment,
|
|
self).__init__(model_name=model_name, api_key_getter=HyperDashHandler.get_apikey, capture_io=capture_io)
|
|
|
|
|
|
monitor = HyperDashHandler.monitor
|
|
IPythonMagicsWrapper = hd.IPythonMagicsWrapper
|