<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Quoc Bao</title>
    <description>The latest articles on DEV Community by Quoc Bao (@qbaocaca).</description>
    <link>https://dev.to/qbaocaca</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F821788%2Fed63e80e-b18d-4f8d-bd49-10140399a144.jpg</url>
      <title>DEV Community: Quoc Bao</title>
      <link>https://dev.to/qbaocaca</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/qbaocaca"/>
    <language>en</language>
    <item>
      <title>Convert my Pytorch model to Pytorch Lightning</title>
      <dc:creator>Quoc Bao</dc:creator>
      <pubDate>Wed, 29 Jun 2022 16:52:43 +0000</pubDate>
      <link>https://dev.to/qbaocaca/convert-my-pytorch-model-to-pytorch-lightning-8ha</link>
      <guid>https://dev.to/qbaocaca/convert-my-pytorch-model-to-pytorch-lightning-8ha</guid>
      <description>&lt;p&gt;Hello, everybody! Today I am going to show how you how to convert my model from &lt;a href="https://dev.to/qbaocaca/fruitsclassifier-on-fruits-360-2653"&gt;Pytorch&lt;/a&gt; to &lt;a href="https://dev.to/qbaocaca/fruitsclassifier-with-pytorch-lightning-49gi"&gt;Pytorch Lightning&lt;/a&gt;. Pytorch Lightning is a light-weight deep learning framework built upon Pytorch. It removes a lot of boilerplate code (standard code that can be found in almost any deep learning pipeline) and adds in many functions that helps to interfere training at a specific position.&lt;/p&gt;

&lt;p&gt;Firstly, I import the libraries.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip install pytorch-lightning
import pytorch_lightning as pl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pytorch LightningModule resembles nn.Module. Forward function can be defined in a pl class.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# an nn class can be converted to a pl class by replacing nn with pl

class NeuralNet(nn.Module): 
# --&amp;gt; class NeuralNet(pl.LightningModule):
    def __init__(self, input_size, num_classes):
        super(NeuralNet, self).__init__()
        self.fc1 = nn.Linear(input_size, 50)
        self.fc2 = nn.Linear(50, num_classes)

