title
Lesson 2: Practical Deep Learning for Coders 2022

description
Q&A and all resources for this lesson available here: https://forums.fast.ai/t/lesson-2-official-topic/96033 00:00 - Introduction 00:55 - Reminder to use the fastai book as a companion to the course 02:06 - aiquizzes.com for quizzes on the book 02:36 - Reminder to use fastai forums for links, notebooks, questions, etc. 03:42 - How to efficiently read the forum with summarizations 04:13 - Showing what students have made since last week 06:45 - Putting models into production 08:10 - Jupyter Notebook extensions 09:49 - Gathering images with the Bing/DuckDuckGo 11:10 - How to find information & source code on Python/fastai functions 12:45 - Cleaning the data that we gathered by training a model 13:37 - Explaining various resizing methods 14:50 - RandomResizedCrop explanation 15:50 - Data augmentation 16:57 - Question: Does fastai's data augmentation copy the image multiple times? 18:30 - Training a model so you can clean your data 19:00 - Confusion matrix explanation 20:33 - plot_top_losses explanation 22:10 - ImageClassifierCleaner demonstration 25:28 - CPU RAM vs GPU RAM (VRAM) 27:18 - Putting your model into production 30:20 - Git & Github desktop 31:30 - For Windows users 37:00 - Deploying your deep learning model 37:38 - Dog/cat classifier on Kaggle 38:55 - Exporting your model with learn.export 39:40 - Downloading your model on Kaggle 41:30 - How to take a model you trained to make predictions 43:30 - learn.predict and timing 44:22 - Shaping the data to deploy to Gradio 45:47 - Creating a Gradio interface 48:25 - Creating a Python script from your notebook with #|export 50:47 - Hugging Face deployed model 52:12 - How many epochs do you train for? 53:16 - How to export and download your model in Google Colab 54:25 - Getting Python, Jupyter notebooks, and fastai running on your local machine 1:00:50 - Comparing deployment platforms: Hugging Face, Gradio, Streamlit 1:02:13 - Hugging Face API 1:05:00 - Jeremy's deployed website example - tinypets 1:08:23 - Get to know your pet example by aabdalla 1:09:44 - Source code explanation 1:11:08 - Github Pages Thanks to bencoman, mike.moloch, amr.malik, gagan, fmussari, kurianbenoy, and heylara on forums.fast.ai for creating the transcript. Thanks to Raymond-Wu on forums.fast.ai for creating the timestamps.

