warn when values duplicate and set mode to 'eval' to avoid extra recording

This commit is contained in:
Li Hongzhang 2020-06-24 16:40:49 +08:00
parent bc30576ac9
commit 97d8673018
3 changed files with 6 additions and 1 deletions

View File

@ -308,6 +308,8 @@ class SummaryCollector(Callback):
else: else:
self._collect_eval_lineage(cb_params) self._collect_eval_lineage(cb_params)
# This is a workaround to avoid record '_summary_tensor_cache'.
self._record.set_mode('eval')
# There's nothing special about setting step to 0 here, just to satisfy the interface call # There's nothing special about setting step to 0 here, just to satisfy the interface call
self._record.record(step=0) self._record.record(step=0)

View File

@ -59,7 +59,7 @@ class WriterPool(Process):
def run(self): def run(self):
writers = self._get_writers() writers = self._get_writers()
with Pool() as pool: with Pool(min(cpu_count(), 32)) as pool:
deq = deque() deq = deque()
while True: while True:
while deq and deq[0].ready(): while deq and deq[0].ready():

View File

@ -202,6 +202,9 @@ class SummaryRecord:
if not isinstance(value, Tensor): if not isinstance(value, Tensor):
raise TypeError(f'Expect the value to be Tensor, but got {type(value).__name__}') raise TypeError(f'Expect the value to be Tensor, but got {type(value).__name__}')
np_value = _check_to_numpy(plugin, value) np_value = _check_to_numpy(plugin, value)
if name in {item['tag'] for item in self._data_pool[plugin]}:
entry = repr(f'{name}/{plugin}')
logger.warning(f'{entry} has duplicate values. Only the newest one will be recorded.')
self._data_pool[plugin].append(dict(tag=name, mode=self._mode, value=np_value)) self._data_pool[plugin].append(dict(tag=name, mode=self._mode, value=np_value))
elif plugin in ('train_lineage', 'eval_lineage', 'dataset_graph', 'custom_lineage_data'): elif plugin in ('train_lineage', 'eval_lineage', 'dataset_graph', 'custom_lineage_data'):