# --&amp;gt; specific functions belong to nn class should not be changed!
    def forward(self, x):
        out = self.fc1(x)
        out = torch.sigmoid(out)
        out = self.fc2(out)
        return out
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Read more &lt;a href="https://blogbybao.wordpress.com/2022/06/24/1261/"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>python</category>
      <category>deeplearning</category>
      <category>machinelearning</category>
      <category>pytorch</category>
    </item>
    <item>
      <title>FruitsClassifier on Fruits 360</title>
      <dc:creator>Quoc Bao</dc:creator>
      <pubDate>Mon, 27 Jun 2022 17:20:18 +0000</pubDate>
      <link>https://dev.to/qbaocaca/fruitsclassifier-on-fruits-360-2653</link>
      <guid>https://dev.to/qbaocaca/fruitsclassifier-on-fruits-360-2653</guid>
      <description>&lt;h3&gt;
  
  
  &lt;em&gt;On this project, I build a classifier on the Fruits 360 dataset using Pytorch. I use a pretrained model and transfer learning, as well as do hyper-parameter search to help increase the accuracy.&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;✍️ Documentation:&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  - &lt;em&gt;Full Training on &lt;a href="https://www.kaggle.com/code/alevi0989/fruits-360-googlenet-94-acc"&gt;Kaggle&lt;/a&gt; | GoogleNet | 94% Acc&lt;/em&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  - &lt;em&gt;Efficient Training with &lt;a href="https://dev.to/qbaocaca/fruitsclassifier-with-pytorch-lightning-49gi"&gt;Pytorch Lightning&lt;/a&gt;&lt;/em&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  - &lt;em&gt;&lt;a href="https://qbaocaca.github.io/fruits_classifier/"&gt;GitHub Page&lt;/a&gt;&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;📰 Dataset structure&lt;/strong&gt;
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;train/test
    |___apple_braeburn_1
        |___r0_0.jpg
        |___r0_10.jpg
            ...
    |___carrot_1
        |___r0_0.jpg
        |___r0_10.jpg
        ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Large batch visualization&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--A_dSNZTH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lu8xrjuvf9e5u5ilsm2w.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A_dSNZTH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lu8xrjuvf9e5u5ilsm2w.JPG" alt="batch" width="554" height="555"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Separate visualization&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QhqxaJ12--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w0uwwf250mroo5k28hro.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QhqxaJ12--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w0uwwf250mroo5k28hro.JPG" alt="se" width="563" height="578"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Single fruit visualization&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DkWrW25R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l635r9wh0af35v81r034.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DkWrW25R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l635r9wh0af35v81r034.JPG" alt="singbatch" width="596" height="635"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Single fruit visualization with transforms&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pmiN7nrQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yqsc128aps968sguu6uz.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pmiN7nrQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yqsc128aps968sguu6uz.JPG" alt="singtr" width="594" height="639"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Separate visualization with transforms&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1GD8hewO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pt0apk4hwluxcqfa9ocm.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1GD8hewO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pt0apk4hwluxcqfa9ocm.JPG" alt="setr" width="633" height="616"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Batch visualization with transforms&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vmuUjTJB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jvkh8i3wqjdxczc9wbd4.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vmuUjTJB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jvkh8i3wqjdxczc9wbd4.JPG" alt="batchtr" width="593" height="594"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Pixel Intensity&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gKVHRgsc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vco7wc1jlqnew9y9a7ax.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gKVHRgsc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vco7wc1jlqnew9y9a7ax.JPG" alt="pixel" width="423" height="375"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Visualize the number of classes&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nN4rigRw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i7fyr4rznmm1ufvss5zx.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nN4rigRw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i7fyr4rznmm1ufvss5zx.JPG" alt="class" width="880" height="486"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Visualize loss and accuracy&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--odRydv6L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lg29sp0q5p887jdedype.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--odRydv6L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lg29sp0q5p887jdedype.JPG" alt="lossacc" width="555" height="376"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Visualize model predictions: green(correct) and red(incorrect)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IF_bTpES--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c0ledgs4sc6rk9gj95oe.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IF_bTpES--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c0ledgs4sc6rk9gj95oe.JPG" alt="pred" width="503" height="495"&gt;&lt;/a&gt; &lt;/p&gt;

</description>
      <category>python</category>
      <category>pytorch</category>
      <category>deeplearning</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>FruitsClassifier with Pytorch Lightning 🍉</title>
      <dc:creator>Quoc Bao</dc:creator>
      <pubDate>Mon, 27 Jun 2022 17:19:04 +0000</pubDate>
      <link>https://dev.to/qbaocaca/fruitsclassifier-with-pytorch-lightning-49gi</link>
      <guid>https://dev.to/qbaocaca/fruitsclassifier-with-pytorch-lightning-49gi</guid>
      <description>&lt;h3&gt;
  
  
  &lt;em&gt;On this project, I convert my FruitsClassifier from Pytorch to Pytorch Lightning. I employ a callback module, a checkpoint mode to store and save the model state_dict. I conduct resume training, plot loss and accuracy from previous trains. I check the accuracy for each class and make predictions on images from outside the dataset.&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;✍️ Documentation:&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  - &lt;strong&gt;&lt;a href="https://blogbybao.wordpress.com/2022/06/24/1261/"&gt;Convert my Pytorch model to Pytorch Lightning&lt;/a&gt;&lt;/strong&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  - &lt;strong&gt;&lt;a href="https://qbaocaca.github.io/fruits_classifier/"&gt;FruitsClassifier on Fruits 360&lt;/a&gt;&lt;/strong&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  - &lt;strong&gt;Full Training on &lt;a href="https://www.kaggle.com/code/alevi0989/fruits360-pytorch-lightning-0-937-acc"&gt;Kaggle&lt;/a&gt; | GoogleNet | 94% Acc&lt;/strong&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  - &lt;strong&gt;&lt;a href="https://qbaocaca.github.io/fruits_clf_lightning/"&gt;GitHub Page&lt;/a&gt;&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;💥 Training Epochs&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qAuabQu5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bezifxzyre8r66q82pcp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qAuabQu5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bezifxzyre8r66q82pcp.png" alt="training" width="880" height="280"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;🍇 Visualize Loss and Accuracy&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HMdhBWZZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w06tjcrfoaonlml82pra.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HMdhBWZZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w06tjcrfoaonlml82pra.png" alt="lossacc" width="689" height="467"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;🍌 Visualize model performance on test dataset&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WjSdxVFx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aiur08w6w5vc2njpacjf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WjSdxVFx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aiur08w6w5vc2njpacjf.png" alt="visualize_model" width="628" height="615"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;🍎 Accuracy of each class&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nSo2isTl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n13yhf7t1ydi4e7jowj9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nSo2isTl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n13yhf7t1ydi4e7jowj9.png" alt="accofeach" width="880" height="491"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;🍍 Image Predictions from outside the Dataset&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pQ5SaAJs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ydie0i35bwlh10kf73rv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pQ5SaAJs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ydie0i35bwlh10kf73rv.png" alt="prediction" width="490" height="612"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;🍑 Accuracy of each class: green(correct predictions), red(incorrect predictions)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yFK07sDP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nagli9dtn1t2s93wl3sg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yFK07sDP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nagli9dtn1t2s93wl3sg.png" alt="accofeach2" width="880" height="490"&gt;&lt;/a&gt; &lt;/p&gt;

