Skip to content

Commit a4a5342

Browse files
committed
Make tensorboard optional
1 parent 6f5c1bc commit a4a5342

4 files changed

Lines changed: 29 additions & 11 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
__pycache__/
22
saved_models/
3+
.idea/
34
*.swp
45
*.pyc

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,4 @@ python main.py --help
4848

4949
## Dependencies
5050

51-
The model is written in PyTorch. We make use of https://github.com/lanpa/tensorboard-pytorch to connect to [TensorBoard](https://github.com/tensorflow/tensorboard) to visualize the training process.
51+
The model is written in PyTorch. We optionally make use of https://github.com/lanpa/tensorboard-pytorch to connect to [TensorBoard](https://github.com/tensorflow/tensorboard) to visualize the training process. Just add `--tensorboard` to enable.

main.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
parser.add_argument('--padding', action='store_true', default=False, help='use padding for convolution (default: False)')
5656
parser.add_argument('--dropout', type=float, default=0.5, help='dropout probability (default: 0.5)')
5757
parser.add_argument('--seed', type=int, default=1, help='random seed (default: 1)')
58+
parser.add_argument('--tensorboard', action='store_true', default=False, help='use TensorBoard to visualize training (default: false)')
5859
parser.add_argument('--run-label', type=str, help='label to describe run')
5960
args = parser.parse_args()
6061
args.cuda = not args.no_cuda and torch.cuda.is_available()

train.py

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import math
22
import time
33

4-
from tensorboardX import SummaryWriter
54
import torch
65
import torch.nn.functional as F
76
from torch.autograd import Variable
@@ -50,11 +49,14 @@ def __init__(self, model, train_loader, trainer_config, train_evaluator, test_ev
5049
self.model_outfile = trainer_config['model_outfile']
5150
self.lr_reduce_factor = trainer_config['lr_reduce_factor']
5251
self.patience = trainer_config['patience']
52+
self.use_tensorboard = trainer_config['tensorboard']
53+
if self.use_tensorboard:
54+
from tensorboardX import SummaryWriter
55+
self.writer = SummaryWriter(log_dir=None, comment='' if trainer_config['run_label'] is None else trainer_config['run_label'])
5356

5457
self.train_evaluator = train_evaluator
5558
self.test_evaluator = test_evaluator
5659
self.dev_evaluator = dev_evaluator
57-
self.writer = SummaryWriter(log_dir=None, comment=trainer_config['run_label'])
5860

5961
def evaluate(self, evaluator, dataset_name):
6062
scores, metric_names = evaluator.get_scores()
@@ -94,7 +96,10 @@ def train_epoch(self, epoch):
9496
len(self.train_loader.dataset) if not self.sample else self.sample,
9597
100. * batch_idx / (len(self.train_loader) if not self.sample else math.ceil(self.sample / self.batch_size)), loss.data[0])
9698
)
97-
self.writer.add_scalar('sick/train/kl_div_loss', total_loss, epoch)
99+
100+
if self.use_tensorboard:
101+
self.writer.add_scalar('sick/train/kl_div_loss', total_loss, epoch)
102+
98103
return total_loss
99104

100105
def train(self, epochs):
@@ -109,9 +114,12 @@ def train(self, epochs):
109114

110115
dev_scores = self.evaluate(self.dev_evaluator, 'dev')
111116
new_loss = dev_scores[2]
112-
self.writer.add_scalar('sick/lr', self.optimizer.param_groups[0]['lr'], epoch)
113-
self.writer.add_scalar('sick/dev/pearson_r', dev_scores[0], epoch)
114-
self.writer.add_scalar('sick/dev/kl_div_loss', new_loss, epoch)
117+
118+
if self.use_tensorboard:
119+
self.writer.add_scalar('sick/lr', self.optimizer.param_groups[0]['lr'], epoch)
120+
self.writer.add_scalar('sick/dev/pearson_r', dev_scores[0], epoch)
121+
self.writer.add_scalar('sick/dev/kl_div_loss', new_loss, epoch)
122+
115123
end = time.time()
116124
duration = end - start
117125
logger.info('Epoch {} finished in {:.2f} minutes'.format(epoch, duration / 60))
@@ -170,7 +178,10 @@ def train_epoch(self, epoch):
170178
)
171179

172180
self.evaluate(self.train_evaluator, 'train')
173-
self.writer.add_scalar('msrvid/train/kl_div_loss', total_loss, epoch)
181+
182+
if self.use_tensorboard:
183+
self.writer.add_scalar('msrvid/train/kl_div_loss', total_loss, epoch)
184+
174185
return left_out_val_a, left_out_val_b, left_out_ext_feats, left_out_val_labels
175186

176187
def train(self, epochs):
@@ -196,12 +207,17 @@ def train(self, epochs):
196207
predictions = predictions.cpu().numpy()
197208
true_labels = true_labels.cpu().numpy()
198209
pearson_r = pearsonr(predictions, true_labels)[0]
199-
self.writer.add_scalar('msrvid/dev/pearson_r', pearson_r, epoch)
210+
211+
if self.use_tensorboard:
212+
self.writer.add_scalar('msrvid/dev/pearson_r', pearson_r, epoch)
213+
200214
for param_group in self.optimizer.param_groups:
201215
logger.info('Validation size: %s Pearson\'s r: %s', output.size()[0], pearson_r)
202216
logger.info('Learning rate: %s', param_group['lr'])
203-
self.writer.add_scalar('msrvid/lr', param_group['lr'], epoch)
204-
self.writer.add_scalar('msrvid/dev/kl_div_loss', val_kl_div_loss, epoch)
217+
218+
if self.use_tensorboard:
219+
self.writer.add_scalar('msrvid/lr', param_group['lr'], epoch)
220+
self.writer.add_scalar('msrvid/dev/kl_div_loss', val_kl_div_loss, epoch)
205221
break
206222
scheduler.step(pearson_r)
207223

0 commit comments

Comments
 (0)