Build Your First Pytorch Model In Minutes! [Tutorial + Code]

Поделиться
HTML-код
  • Опубликовано: 14 янв 2025

Комментарии • 110

  • @manuelsteele7755
    @manuelsteele7755 3 месяца назад +35

    I am an old Gen X guy who had written a thesis on 2-dimensional image processing for nuclear medicine back in the 1990s for a master's degree on C/Unix. In 2021, I returned for a PhD in AI/ML for healthcare. I am taking a modern course on medical imaging with a deep learning expert at Arizona State. The problem is that he assumes every student already knows how to apply deep learning with data loaders, training, and testing for large batch jobs on cloud clusters in the first week. Needless to say, I fell behind but am slowly catching up. This video is a "must" and the best I have seen to really explain the basic depth of defining datasets, data loaders, training, testing, and analysis to a good set of images. The overall activity flow actually applies to the chest x-rays I have been assigned for deep learning using ResNet or other models. I am going to review the notebook in more details. This really helps. Thank you.

  • @vitorribeirosa
    @vitorribeirosa 9 месяцев назад +16

    Thank you, Rob!!!
    I strongly appreciate your work. I have learned a lot from your videos.
    Cheers from Japan!!!

  • @leminhdung1981
    @leminhdung1981 Год назад +1

    Thanks!

  • @chrisogonas
    @chrisogonas 9 месяцев назад +1

    Well illustrated! Thanks Rob.

  • @fisherh9111
    @fisherh9111 Месяц назад +1

    Best 31 minutes and 29 seconds of my life. Rob Mulla is the OG ML Chad - huge wealth of knowledge.

  • @VlivinG
    @VlivinG Год назад +26

    I have a course at university and here I am learning things they should teach... your explanations are short and clear thanks! after my score submission, I will email your channel to my professor and his assistant as a clear example of what education is

    • @ben_jamin01
      @ben_jamin01 Год назад

      I don't do computer science or university or anything, but I think that you're are an example for other educators.

    • @mugdhoamin8033
      @mugdhoamin8033 Год назад +3

      😂😂
      In my case if I mail my teacher, I highly doubt he would open the mail let alone try to teach like this channel.

    • @maaikevreugdemaker9210
      @maaikevreugdemaker9210 13 дней назад

      University be like: here is the concept and some books. See you in 3 months and idc if you pass.

  • @Healsi95
    @Healsi95 Год назад +6

    Wow, Rob. What an amazing video, I'm currently learning Deep Learning from scratch and your video is great to understand how to cod these networks and how to apply all those concepts learned in other videos about how Neural networks work.
    I'll be waiting for the next video, hoping you enlighten me over how how to tune the network, maybe transfer learning with CNNs along with attention modules would be just awesome!

  • @sandeephooda9253
    @sandeephooda9253 3 месяца назад

    Thanks

  • @johanongchangco8525
    @johanongchangco8525 Год назад +11

    Best video ever. I had my 14 year old watching with me and he understood it with very little commentary from me :)

  • @khalilnaji36
    @khalilnaji36 11 месяцев назад +19

    This man is single-handedly carrying the education side of RUclips for Data Science on his back

    • @checkmyvideos8118
      @checkmyvideos8118 6 месяцев назад

      how? He just babbles stuff to type without explaining what it is and where it comes from

  • @pharod77
    @pharod77 Месяц назад

    The best video on subject I was able to find. Thank you so much for your work!

    • @vaibhavchaganti1709
      @vaibhavchaganti1709 День назад

      hey im actually doinf this on google colab so how can i get the same dataset which he is using?

  • @sriramabhaktahanuma
    @sriramabhaktahanuma Год назад +3

    Hey Rob.. thanks for the video. Well structured and well paced. Please do many end to ends like these.

  • @cosheimil
    @cosheimil Год назад +1

    Thank you for this video! Its a lot of notebooks with torch and ur video helped me, thank you!

  • @hugoczerniawski166
    @hugoczerniawski166 Год назад +1

    Great vid Mr Mulla! I got confused at the last stage a bit but the confusion was mainly casued by my relativley small exprience with PyTorch. I will try to calclute the accurancy now! Thank you!

  • @dirtydevotee
    @dirtydevotee Месяц назад +2

    Just a note: at 11:45 he says that the batch size is "32". The batch size must be a power of two (16, 32, 64, etc...).

  • @jees__antony
    @jees__antony 11 месяцев назад

    this is the best vdo I have seen on pytorch

  • @ramprasath6424
    @ramprasath6424 Год назад +1

    really helpful vid
    looking out for more of similar

  • @athleticsupramaxx9227
    @athleticsupramaxx9227 11 месяцев назад +2

    at 22:10 you have "test_loader = DataLoader(val_dataset, batch_size=32, shuffle=False)" but it should be "test_loader = DataLoader(test_dataset, batch_size=32, shuffle=False)" right?

  • @VijayJaisankar
    @VijayJaisankar Год назад +1

    Thanks for this video! Really nice to brush up on the basics :)

  • @christiansnaturestudio6599
    @christiansnaturestudio6599 Год назад +1

    Im looking forward to add it to my project portfolio. Money money money 💰

  • @TANAYAlations
    @TANAYAlations Месяц назад

    amazing video. more please

  • @rayray9996
    @rayray9996 11 месяцев назад +1

    I love the way you explain, but please post videos using R as well....how about time series forecasting with machine learning using R...

  • @brianperez3808
    @brianperez3808 4 месяца назад +1

    Pro tip:
    freeze the base model layers for faster training in the SimpleCardClassifier class
    self.features = nn.Sequential(*list(self.base_model.children())[:-1])
    for param in self.features.parameters():
    param.requires_grad = False

  • @drewgrant1605
    @drewgrant1605 5 месяцев назад

    Great video! Super helpful. It was a comprehensive yet not too detailed introduction. Question though, why did you add “@property” with the classes method in the PlayingCardDataset object?

  • @muhammadfahad3577
    @muhammadfahad3577 9 месяцев назад +1

    at 18:17 mark, he uses images object as a param to run the model. Where is he getting this images object from?? I don't see it anywhere above except for when he runs that for loops and pull images from dataloader but that was inside the for loop so it cant be that.

  • @Techonsapevole
    @Techonsapevole Год назад

    Thanks, well done

  • @andrelvcoelho
    @andrelvcoelho Год назад +4

    Hi, Rob! Very nice video tutorials you have in your channel! I like them very much. Detailed and at the same time straight to the point. Just a small note: This line is mistaken in your script: test_loader = DataLoader(val_dataset, batch_size=32, shuffle=False). It should be "test_dataset," instead. Perhaps you should generate a new version on Kaggle. All the best!

  • @delaramranjbarshargh9968
    @delaramranjbarshargh9968 10 месяцев назад

    thank you. perfect.

  • @nursemulla
    @nursemulla Год назад

    I think Scarlett knows more about this than me. She started taking a coding class! : )

  • @square007tube
    @square007tube 9 месяцев назад

    Thanks for this video.

  • @LittleTimmyJWC
    @LittleTimmyJWC 9 месяцев назад +1

    What if we’re using multiple datasets? How would we change our code?

  • @aryanverma7506
    @aryanverma7506 5 месяцев назад

    You have just inspired me. Smashed that Subscribe button .

  • @EvanBurnetteMusic
    @EvanBurnetteMusic Год назад +3

    Hey Rob thanks for this perfect intro to pytorch! I've been learning TFJS and this vertical slice really helped. I'm trying to run this on Kaggle and I'm running into this problem: LocalEntryNotFoundError: Connection error, and we cannot find the requested files in the disk cache. Please try again or make sure your Internet connection is on. This is my first time using Kaggle so I'm not sure what I'm doing wrong. No worries if you have no idea either just thought you should know!

    • @EvanBurnetteMusic
      @EvanBurnetteMusic Год назад +6

      I just asked ChatGPT and it seems like you have to turn on internet on Kaggle instances under notebook options in the right sidebar!

    • @ShahafAbileah
      @ShahafAbileah 7 месяцев назад

      @@EvanBurnetteMusic Thanks for that! Looks like you now need to verify your Kaggle account (add a phone number and get a code via SMS). That gives you the option to turn on internet, and also to get GPU support.

  • @artyomkhrenn
    @artyomkhrenn Год назад

    Thanks, Rob!

  • @ArunYadav-qq1cj
    @ArunYadav-qq1cj Год назад +1

    Plz make a pytorch playlist for intermediate to advanced. It is nowhere on the internet.

  • @spencermarx2049
    @spencermarx2049 6 месяцев назад

    Great video! All the necessary things to get the main ideas, and no rambling on the side. The video is 31:31 long, and contains exactly 31:31 of content.

  • @ShahafAbileah
    @ShahafAbileah 7 месяцев назад

    Thanks for making this video! I wonder if it's necessary to define the PlayingCardDataset class at all? It looks like it's a thin wrapper around ImageFolder, which itself inherits from Dataset and already provides all the necessary functionality. So, rather than doing `dataset = PlayingCardDataset(...)` you could simply do `dataset = ImageFolder(...)` and similarly provide the folder path and the transform to use. Right? Perhaps the point here was to indicate that often you _will_ want to define your own dataset class, in order to something more custom, so it helps to introduce the concept here, even if it's not really necessary in this case.

  • @95Coaster
    @95Coaster Год назад

    I see what you did there with the joker cards in the test data set ;-)

  • @SamiTuzcuoglu
    @SamiTuzcuoglu Год назад +1

    everything is good but there are sources for Image Classifier, Any chance you can make a video for object detection ? I couldt find any video or anything for that.

    • @robmulla
      @robmulla  Год назад

      Check ouit my videos on yolov5 and yolov7. They are all about object detection.

    • @SamiTuzcuoglu
      @SamiTuzcuoglu Год назад

      hi @@robmulla, I meant using torch. I couldnt find any source that implementing object detection model using pytorch, all the object detection videos made by prepared models such as yolov5, yolov8, ssd, vgg etc.

    • @SidIndian082
      @SidIndian082 2 месяца назад

      ​@@robmulla where is the code???

  • @Monarped1948
    @Monarped1948 3 месяца назад

    Hiss Rob. I am a beekeeper and as man other beekeeper we have an interest in analyze honey and see the sort of pollen Therese is in it and The number of each sort of pollen in it. It could be analyser by a picture of survey of honeyextract. Do you think that is possible to do Witherspoon this program?

  • @manpham5635
    @manpham5635 Год назад

    This is incredible

  • @muhammadhananbaloch
    @muhammadhananbaloch 3 месяца назад

    what does 239/239 in training loop progress and 9/9 in validation loop progress in each epoch represent at: 27:45

  • @raven9965
    @raven9965 9 месяцев назад

    looking for advice, any resource or recommendations on haw to "grade" the performance of an ML besides error?

  • @Bababoboboa-gu3iu
    @Bababoboboa-gu3iu 9 месяцев назад +7

    Good job just copy-pasting code snippets no beginner would ever understand. Yes, I can take your code and train a model now. But I don't understand half the things you did.

  • @davoodastaraky7608
    @davoodastaraky7608 Год назад

    Thank you Rob :)

  • @hlolkukuku
    @hlolkukuku 11 месяцев назад +1

    def calculate_accuracy(model, data_loader, device):
    model.eval()
    correct = 0
    total = 0
    with torch.no_grad():
    for images, labels in data_loader:
    images, labels = images.to(device), labels.to(device)
    outputs = model(images)
    _, predicted = torch.max(outputs.data, 1)
    total += labels.size(0)
    correct += (predicted == labels).sum().item()
    return 100 * correct / total
    # After training, calculate accuracy on the test set
    test_accuracy = calculate_accuracy(model, test_loader, device)
    print(f"Test Accuracy: {test_accuracy}%")
    the Test Accuracy is 93.20754... %
    Hope thats correct and helps!

  • @youaintd1
    @youaintd1 Год назад +1

    Great one! I'm on mac, so I replaced Cuda with Metal...
    device = torch.device("mps" if torch.backends.mps.is_available() else "cpu")

  • @obayram4615
    @obayram4615 Год назад

    great thanksss🙂

  • @chandramohan1281
    @chandramohan1281 Год назад

    Is it possible to create tflite model so that we can use that in an Android??

  • @bladerun31
    @bladerun31 Год назад +1

    Can run on AMD Radeon gpu no issue?

    • @robmulla
      @robmulla  Год назад

      Nvidia really is the only option.

  • @jacclawrence1040
    @jacclawrence1040 Месяц назад

    i feel like I have copied this code almost exactly, though my training and validation loss doesn't improve through each epoch. has anyone had this problem?

  • @that_one_momo_guy
    @that_one_momo_guy Год назад

    Hi Rob, thanks for the fantastic video! I was left with an outstanding doubt: I don't see how the Adam optimizer 'gets' the information from the loss and backward propagation steps. There is a loss object on which we do backward propagation and then, seemingly completely separately, we do an optimization step with Adam.
    But how does Adam know in which direction to move without having, say, a loss argument? Say, something like "loss.backward(); optimizer.step(loss)" would make sense in my head.

    • @felixmuller9062
      @felixmuller9062 Год назад

      In an earlier line we gave the Adam optimized the model.parameters(). When we do all our computations through our model and in the end through our loss these computations will be stored in an internal state of the model. When we then call loss.backward() all these steps our tensors took through the model (and the loss) are run in reverse order and the backwards calculated gradients are also stored in the internal state of our model. And now hence the Adam optimized has the connection to the model parameters and we stored the backwards calculated gradients in our hidden state in the model, it is enough to call optimizer.step() and let the Adam do his magic.
      I hope this helps.

    • @that_one_momo_guy
      @that_one_momo_guy Год назад

      @@felixmuller9062 Wait that's the part that I don't get: the loss is computed based on the model predictions, but the loss object doesnt 'know' about the parameters right? Like, the model parameters are not an argument of the loss creator function

    • @felixmuller9062
      @felixmuller9062 Год назад

      No but the loss "measures" the deviation from the true classification. When you look in the formulas of the backpropagation algorithm you will see that the first derivative is the one regarding the loss function. From there on, following the chain rule, this flows in the different layers of the network and that's how the gradients for the weights can be calculated.
      Does this clarify a little more?

    • @that_one_momo_guy
      @that_one_momo_guy Год назад

      @@felixmuller9062 Ah I see, thanks! so just to make sure I get it: 'loss' is given a reference to the parameters of the model, and this parameters object has a 'bin' for gradients, so loss.backward() populates this bin?
      I think I was thinking too functional---the key is that backward does have a side effect on an object outside of it's 'house'. (Like loss.backward() modifies not only the loss object but also the parameters object.)

    • @that_one_momo_guy
      @that_one_momo_guy Год назад

      @@felixmuller9062 Wait nevermind, I'm confused again: the loss function does not get information about the model parameters or their location in memory. It just receives the predicted outputs and the correct labels. How does it know where to store the gradients computed?

  • @Levy957
    @Levy957 Год назад

    Amazing!!!!

  • @carmizadok5491
    @carmizadok5491 6 месяцев назад

    Amazing

  • @techkunbyamogh
    @techkunbyamogh Год назад +1

    model = SimpleCardClassifer(num_classes=53)
    print(str(model)[:500]) this is not running at all someone plz help

    • @marco8673
      @marco8673 8 месяцев назад

      i also have this problem, did you solved it?

    • @marco8673
      @marco8673 8 месяцев назад +1

      ok solved it, you just have to turn on the internet on the kaggle notebook

    • @techkunbyamogh
      @techkunbyamogh 8 месяцев назад

      @@marco8673 tnx

  • @kam3766
    @kam3766 Год назад

    Thank you Rob

  • @خالدابوطالب-ع2ب
    @خالدابوطالب-ع2ب 11 месяцев назад

    What a great video! You speaks so similar to Cal Newport

  • @aryamankumar2712
    @aryamankumar2712 2 месяца назад

    goated video

  • @notacupofmilk2021
    @notacupofmilk2021 6 месяцев назад +1

    10:49

  • @designavideo1821
    @designavideo1821 Год назад

    Peace be upon you, how are you, my friend? I am from Iraq and I am a final-year university student in the Computer Engineering Department. He has a graduation project called controlling traffic lights using artificial intelligence (Python). I hope you will make a video designing a project with a program about simulating traffic lights for real cars.❤

  • @prasadjayanti
    @prasadjayanti 7 месяцев назад

    quite useful 👋

  • @DalazG
    @DalazG Год назад

    I wonder how i could create this for forex trading. Wish there was some tutorial

  • @Gunat737
    @Gunat737 Год назад

    Great

  • @CS_n00b
    @CS_n00b Год назад

    very good

  • @08胡溢朗
    @08胡溢朗 Год назад +1

    I got the LocalEntryNotFoundError in
    model = SimpleCardClassifer(num_classes=53)
    print(str(model)[:500])

    • @08胡溢朗
      @08胡溢朗 Год назад +1

      LocalEntryNotFoundError: Connection error, and we cannot find the requested files in the disk cache. Please try again or make sure your Internet connection is on.

  • @buraxta_
    @buraxta_ Месяц назад

  • @ericbroun4657
    @ericbroun4657 Год назад

    ❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤

  • @artwork-studios
    @artwork-studios 6 месяцев назад +1

    Im at 17:46

  • @08胡溢朗
    @08胡溢朗 Год назад

    make a depth images pytorch

  • @aarondrossart6026
    @aarondrossart6026 8 месяцев назад +1

    Video is excellent. I'm just a coding idiot.

  • @RobertHorvat93
    @RobertHorvat93 10 месяцев назад

    Am i the only one who thought this was Tai Lopez ? :))

  • @tilkesh
    @tilkesh 6 месяцев назад

    print('Thank you')

  • @963seeker
    @963seeker Год назад

    Just a side note, the tqdm slows the processing speed. If you are using a PC equipped with the latest GPU(s) then thats fine, but if you are using a laptop you might want to exclude it from the code.

  • @showbikshowmma3520
    @showbikshowmma3520 2 месяца назад

    build a model to understand user's intent plz

  • @umarsaid6340
    @umarsaid6340 Год назад +27

    When you say GPU, your picture is blocking it. Next time, it is better if you just hide your picture and let your voice do the explaining. No offense.

  • @abzrg
    @abzrg 4 месяца назад +1

    I'm watching this with 2x speed and still it doesn't feel fast

  • @zbaktube
    @zbaktube 2 месяца назад

    You can delete this, just one note: You are not importing from nn.Module but you are inheriting from it. Not that important, just for the sake of OOP.

  • @2380raj
    @2380raj 11 месяцев назад

    55 upvotes and 581copy and edits on your kaggel notebook.Hard world out there...😑

  • @itsfarseen
    @itsfarseen 6 месяцев назад

    You robbed my precious 2 hrs rob mulla. I watched your How to Pytorch video hoping you'd show me how to build a model using Pytorch. Then I watched this video as well. Thanks for scamming me of my precious time and attention. You just showed how to import timm and call forward() on it. You didn't teach me how to make a model using Pytorch. Thank you so much 🙏 keep stealing everyone's time.

  • @johnpill1
    @johnpill1 28 дней назад

    Great video, but can we please stop with the awful lo-fi music. It's not big and its not cool 😂

  • @itsfarseen
    @itsfarseen 6 месяцев назад

    Don't watch. Waste of time.
    The whole video is just import timm; timm.Model().forward();

  • @aoa1015
    @aoa1015 Год назад

    Thanks!