</description>
      <category>pytorchlightning</category>
      <category>python</category>
      <category>deeplearning</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>My Pytorch Training Pipeline in Image Classification</title>
      <dc:creator>Quoc Bao</dc:creator>
      <pubDate>Sat, 11 Jun 2022 10:21:12 +0000</pubDate>
      <link>https://dev.to/qbaocaca/my-pytorch-training-pipeline-in-image-classification-dg7</link>
      <guid>https://dev.to/qbaocaca/my-pytorch-training-pipeline-in-image-classification-dg7</guid>
      <description>&lt;h3&gt;
  
  
  &lt;em&gt;On this project, I create a custom dataset of 5 male models and conduct a full Pytorch training pipeline. I use a pretrained model and transfer learning, as well as do hyper-parameter search to help increase the accuracy.&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  ✍️ Analysis and Evaluation:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Full Pytorch Training Pipeline on Image Classification &lt;a href="https://blogbybao.wordpress.com/2022/02/13/full-pytorch-training-pipeline-on-image-classification-task/" rel="noopener noreferrer"&gt;part1&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Full Pytorch Training Pipeline on Image Classification &lt;a href="https://blogbybao.wordpress.com/2022/02/14/full-pytorch-training-pipeline-on-image-classification-task-part2/" rel="noopener noreferrer"&gt;part2&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📺 My implementations are based off &lt;a href="https://www.youtube.com/playlist?list=PLhhyoLH6IjfxeoooqP9rhU3HJIAVAJ3Vz" rel="noopener noreferrer"&gt;Aladdin Persson&lt;/a&gt; and &lt;a href="https://www.youtube.com/playlist?list=PLqnslRFeH2UrcDBWF5mfPGpqQDSta6VK4" rel="noopener noreferrer"&gt;Python Engineer&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  My &lt;a href="https://qbaocaca.github.io/boys_classifier/" rel="noopener noreferrer"&gt;repository&lt;/a&gt; contains:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;A training script (using pretrained vgg16 and transfer learning)&lt;/li&gt;
&lt;li&gt;A script for Hyper-parameter Search&lt;/li&gt;
&lt;li&gt;A script for loading the model for either resumed training or inference&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to45%%20accuracy"&gt;A trained model&lt;/a&gt; 😬&lt;/li&gt;
&lt;li&gt;Some helper functions&lt;/li&gt;
&lt;li&gt;A dataset&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;📰 Dataset Structure&lt;/strong&gt;
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;train/val
|___chau_minh_chi
       |___chau_minh_chi_01.jpg
          |___chau_minh_chi_02.jpg
          ...
|___keita_machida
       |___keita_machida_01.jpg
          |___keita_machida_02.jpg
          ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Small batch visualization&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdbabtz0tdx2208t15obi.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdbabtz0tdx2208t15obi.JPG" alt="small"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Large batch visualization&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F417xq61wkcffycla5mkp.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F417xq61wkcffycla5mkp.JPG" alt="large"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Visualize the number of classes&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa02jfe06e5y5viv7nwng.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa02jfe06e5y5viv7nwng.JPG" alt="class"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;😑 Hyper-parameter Search&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9d8qja337w3mlqolxd34.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9d8qja337w3mlqolxd34.JPG" alt="Hyper-parameter search"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;💥 Training Epochs&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;==&amp;gt; Saving new best
