-
Notifications
You must be signed in to change notification settings - Fork 4
/
monitor.py
58 lines (55 loc) · 2.35 KB
/
monitor.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
from btgym.monitor import BTgymMonitor
class Monitor:
def __init__(self,dir):
# Essense metrics for one step:
self.step_monitor = BTgymMonitor(
logdir='{}'.format(dir),
subdir='/metrics/step'.format(dir),
scalars={'step/reward',
'step/drawdown',
'step/broker_value',
},
)
# ..for episode:
self.episode_monitor = BTgymMonitor(
logdir='{}'.format(dir),
subdir='/episode',
scalars={'process/episode/cpu_time_sec',
'episode/value',
'episode/reward'
},
images={'episode'},
)
# State pictures:
self.images_monitor = BTgymMonitor(
logdir='{}'.format(dir),
subdir='/step/image',
images={'human',},
)
def logstep(self,json):
self.step_monitor.write(
feed_dict={'step/reward': json['reward'],
'step/drawdown': json['drawdown'],
'step/broker_value': json['broker_value'],
},
global_step=json['steps'],
)
def logepisode(self,json):
self.episode_monitor.write(
feed_dict={
'process/episode/cpu_time_sec': json['cpu_time_sec'],
'episode/reward': json['reward'],
'episode/value': json['broker_value'],
'episode': json['episode'],
},
global_step=json['global_step'],
)
def logimage(self,feed_dict,global_step):
self.images_monitor.write(
feed_dict=feed_dict,
global_step=global_step,
)
def close(self):
self.step_monitor.close()
self.episode_monitor.close()
self.images_monitor.close()