def test(sess,
queues,
dbinterface,
validation_targets,
save_intermediate_freq=None):
"""
Actually runs the testing evaluation loop.
Args:
sess (tensorflow.Session): Object in which to run calculations
queues (list of CustomQueue): Objects containing asynchronously queued data iterators
dbinterface (DBInterface object): Saver through which to save results
validation_targets (dict of tensorflow objects): Objects on which validation will be computed.
save_intermediate_freq (None or int): How frequently to save intermediate results captured during test
None means no intermediate saving will be saved
Returns:
dict: Validation summary.
dict: Results.
"""
# Collect args in a dict of lists
test_args = {
'queues': queues,
'dbinterface': dbinterface,
'validation_targets': validation_targets,
'save_intermediate_freq': save_intermediate_freq}
_ttargs = [{key: value[i] for (key, value) in test_args.items()}
for i in range(len(queues))]
for ttarg in _ttargs:
ttarg['coord'], ttarg['threads'] = start_queues(sess)
ttarg['dbinterface'].start_time_step = time.time()
validation_summary = run_targets_dict(sess,
ttarg['validation_targets'],
save_intermediate_freq=ttarg['save_intermediate_freq'],
dbinterface=ttarg['dbinterface'],
validation_only=True)
res = []
for ttarg in _ttargs:
ttarg['dbinterface'].sync_with_host()
res.append(ttarg['dbinterface'].outrecs)
stop_queues(sess, ttarg['queues'], ttarg['coord'], ttarg['threads'])
return validation_summary, res