Epoch 1/25
Step 34/34, train Loss = 1.84,  train Acc = 0.29
Step 20/20, val loss = 1.58,  val acc = 0.25
Time spent for this epoch -----&amp;gt; 0m 32s

==&amp;gt; Saving new best
Epoch 2/25
Step 34/34, train Loss = 0.91,  train Acc = 0.63
Step 20/20, val loss = 1.53,  val acc = 0.43
Time spent for this epoch -----&amp;gt; 0m 13s

==&amp;gt; Validation accuracy did not improve.
Epoch 3/25
Step 34/34, train Loss = 0.61,  train Acc = 0.82
Step 20/20, val loss = 1.67,  val acc = 0.27
Time spent for this epoch -----&amp;gt; 0m 8s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;😌 Visualize Loss and Accuracy&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftl01wsucwjmjhnm4y23q.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftl01wsucwjmjhnm4y23q.JPG" alt="Loss and accuracy"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;😅 Accuracy of Each Class&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Test Acc
Got 13/30 correct samples over 43.33%
Accuracy of timmy_xu: 33.33%
Accuracy of corbyn_besson: 62.50%
Accuracy of keita_machida: 16.67%
Accuracy of wang_kai: 30.00%
Accuracy of chau_minh_chi: 100.00%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;😞 Classification Report and Confusion Matrix Heatmap&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi2y9gikfyurhoee94kn5.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi2y9gikfyurhoee94kn5.PNG" alt="cm"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;😍 Predict a single image&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiirlsc1b31vsycanljxv.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiirlsc1b31vsycanljxv.PNG" alt="single"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;😐 Prediction In Batch&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6v22s0hfjkonpihgrjer.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6v22s0hfjkonpihgrjer.JPG" alt="In batch"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>machinelearning</category>
      <category>deeplearning</category>
      <category>pytorch</category>
    </item>
    <item>
      <title>Binary Search Tree Class Implementation</title>
      <dc:creator>Quoc Bao</dc:creator>
      <pubDate>Mon, 02 May 2022 14:01:36 +0000</pubDate>
      <link>https://dev.to/qbaocaca/binary-search-tree-class-implementation-42mm</link>
      <guid>https://dev.to/qbaocaca/binary-search-tree-class-implementation-42mm</guid>
      <description>&lt;p&gt;Hello everybody! Today, I will show you an implementation of the binary search tree (BST) class which borrows the structure of a linked list but is a little bit different. The BST has two reference fields (left subtree and right subtree) instead of just only one. Though I have implemented a linked list class before, it has not quite come as an official post. Therefore, if you want to compare between the two, &lt;a href="https://github.com/qbaocaca/c_plus_plus/blob/main/insert_and_removing_list/solve_with_linked_list.cpp"&gt;see it for yourself&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Without further ado, let’s get on!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;struct node
{
    int info;
    node *left;
    node *right;
};

