

{"id":111109,"date":"2022-12-31T10:00:42","date_gmt":"2022-12-31T04:30:42","guid":{"rendered":"https:\/\/data-flair.training\/blogs\/?p=111109"},"modified":"2022-12-31T10:21:44","modified_gmt":"2022-12-31T04:51:44","slug":"pytorch-tensorboard","status":"publish","type":"post","link":"https:\/\/data-flair.training\/blogs\/pytorch-tensorboard\/","title":{"rendered":"PyTorch Tensorboard"},"content":{"rendered":"<p>Google originally developed Tensorboard for Tensorflow, and since PyTorch 1.1.0, it has been added to it due to the collaboration with Google\u2019s tensorboard team.<\/p>\n<p>It is a visualisation tool which helps us take a sneak peek at the functionality of our models. For example, we can monitor the training process by plotting the learning curves. We can also visualise the tensors by plotting histograms, images in the training set, object detection boxes etc.<\/p>\n<h3>Installing and Opening Tensorboard:<\/h3>\n<p>To install the tensorboard, open the anaconda prompt or the terminal, as the case may be and run the following command.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">pip install tensorboard<\/pre>\n<p>Now that we have installed tensorboard, we can open it by running the following command in Anaconda Prompt.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">tensorboard --logdir=run<\/pre>\n<p>On running this command, we get a message stating that tensorboard is available at a local server. So, we need to copy this address (which will look something like this ::http:\/\/localhost:6006\/) and browse it in a web browser.<\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/12\/tensorboard.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-111295\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/12\/tensorboard.webp\" alt=\"tensorboard\" width=\"1881\" height=\"903\" \/><\/a><\/p>\n<p>This is what tensorboard looks like. Since we have not built any models yet, it does not display anything.<\/p>\n<h3>Using Tensorboard<\/h3>\n<p>Firstly, we have to import tensorboard along with other required libraries. Along with the libraries we need for our model, we also need to import SummaryWriter from torch.utils.tenosrboard to use it.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">from torch.utils.tensorboard import SummaryWriter<\/pre>\n<p>After importing SummaryWriter we have to create an instance of the SummaryWriter class.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">writer=SummaryWriter('run\/cnn')\r\n<\/pre>\n<h4>a. Visualising the Training Set Images:<\/h4>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">dataiter=iter(trainset)\r\nimages,labels=dataiter.next()\r\n\r\nimg_grid = torchvision.utils.make_grid(images)\r\n\r\n\r\n# write to tensorboard\r\nwriter.add_image('_mnist_images', img_grid)\r\n<\/pre>\n<p>In the above code segment, we have defined an iterable using the dataloader and with the command writer.add_image(\u2018_mnist_images\u2019,img_grid), we have added the visuals to the tensorboard with the title being \u2018_mnist_images\u2019.<\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/12\/training_images.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-111296\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/12\/training_images.webp\" alt=\"training images\" width=\"1920\" height=\"903\" \/><\/a><\/p>\n<p>When we refresh the tensorboard tab, we can see the training images as shown above.<\/p>\n<h4>b. Histograms and Graphs:<\/h4>\n<p>Plotting Histograms on a tensorboard is easy and can be accomplished using just a single line of code.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">writer.add_scalar('Loss\/train', np.random.random(), n_iter)<\/pre>\n<p>Tensorboard has a navigation bar that lets us see the scalars, graphs, images etc. The best part is it gives us a picture of how our model has been designed and working and gives us insight into the parameters that can be changed to improve the model&#8217;s performance.<\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/12\/graphs.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-111297\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/12\/graphs.webp\" alt=\"graphs\" width=\"1920\" height=\"900\" \/><\/a><\/p>\n<h4>c. Complete code:<\/h4>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">import torch\r\nimport torchvision\r\nimport torch.nn as nn\r\nimport torch.optim as optim\r\nfrom torchvision import transforms,datasets\r\nimport torch.nn.functional as F\r\nimport matplotlib\r\nimport matplotlib.pyplot as plt\r\n\r\nfrom torch.utils.tensorboard import SummaryWriter\r\n\r\n\r\ntrain=datasets.MNIST(\"\", train=True,download=True,transform=transforms.Compose([transforms.ToTensor()]))\r\ntest=datasets.MNIST(\"\", train=False,download=True,transform=transforms.Compose([transforms.ToTensor()]))\r\n\r\n\r\n\r\ntrainset=torch.utils.data.DataLoader(train,batch_size=64,shuffle=True)\r\ntestset=torch.utils.data.DataLoader(test,batch_size=64,shuffle=True)\r\n\r\n\r\n\r\nclass ConvNet(nn.Module):\r\n    def __init__(self):\r\n    \tsuper(ConvNet,self).__init__()\r\n    def forward(self):\r\n    \tmodel=nn.Sequential(nn.Conv2d(1,10,5,padding=2),\r\n                    \tnn.ReLU(),\r\n                    \tnn.AvgPool2d(2,stride=2),\r\n                   \t \r\n                    \tnn.Conv2d(10,20,5,padding=0),\r\n                    \tnn.ReLU(),\r\n                    \tnn.AvgPool2d(2,stride=2),\r\n                   \t \r\n                    \tnn.Flatten(),\r\n                    \tnn.Linear(500,250),\r\n                    \tnn.ReLU(),\r\n                    \tnn.Linear(250,100),\r\n                    \tnn.ReLU(),\r\n                    \tnn.Linear(100,10)\r\n                   \t)\r\n    \treturn model\r\n    \r\n    \r\n    def validate(self,model,data):\r\n    \ttotal=0\r\n    \tcorrect=0\r\n    \tfor i,(images,labels) in enumerate(data):\r\n        \tx=model(images)\r\n        \tvalue,pred=torch.max(x,1)\r\n        \ttotal+=x.size(0)\r\n        \tcorrect+=torch.sum(pred==labels)\r\n    \r\n    \r\n    \treturn correct\/total\r\n    \r\n\r\n\r\n\r\n\r\ncnn=cnn_model.forward().to(device)\r\ncel=nn.CrossEntropyLoss()\r\noptimizer=optim.Adam(cnn.parameters(),lr=0.01)\r\n    \r\nfor epoch in range(epoch):\r\n    for i,(images,labels) in enumerate(trainset):\r\n    \timages=images.to(device)\r\n    \tlabels=labels.to(device)\r\n    \toptimizer.zero_grad()\r\n    \tpred=cnn(images)\r\n    \tloss=cel(pred,labels)\r\n    \tloss.backward()\r\n    \toptimizer.step()\r\n       \t \r\n    accuracy=cnn_model.validate(cnn,testset)\r\n    print(epoch,accuracy)\r\n\r\n\r\n\r\n\r\ndataiter=iter(trainset)\r\nimages,labels=dataiter.next()\r\n\r\nimg_grid = torchvision.utils.make_grid(images)\r\n\r\n\r\n# write to tensorboard\r\nwriter.add_image('_mnist_images', img_grid)\r\n<\/pre>\n<h3>Sharing Tensorboard Dashboards<\/h3>\n<p>To share our tensorboard dashboards, we can upload them to the server and then share their link to the concerned party.<\/p>\n<p>Run the following command on the anaconda prompt to upload.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">tensorboard dev upload --logdir runs<\/pre>\n<p>Now, some processes will be initiated, and you will be asked if you want to continue. Enter \u201cyes\u201d. Then you will be given a link. Go to the link and enter the authentication code to complete the process.<\/p>\n<p>Our dashboard has now been uploaded, and we can navigate to it using the given link.<\/p>\n<p>Note that you should not upload sensitive data as all the uploaded files are public.<\/p>\n<h3>Summary<\/h3>\n<p>Tensorboards can be a crucial tool for us to visualise the performance of our models and act accordingly. It can be used to view training images, audio, videos, histograms etc., giving us a sneak peek into the internal working of our models.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Google originally developed Tensorboard for Tensorflow, and since PyTorch 1.1.0, it has been added to it due to the collaboration with Google\u2019s tensorboard team. It is a visualisation tool which helps us take a&#46;&#46;&#46;<\/p>\n","protected":false},"author":5,"featured_media":111298,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26498],"tags":[27178],"class_list":["post-111109","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-pytorch-tutorials","tag-pytorch-tensorboard"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>PyTorch Tensorboard - DataFlair<\/title>\n<meta name=\"description\" content=\"Tensorboards can be a crucial tool to visualise the performance of our models and act accordingly. Learn more about pytorch tensorboards.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/data-flair.training\/blogs\/pytorch-tensorboard\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PyTorch Tensorboard - DataFlair\" \/>\n<meta property=\"og:description\" content=\"Tensorboards can be a crucial tool to visualise the performance of our models and act accordingly. Learn more about pytorch tensorboards.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/data-flair.training\/blogs\/pytorch-tensorboard\/\" \/>\n<meta property=\"og:site_name\" content=\"DataFlair\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DataFlairWS\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-31T04:30:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-12-31T04:51:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/12\/pytorch-tensorboard.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"DataFlair Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:site\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DataFlair Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PyTorch Tensorboard - DataFlair","description":"Tensorboards can be a crucial tool to visualise the performance of our models and act accordingly. Learn more about pytorch tensorboards.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/data-flair.training\/blogs\/pytorch-tensorboard\/","og_locale":"en_US","og_type":"article","og_title":"PyTorch Tensorboard - DataFlair","og_description":"Tensorboards can be a crucial tool to visualise the performance of our models and act accordingly. Learn more about pytorch tensorboards.","og_url":"https:\/\/data-flair.training\/blogs\/pytorch-tensorboard\/","og_site_name":"DataFlair","article_publisher":"https:\/\/www.facebook.com\/DataFlairWS\/","article_published_time":"2022-12-31T04:30:42+00:00","article_modified_time":"2022-12-31T04:51:44+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/12\/pytorch-tensorboard.webp","type":"image\/webp"}],"author":"DataFlair Team","twitter_card":"summary_large_image","twitter_creator":"@DataFlairWS","twitter_site":"@DataFlairWS","twitter_misc":{"Written by":"DataFlair Team","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/data-flair.training\/blogs\/pytorch-tensorboard\/#article","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/pytorch-tensorboard\/"},"author":{"name":"DataFlair Team","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/7f83c342f5d1632d6f7b4b0b0f447823"},"headline":"PyTorch Tensorboard","datePublished":"2022-12-31T04:30:42+00:00","dateModified":"2022-12-31T04:51:44+00:00","mainEntityOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/pytorch-tensorboard\/"},"wordCount":503,"commentCount":0,"publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/pytorch-tensorboard\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/12\/pytorch-tensorboard.webp","keywords":["PyTorch Tensorboard"],"articleSection":["PyTorch Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/data-flair.training\/blogs\/pytorch-tensorboard\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/data-flair.training\/blogs\/pytorch-tensorboard\/","url":"https:\/\/data-flair.training\/blogs\/pytorch-tensorboard\/","name":"PyTorch Tensorboard - DataFlair","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/pytorch-tensorboard\/#primaryimage"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/pytorch-tensorboard\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/12\/pytorch-tensorboard.webp","datePublished":"2022-12-31T04:30:42+00:00","dateModified":"2022-12-31T04:51:44+00:00","description":"Tensorboards can be a crucial tool to visualise the performance of our models and act accordingly. Learn more about pytorch tensorboards.","breadcrumb":{"@id":"https:\/\/data-flair.training\/blogs\/pytorch-tensorboard\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/data-flair.training\/blogs\/pytorch-tensorboard\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/pytorch-tensorboard\/#primaryimage","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/12\/pytorch-tensorboard.webp","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/12\/pytorch-tensorboard.webp","width":1200,"height":628,"caption":"pytorch tensorboard"},{"@type":"BreadcrumbList","@id":"https:\/\/data-flair.training\/blogs\/pytorch-tensorboard\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Home","item":"https:\/\/data-flair.training\/blogs\/"},{"@type":"ListItem","position":2,"name":"PyTorch Tutorials","item":"https:\/\/data-flair.training\/blogs\/category\/pytorch-tutorials\/"},{"@type":"ListItem","position":3,"name":"PyTorch Tensorboard"}]},{"@type":"WebSite","@id":"https:\/\/data-flair.training\/blogs\/#website","url":"https:\/\/data-flair.training\/blogs\/","name":"DataFlair","description":"Learn Today. Lead Tomorrow.","publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/data-flair.training\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/data-flair.training\/blogs\/#organization","name":"DataFlair","url":"https:\/\/data-flair.training\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","width":106,"height":48,"caption":"DataFlair"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DataFlairWS\/","https:\/\/x.com\/DataFlairWS","https:\/\/www.linkedin.com\/company\/dataflair-web-services-pvt-ltd\/","https:\/\/www.youtube.com\/user\/DataFlairWS"]},{"@type":"Person","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/7f83c342f5d1632d6f7b4b0b0f447823","name":"DataFlair Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/4cf3a74600d131330b8c481d519afd1574093ed89f6d3396a95393ad223eb7cd?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4cf3a74600d131330b8c481d519afd1574093ed89f6d3396a95393ad223eb7cd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4cf3a74600d131330b8c481d519afd1574093ed89f6d3396a95393ad223eb7cd?s=96&d=mm&r=g","caption":"DataFlair Team"},"description":"DataFlair Team creates expert-level guides on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. Our goal is to empower learners with easy-to-understand content. Explore our resources for career growth and practical learning.","url":"https:\/\/data-flair.training\/blogs\/author\/dfteam1\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/111109","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/comments?post=111109"}],"version-history":[{"count":3,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/111109\/revisions"}],"predecessor-version":[{"id":111299,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/111109\/revisions\/111299"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media\/111298"}],"wp:attachment":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media?parent=111109"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/categories?post=111109"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/tags?post=111109"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}