├── 01_scalar_base.py ├── 02_graph_model.py ├── 03_linear_regression.py ├── README.md ├── demo.py ├── runs ├── Aug29_15-00-45_DESKTOP-4D03LNH │ ├── events.out.tfevents.1535526045.DESKTOP-4D03LNH │ └── scalar │ │ └── scalars_test │ │ ├── xcosx │ │ └── events.out.tfevents.1535526045.DESKTOP-4D03LNH │ │ └── xsinx │ │ └── events.out.tfevents.1535526045.DESKTOP-4D03LNH ├── Aug29_15-04-36_DESKTOP-4D03LNHbase_scalar │ ├── events.out.tfevents.1535526276.DESKTOP-4D03LNH │ └── scalar │ │ └── scalars_test │ │ ├── xcosx │ │ └── events.out.tfevents.1535526276.DESKTOP-4D03LNH │ │ └── xsinx │ │ └── events.out.tfevents.1535526276.DESKTOP-4D03LNH ├── Aug29_15-21-41_DESKTOP-4D03LNHNet1 │ └── events.out.tfevents.1535527301.DESKTOP-4D03LNH ├── Aug29_15-34-06_DESKTOP-4D03LNHLinear │ └── events.out.tfevents.1535528046.DESKTOP-4D03LNH └── Aug29_15-47-56_DESKTOP-4D03LNH │ ├── 00000 │ └── default │ │ ├── metadata.tsv │ │ ├── sprite.png │ │ └── tensors.tsv │ ├── data │ └── scalar_group │ │ ├── arctanx │ │ └── events.out.tfevents.1535528877.DESKTOP-4D03LNH │ │ ├── xcosx │ │ └── events.out.tfevents.1535528877.DESKTOP-4D03LNH │ │ └── xsinx │ │ └── events.out.tfevents.1535528877.DESKTOP-4D03LNH │ ├── events.out.tfevents.1535528876.DESKTOP-4D03LNH │ └── projector_config.pbtxt └── scalar ├── events.out.tfevents.1535526361.DESKTOP-4D03LNH └── scalar └── scalars_test ├── xcosx └── events.out.tfevents.1535526361.DESKTOP-4D03LNH └── xsinx └── events.out.tfevents.1535526361.DESKTOP-4D03LNH /01_scalar_base.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # @Author : Miaoshuyu 3 | # @Email : miaohsuyu319@163.com 4 | import numpy as np 5 | from tensorboardX import SummaryWriter 6 | 7 | writer = SummaryWriter(log_dir='scalar') 8 | for epoch in range(100): 9 | writer.add_scalar('scalar/test', np.random.rand(), epoch) 10 | writer.add_scalars('scalar/scalars_test', {'xsinx': epoch * np.sin(epoch), 'xcosx': epoch * np.cos(epoch)}, epoch) 11 | 12 | writer.close() 13 | -------------------------------------------------------------------------------- /02_graph_model.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # @Author : Miaoshuyu 3 | # @Email : miaohsuyu319@163.com 4 | import torch 5 | import torch.nn as nn 6 | import torch.nn.functional as F 7 | from tensorboardX import SummaryWriter 8 | 9 | 10 | class Net1(nn.Module): 11 | def __init__(self): 12 | super(Net1, self).__init__() 13 | self.conv1 = nn.Conv2d(1, 10, kernel_size=5) 14 | self.conv2 = nn.Conv2d(10, 20, kernel_size=5) 15 | self.conv2_drop = nn.Dropout2d() 16 | self.fc1 = nn.Linear(320, 50) 17 | self.fc2 = nn.Linear(50, 10) 18 | self.bn = nn.BatchNorm2d(20) 19 | 20 | def forward(self, x): 21 | x = F.max_pool2d(self.conv1(x), 2) 22 | x = F.relu(x) + F.relu(-x) 23 | x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2)) 24 | x = self.bn(x) 25 | x = x.view(-1, 320) 26 | x = F.relu(self.fc1(x)) 27 | x = F.dropout(x, training=self.training) 28 | x = self.fc2(x) 29 | x = F.softmax(x, dim=1) 30 | return x 31 | 32 | 33 | dummy_input = torch.rand(13, 1, 28, 28) 34 | 35 | model = Net1() 36 | with SummaryWriter(comment='Net1') as w: 37 | w.add_graph(model, (dummy_input,)) 38 | -------------------------------------------------------------------------------- /03_linear_regression.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # @Author : Miaoshuyu 3 | # @Email : miaohsuyu319@163.com 4 | import torch 5 | import torch.nn as nn 6 | from tensorboardX import SummaryWriter 7 | import matplotlib.pyplot as plt 8 | import numpy as np 9 | 10 | input_size = 1 11 | output_size = 1 12 | num_epoches = 60 13 | learning_rate = 0.01 14 | writer = SummaryWriter(comment='Linear') 15 | x_train = np.array([[3.3], [4.4], [5.5], [6.71], [6.93], [4.168], 16 | [9.779], [6.182], [7.59], [2.167], [7.042], 17 | [10.791], [5.313], [7.997], [3.1]], dtype=np.float32) 18 | y_train = np.array([[1.7], [2.76], [2.09], [3.19], [1.694], [1.573], 19 | [3.366], [2.596], [2.53], [1.221], [2.827], 20 | [3.465], [1.65], [2.904], [1.3]], dtype=np.float32) 21 | 22 | model = nn.Linear(input_size, output_size) 23 | 24 | criterion = nn.MSELoss() 25 | optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate) 26 | 27 | for epoch in range(num_epoches): 28 | inputs = torch.from_numpy(x_train) 29 | targets = torch.from_numpy(y_train) 30 | 31 | output = model(inputs) 32 | loss = criterion(output, targets) 33 | 34 | optimizer.zero_grad() 35 | loss.backward() 36 | optimizer.step() 37 | # 保存loss的数据与epoch数值 38 | writer.add_scalar('Train', loss, epoch) 39 | if (epoch + 1) % 5 == 0: 40 | print('Epoch {}/{},loss:{:.4f}'.format(epoch + 1, num_epoches, loss.item())) 41 | 42 | # 将model保存为graph 43 | writer.add_graph(model, (inputs,)) 44 | 45 | predicted = model(torch.from_numpy(x_train)).detach().numpy() 46 | plt.plot(x_train, y_train, 'ro', label='Original data') 47 | plt.plot(x_train, predicted, label='Fitted line') 48 | plt.legend() 49 | plt.show() 50 | writer.close() 51 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # pytorch-tensorboardx-visualization 2 | This repository is about how to use tensorboardx to visualize pytorch. 3 | details in https://www.jianshu.com/p/46eb3004beca 4 | -------------------------------------------------------------------------------- /demo.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # @Author : Miaoshuyu 3 | # @Email : miaohsuyu319@163.com 4 | import torch 5 | import torchvision.utils as vutils 6 | import numpy as np 7 | import torchvision.models as models 8 | from torchvision import datasets 9 | from tensorboardX import SummaryWriter 10 | 11 | resnet18 = models.resnet18(False) 12 | writer = SummaryWriter() 13 | sample_rate = 44100 14 | freqs = [262, 294, 330, 349, 392, 440, 440, 440, 440, 440, 440] 15 | 16 | for n_iter in range(100): 17 | dummy_s1 = torch.rand(1) 18 | dummy_s2 = torch.rand(1) 19 | # data grouping by `slash` 20 | writer.add_scalar('data/scalar1', dummy_s1[0], n_iter) 21 | writer.add_scalar('data/scalar2', dummy_s2[0], n_iter) 22 | 23 | writer.add_scalars('data/scalar_group', {'xsinx': n_iter * np.sin(n_iter), 24 | 'xcosx': n_iter * np.cos(n_iter), 25 | 'arctanx': np.arctan(n_iter)}, n_iter) 26 | 27 | dummy_img = torch.rand(32, 3, 64, 64) # output from network 28 | if n_iter % 10 == 0: 29 | x = vutils.make_grid(dummy_img, normalize=True, scale_each=True) 30 | writer.add_image('Image', x, n_iter) 31 | 32 | dummy_audio = torch.zeros(sample_rate * 2) 33 | for i in range(x.size(0)): 34 | # amplitude of sound should in [-1, 1] 35 | dummy_audio[i] = np.cos(freqs[n_iter // 10] * np.pi * float(i) / float(sample_rate)) 36 | writer.add_audio('myAudio', dummy_audio, n_iter, sample_rate=sample_rate) 37 | 38 | writer.add_text('Text', 'text logged at step:' + str(n_iter), n_iter) 39 | 40 | for name, param in resnet18.named_parameters(): 41 | writer.add_histogram(name, param.clone().cpu().data.numpy(), n_iter) 42 | 43 | # needs tensorboard 0.4RC or later 44 | writer.add_pr_curve('xoxo', np.random.randint(2, size=100), np.random.rand(100), n_iter) 45 | 46 | dataset = datasets.MNIST('mnist', train=False, download=True) 47 | images = dataset.test_data[:100].float() 48 | label = dataset.test_labels[:100] 49 | 50 | features = images.view(100, 784) 51 | writer.add_embedding(features, metadata=label, label_img=images.unsqueeze(1)) 52 | 53 | # export scalar data to JSON for external processing 54 | writer.export_scalars_to_json("./all_scalars.json") 55 | writer.close() 56 | -------------------------------------------------------------------------------- /runs/Aug29_15-00-45_DESKTOP-4D03LNH/events.out.tfevents.1535526045.DESKTOP-4D03LNH: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miaoshuyu/pytorch-tensorboardx-visualization/3ae43ca0729b81b8866492a9c8efdbd5b3a9eedc/runs/Aug29_15-00-45_DESKTOP-4D03LNH/events.out.tfevents.1535526045.DESKTOP-4D03LNH -------------------------------------------------------------------------------- /runs/Aug29_15-00-45_DESKTOP-4D03LNH/scalar/scalars_test/xcosx/events.out.tfevents.1535526045.DESKTOP-4D03LNH: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miaoshuyu/pytorch-tensorboardx-visualization/3ae43ca0729b81b8866492a9c8efdbd5b3a9eedc/runs/Aug29_15-00-45_DESKTOP-4D03LNH/scalar/scalars_test/xcosx/events.out.tfevents.1535526045.DESKTOP-4D03LNH -------------------------------------------------------------------------------- /runs/Aug29_15-00-45_DESKTOP-4D03LNH/scalar/scalars_test/xsinx/events.out.tfevents.1535526045.DESKTOP-4D03LNH: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miaoshuyu/pytorch-tensorboardx-visualization/3ae43ca0729b81b8866492a9c8efdbd5b3a9eedc/runs/Aug29_15-00-45_DESKTOP-4D03LNH/scalar/scalars_test/xsinx/events.out.tfevents.1535526045.DESKTOP-4D03LNH -------------------------------------------------------------------------------- /runs/Aug29_15-04-36_DESKTOP-4D03LNHbase_scalar/events.out.tfevents.1535526276.DESKTOP-4D03LNH: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miaoshuyu/pytorch-tensorboardx-visualization/3ae43ca0729b81b8866492a9c8efdbd5b3a9eedc/runs/Aug29_15-04-36_DESKTOP-4D03LNHbase_scalar/events.out.tfevents.1535526276.DESKTOP-4D03LNH -------------------------------------------------------------------------------- /runs/Aug29_15-04-36_DESKTOP-4D03LNHbase_scalar/scalar/scalars_test/xcosx/events.out.tfevents.1535526276.DESKTOP-4D03LNH: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miaoshuyu/pytorch-tensorboardx-visualization/3ae43ca0729b81b8866492a9c8efdbd5b3a9eedc/runs/Aug29_15-04-36_DESKTOP-4D03LNHbase_scalar/scalar/scalars_test/xcosx/events.out.tfevents.1535526276.DESKTOP-4D03LNH -------------------------------------------------------------------------------- /runs/Aug29_15-04-36_DESKTOP-4D03LNHbase_scalar/scalar/scalars_test/xsinx/events.out.tfevents.1535526276.DESKTOP-4D03LNH: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miaoshuyu/pytorch-tensorboardx-visualization/3ae43ca0729b81b8866492a9c8efdbd5b3a9eedc/runs/Aug29_15-04-36_DESKTOP-4D03LNHbase_scalar/scalar/scalars_test/xsinx/events.out.tfevents.1535526276.DESKTOP-4D03LNH -------------------------------------------------------------------------------- /runs/Aug29_15-21-41_DESKTOP-4D03LNHNet1/events.out.tfevents.1535527301.DESKTOP-4D03LNH: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miaoshuyu/pytorch-tensorboardx-visualization/3ae43ca0729b81b8866492a9c8efdbd5b3a9eedc/runs/Aug29_15-21-41_DESKTOP-4D03LNHNet1/events.out.tfevents.1535527301.DESKTOP-4D03LNH -------------------------------------------------------------------------------- /runs/Aug29_15-34-06_DESKTOP-4D03LNHLinear/events.out.tfevents.1535528046.DESKTOP-4D03LNH: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miaoshuyu/pytorch-tensorboardx-visualization/3ae43ca0729b81b8866492a9c8efdbd5b3a9eedc/runs/Aug29_15-34-06_DESKTOP-4D03LNHLinear/events.out.tfevents.1535528046.DESKTOP-4D03LNH -------------------------------------------------------------------------------- /runs/Aug29_15-47-56_DESKTOP-4D03LNH/00000/default/metadata.tsv: -------------------------------------------------------------------------------- 1 | tensor(7) 2 | tensor(2) 3 | tensor(1) 4 | tensor(0) 5 | tensor(4) 6 | tensor(1) 7 | tensor(4) 8 | tensor(9) 9 | tensor(5) 10 | tensor(9) 11 | tensor(0) 12 | tensor(6) 13 | tensor(9) 14 | tensor(0) 15 | tensor(1) 16 | tensor(5) 17 | tensor(9) 18 | tensor(7) 19 | tensor(3) 20 | tensor(4) 21 | tensor(9) 22 | tensor(6) 23 | tensor(6) 24 | tensor(5) 25 | tensor(4) 26 | tensor(0) 27 | tensor(7) 28 | tensor(4) 29 | tensor(0) 30 | tensor(1) 31 | tensor(3) 32 | tensor(1) 33 | tensor(3) 34 | tensor(4) 35 | tensor(7) 36 | tensor(2) 37 | tensor(7) 38 | tensor(1) 39 | tensor(2) 40 | tensor(1) 41 | tensor(1) 42 | tensor(7) 43 | tensor(4) 44 | tensor(2) 45 | tensor(3) 46 | tensor(5) 47 | tensor(1) 48 | tensor(2) 49 | tensor(4) 50 | tensor(4) 51 | tensor(6) 52 | tensor(3) 53 | tensor(5) 54 | tensor(5) 55 | tensor(6) 56 | tensor(0) 57 | tensor(4) 58 | tensor(1) 59 | tensor(9) 60 | tensor(5) 61 | tensor(7) 62 | tensor(8) 63 | tensor(9) 64 | tensor(3) 65 | tensor(7) 66 | tensor(4) 67 | tensor(6) 68 | tensor(4) 69 | tensor(3) 70 | tensor(0) 71 | tensor(7) 72 | tensor(0) 73 | tensor(2) 74 | tensor(9) 75 | tensor(1) 76 | tensor(7) 77 | tensor(3) 78 | tensor(2) 79 | tensor(9) 80 | tensor(7) 81 | tensor(7) 82 | tensor(6) 83 | tensor(2) 84 | tensor(7) 85 | tensor(8) 86 | tensor(4) 87 | tensor(7) 88 | tensor(3) 89 | tensor(6) 90 | tensor(1) 91 | tensor(3) 92 | tensor(6) 93 | tensor(9) 94 | tensor(3) 95 | tensor(1) 96 | tensor(4) 97 | tensor(1) 98 | tensor(7) 99 | tensor(6) 100 | tensor(9) 101 | -------------------------------------------------------------------------------- /runs/Aug29_15-47-56_DESKTOP-4D03LNH/00000/default/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miaoshuyu/pytorch-tensorboardx-visualization/3ae43ca0729b81b8866492a9c8efdbd5b3a9eedc/runs/Aug29_15-47-56_DESKTOP-4D03LNH/00000/default/sprite.png -------------------------------------------------------------------------------- /runs/Aug29_15-47-56_DESKTOP-4D03LNH/data/scalar_group/arctanx/events.out.tfevents.1535528877.DESKTOP-4D03LNH: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miaoshuyu/pytorch-tensorboardx-visualization/3ae43ca0729b81b8866492a9c8efdbd5b3a9eedc/runs/Aug29_15-47-56_DESKTOP-4D03LNH/data/scalar_group/arctanx/events.out.tfevents.1535528877.DESKTOP-4D03LNH -------------------------------------------------------------------------------- /runs/Aug29_15-47-56_DESKTOP-4D03LNH/data/scalar_group/xcosx/events.out.tfevents.1535528877.DESKTOP-4D03LNH: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miaoshuyu/pytorch-tensorboardx-visualization/3ae43ca0729b81b8866492a9c8efdbd5b3a9eedc/runs/Aug29_15-47-56_DESKTOP-4D03LNH/data/scalar_group/xcosx/events.out.tfevents.1535528877.DESKTOP-4D03LNH -------------------------------------------------------------------------------- /runs/Aug29_15-47-56_DESKTOP-4D03LNH/data/scalar_group/xsinx/events.out.tfevents.1535528877.DESKTOP-4D03LNH: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miaoshuyu/pytorch-tensorboardx-visualization/3ae43ca0729b81b8866492a9c8efdbd5b3a9eedc/runs/Aug29_15-47-56_DESKTOP-4D03LNH/data/scalar_group/xsinx/events.out.tfevents.1535528877.DESKTOP-4D03LNH -------------------------------------------------------------------------------- /runs/Aug29_15-47-56_DESKTOP-4D03LNH/events.out.tfevents.1535528876.DESKTOP-4D03LNH: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miaoshuyu/pytorch-tensorboardx-visualization/3ae43ca0729b81b8866492a9c8efdbd5b3a9eedc/runs/Aug29_15-47-56_DESKTOP-4D03LNH/events.out.tfevents.1535528876.DESKTOP-4D03LNH -------------------------------------------------------------------------------- /runs/Aug29_15-47-56_DESKTOP-4D03LNH/projector_config.pbtxt: -------------------------------------------------------------------------------- 1 | embeddings { 2 | tensor_name: "default:00000" 3 | tensor_path: "00000/default/tensors.tsv" 4 | metadata_path: "00000/default/metadata.tsv" 5 | sprite { 6 | image_path: "00000/default/sprite.png" 7 | single_image_dim: 28 8 | single_image_dim: 28 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /scalar/events.out.tfevents.1535526361.DESKTOP-4D03LNH: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miaoshuyu/pytorch-tensorboardx-visualization/3ae43ca0729b81b8866492a9c8efdbd5b3a9eedc/scalar/events.out.tfevents.1535526361.DESKTOP-4D03LNH -------------------------------------------------------------------------------- /scalar/scalar/scalars_test/xcosx/events.out.tfevents.1535526361.DESKTOP-4D03LNH: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miaoshuyu/pytorch-tensorboardx-visualization/3ae43ca0729b81b8866492a9c8efdbd5b3a9eedc/scalar/scalar/scalars_test/xcosx/events.out.tfevents.1535526361.DESKTOP-4D03LNH -------------------------------------------------------------------------------- /scalar/scalar/scalars_test/xsinx/events.out.tfevents.1535526361.DESKTOP-4D03LNH: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miaoshuyu/pytorch-tensorboardx-visualization/3ae43ca0729b81b8866492a9c8efdbd5b3a9eedc/scalar/scalar/scalars_test/xsinx/events.out.tfevents.1535526361.DESKTOP-4D03LNH --------------------------------------------------------------------------------