class BST
{
private:
    node *root;
    void deepcopy(const BST &amp;amp;other);

public:
    // node *search(int);
    // node *search(node *, int);
    BST();
    ~BST();
    BST(int);
    BST(const BST &amp;amp;other);
    BST &amp;amp;operator=(const BST &amp;amp;other);
    void insert(int);
    void insert(node *, int);
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Read more &lt;a href="https://blogbybao.wordpress.com/2022/05/02/binary-search-tree-class-implementation/"&gt;here&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>cpp</category>
      <category>tutorial</category>
      <category>oop</category>
    </item>
    <item>
      <title>String class implementation</title>
      <dc:creator>Quoc Bao</dc:creator>
      <pubDate>Wed, 27 Apr 2022 09:24:08 +0000</pubDate>
      <link>https://dev.to/qbaocaca/string-class-implementation-414o</link>
      <guid>https://dev.to/qbaocaca/string-class-implementation-414o</guid>
      <description>&lt;p&gt;Hello everybody! Today, I would like to show you a quick implementation of a string class.&lt;/p&gt;

&lt;p&gt;A string is an array of characters. So, we initialize it with an array of char type and a length.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class STRING
{
private:
    char *content;
    int len;

    void deepcopy(const STRING &amp;amp;other);

public:
    STRING();
    // ~STRING();
    STRING(std::string);

    STRING(const STRING &amp;amp;other);
    STRING &amp;amp;operator=(const STRING &amp;amp;other);

    bool operator==(STRING &amp;amp;other);
    bool operator==(std::string);
    bool operator!=(STRING other);

    char getContent(int);
    char *getWholeContent();
    void deleteContent();
    void allocateContent(int);
    int getLen();
    void setLen(int);
    void setContent(int, char);

    void input();
    void output();

    void removeBlankHead();
    void removeBlankTail();
    void RemoveExtraSpaces();

    friend std::istream &amp;amp;operator&amp;gt;&amp;gt;(std::istream &amp;amp;in, STRING &amp;amp;a);
    friend std::ostream &amp;amp;operator&amp;lt;&amp;lt;(std::ostream &amp;amp;out, STRING a);
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Read more &lt;a href="https://blogbybao.wordpress.com/2022/04/27/string-class-implementation/"&gt;here&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>cpp</category>
      <category>tutorial</category>
      <category>oop</category>
    </item>
    <item>
      <title>Matrix class implementation</title>
      <dc:creator>Quoc Bao</dc:creator>
      <pubDate>Sun, 17 Apr 2022 17:02:13 +0000</pubDate>
      <link>https://dev.to/qbaocaca/matrix-class-implemetation-3i80</link>
      <guid>https://dev.to/qbaocaca/matrix-class-implemetation-3i80</guid>
      <description>&lt;p&gt;The concept of matrix and multidimensional array had always been an intriguing topic for me when I was in programming classes. Since computer memory isn’t organized in tabular form, there should be a way to represent it. Today, I am going to show you how to implement a matrix class with a component of &lt;a href="https://blogbybao.wordpress.com/2022/03/18/introduction-to-oop-and-array-class-implementation-part-1/"&gt;an array&lt;/a&gt;. It will simply has some basic operations of matrix such as addition, subtraction, and multiplication.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Matrix
{
private:
    Array *A;
    int rows = 0, cols = 0;

    void deepcopy(const Matrix &amp;amp;other);

public:
    Matrix();
    Matrix(int x, int y);
    void input();
    void output();

    void insert(int, int, int);
    int findCelebrity();

    // ~Matrix();

    Matrix(const Matrix &amp;amp;other);
    Matrix &amp;amp;operator=(const Matrix &amp;amp;other);
    void create_identity(int);
    void create_celeb_test(int);

    // Matrix &amp;amp;operator+(const Matrix &amp;amp;other);
    Matrix &amp;amp;operator-(const Matrix &amp;amp;other);

    int view_rows();
    int view_cols();
    int getElement(int, int);
    void setElement(int, int, int);
    bool knows(int, int);

    friend istream &amp;amp;operator&amp;gt;&amp;gt;(istream &amp;amp;in, Matrix &amp;amp;a);
    friend ostream &amp;amp;operator&amp;lt;&amp;lt;(ostream &amp;amp;out, Matrix a);
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Read more &lt;a href="https://blogbybao.wordpress.com/2022/04/17/1121/"&gt;here&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>cpp</category>
      <category>tutorial</category>
      <category>oop</category>
    </item>
    <item>
      <title>Introduction to OOP and array class implementation [part 2]</title>
      <dc:creator>Quoc Bao</dc:creator>
      <pubDate>Sun, 20 Mar 2022 02:53:17 +0000</pubDate>
      <link>https://dev.to/qbaocaca/introduction-to-oop-and-array-class-implementation-part-2-1dki</link>
      <guid>https://dev.to/qbaocaca/introduction-to-oop-and-array-class-implementation-part-2-1dki</guid>
      <description>&lt;p&gt;Last time, we left off with the default constructor. Remember that it has no arguments, which is why it is also called non-parameterized constructor. Therefore, this time we’ll kick off with parameterized constructor, which takes in user’s initial values.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Array::Array(int num_elements)
{
    allocate(this-&amp;gt;A, num_elements);
    this-&amp;gt;na = 0;
    this-&amp;gt;capacity_a = num_elements;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Read more &lt;a href="https://blogbybao.wordpress.com/2022/03/19/introduction-to-oop-and-array-class-implementation-part-2/"&gt;here&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>cpp</category>
      <category>oop</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Introduction to OOP and array class implementation [part 1]</title>
      <dc:creator>Quoc Bao</dc:creator>
      <pubDate>Sun, 20 Mar 2022 02:50:33 +0000</pubDate>
      <link>https://dev.to/qbaocaca/introduction-to-oop-and-array-class-implementation-part-1-48co</link>
      <guid>https://dev.to/qbaocaca/introduction-to-oop-and-array-class-implementation-part-1-48co</guid>
      <description>&lt;p&gt;Object-oriented programming (OOP) is an important knowledge taught in schools and programming classes. It is a concept that relies on the creation of classes and objects which helps coding more efficient with reusable code blocks of well-defined functions. Today, I will show you how to implement a simple 1D array class. Throughout the post, important OOP terminologies and concepts will be discussed for the sake of better understanding.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Array
{
private:
    int *A;
    int na = 0;
    int capacity_a = 1;

    void deepcopy(const Array &amp;amp;a);

public:
    Array();
    Array(int);
    ~Array();

    void insert(int);
    void print();

    Array(const Array &amp;amp;other);
    Array &amp;amp;operator=(const Array &amp;amp;other);
    Array operator+(Array other);

    int view_na();
    void set_na(int);
    int getElement(int index);
    void setElement(int index, int value);

    void quicksort(int left, int right);

    friend istream &amp;amp;operator&amp;gt;&amp;gt;(istream &amp;amp;in, Array &amp;amp;a);
    friend ostream &amp;amp;operator&amp;lt;&amp;lt;(ostream &amp;amp;out, Array a);
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Read more &lt;a href="https://blogbybao.wordpress.com/2022/03/18/introduction-to-oop-and-array-class-implementation-part-1/"&gt;here&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>cpp</category>
      <category>oop</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Full Pytorch Training Pipeline on Image Classification [ part2 ]</title>
      <dc:creator>Quoc Bao</dc:creator>
      <pubDate>Fri, 25 Feb 2022 14:25:27 +0000</pubDate>
      <link>https://dev.to/qbaocaca/full-pytorch-training-pipeline-on-image-classification-task-part2--185o</link>
      <guid>https://dev.to/qbaocaca/full-pytorch-training-pipeline-on-image-classification-task-part2--185o</guid>
      <description>&lt;p&gt;Hello everybody! Today, we will continue with what we left off in &lt;a href="https://blogbybao.wordpress.com/2022/02/13/full-pytorch-training-pipeline-on-image-classification-task/"&gt;the previous blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I first talk about the Tensorboard. Tensorboard is a visualization toolkit of TensorFlow, which is also a machine learning and deep learning framework. Tensorboard can be used for displaying the images in the dataset, drawing loss and accuracy graphs, analyzing the components of a neural network.&lt;/p&gt;

&lt;p&gt;Continue to read this &lt;a href="https://blogbybao.wordpress.com/2022/02/14/full-pytorch-training-pipeline-on-image-classification-task-part2/"&gt;here&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>python</category>
    </item>
    <item>
      <title>Full Pytorch Training Pipeline on Image Classification [ part1 ]</title>
      <dc:creator>Quoc Bao</dc:creator>
      <pubDate>Fri, 25 Feb 2022 14:08:34 +0000</pubDate>
      <link>https://dev.to/qbaocaca/full-pytorch-training-pipeline-on-image-classification-task-part1--2221</link>
      <guid>https://dev.to/qbaocaca/full-pytorch-training-pipeline-on-image-classification-task-part1--2221</guid>
      <description>&lt;p&gt;Hello everybody! Today, I will show you how to train a full deep learning pipeline on image classification using Pytorch. For somebody who didn’t know Pytorch, it is a machine learning and deep learning framework similar to Keras or TensorFlow. It is a very fun and cool framework to work with, especially on understanding the structure of a neural network.&lt;/p&gt;

&lt;p&gt;Continue to read it &lt;a href="https://blogbybao.wordpress.com/2022/02/13/full-pytorch-training-pipeline-on-image-classification-task/"&gt;here&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>python</category>
    </item>
  </channel>
</rss>