detail
{'title': 'Lesson 2: Practical Deep Learning for Coders 2022', 'heatmap': [{'end': 690.481, 'start': 640.193, 'weight': 0.729}, {'end': 2171.308, 'start': 2024.925, 'weight': 1}, {'end': 2534.075, 'start': 2487.297, 'weight': 0.809}, {'end': 2811.594, 'start': 2761.006, 'weight': 0.764}, {'end': 3048.909, 'start': 2947.061, 'weight': 0.974}, {'end': 3361.464, 'start': 3310.399, 'weight': 0.755}, {'end': 3452.614, 'start': 3398.977, 'weight': 0.732}], 'summary': "Covers new course material, neural network history, model deployment, jupyter notebook benefits, data processing, gradio and hugging face spaces setup, image classification, notebook conversion to python script, gradio and streamlet flexibility, and creating and hosting javascript websites, with specific examples and quantifiable data like over 39 replies to a student project on 'damaged car classifier.'", 'chapters': [{'end': 362.509, 'segs': [{'end': 53.895, 'src': 'embed', 'start': 29.295, 'weight': 1, 'content': [{'end': 41.565, 'text': "It feels like going back to what things were like in the very early days, because we're doing like some really new, really cool stuff which you know,", 'start': 29.295, 'duration': 12.27}, {'end': 43.807, 'text': "stuff that hasn't really been in courses like this before.", 'start': 41.565, 'duration': 2.242}, {'end': 45.528, 'text': "So I'm super, super excited.", 'start': 43.847, 'duration': 1.681}, {'end': 52.574, 'text': "So thanks a lot for coming back after lesson one, and I hope it's worth you coming back.", 'start': 48.11, 'duration': 4.464}, {'end': 53.895, 'text': "I think, I think you're going to love it.", 'start': 52.634, 'duration': 1.261}], 'summary': 'Exciting new course content, bringing early days nostalgia, aims to impress returning students.', 'duration': 24.6, 'max_score': 29.295, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A029295.jpg'}, {'end': 104.621, 'src': 'embed', 'start': 73.991, 'weight': 2, 'content': [{'end': 80.076, 'text': 'you can go to the fastai fastbook repo to see the notebooks or through course.fast.ai.', 'start': 73.991, 'duration': 6.085}, {'end': 82.818, 'text': 'you can read it there through example, through through colab,', 'start': 80.076, 'duration': 2.742}, {'end': 95.354, 'text': "And also remember that the book I mean the book's got a lot of stuff that we didn't cover in the course, like you know,", 'start': 89.05, 'duration': 6.304}, {'end': 104.621, 'text': 'stuff I find pretty interesting about the history of neural networks, some of which has some really interesting personal stories actually,', 'start': 95.354, 'duration': 9.267}], 'summary': 'Fastai fastbook repo and course.fast.ai offer additional content not covered in the course.', 'duration': 30.63, 'max_score': 73.991, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A073991.jpg'}, {'end': 193.233, 'src': 'embed', 'start': 139.47, 'weight': 3, 'content': [{'end': 143.132, 'text': 'and it actually uses repetitive space learning techniques to make sure that you never forget.', 'start': 139.47, 'duration': 3.662}, {'end': 146.534, 'text': 'So do check out aiquizzes.com.', 'start': 144.433, 'duration': 2.101}, {'end': 149.156, 'text': "It's all brand new questions.", 'start': 147.055, 'duration': 2.101}, {'end': 153.9, 'text': "They're different to the ones in the book, and they're really nicely curated and put together.", 'start': 149.176, 'duration': 4.724}, {'end': 155.921, 'text': 'So check out aiquizzes.com as well.', 'start': 154.16, 'duration': 1.761}, {'end': 164.077, 'text': "Remember, as well as course.fast.ai, there's also forums.fast.ai.", 'start': 159.095, 'duration': 4.982}, {'end': 174.321, 'text': 'So course.fast.ai is where you want to go to get links to all the notebooks and Kaggle stuff and all that stuff.', 'start': 164.977, 'duration': 9.344}, {'end': 184.167, 'text': "You'll also find on forums.fast.ai every lesson has an official topic, you know, with all the information you'll need.", 'start': 175.502, 'duration': 8.665}, {'end': 186.849, 'text': "Generally there'll be a bit more info on the forums.", 'start': 184.267, 'duration': 2.582}, {'end': 193.233, 'text': 'We try to keep the course lean and mean, and the forums are a bit more detailed.', 'start': 186.969, 'duration': 6.264}], 'summary': 'Aiquizzes.com offers new questions, while course.fast.ai provides links to notebooks and kaggle material. forums.fast.ai includes official lesson topics and additional information.', 'duration': 53.763, 'max_score': 139.47, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A0139470.jpg'}, {'end': 300.156, 'src': 'embed', 'start': 274.275, 'weight': 0, 'content': [{'end': 284.612, 'text': "I had a lot of trouble deciding which ones to share, because they're all so good, so I've actually decided to kind of you know,", 'start': 274.275, 'duration': 10.337}, {'end': 286.693, 'text': 'went the easy route and I just picked the first.', 'start': 284.612, 'duration': 2.081}, {'end': 290.854, 'text': "So I'm just going to show you the first ones that were posted because they're all so good.", 'start': 287.373, 'duration': 3.481}, {'end': 297.255, 'text': 'So the first, the very, very first one to be posted is a damaged car classifier.', 'start': 290.894, 'duration': 6.361}, {'end': 300.156, 'text': 'So that worked out pretty well it looks like.', 'start': 298.475, 'duration': 1.681}], 'summary': 'A damaged car classifier was the first successful project posted.', 'duration': 25.881, 'max_score': 274.275, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A0274275.jpg'}], 'start': 1.083, 'title': 'New course material and neural network history', 'summary': "Covers new and unique course material, free access to resources, neural network history, quiz practice on aiquizzes.com, and student projects including a 'damaged car classifier' with over 39 replies.", 'chapters': [{'end': 95.354, 'start': 1.083, 'title': 'Lesson 2: new material and resources', 'summary': 'Discusses the excitement about new and unique material being covered in the course, along with the availability of additional resources including free access to the book and notebooks.', 'duration': 94.271, 'highlights': ['The course is covering new and unique material not typically found in similar courses, generating high levels of excitement among the participants.', 'The book accompanying the course is freely available and can be accessed through the fastai fastbook repo or course.fast.ai, providing additional resources for the participants.', "The speaker expresses enthusiasm and appreciation for the attendees' return after the first lesson, indicating a positive response to the course content.", 'Due to an administrative issue at the university, the speaker is conducting the session from a different location, which may have caused a change in the environment for the participants.']}, {'end': 362.509, 'start': 95.354, 'title': 'Neural networks history and quizzes', 'summary': "Discusses the history of neural networks, introduces aiquizzes.com for quiz practice, and highlights the use of forums.fast.ai for additional course information and support. it also showcases various projects shared by students, with the 'damaged car classifier' receiving the most attention with over 39 replies.", 'duration': 267.155, 'highlights': ['The chapter introduces aiquizzes.com, a site for quizzes about the book that utilizes repetitive space learning techniques to ensure better retention.', 'The forums.fast.ai is recommended for detailed course information and support, where every lesson has an official topic with additional information. There is a feature to summarize topics and view the most upvoted replies.', "Various student projects are showcased, with the 'damaged car classifier' receiving considerable attention with over 39 replies.", 'Projects shared by students include a blog post in FastPages, a beard detector, and a web app to classify food.']}], 'duration': 361.426, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A01083.jpg', 'highlights': ["The 'damaged car classifier' project received over 39 replies, indicating significant engagement and interest from the participants.", 'The course covers new and unique material, generating high levels of excitement among the participants.', 'The book accompanying the course is freely available and can be accessed through the fastai fastbook repo or course.fast.ai, providing additional resources for the participants.', 'The chapter introduces aiquizzes.com, a site for quizzes about the book that utilizes repetitive space learning techniques to ensure better retention.', 'The forums.fast.ai is recommended for detailed course information and support, where every lesson has an official topic with additional information.']}, {'end': 678.857, 'segs': [{'end': 450.157, 'src': 'embed', 'start': 420.327, 'weight': 0, 'content': [{'end': 427.034, 'text': "It's figure out what problem you want to solve, figure out how to find the data for it, gather some data and so forth.", 'start': 420.327, 'duration': 6.707}, {'end': 434.821, 'text': "So what's the kind of first step after you've got your data? The next step is data cleaning.", 'start': 428.695, 'duration': 6.126}, {'end': 441.669, 'text': "And if you go to Chapter 2 of the book, which I'm going to go ahead and open up now.", 'start': 435.723, 'duration': 5.946}, {'end': 447.515, 'text': 'So here is the book.', 'start': 444.033, 'duration': 3.482}, {'end': 450.157, 'text': 'so you can open it in Colab directly from the course.', 'start': 447.515, 'duration': 2.642}], 'summary': 'Data cleaning is the next step after gathering data for problem-solving.', 'duration': 29.83, 'max_score': 420.327, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A0420327.jpg'}, {'end': 550.444, 'src': 'embed', 'start': 473.812, 'weight': 1, 'content': [{'end': 478.954, 'text': "And so we're going to go to the part of the book where we start cleaning the data.", 'start': 473.812, 'duration': 5.142}, {'end': 485.497, 'text': "So I'll click on navigate and we'll go down here, gathering data, there we are.", 'start': 479.734, 'duration': 5.763}, {'end': 490.779, 'text': 'So we could do a quick bit of revision first.', 'start': 488.378, 'duration': 2.401}, {'end': 499.934, 'text': 'Now by the way, I will mention a lot of people ask me what are the little tricks I use for getting around Jupyter Notebook so quickly and easily.', 'start': 490.819, 'duration': 9.115}, {'end': 504.896, 'text': "One of the really nice ones, as you'll see, is this navigate menu, which actually doesn't appear by default.", 'start': 500.714, 'duration': 4.182}, {'end': 519.124, 'text': 'So if you install something called Jupyter Notebook Extensions, Jupyter Notebook Extensions, and so you just pip, install them,', 'start': 505.877, 'duration': 13.247}, {'end': 520.025, 'text': 'follow the instructions.', 'start': 519.124, 'duration': 0.901}, {'end': 527.115, 'text': 'And then restart Jupyter.', 'start': 526.095, 'duration': 1.02}, {'end': 532.397, 'text': 'Obviously, Colab already has a table of contents, by the way.', 'start': 528.556, 'duration': 3.841}, {'end': 535.379, 'text': "So this is just if you're using something local, for example.", 'start': 532.437, 'duration': 2.942}, {'end': 539.2, 'text': "Then you'll see here that this nb-extensions thing will appear.", 'start': 536.399, 'duration': 2.801}, {'end': 544.842, 'text': 'And if you click on table of contents 2, that gets you this handy navigation bar.', 'start': 539.92, 'duration': 4.922}, {'end': 550.444, 'text': 'The other thing I really like is this one here called collapsible headings.', 'start': 545.483, 'duration': 4.961}], 'summary': 'The speaker discusses using jupyter notebook extensions for efficient navigation and mentions the table of contents feature in colab.', 'duration': 76.632, 'max_score': 473.812, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A0473812.jpg'}, {'end': 648.86, 'src': 'embed', 'start': 598.034, 'weight': 2, 'content': [{'end': 607.877, 'text': "I've just gone ahead and replaced being with ddg, because the bing api requires getting an sdk key, which honestly, it's like.", 'start': 598.034, 'duration': 9.843}, {'end': 613.598, 'text': 'the hardest thing in deep learning is figuring out the the bing azure website and getting that sorted out.', 'start': 607.877, 'duration': 5.721}, {'end': 616.599, 'text': "ddg doesn't so um.", 'start': 613.598, 'duration': 3.001}, {'end': 620.76, 'text': "uh, it's, it's basically exactly the same um, and you can, um.", 'start': 616.599, 'duration': 4.161}, {'end': 625.775, 'text': "I'll share this notebook as well on the course website in the forum.", 'start': 621.691, 'duration': 4.084}, {'end': 629.338, 'text': "but all I've basically done is I've replaced bing with ddg and got rid of the key.", 'start': 625.775, 'duration': 3.563}, {'end': 637.866, 'text': 'So then just like we did last week we can search for things, and so in the book we did a bear detector.', 'start': 630.259, 'duration': 7.607}, {'end': 640.193, 'text': 'because at the time I wrote it,', 'start': 638.691, 'duration': 1.502}, {'end': 648.86, 'text': "my then toddler was very interested in me helping identify teddy bears and I certainly didn't want her accidentally cuddling a grizzly bear.", 'start': 640.193, 'duration': 8.667}], 'summary': 'Replaced bing with ddg, simplified process, shared notebook on course website.', 'duration': 50.826, 'max_score': 598.034, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A0598034.jpg'}], 'start': 362.709, 'title': 'Model deployment and jupyter notebooks', 'summary': 'Discusses the importance of data cleaning and model deployment, as well as the benefits of jupyter notebook extensions, such as the navigate menu and collapsible headings, which provide a convenient navigation bar and the ability to close and open sections with keyboard shortcuts. it also covers setting up a notebook and image searching using ddg, sharing the notebook on the course website, and demonstrating a bear detector model.', 'chapters': [{'end': 499.934, 'start': 362.709, 'title': 'Putting model in production', 'summary': 'Discusses putting a model in production, emphasizing the importance of data cleaning and referring to specific chapters in the book for further guidance. it also highlights the relevance of the fast.ai course for running notebooks and demonstrates navigating jupyter notebook efficiently.', 'duration': 137.225, 'highlights': ['The importance of data cleaning is emphasized as the next step after gathering data, with a reference to Chapter 2 of the book.', 'The demonstration of accessing specific chapters in the book and using Colab for running notebooks is provided, highlighting the practical aspect of learning.', 'The relevance of the fast.ai course for guiding through notebook execution and efficient navigation in Jupyter Notebook is mentioned.']}, {'end': 575.335, 'start': 500.714, 'title': 'Enhancing jupyter notebooks with extensions', 'summary': 'Highlights the installation and benefits of jupyter notebook extensions, such as the navigate menu and collapsible headings, which provide a convenient navigation bar and the ability to close and open sections with keyboard shortcuts.', 'duration': 74.621, 'highlights': ['Installing Jupyter Notebook Extensions, through pip, provides useful features like navigate menu and collapsible headings, enhancing the user experience for local usage.', "The navigate menu from Jupyter Notebook Extensions offers a table of contents and a handy navigation bar for local usage, making it easier to navigate through the notebook's sections.", 'The collapsible headings feature from Jupyter Notebook Extensions allows users to conveniently close and open sections, with the added benefit of keyboard shortcuts for easy navigation within the notebook.']}, {'end': 678.857, 'start': 575.902, 'title': 'Notebook set up and image searching', 'summary': 'Covers setting up a notebook by replacing bing api with ddg for image searching, sharing the notebook on the course website, and demonstrating a bear detector model.', 'duration': 102.955, 'highlights': ['The chapter demonstrates replacing Bing API with ddg for image searching, making it easier to use without requiring an SDK key.', 'It shows how to share the notebook on the course website, providing a platform for collaboration and learning.', 'The chapter includes a demonstration of a bear detector model, highlighting practical applications of image searching and model development.']}], 'duration': 316.148, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A0362709.jpg', 'highlights': ['The importance of data cleaning is emphasized as the next step after gathering data, with a reference to Chapter 2 of the book.', 'Installing Jupyter Notebook Extensions, through pip, provides useful features like navigate menu and collapsible headings, enhancing the user experience for local usage.', 'The chapter includes a demonstration of a bear detector model, highlighting practical applications of image searching and model development.', "The navigate menu from Jupyter Notebook Extensions offers a table of contents and a handy navigation bar for local usage, making it easier to navigate through the notebook's sections.", 'The demonstration of accessing specific chapters in the book and using Colab for running notebooks is provided, highlighting the practical aspect of learning.', 'The chapter demonstrates replacing Bing API with ddg for image searching, making it easier to use without requiring an SDK key.', 'The relevance of the fast.ai course for guiding through notebook execution and efficient navigation in Jupyter Notebook is mentioned.', 'The collapsible headings feature from Jupyter Notebook Extensions allows users to conveniently close and open sections, with the added benefit of keyboard shortcuts for easy navigation within the notebook.', 'It shows how to share the notebook on the course website, providing a platform for collaboration and learning.']}, {'end': 1738.392, 'segs': [{'end': 713.107, 'src': 'embed', 'start': 680.458, 'weight': 4, 'content': [{'end': 683.078, 'text': "There's a few tips here in the book.", 'start': 680.458, 'duration': 2.62}, {'end': 690.481, 'text': "One is that if you put a double question mark next to any function name you'll actually get the whole source code for it.", 'start': 684.219, 'duration': 6.262}, {'end': 703.384, 'text': "And by the same token if you put a single question mark you'll get a brief, you know, little bit of information.", 'start': 692.061, 'duration': 11.323}, {'end': 713.107, 'text': "If you've got nbdev installed I think it's nbdev you need.", 'start': 704.605, 'duration': 8.502}], 'summary': 'The book provides tips for accessing source code and brief information on functions by using question marks and having nbdev installed.', 'duration': 32.649, 'max_score': 680.458, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A0680458.jpg'}, {'end': 821.314, 'src': 'embed', 'start': 771.451, 'weight': 2, 'content': [{'end': 774.652, 'text': 'Before you clean the data, you train a model.', 'start': 771.451, 'duration': 3.201}, {'end': 780.633, 'text': "Now I know that's going to sound really backwards to what you've probably heard a thousand times,", 'start': 775.412, 'duration': 5.221}, {'end': 785.634, 'text': 'which is that first you clean your data and then you train your model.', 'start': 780.633, 'duration': 5.001}, {'end': 788.195, 'text': "But I'm going to show you something really amazing.", 'start': 786.595, 'duration': 1.6}, {'end': 791.416, 'text': "First we're going to train a model, and you'll see why in a moment.", 'start': 788.395, 'duration': 3.021}, {'end': 796.017, 'text': 'So to train a model, just like before, we use a data block to grab our data loaders.', 'start': 791.456, 'duration': 4.561}, {'end': 799.598, 'text': "There's lots of information here in the book about what's going on here.", 'start': 797.177, 'duration': 2.421}, {'end': 811.544, 'text': 'There we go, and so then we can call show batch to see them as per usual.', 'start': 805.117, 'duration': 6.427}, {'end': 819.112, 'text': "There's a little sidebar here in the book I'll quickly mention, which is about the different ways we could resize.", 'start': 813.927, 'duration': 5.185}, {'end': 821.314, 'text': 'I think we briefly mentioned it last week.', 'start': 819.132, 'duration': 2.182}], 'summary': 'Train model before cleaning data for an amazing approach.', 'duration': 49.863, 'max_score': 771.451, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A0771451.jpg'}, {'end': 956.868, 'src': 'embed', 'start': 927.789, 'weight': 0, 'content': [{'end': 934.095, 'text': 'So they had very big scans of documents, and they wanted to figure out whether it was French or German just by looking at images.', 'start': 927.789, 'duration': 6.306}, {'end': 940.892, 'text': "And they said the pictures were too big, what should I do? I said use random resized crop and that way you'll grab different bits of the image.", 'start': 934.596, 'duration': 6.296}, {'end': 948.319, 'text': 'And this is very nice because you could run lots and lots of epochs and get slightly different pictures each time.', 'start': 941.573, 'duration': 6.746}, {'end': 951.182, 'text': 'So this is a very good technique.', 'start': 949.681, 'duration': 1.501}, {'end': 956.868, 'text': 'And this idea of getting different pictures each time from the same image is called data augmentation.', 'start': 951.683, 'duration': 5.185}], 'summary': 'Using random resized crop for data augmentation in image classification.', 'duration': 29.079, 'max_score': 927.789, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A0927789.jpg'}, {'end': 1589.677, 'src': 'embed', 'start': 1564.16, 'weight': 1, 'content': [{'end': 1573.806, 'text': "So you need to make sure that you close any notebooks that are using the GPU that you're not using and really only use it one thing at a time on the GPU,", 'start': 1564.16, 'duration': 9.646}, {'end': 1575.647, 'text': "otherwise you'll almost certainly run out of memory.", 'start': 1573.806, 'duration': 1.841}, {'end': 1580.971, 'text': "So we've got the first few reds starting to appear, so remember to ask.", 'start': 1576.168, 'duration': 4.803}, {'end': 1587.716, 'text': "And in terms of the yellows, it's important to know as you watch the video.", 'start': 1582.352, 'duration': 5.364}, {'end': 1589.677, 'text': "I'm not asking you to run all this code.", 'start': 1587.716, 'duration': 1.961}], 'summary': 'Close unused gpu notebooks to avoid memory issues and watch video for important instructions.', 'duration': 25.517, 'max_score': 1564.16, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A01564160.jpg'}], 'start': 680.458, 'title': 'Data processing and management', 'summary': 'Covers using nbdev for documentation and source code, image data processing techniques, and data cleaning and gpu memory management, with a specific example of reducing error rate to three percent using random resized crop for recognizing french and german texts from images.', 'chapters': [{'end': 821.314, 'start': 680.458, 'title': 'Using nbdev for documentation and source code', 'summary': 'Discusses using nbdev for accessing source code and documentation, as well as showcasing a surprising approach to cleaning data before training a model, and utilizing data block for data loaders and resizing options.', 'duration': 140.856, 'highlights': ['Using double question marks next to any function name in nbdev provides the whole source code for it, while a single question mark gives a brief information snippet.', "With nbdev installed, typing 'doc' provides a link straight to the documentation, with examples and a link to the source code.", 'Demonstrates a surprising approach to cleaning data before training a model, contrary to the conventional method.', "Utilizing data block for grabbing data loaders and using 'show batch' to display the data.", 'Brief mention of different ways to resize showcased in the book.']}, {'end': 1350.566, 'start': 821.355, 'title': 'Image data processing techniques', 'summary': 'Covers techniques such as squishing, cropping, padding, random resized crop, and data augmentation, emphasizing their applications and impact on model training, including a specific example of using random resized crop for recognizing french and german texts from images resulting in a three percent error rate.', 'duration': 529.211, 'highlights': ['Using random resized crop and augmentation transforms can result in a three percent error rate in recognizing French and German texts from images.', 'Confusion matrix analysis provides insights into model performance, identifying specific classification errors and their impact.', 'Utilizing the Fast.ai image classifier cleaner enables the identification and cleaning of wrongly labeled data within the dataset.']}, {'end': 1738.392, 'start': 1351.499, 'title': 'Data cleaning and gpu memory management', 'summary': "Discusses the process of cleaning training and validation sets by identifying and rectifying mislabeled or irrelevant data, followed by practical advice on gpu memory management and efficient video-watching techniques for learning, concluding with an introduction to hugging face spaces and commendation of tanishq abraham's contributions.", 'duration': 386.893, 'highlights': ['The process of cleaning training and validation sets involves identifying and rectifying mislabeled or irrelevant data, thus improving the quality of the datasets.', 'Practical advice is provided for efficient GPU memory management, emphasizing the importance of closing unused notebooks to free up memory and avoiding overloading the GPU to prevent memory depletion.', 'Effective video-watching techniques, such as watching the entire video without interaction followed by a detailed review, are recommended to enhance learning efficiency.', "An introduction to Hugging Face Spaces and Gradio is provided, highlighting their utility in deploying models, with a specific reference to Tanishq Abraham's comprehensive blog post on the topic.", "Commendation of Tanishq Abraham's contributions to the fast.ai community and his expertise in deep learning, with a lighthearted reference to his past fame as a child prodigy."]}], 'duration': 1057.934, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A0680458.jpg', 'highlights': ['Using random resized crop and augmentation transforms achieves 3% error rate in recognizing French and German texts from images.', 'Practical advice for efficient GPU memory management, emphasizing closing unused notebooks to free up memory.', 'Demonstrates surprising approach to cleaning data before training a model, contrary to conventional method.', "Utilizing data block for grabbing data loaders and using 'show batch' to display the data.", 'Using double question marks next to any function name in nbdev provides the whole source code for it.']}, {'end': 2450.985, 'segs': [{'end': 1778.952, 'src': 'embed', 'start': 1754.462, 'weight': 4, 'content': [{'end': 1766.166, 'text': "And we're going to put a model in production where we're going to take the model we trained and we are going to basically copy it to this Hugging Face Spaces server and write a user interface for it.", 'start': 1754.462, 'duration': 11.704}, {'end': 1772.866, 'text': "So, stat, let's go, create new space.", 'start': 1770.104, 'duration': 2.762}, {'end': 1778.952, 'text': "Okay, so you can just go ahead and say, all right, so obviously you sign up, the whole thing's free.", 'start': 1774.127, 'duration': 4.825}], 'summary': 'Putting a trained model into production on hugging face spaces server with free sign-up.', 'duration': 24.49, 'max_score': 1754.462, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A01754462.jpg'}, {'end': 1858.387, 'src': 'embed', 'start': 1829.654, 'weight': 1, 'content': [{'end': 1832.196, 'text': "And so Git's a very, very useful tool.", 'start': 1829.654, 'duration': 2.542}, {'end': 1840.157, 'text': "I'm not going to talk about it in detail, but let's kind of quickly learn about how to use it right?", 'start': 1832.296, 'duration': 7.861}, {'end': 1848.181, 'text': 'Now, Git, you can use it through something called GitHub Desktop, which is actually pretty great.', 'start': 1841.117, 'duration': 7.064}, {'end': 1856.406, 'text': 'And even people who use Git through the console should probably be considering using GitHub Desktop as well,', 'start': 1848.541, 'duration': 7.865}, {'end': 1858.387, 'text': "because something's just much faster and easier in it.", 'start': 1856.406, 'duration': 1.981}], 'summary': 'Git is a useful tool. consider using github desktop for faster and easier usage.', 'duration': 28.733, 'max_score': 1829.654, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A01829654.jpg'}, {'end': 1978.169, 'src': 'embed', 'start': 1926.194, 'weight': 0, 'content': [{'end': 1930.396, 'text': 'So Windows, believe it or not, can actually run a full Linux environment.', 'start': 1926.194, 'duration': 4.202}, {'end': 1936.34, 'text': 'And to do it is right typing a single line, which is this.', 'start': 1931.677, 'duration': 4.663}, {'end': 1950.483, 'text': "So if you go to just Google for WSL install, run PowerShell as administrator, Paste that command, wait about five minutes, reboot, you're done.", 'start': 1937.22, 'duration': 13.263}, {'end': 1952.305, 'text': 'You now have a complete Linux environment.', 'start': 1950.643, 'duration': 1.662}, {'end': 1959.31, 'text': "Now one of the reasons I'm mentioning this is I'm going to show you how to do stuff on your own machine now.", 'start': 1952.985, 'duration': 6.325}, {'end': 1969.478, 'text': 'And so this is like going to a bit of an extra level of geekery, which some data scientists may be less familiar with.', 'start': 1961.051, 'duration': 8.427}, {'end': 1972.902, 'text': "So, you know, don't be worried about the terminal.", 'start': 1970.279, 'duration': 2.623}, {'end': 1978.169, 'text': "You're going to, I think you're going to find it really helpful and much less scary than you expect.", 'start': 1972.922, 'duration': 5.247}], 'summary': 'Windows can run a full linux environment with a simple command, making it accessible to data scientists and reducing terminal anxiety.', 'duration': 51.975, 'max_score': 1926.194, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A01926194.jpg'}, {'end': 2171.308, 'src': 'heatmap', 'start': 2024.925, 'weight': 1, 'content': [{'end': 2026.305, 'text': 'And so in your terminal.', 'start': 2024.925, 'duration': 1.38}, {'end': 2030.106, 'text': "one of the really nice things about using a terminal is you don't have to follow lots of instructions about.", 'start': 2026.305, 'duration': 3.801}, {'end': 2031.466, 'text': 'click here, click here, click here.', 'start': 2030.106, 'duration': 1.36}, {'end': 2033.006, 'text': 'You just copy and paste things.', 'start': 2031.806, 'duration': 1.2}, {'end': 2039.448, 'text': "So I'm just going to hit, you just copy this and you go over to your terminal and you paste it in and you run it.", 'start': 2033.327, 'duration': 6.121}, {'end': 2044.927, 'text': "And after you do that, you'll find that you've now got, directory.", 'start': 2040.428, 'duration': 4.499}, {'end': 2055.071, 'text': 'And so that new directory initially is empty and they tell you, okay, go ahead and create a file with this in it.', 'start': 2047.209, 'duration': 7.862}, {'end': 2066.275, 'text': "Okay, so how do you create a file with that in it when we're in here in our Linux environment, on Windows or in the terminal on Mac or whatever??", 'start': 2057.391, 'duration': 8.884}, {'end': 2068.815, 'text': 'Well, all you do in Windows.', 'start': 2067.475, 'duration': 1.34}, {'end': 2078.777, 'text': "if you just type explorer.exe dot, it'll open up explorer here or, better still, on either Mac or Linux or Windows.", 'start': 2068.815, 'duration': 9.962}, {'end': 2095.746, 'text': 'So yeah, so regardless of what computer type of computer on, you can just type code dot and it will pop up Visual Studio Code and open up your folder.', 'start': 2082.4, 'duration': 13.346}, {'end': 2105.808, 'text': "And so then you can just go ahead and, if you haven't used VS Code before, it's really well worth taking a few minutes to read some tutorials.", 'start': 2096.505, 'duration': 9.303}, {'end': 2107.709, 'text': "It's a really great IDE.", 'start': 2105.888, 'duration': 1.821}, {'end': 2118.551, 'text': 'And so you can go ahead and create an app.py file, like they tell you to, app.py file containing what they told you to put in it.', 'start': 2108.949, 'duration': 9.602}, {'end': 2120.012, 'text': 'Here it is here.', 'start': 2119.451, 'duration': 0.561}, {'end': 2125.499, 'text': "All right, we're nearly there.", 'start': 2122.113, 'duration': 3.386}, {'end': 2128.905, 'text': 'So you can now go ahead and save that.', 'start': 2126.18, 'duration': 2.725}, {'end': 2136.88, 'text': 'and then you need to commit it to Hugging Face Spaces.', 'start': 2130.473, 'duration': 6.407}, {'end': 2140.745, 'text': 'So one really easy way is just in Visual Studio itself.', 'start': 2137.461, 'duration': 3.284}, {'end': 2149.554, 'text': "you can just click here and that'll give you a place where you type a message and you hit tick and it'll send it off to Hugging Face Spaces for you.", 'start': 2140.745, 'duration': 8.809}, {'end': 2161.421, 'text': "So, once you've done that, you can then go to back to the exact same website you're on before Hacking Space Spaces, JPHO,", 'start': 2150.556, 'duration': 10.865}, {'end': 2171.308, 'text': "Minimal and what you'll find now is that it'll take about a minute to build your website,", 'start': 2161.421, 'duration': 9.887}], 'summary': 'Using terminal, create and commit app.py, then build website in about a minute.', 'duration': 146.383, 'max_score': 2024.925, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A02024925.jpg'}, {'end': 2161.421, 'src': 'embed', 'start': 2130.473, 'weight': 2, 'content': [{'end': 2136.88, 'text': 'and then you need to commit it to Hugging Face Spaces.', 'start': 2130.473, 'duration': 6.407}, {'end': 2140.745, 'text': 'So one really easy way is just in Visual Studio itself.', 'start': 2137.461, 'duration': 3.284}, {'end': 2149.554, 'text': "you can just click here and that'll give you a place where you type a message and you hit tick and it'll send it off to Hugging Face Spaces for you.", 'start': 2140.745, 'duration': 8.809}, {'end': 2161.421, 'text': "So, once you've done that, you can then go to back to the exact same website you're on before Hacking Space Spaces, JPHO,", 'start': 2150.556, 'duration': 10.865}], 'summary': 'Commit code to hugging face spaces via visual studio with a simple click.', 'duration': 30.948, 'max_score': 2130.473, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A02130473.jpg'}, {'end': 2252.835, 'src': 'embed', 'start': 2225.163, 'weight': 5, 'content': [{'end': 2229.364, 'text': 'so now we have to take the next step, which is to turn this into a deep learning model.', 'start': 2225.163, 'duration': 4.201}, {'end': 2235.226, 'text': "All right, so first we're going to need a deep learning model.", 'start': 2231.145, 'duration': 4.081}, {'end': 2243.952, 'text': "And there's a few different ways we can get ourselves a deep learning model, but basically we're going to have to train one.", 'start': 2237.329, 'duration': 6.623}, {'end': 2248.594, 'text': "So I've got a couple of examples.", 'start': 2245.332, 'duration': 3.262}, {'end': 2251.715, 'text': "I've got a Kaggle example and a Colab example.", 'start': 2249.214, 'duration': 2.501}, {'end': 2252.835, 'text': "Maybe I'll quickly show you both.", 'start': 2251.755, 'duration': 1.08}], 'summary': 'The next step is to train a deep learning model with a couple of examples from kaggle and colab.', 'duration': 27.672, 'max_score': 2225.163, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A02225163.jpg'}], 'start': 1738.412, 'title': 'Setting up gradio, hugging face spaces, and terminal for data science', 'summary': 'Covers the process of setting up gradio and hugging face spaces for model deployment, highlighting free accessibility, use of git and github desktop, and availability of linux environment on windows. it also discusses using the terminal for data science tasks, including setting up a development environment, creating and running code, and deploying models, with a focus on windows, linux, and mac, and utilizing tools like visual studio code and hugging face spaces.', 'chapters': [{'end': 1952.305, 'start': 1738.412, 'title': 'Setting up gradio and hugging face spaces', 'summary': 'Explains the process of setting up gradio and hugging face spaces for model deployment, emphasizing the free accessibility, the use of git and github desktop, and the availability of linux environment on windows.', 'duration': 213.893, 'highlights': ['Setting up Gradio and Hugging Face Spaces for model deployment is free, making it accessible for everyone.', 'The use of Git and GitHub Desktop for version control is emphasized, with a focus on its ease of use and usefulness for data scientists and software developers.', 'Windows users can run a complete Linux environment using the Windows Subsystem for Linux (WSL), making it accessible by running a single command.']}, {'end': 2450.985, 'start': 1952.985, 'title': 'Using terminal for data science', 'summary': 'Discusses the use of the terminal for data science tasks, including setting up a development environment, creating and running code, and deploying models, with a focus on using windows, linux, and mac, and utilizing tools like visual studio code and hugging face spaces.', 'duration': 498, 'highlights': ['Utilizing the terminal for data science tasks, including setting up a development environment, creating and running code, and deploying models, with a focus on using Windows, Linux, and Mac.', 'Emphasizing the use of Visual Studio Code and Hugging Face Spaces for creating and deploying code and models.', 'Demonstrating the steps for creating and deploying a deep learning model using Kaggle and Colab, including dataset preparation, model training, and exporting the trained model.']}], 'duration': 712.573, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A01738412.jpg', 'highlights': ['Windows users can run a complete Linux environment using the Windows Subsystem for Linux (WSL), making it accessible by running a single command.', 'The use of Git and GitHub Desktop for version control is emphasized, with a focus on its ease of use and usefulness for data scientists and software developers.', 'Emphasizing the use of Visual Studio Code and Hugging Face Spaces for creating and deploying code and models.', 'Utilizing the terminal for data science tasks, including setting up a development environment, creating and running code, and deploying models, with a focus on using Windows, Linux, and Mac.', 'Setting up Gradio and Hugging Face Spaces for model deployment is free, making it accessible for everyone.', 'Demonstrating the steps for creating and deploying a deep learning model using Kaggle and Colab, including dataset preparation, model training, and exporting the trained model.']}, {'end': 2891.228, 'segs': [{'end': 2534.075, 'src': 'heatmap', 'start': 2487.297, 'weight': 0.809, 'content': [{'end': 2495.482, 'text': "Okay, so we've got a notebook for that, and so I'm going to take you through how we use a model that we've trained to make predictions.", 'start': 2487.297, 'duration': 8.185}, {'end': 2502.714, 'text': "There's a few funny things with hash pipe which I'll explain in a moment, just ignore those for now.", 'start': 2497.083, 'duration': 5.631}, {'end': 2505.857, 'text': 'So we import fastai as usual.', 'start': 2502.914, 'duration': 2.943}, {'end': 2507.86, 'text': 'we import gradio, as we did before.', 'start': 2505.857, 'duration': 2.003}, {'end': 2510.007, 'text': 'We copy in.', 'start': 2508.847, 'duration': 1.16}, {'end': 2513.329, 'text': 'the exact same is cat definition we had before.', 'start': 2510.007, 'duration': 3.322}, {'end': 2514.049, 'text': "That's important.", 'start': 2513.329, 'duration': 0.72}, {'end': 2523.552, 'text': 'any external functions that you used in your Labeling need to be included here as well, because that learner refers to those functions.', 'start': 2514.049, 'duration': 9.503}, {'end': 2529.554, 'text': "Okay, it saves that learners saved everything about your model, But it doesn't have the source code to the function.", 'start': 2523.552, 'duration': 6.002}, {'end': 2534.075, 'text': "So you need to keep those with you So let's try running this.", 'start': 2529.614, 'duration': 4.461}], 'summary': 'Using a trained model, we made predictions with fastai and gradio, including necessary external functions.', 'duration': 46.778, 'max_score': 2487.297, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A02487297.jpg'}, {'end': 2567.454, 'src': 'embed', 'start': 2542.056, 'weight': 0, 'content': [{'end': 2555.227, 'text': 'I just popped a dog picture there and And so we can create a Python image, library image from that dog, turn it into a slightly smaller one,', 'start': 2542.056, 'duration': 13.171}, {'end': 2556.568, 'text': "so it doesn't overwhelm our whole screen.", 'start': 2555.227, 'duration': 1.341}, {'end': 2557.809, 'text': 'and there is a picture of a dog.', 'start': 2556.568, 'duration': 1.241}, {'end': 2562.391, 'text': "So how do we make predictions of whether that's a dog or a cat? Well it's very simple.", 'start': 2558.629, 'duration': 3.762}, {'end': 2567.454, 'text': 'All we do is instead of training a learner, we use load learner.', 'start': 2562.531, 'duration': 4.923}], 'summary': 'Using python image library to resize a dog picture and make predictions with load learner.', 'duration': 25.398, 'max_score': 2542.056, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A02542056.jpg'}, {'end': 2626.736, 'src': 'embed', 'start': 2593.443, 'weight': 1, 'content': [{'end': 2594.964, 'text': "It's like a frozen object.", 'start': 2593.443, 'duration': 1.521}, {'end': 2602.269, 'text': "we saved it to disk, we transferred it to our computer, and we've now loaded it, and we've now un-thought it.", 'start': 2595.544, 'duration': 6.725}, {'end': 2606.332, 'text': "Here's our unpickled learner, and we can now do whatever we like with that.", 'start': 2602.749, 'duration': 3.583}, {'end': 2614.438, 'text': 'So one of the things that, one of the methods that a learner has is a dot predict method.', 'start': 2606.352, 'duration': 8.086}, {'end': 2619.962, 'text': "So if I run it, you can see even on my laptop it's basically instant.", 'start': 2614.658, 'duration': 5.304}, {'end': 2626.736, 'text': 'In fact we can see how long it took, If you, in Jupyter, things that start with percent are called magics.', 'start': 2620.062, 'duration': 6.674}], 'summary': 'Data object loaded, unpickled, and predicted instantly using dot predict method.', 'duration': 33.293, 'max_score': 2593.443, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A02593443.jpg'}, {'end': 2674.538, 'src': 'embed', 'start': 2644.985, 'weight': 2, 'content': [{'end': 2655.408, 'text': "as a string, is it a cat as a 0 or 1, and then the probability that it's a dog, and the probability that it's a cat.", 'start': 2644.985, 'duration': 10.423}, {'end': 2659.75, 'text': 'So the probability of 0, false, and 1, true, of is it a cat.', 'start': 2655.749, 'duration': 4.001}, {'end': 2661.29, 'text': 'So definitely a dog.', 'start': 2660.37, 'duration': 0.92}, {'end': 2666.712, 'text': 'So we now want to create a Gradio interface which basically has this information.', 'start': 2662.251, 'duration': 4.461}, {'end': 2672.414, 'text': "So Gradio requires us to give it a function that it's going to call.", 'start': 2668.293, 'duration': 4.121}, {'end': 2674.538, 'text': "So here's our function.", 'start': 2673.657, 'duration': 0.881}], 'summary': 'Creating a gradio interface to determine probability of cat or dog.', 'duration': 29.553, 'max_score': 2644.985, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A02644985.jpg'}, {'end': 2726.204, 'src': 'embed', 'start': 2699.949, 'weight': 3, 'content': [{'end': 2704.612, 'text': "If you haven't done much Python before, a dict of a zip may be something you haven't seen.", 'start': 2699.949, 'duration': 4.663}, {'end': 2707.713, 'text': 'Very handy little idiom, well worth checking out.', 'start': 2704.832, 'duration': 2.881}, {'end': 2710.035, 'text': "Ditto if you haven't seen map before.", 'start': 2708.514, 'duration': 1.521}, {'end': 2712.736, 'text': 'Anyway, here it is.', 'start': 2710.515, 'duration': 2.221}, {'end': 2720.941, 'text': "One slightly annoying thing about Gradio at the moment is that it doesn't handle PyTorch tensors.", 'start': 2713.136, 'duration': 7.805}, {'end': 2724.783, 'text': "You can see here PyTorch is not returning normal numbers, it's returning tensors.", 'start': 2720.981, 'duration': 3.802}, {'end': 2726.204, 'text': "It's not even returning numpy arrays.", 'start': 2724.843, 'duration': 1.361}], 'summary': "Introduction to python dict and zip, map, and gradio's handling of pytorch tensors.", 'duration': 26.255, 'max_score': 2699.949, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A02699949.jpg'}, {'end': 2811.594, 'src': 'heatmap', 'start': 2761.006, 'weight': 0.764, 'content': [{'end': 2762.386, 'text': 'And so check out the Gradio docs.', 'start': 2761.006, 'duration': 1.38}, {'end': 2767.967, 'text': 'It can be all kinds of things like a webcam picture or a text or, you know, all kinds of things.', 'start': 2762.466, 'duration': 5.501}, {'end': 2770.528, 'text': "Give it a shape that it's going to put it into.", 'start': 2768.668, 'duration': 1.86}, {'end': 2772.168, 'text': 'The output is just going to be a label.', 'start': 2770.828, 'duration': 1.34}, {'end': 2774.169, 'text': "So we're going to create very, very simple interface.", 'start': 2772.188, 'duration': 1.981}, {'end': 2778.439, 'text': 'And we can also provide some examples.', 'start': 2776.897, 'duration': 1.542}, {'end': 2786.026, 'text': "And so there's a dog, a cat and a dono, which I'll tell you about in a moment, which you'll see here, there's a dog and a cat and a dono.", 'start': 2779.179, 'duration': 6.847}, {'end': 2791.391, 'text': "So once I launch it, it says, okay, that's now running on this URL.", 'start': 2787.747, 'duration': 3.644}, {'end': 2796.964, 'text': 'So if I open that up, can see, now we have just like suvash.', 'start': 2791.531, 'duration': 5.433}, {'end': 2804.369, 'text': 'we have our own um, not yet in production, but running on our own box um classifier.', 'start': 2796.964, 'duration': 7.405}, {'end': 2811.133, 'text': "so let's check, dog, so you can click and upload one or just choose the examples.", 'start': 2804.369, 'duration': 6.764}, {'end': 2811.594, 'text': 'there you are.', 'start': 2811.133, 'duration': 0.461}], 'summary': 'Gradio docs allows creating simple interfaces for image classification with examples like dog and cat.', 'duration': 50.588, 'max_score': 2761.006, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A02761006.jpg'}, {'end': 2897.466, 'src': 'embed', 'start': 2867.545, 'weight': 4, 'content': [{'end': 2869.326, 'text': 'She said, run it on that, Dad, run it on that.', 'start': 2867.545, 'duration': 1.781}, {'end': 2870.307, 'text': 'And I ran it.', 'start': 2869.747, 'duration': 0.56}, {'end': 2872.791, 'text': 'and it was like 50-50.', 'start': 2870.709, 'duration': 2.082}, {'end': 2874.513, 'text': 'It had no idea if it was a dog or a cat.', 'start': 2872.891, 'duration': 1.622}, {'end': 2878.596, 'text': "Now this model I just retrained today, now it's sure it's a cat.", 'start': 2875.453, 'duration': 3.143}, {'end': 2880.138, 'text': 'So there you go.', 'start': 2879.477, 'duration': 0.661}, {'end': 2884.021, 'text': 'I think I used a slightly different training schedule or something, or I gave it an extra epoch.', 'start': 2880.278, 'duration': 3.743}, {'end': 2889.526, 'text': "Anyway, so that's a dog cat, but apparently it's a cat.", 'start': 2885.262, 'duration': 4.264}, {'end': 2891.228, 'text': 'I guess it is a cat.', 'start': 2890.447, 'duration': 0.781}, {'end': 2893.33, 'text': "It's probably right.", 'start': 2892.649, 'duration': 0.681}, {'end': 2897.466, 'text': "Okay, so there's our interface.", 'start': 2894.844, 'duration': 2.622}], 'summary': 'Model retrained to classify cat with 100% certainty.', 'duration': 29.921, 'max_score': 2867.545, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A02867545.jpg'}], 'start': 2451.825, 'title': 'Image classification and gradio interface', 'summary': "Details using a trained model for image predictions, with an example taking 54 milliseconds, and creating a gradio interface for a dog-cat classifier, including handling tensors and an anecdote about a 'dono' image.", 'chapters': [{'end': 2643.182, 'start': 2451.825, 'title': 'Predicting image classes with trained model', 'summary': 'Details the process of using a trained model to make predictions on images, including the import of necessary libraries, loading the saved model, and the speed of the prediction process, with an example taking 54 milliseconds.', 'duration': 191.357, 'highlights': ['The process of using a trained model to make predictions on images is detailed, including the import of necessary libraries and loading the saved model.', 'The speed of the prediction process is emphasized, with an example taking 54 milliseconds.']}, {'end': 2891.228, 'start': 2644.985, 'title': 'Gradio interface for dog-cat classifier', 'summary': "Discusses the process of creating a gradio interface for a dog-cat classifier, handling pytorch tensors and numpy arrays, and an amusing anecdote about a 'dono' image which previously had 50-50 probability but now is classified as a cat.", 'duration': 246.243, 'highlights': ['Creating a Gradio interface for a dog-cat classifier', 'Handling PyTorch tensors and numpy arrays for Gradio', "Anecdote about a 'dono' image previously having 50-50 probability but now classified as a cat"]}], 'duration': 439.403, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A02451825.jpg', 'highlights': ['The process of using a trained model to make predictions on images is detailed, including the import of necessary libraries and loading the saved model.', 'The speed of the prediction process is emphasized, with an example taking 54 milliseconds.', 'Creating a Gradio interface for a dog-cat classifier', 'Handling PyTorch tensors and numpy arrays for Gradio', "Anecdote about a 'dono' image previously having 50-50 probability but now classified as a cat"]}, {'end': 3625.59, 'segs': [{'end': 3048.909, 'src': 'heatmap', 'start': 2922.572, 'weight': 0, 'content': [{'end': 2925.593, 'text': 'read a copy and paste into a Python script all those parts of this that you need.', 'start': 2922.572, 'duration': 3.021}, {'end': 2929.054, 'text': "So for example, we wouldn't need this, it's just to check something out.", 'start': 2925.933, 'duration': 3.121}, {'end': 2931.235, 'text': "We wouldn't need this, it was just experimenting.", 'start': 2929.094, 'duration': 2.141}, {'end': 2933.356, 'text': 'This was just experimenting.', 'start': 2931.835, 'duration': 1.521}, {'end': 2934.756, 'text': "we'd need this right?", 'start': 2933.356, 'duration': 1.4}, {'end': 2942.219, 'text': 'So what I did is I went through and I wrote hash pipe export at the top of each cell.', 'start': 2935.157, 'duration': 7.062}, {'end': 2945.24, 'text': "that contains information that I'm going to need in my final script.", 'start': 2942.219, 'duration': 3.021}, {'end': 2949.809, 'text': "And then So they're the steps right?", 'start': 2947.061, 'duration': 2.748}, {'end': 2956.876, 'text': "And then, at the very bottom, here, I've imported something called notebook to script from nbdev,", 'start': 2950.169, 'duration': 6.707}, {'end': 2970.935, 'text': 'and if I run that and pass in the name of this notebook, it creates a file for me called app.py, containing that script.', 'start': 2956.876, 'duration': 14.059}, {'end': 2973.317, 'text': 'So this is a nice, easy way to like.', 'start': 2971.416, 'duration': 1.901}, {'end': 2979.842, 'text': "when you're working with stuff that's expecting a script and not a notebook like Hugging Face Spaces does.", 'start': 2973.317, 'duration': 6.525}, {'end': 2982.383, 'text': "it's fine to just copy and paste into a text file if you like,", 'start': 2979.842, 'duration': 2.541}, {'end': 2991.21, 'text': "but I really like this way of doing it because that way I can do all of my experimentation in a notebook and when I'm done I just have a cell at the bottom.", 'start': 2982.383, 'duration': 8.827}, {'end': 2993.151, 'text': 'I just run and export it.', 'start': 2991.21, 'duration': 1.941}, {'end': 2995.982, 'text': 'How does it know to call it app.py?', 'start': 2994.18, 'duration': 1.802}, {'end': 3001.147, 'text': "That's because there's a special thing at the top Default export default exp.", 'start': 2996.463, 'duration': 4.684}, {'end': 3003.289, 'text': 'which says what Python file name to create.', 'start': 3001.147, 'duration': 2.142}, {'end': 3018.964, 'text': "So that's just a little trick that I use So now we've got an app.py We need to upload this to How do we do that? You just push it to get.", 'start': 3004.07, 'duration': 14.894}, {'end': 3029.091, 'text': 'So you can either do it with Visual Studio Code or you can type git commit and then git push.', 'start': 3019.565, 'duration': 9.526}, {'end': 3036.836, 'text': "And once you've done that, if we change minimal to testing.", 'start': 3029.691, 'duration': 7.145}, {'end': 3046.787, 'text': "I think this hopefully might still be running my previous model because I didn't push it, and that way we can see our crazy dog cat.", 'start': 3040.822, 'duration': 5.965}, {'end': 3048.909, 'text': 'All right, so here it is.', 'start': 3048.168, 'duration': 0.741}], 'summary': 'Using nbdev to convert notebook to script, then push to git for deployment.', 'duration': 50.745, 'max_score': 2922.572, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A02922572.jpg'}, {'end': 3029.091, 'src': 'embed', 'start': 2996.463, 'weight': 1, 'content': [{'end': 3001.147, 'text': "That's because there's a special thing at the top Default export default exp.", 'start': 2996.463, 'duration': 4.684}, {'end': 3003.289, 'text': 'which says what Python file name to create.', 'start': 3001.147, 'duration': 2.142}, {'end': 3018.964, 'text': "So that's just a little trick that I use So now we've got an app.py We need to upload this to How do we do that? You just push it to get.", 'start': 3004.07, 'duration': 14.894}, {'end': 3029.091, 'text': 'So you can either do it with Visual Studio Code or you can type git commit and then git push.', 'start': 3019.565, 'duration': 9.526}], 'summary': 'Creating app.py in python and uploading it to git using visual studio code or git commands.', 'duration': 32.628, 'max_score': 2996.463, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A02996463.jpg'}, {'end': 3159.338, 'src': 'embed', 'start': 3103.409, 'weight': 4, 'content': [{'end': 3106.732, 'text': "There's a couple of questions from the forum from the community.", 'start': 3103.409, 'duration': 3.323}, {'end': 3118.403, 'text': "Okay, so one person's asking What's the difference between a PyTorch model and a fast.ai learner? Okay, that's fine.", 'start': 3109.295, 'duration': 9.108}, {'end': 3120.546, 'text': 'We will get to that shortly.', 'start': 3118.464, 'duration': 2.082}, {'end': 3122.207, 'text': "Don't know if it'll be this lesson.", 'start': 3120.566, 'duration': 1.641}, {'end': 3124.049, 'text': 'It might be this lesson or the next lesson.', 'start': 3122.307, 'duration': 1.742}, {'end': 3134.465, 'text': "And then somebody else asked basically it's asking how many epochs do we train for??", 'start': 3130.223, 'duration': 4.242}, {'end': 3141.207, 'text': 'So as you train a model, your error rate, as you can see it, improves.', 'start': 3134.845, 'duration': 6.362}, {'end': 3144.188, 'text': 'And so the question is should I run more??', 'start': 3142.207, 'duration': 1.981}, {'end': 3146.369, 'text': 'Should I increase the number of epochs?', 'start': 3144.308, 'duration': 2.061}, {'end': 3148.07, 'text': 'This is doing three epochs, right?', 'start': 3146.529, 'duration': 1.541}, {'end': 3150.631, 'text': "Here's my three epochs plus one to get started.", 'start': 3148.25, 'duration': 2.381}, {'end': 3156.673, 'text': "Look, it's up to you, right? I mean, this is here saying there's a one percent error.", 'start': 3152.971, 'duration': 3.702}, {'end': 3159.338, 'text': "I'm okay with the 1% error.", 'start': 3157.657, 'duration': 1.681}], 'summary': 'Discussion on pytorch model vs. fast.ai learner and training epochs, with mention of 1% error rate.', 'duration': 55.929, 'max_score': 3103.409, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A03103409.jpg'}, {'end': 3365.145, 'src': 'heatmap', 'start': 3294.422, 'weight': 6, 'content': [{'end': 3295.463, 'text': "It's called FastSetup.", 'start': 3294.422, 'duration': 1.041}, {'end': 3297.185, 'text': "There's really only just one part of it you need.", 'start': 3295.503, 'duration': 1.682}, {'end': 3298.746, 'text': 'So let me show you.', 'start': 3297.945, 'duration': 0.801}, {'end': 3302.729, 'text': "It's actually a Git repository on GitHub.", 'start': 3299.586, 'duration': 3.143}, {'end': 3305.431, 'text': "GitHub's the place where most Git repositories live.", 'start': 3302.969, 'duration': 2.462}, {'end': 3309.394, 'text': "So if you go to github.fastai.fastsetup, you'll see it.", 'start': 3306.852, 'duration': 2.542}, {'end': 3317.981, 'text': 'And so what you can do is you can now grab this whole repository just by clicking here on code.', 'start': 3310.399, 'duration': 7.582}, {'end': 3322.642, 'text': "And if you've got GitHub desktop installed, click on open with GitHub desktop.", 'start': 3318.621, 'duration': 4.021}, {'end': 3329.384, 'text': "And as you'll see, it brings this up saying, okay, I'm ready to save this for you.", 'start': 3326.063, 'duration': 3.321}, {'end': 3330.444, 'text': "So I'll click clone.", 'start': 3329.404, 'duration': 1.04}, {'end': 3332.485, 'text': "So it's making a copy of it.", 'start': 3330.464, 'duration': 2.021}, {'end': 3335.165, 'text': 'There we go.', 'start': 3334.745, 'duration': 0.42}, {'end': 3354.863, 'text': "Um, So, basically, once you've cloned it, you'll then find there's a file in there called setupconda.sh, which you know.", 'start': 3337.866, 'duration': 16.997}, {'end': 3355.823, 'text': "the details don't really matter.", 'start': 3354.863, 'duration': 0.96}, {'end': 3359.244, 'text': "it's pretty short, but that's the thing that's going to install Python for you.", 'start': 3355.823, 'duration': 3.421}, {'end': 3361.464, 'text': 'So at that point you can just run .', 'start': 3359.844, 'duration': 1.62}, {'end': 3365.145, 'text': "slash setupconda and it'll run this installer.", 'start': 3361.464, 'duration': 3.681}], 'summary': 'Fastsetup is a git repository on github for easy python installation, accessible via github.fastai.fastsetup.', 'duration': 70.723, 'max_score': 3294.422, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A03294422.jpg'}, {'end': 3452.614, 'src': 'heatmap', 'start': 3398.977, 'weight': 0.732, 'content': [{'end': 3407.101, 'text': 'by far the best one for you is almost certainly going to be these conda-based python distributions.', 'start': 3398.977, 'duration': 8.124}, {'end': 3410.343, 'text': "So if you run setup conda you'll get the one that we recommend.", 'start': 3407.121, 'duration': 3.222}, {'end': 3416.546, 'text': 'And the one we recommend at the moment is something called mamba-forge.', 'start': 3411.163, 'duration': 5.383}, {'end': 3425.692, 'text': "So basically, once you run it, you'll find that you've now and you close your terminal and reopen it, you'll find you've now got one extra command,", 'start': 3417.526, 'duration': 8.166}, {'end': 3426.772, 'text': 'which is called mamba.', 'start': 3425.692, 'duration': 1.08}, {'end': 3429.253, 'text': 'And mamba lets you install stuff.', 'start': 3427.472, 'duration': 1.781}, {'end': 3436.415, 'text': "So once you've run it, you'll be able to go mamba install fastai.", 'start': 3431.113, 'duration': 5.302}, {'end': 3446.998, 'text': "And that's going to, actually we should probably, I should mention this actually more, a bit more detail about how to install it correctly.", 'start': 3437.835, 'duration': 9.163}, {'end': 3452.614, 'text': 'If we go to docs.fast.ai, installing.', 'start': 3448.37, 'duration': 4.244}], 'summary': "Use mamba-forge to install fastai via 'mamba install fastai'.", 'duration': 53.637, 'max_score': 3398.977, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A03398977.jpg'}], 'start': 2892.649, 'title': 'Converting notebook to python script and uploading to git', 'summary': 'Discusses converting a jupyter notebook into a python script using nbdev, enabling the upload to git for version control. it also covers deploying a simple model in production, addressing the difference between pytorch model and fast.ai learner, and setting up the environment using fastsetup for python and jupyter notebook.', 'chapters': [{'end': 3029.091, 'start': 2892.649, 'title': 'Converting notebook to python script and uploading to git', 'summary': 'Discusses the process of converting a jupyter notebook into a python script using nbdev, including the steps to identify and export necessary code, ultimately enabling the upload to git for version control.', 'duration': 136.442, 'highlights': ['The process of converting a Jupyter notebook into a Python script involves identifying and exporting the necessary code using nbdev, which simplifies the transition from notebook to script.', 'Utilizing hash pipe export at the top of each cell allows for the identification of information needed in the final script, streamlining the conversion process.', "The use of 'notebook to script' from nbdev facilitates the creation of a file named app.py, containing the script, providing a convenient method for transitioning from a notebook to a script.", "Uploading the app.py to Git for version control can be achieved by using Visual Studio Code or by executing 'git commit' followed by 'git push', ensuring the preservation and tracking of code changes."]}, {'end': 3625.59, 'start': 3029.691, 'title': 'Production model deployment and setup', 'summary': 'Covers deploying a simple model in production, addressing the difference between pytorch model and fast.ai learner, determining the number of epochs to train for, and setting up the environment using fastsetup for python and jupyter notebook.', 'duration': 595.899, 'highlights': ['The chapter covers deploying a simple model in production, addressing the difference between PyTorch model and fast.ai learner, determining the number of epochs to train for, and setting up the environment using FastSetup for Python and Jupyter Notebook.', 'The error rate improves as you train a model, and the decision to increase the number of epochs depends on the desired error rate and available resources.', 'FastSetup simplifies the process of setting up Python and Jupyter Notebook by providing a straightforward installation method via a Git repository.']}], 'duration': 732.941, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A02892649.jpg', 'highlights': ['The process of converting a Jupyter notebook into a Python script involves identifying and exporting the necessary code using nbdev, which simplifies the transition from notebook to script.', "Uploading the app.py to Git for version control can be achieved by using Visual Studio Code or by executing 'git commit' followed by 'git push', ensuring the preservation and tracking of code changes.", 'Utilizing hash pipe export at the top of each cell allows for the identification of information needed in the final script, streamlining the conversion process.', "The use of 'notebook to script' from nbdev facilitates the creation of a file named app.py, containing the script, providing a convenient method for transitioning from a notebook to a script.", 'The chapter covers deploying a simple model in production, addressing the difference between PyTorch model and fast.ai learner, determining the number of epochs to train for, and setting up the environment using FastSetup for Python and Jupyter Notebook.', 'The error rate improves as you train a model, and the decision to increase the number of epochs depends on the desired error rate and available resources.', 'FastSetup simplifies the process of setting up Python and Jupyter Notebook by providing a straightforward installation method via a Git repository.']}, {'end': 4160.594, 'segs': [{'end': 3709.094, 'src': 'embed', 'start': 3683.145, 'weight': 0, 'content': [{'end': 3687.448, 'text': "It's not amazingly flexible, but it's flexible enough to kind of….", 'start': 3683.145, 'duration': 4.303}, {'end': 3689.409, 'text': "it's really just for prototyping, right?", 'start': 3687.448, 'duration': 1.961}, {'end': 3694.291, 'text': 'So Gradio has lots of yeah, widgets and things that you can use.', 'start': 3690.95, 'duration': 3.341}, {'end': 3702.708, 'text': 'The other main platform at the moment that HuggingFace Spaces supports is called Streamlet.', 'start': 3696.462, 'duration': 6.246}, {'end': 3709.094, 'text': 'Streamlet is more flexible, I would say, than Gradio.', 'start': 3704.129, 'duration': 4.965}], 'summary': 'Gradio is a prototyping platform with widgets, while streamlet is even more flexible.', 'duration': 25.949, 'max_score': 3683.145, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A03683145.jpg'}, {'end': 3805.914, 'src': 'embed', 'start': 3777.35, 'weight': 2, 'content': [{'end': 3783.015, 'text': 'And a lot of data scientists might be going, uh-oh, I have no idea how to use JavaScript.', 'start': 3777.35, 'duration': 5.665}, {'end': 3785.977, 'text': "It's not in my, you know, inventory.", 'start': 3783.395, 'duration': 2.582}, {'end': 3790.321, 'text': "So this is again where I'm going to say, look, don't be too afraid of JavaScript.", 'start': 3787.479, 'duration': 2.842}, {'end': 3795.766, 'text': "I mean obviously one option here is just to kind of say hey, I've got a model, throw it over to your wall, over the wall,", 'start': 3790.341, 'duration': 5.425}, {'end': 3799.609, 'text': 'to your mate who does know JavaScript, and say please create a JavaScript interface for me.', 'start': 3795.766, 'duration': 3.843}, {'end': 3805.914, 'text': 'But let me just give you a sense of like how really not hard this actually is.', 'start': 3800.149, 'duration': 5.765}], 'summary': 'Data scientists can easily create a javascript interface for their model.', 'duration': 28.564, 'max_score': 3777.35, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A03777350.jpg'}], 'start': 3626.811, 'title': 'Gradio and streamlet', 'summary': 'Discusses the flexibility and prototyping capabilities of gradio and streamlet for creating javascript apps and websites, emphasizing the ease of using javascript for data scientists and the possibilities of combining models for more complex applications.', 'chapters': [{'end': 4160.594, 'start': 3626.811, 'title': 'Hugging face spaces: gradio and streamlet', 'summary': 'Discusses the flexibility and prototyping capabilities of gradio and streamlet for creating javascript apps and websites, along with examples of using these platforms to build and deploy models, emphasizing the ease of using javascript for data scientists and the possibilities of combining models for more complex applications.', 'duration': 533.783, 'highlights': ['The chapter discusses the flexibility and prototyping capabilities of Gradio and Streamlet for creating JavaScript apps and websites.', 'Examples of using Gradio and Streamlet to build and deploy models are provided.', 'Emphasizing the ease of using JavaScript for data scientists and the possibilities of combining models for more complex applications.']}], 'duration': 533.783, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A03626811.jpg', 'highlights': ['Examples of using Gradio and Streamlet to build and deploy models are provided.', 'The chapter discusses the flexibility and prototyping capabilities of Gradio and Streamlet for creating JavaScript apps and websites.', 'Emphasizing the ease of using JavaScript for data scientists and the possibilities of combining models for more complex applications.']}, {'end': 4601.24, 'segs': [{'end': 4314.196, 'src': 'embed', 'start': 4232.555, 'weight': 0, 'content': [{'end': 4241.322, 'text': "So you can see I don't need any software installed on my computer to use a JavaScript app, right? It's a single file, I just run it in a browser.", 'start': 4232.555, 'duration': 8.767}, {'end': 4246.586, 'text': "A browser is our complete execution environment, it's got a debugger, it's got the whole thing.", 'start': 4241.362, 'duration': 5.224}, {'end': 4254.293, 'text': "So here you can see it's just calling out this external Hugging Faces endpoint, so I can do it all sitting here on my computer.", 'start': 4247.027, 'duration': 7.266}, {'end': 4265.516, 'text': "So, once I've got my HTML file, that's working fine on my computer in VS Code, how do I then put it on the web so that other people can use it?", 'start': 4254.893, 'duration': 10.623}, {'end': 4267.936, 'text': "Again, the whole thing's free.", 'start': 4266.656, 'duration': 1.28}, {'end': 4274.718, 'text': "There's a really cool thing called GitHub Pages, which basically will host your website for you.", 'start': 4268.857, 'duration': 5.861}, {'end': 4280.42, 'text': "And because it's just JavaScript, it'll all work just fine.", 'start': 4275.278, 'duration': 5.142}, {'end': 4291.231, 'text': 'The easiest way to create a GitHub pages site, in my opinion, is to use something called FastPages, which is a fast AI thing.', 'start': 4283.106, 'duration': 8.125}, {'end': 4301.118, 'text': 'And basically all you do is you follow the setup process.', 'start': 4292.452, 'duration': 8.666}, {'end': 4305.701, 'text': "So first, let's just go through it.", 'start': 4303.54, 'duration': 2.161}, {'end': 4307.682, 'text': 'So it says generate a copy by clicking on this link.', 'start': 4305.721, 'duration': 1.961}, {'end': 4308.563, 'text': 'So I click the link.', 'start': 4307.903, 'duration': 0.66}, {'end': 4314.196, 'text': 'All right, okay, give it a name.', 'start': 4310.754, 'duration': 3.442}], 'summary': 'Javascript app runs in browser without software, hosted on github pages, free and easy setup.', 'duration': 81.641, 'max_score': 4232.555, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A04232555.jpg'}, {'end': 4426.456, 'src': 'embed', 'start': 4398.305, 'weight': 5, 'content': [{'end': 4404.328, 'text': 'So GitHub pages uses something called Jekyll, and so any Jekyll theme will basically work.', 'start': 4398.305, 'duration': 6.023}, {'end': 4411.071, 'text': 'So I picked out this theme and so, as a result, when I now save things into this repo,', 'start': 4405.048, 'duration': 6.023}, {'end': 4419.374, 'text': 'they will automatically appear in this website and the files automatically appear up here in this list.', 'start': 4412.492, 'duration': 6.882}, {'end': 4426.456, 'text': "So if you look at my index, that's the home page, the entire file is just this.", 'start': 4419.634, 'duration': 6.822}], 'summary': 'Github pages uses jekyll, making it easy to update website and files automatically.', 'duration': 28.151, 'max_score': 4398.305, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A04398305.jpg'}, {'end': 4518.61, 'src': 'embed', 'start': 4484.878, 'weight': 4, 'content': [{'end': 4485.938, 'text': 'to pages themes hacker.', 'start': 4484.878, 'duration': 1.06}, {'end': 4492.601, 'text': 'So, once you fork, one thing you have to do, which normally FastPages does for you,', 'start': 4487.979, 'duration': 4.622}, {'end': 4498.843, 'text': 'is you do have to go to settings and click pages and actually enable GitHub pages.', 'start': 4492.601, 'duration': 6.242}, {'end': 4502.905, 'text': "So you basically have to, by default it's turned off, so here you'll just have to turn it on.", 'start': 4498.903, 'duration': 4.002}, {'end': 4508.287, 'text': "So use the master branch, root, save, and then it'll say no worries it's ready to be published.", 'start': 4503.025, 'duration': 5.262}, {'end': 4518.61, 'text': "And so I changed the config.yaml file to point at a different theme, and so, if you look at now the JPH's tiny pets, it's different, okay?", 'start': 4509.423, 'duration': 9.187}], 'summary': 'Enable github pages in settings to publish, change theme in config.yaml file.', 'duration': 33.732, 'max_score': 4484.878, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A04484878.jpg'}, {'end': 4560.798, 'src': 'embed', 'start': 4530.103, 'weight': 6, 'content': [{'end': 4542.631, 'text': "So anyway, look, it's a very brief taste of this kind of world of JavaScript and websites and so forth, but I wanted to give you a sense of like.", 'start': 4530.103, 'duration': 12.528}, {'end': 4543.972, 'text': "you know, you don't need any money.", 'start': 4542.631, 'duration': 1.341}, {'end': 4555.975, 'text': "You don't need any IDEs, you know, you don't really need much code to get started with writing your own web apps.", 'start': 4545.629, 'duration': 10.346}, {'end': 4560.798, 'text': "And thanks to Hugging Face Spaces, you know, they'll even host your model for you.", 'start': 4556.836, 'duration': 3.962}], 'summary': 'Javascript and web apps require minimal resources to get started; hugging face spaces can host your model for you.', 'duration': 30.695, 'max_score': 4530.103, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A04530103.jpg'}], 'start': 4160.613, 'title': 'Creating and hosting javascript websites', 'summary': 'Explains how to create a basic javascript website using visual studio code, run it in a browser as a single file, and host it on github pages using fastpages. it also discusses creating and customizing websites using github pages, emphasizing the ease of getting started in writing web apps without requiring much code or financial investment, and mentions the hosting service provided by hugging face spaces.', 'chapters': [{'end': 4349.92, 'start': 4160.613, 'title': 'Creating and hosting a javascript website', 'summary': 'Explains how to create a basic javascript website using visual studio code, run it in a browser as a single file, and host it on github pages using fastpages, enabling others to use it for free.', 'duration': 189.307, 'highlights': ['Creating a basic JavaScript website using Visual Studio Code', 'Running the website as a single file in a browser without any installed software', 'Hosting the website on GitHub Pages using FastPages']}, {'end': 4601.24, 'start': 4349.92, 'title': 'Creating and customizing websites with github pages', 'summary': 'Discusses creating and customizing websites using github pages, including steps to set up a website, customize its appearance using themes, and enabling github pages. it also emphasizes the ease of getting started in writing web apps without requiring much code or financial investment, and mentions the hosting service provided by hugging face spaces.', 'duration': 251.32, 'highlights': ['GitHub Pages makes it easy to set up a website by using GitHub desktop or terminal, and allows for customization using themes like Jekyll, with changes reflecting automatically in the website.', 'Enabling GitHub Pages requires setting up the master branch and saving the changes, which then makes the website ready to be published.', 'The chapter emphasizes the accessibility and cost-effectiveness of getting started in writing web apps, highlighting the minimal financial investment and coding requirements.', "The hosting service provided by Hugging Face Spaces is mentioned, indicating that it can host models with the requirement of a 'magic string' for calling."]}], 'duration': 440.627, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/F4tvM4Vb3A0/pics/F4tvM4Vb3A04160613.jpg', 'highlights': ['Running the website as a single file in a browser without any installed software', 'Creating a basic JavaScript website using Visual Studio Code', 'Hosting the website on GitHub Pages using FastPages', 'GitHub Pages makes it easy to set up a website by using GitHub desktop or terminal', 'Enabling GitHub Pages requires setting up the master branch and saving the changes', 'Customization using themes like Jekyll with changes reflecting automatically in the website', 'Emphasizes the accessibility and cost-effectiveness of getting started in writing web apps', "The hosting service provided by Hugging Face Spaces can host models with the requirement of a 'magic string' for calling"]}], 'highlights': ["The 'damaged car classifier' project received over 39 replies, indicating significant engagement and interest from the participants.", 'Covers new and unique material, generating high levels of excitement among the participants.', 'The book accompanying the course is freely available and can be accessed through the fastai fastbook repo or course.fast.ai, providing additional resources for the participants.', 'Using random resized crop and augmentation transforms achieves 3% error rate in recognizing French and German texts from images.', 'Windows users can run a complete Linux environment using the Windows Subsystem for Linux (WSL), making it accessible by running a single command.', 'The process of converting a Jupyter notebook into a Python script involves identifying and exporting the necessary code using nbdev, which simplifies the transition from notebook to script.', 'Examples of using Gradio and Streamlet to build and deploy models are provided.', 'Running the website as a single file in a browser without any installed software', 'The process of using a trained model to make predictions on images is detailed, including the import of necessary libraries and loading the saved model.', 'The importance of data cleaning is emphasized as the next step after gathering data, with a reference to Chapter 2 of the book.']}