My Experience at CodeCamp, Intro to Keras and Failing Hard | Learning Intelligence 17

Daniel Bourke teaches at Code Camp, then shares a coding challenge failure at Landing.ai and his 2018 learning plan: finishing deeplearning.ai's specialization with Keras, starting an AI master's degree, and taking MIT's free AGI course. He builds a simple Keras model and explains residual connections.
Chapters
What's going on, guys? Welcome back to Learning Intelligence Episode 17. I'm speaking quietly this morning because it's nice and early. I've got up, I'm teaching some kids how to code this morning. We're gonna— I'm going to a— it's called Code Camp, and it's like a 3-day camp, and the kids come each day and we learn how to build games and we learn some fundamental principles of coding. So I'm really excited for that. I won't be able to film anything there, of course, because they're young kids. But when I get back this afternoon, I'll let you know how it went. And I've got a story about yesterday. I failed really hard, but I'll share that with you when I'm back. From my videos, you can probably gather that I'm naturally high energy. Like, I'm excited to do a lot of things. But the kids at the coding camp, they were unreal. I've never met a group of kids so keen to do something. They were just— every time we went on a break, they were like, Oh, we don't want to go on a break. We don't want to, except when they were hungry, they were really keen to go on a break then. After that, they were so keen to get back into it. And even at the end of the day, we had kids that we sort of had to almost drag away from the computers to stop them from building their games. And we're like, you can continue building this at home. And their eyes lit up. They're like, can we? Can we keep building it? They were so excited. So if you didn't get that at all, I just spent the day at a code camp. So I was, instructing, or what, I was a teacher's aide actually. There was a head instructor, and she's doing an amazing job running the fort. And essentially we're teaching these kids some basics of coding, and it's drag and drop block coding for now, but tomorrow we're going into line coding. So we're going to be actually writing JavaScript, and we've got a, Anna and I, we're teaching a group of about 9 kids, and they're about 7, 8, 9, I think 10 is the oldest in our group, maybe 11, I'm not entirely sure. So around Year 4 to 6, and the projects for them is building games, small little games. So the stuff these kids have come up with is incredible. Like, they get a blank canvas when they come in, and okay, we give them some guidelines over what type of game they have and what should be the logic behind it, but as for everything else, they can implement it. They can work on their own rules and whatnot, and then the best thing about it is at the end of the camp they get to export it, and it's all touchscreen compatible so they can play it on their iPads or play it on their phones and whatnot. A funny thing, actually, they were all working on laptops or most of them working on laptops. But the kids, it's incredible to see how they interact with the computer. Like I had one girl, she doesn't call computers computers, she calls them iPads. And she was trying to touch the computer monitor. It sort of seemed natural the way she was interacting with it, but of course the monitor wasn't touchscreen. I don't know, I think that's the future of computing, like all computers. I know Apple, they haven't built a touchscreen Mac yet, But I think in the future they're going to combine these two devices in some way or another. I don't know. Apple are— it's— there are touchscreen laptops, but you know how Apple are. They're usually late to the party with something ridiculous. But that's— I digress. So, teaching kids is amazing. They're— it's quite exhausting. I get back— so, this is a hat tip to all the teachers out there. You guys do an incredible job and I'm very grateful. I have a newfound respect for my teachers and I definitely— I know I caused a ruckus in all of my classes, so apologies to you. Thank you for your patience for putting up with me. Outside of that, I've got a couple of days left of code camp, so I'm really excited to finish that up. I'm having so much fun. Really excited actually to see what the kids' final games look like and have a play of them. It's good to be back as well. I had an amazing holiday. I'm well rested. I'm ready for 2018. I cannot actually, I cannot tell you how excited I am for this year. First plan, first Call of Duty, Is that what it's called, maybe? Call of Duty? Well, first thing I'm gonna knock off for this year is the deeplearning.ai course. I know I wanted to finish that before Christmas, but you know how these things happen, they get in the way. I'm still well and truly ahead of the actual course schedule. I believe if I did it at the normal course pace, it would take about 4 months. I'm gonna complete it within about 1 month. So I'm really excited for that. And we're on convolutional neural networks in course 4 of it, I believe. I'm about halfway through that. And it is, it's swaying me. I thought I was most interested in natural language processing in terms of the field of AI, but computer vision also seems very interesting. So we'll see how that goes. I might sort of see which one I prefer better. I haven't really tried either of them in depth, but getting a good taste of computer vision through convolutional neural networks, and I don't know, computers need to see, right? It'd be very handy. Second thing that's gonna be happening after I finish the deeplearning.ai specialization, and actually starting very soon, is term 2 of the artificial intelligence standard degree. I believe by the time this video lands, I will be well and truly into that. I'll start that, I'll probably be a couple of days into that. And so that's, I'm really excited for that. So that's going to be hardcore deep learning, working on building projects in computer vision, natural language processing, and speech recognition systems. So of course I'm going to bring you all along on the journey, but that's, that's the two major plans for the, for the start of 2018. Otherwise, I'm going to keep working through my artificial intelligence master's degree. The link will be in the description as always. And one more thing before we get into the rest of the video, MIT just announced an artificial general intelligence course. And a few of the details, it's going to be some lectures on virtually the state of the union, what's known in terms of artificial intelligence as well as how it's going to affect different fields. And it's free. It's open to everyone. So I'm really excited for that. That starts January 22nd, I believe. If not, the link will be in the description as well. I'll put something maybe on screen or something like that. I don't know. I'm really excited for that. You probably gathered I'm dressed for bed. I've just had a shower. My hair's probably all wet. My face is probably all red from the hot water. These things happen. I'm going to jump into bed. I need some rest for the kids tomorrow. And then, yeah, we'll be back into coding soon. And, uh, learning about AI. Let's do it. Have any of you seen this meme? I love it. I love this scene in Inception 2, by the way. Oh, maybe not this, this scene. I can't really remember the scene, but this meme is everywhere. We need to go deeper. And this is actually part of the Coursera deep learning specialization. See, Andrew Ng. And this meme was the inspiration for inception networks. So essentially, inception network is just layers upon layers upon layers upon layers upon layers upon layers of convolutional neural network layers. And the whole model itself was inspired by that meme. I think that's, that's really cool. And just, just because that meme is amazing. And the network, a full paper was published on it, and it was by some researchers at Google, and they named it GoogLeNet, and they spelled it a funny way. I'll let you look up the paper, uh, to pay tribute to Lynette, which is, I think it's Yann LeCun's net, which was the original ImageNet way back in the day, if I'm correct. But if you want to check out that paper, that's who it's by. I'm not going to try to pronounce this name, but it's 2014, Going Deeper with Convolutions, and I'll leave a link to the description in that. Second of all, I forgot yesterday that I'm, or in a previous clip of this video, let me just put you down here. I forgot to mention what I completely failed at. So I applied for an internship at Landing.ai, which is Andrew Ng's new AI company to help manufacturing companies or manufacturing businesses with incorporate artificial intelligence into their workflow. And so I applied for an internship there, which is based over in the US, and I had to do a coding challenge for it. And I failed miserably at the coding challenge, and I felt pretty down about it after I first did it. But after reflecting back, I think it was a blessing because— oh well, blessing, whatever you want to call it, really, whatever you want to call it, really— because it taught me what I need to work on. It showed me where my weaknesses are. And that's what I think is a valuable lesson, is to— if you fail at something or if you try something that's sort of out of your reach, rather than sort of being down by it, which I was, and I think it's inevitable to be down by a failure or to feel down, even just a little bit. But if you look at it in a different way, you can flip it and go, okay, I need to work on these two things. And so I took screenshots and whatnot of the coding challenge so I can come back to it and try it in the future. If I need to. And I wrote down the two specific topics that I should work on in Python. And so first of all, it's algorithms, or one of them, algorithms is, is everywhere. So that's important to work on. And number two is data structures. And number three, I wrote down as a follow-on from that is coding from scratch. And the challenge, the internship challenge was on HackerRank. And HackerRank provides some great opportunities to practice those things— algorithms, data structures, and coding from scratch. Amongst whatever else I'm learning, I think I might need to update my AI Masters curriculum to incorporate some HackerRank challenges. I know I've been doing a lot of Python on there, but I think I should start to branch out into— rather than just doing Python-based challenges— into applied challenges. So the algorithms and data structures and whatnot. On to the next thing. I'm currently building a model for a programming assignment of the Coursera Convolutional Neural Networks course. And this clip's gonna be a bit long, but that's alright. So it's in Keras. And essentially what Keras is, is if you imagine Python as being, uh, the lowest level programming foundation or programming language that you can use, or framework. And then TensorFlow is just one step above Python. And then Keras is even one step above TensorFlow. And what the purpose of Keras is, is so deep learning engineers like you and me can build a deep learning model quickly, implement it, try it out, get some feedback on it, and then if we need to go deeper, if we need to, to follow this meme, if we need to go deeper, we can use the basis of the model that we've built in Keras and improve upon it in TensorFlow or something custom coded in Python. And so just check this out. That's— you can build a model in Keras. Look how quickly you can. def model And then you go define your inputs, define your padding, define your convolutional layers, convolutional 2D, define batch normalization or add batch normalization to your previous layer, apply activation layer, apply a max pooling layer, flatten it, and then define your model as the whole thing, and then return model. And that is your entire model built in Keras. How cool is that? I'm going to finish off this week's programming assignments, and then I'll check back in with you guys. Oh yeah, check it out. 100 out of 100. You know what that means? We just passed the programming assignment for residual networks. Let me show you what we did. A residual network is essentially a combination of different blocks, and each of these blocks are called a residual block. And then we go up here and I'll show you what it's a combination of. This one was a convolutional neural network, or ResNet, and we used convolutional blocks. So if you can see in there, I don't know if you can, but these are individual convolutional neural networks. Let me see if I can zoom in. There we go. So we've got a conv— a 2D convolutional neural network there, some batch normalization, some ReLU activation, and what we do here is we pass the inputs all the way up to here and add it back into this main chain here. And what that does is it allows you to create really, really deep networks. So for example, the one we just built in this assignment was 50 layers deep. What that passing of, what that That shortcut is what it's called here, is passing the inputs over to here. And what that does is it helps prevent your gradient from diminishing. And if that doesn't make sense, I'm not going to go too in-depth to it, but I'll put a link in the description of where you can check out something, something about what diminishing gradient and what exploding gradient— I'm just trying to put those two words together— exploding gradient means. And essentially it's a problem of losing losing valuable parameters as your neural network gets deeper and deeper. And so what this sort of step does is helps prevent that and helps make your models better, essentially. I want to show you another thing. It's Keras, and did the tutorial here, and what we built was a neural network that detects whether someone is happy or not. And you say, this is a very pixelated picture of me, and you can see here it outputs 1 for happy and 0 for not happy, and that's That says I'm happy there. And then there's my friend, not such a happy face. How can we make you smile? And there's another one of him smiling there. What a happy chap. And it didn't really work for these two, so they both got unhappy, which shows that there's some improvement. There's an improvement that can be done in that Keras network there. But I really want to emphasize how amazing Keras is, and I was just reading their website. I'll put a link in the description here. Keras is used by Netflix, Uber, Yelp, Instacart, Zoodoc, Square, and many others. And look at this, archive mentions in 2017. It's very popular. So TensorFlow is probably the number one deep learning library, and Keras is a close— well, actually not very close second, but definitely well above these other networks, other libraries here. I'm finding it incredibly simple. Like, if you want to use Keras to start building a deep learning model to, to get something that you want off the ground, I would, I would 100% start here. If you're familiar with anything to do with Python, Keras is, is where you should start. That's it for this, this week of coding. And next week I'll show you what I'm going to get onto. It's still on computer vision. We're going to wrap up course 4 of Coursera next week of the deeplearning.ai specialization, which is all about computer vision. And this week 3 is on object detection. Week 4 is on face sure recognition. So I'm very excited for both of those. Object detection, if you haven't heard before, it's, it's used in, say for example, you're designing a self-driving car. A self-driving car needs very good object detection because if you imagine when you're driving, you've got a lot of objects you have to avoid. You have other cars on the road, you have cyclists, you have pedestrians, cats, dogs, everything. So object detection is something that's going to explode in the coming years. And facial recognition, well, if you're watching this on an iPhone X, I don't need to— iPhone X, It's really hard to say 10 when they put an X there. Anyway, if you're using an iPhone X, you know what facial recognition is, or if you've ever used a camera. All cameras these days pretty much have facial detection, so they can make sure they focus on, on your face and not something else. That's going to wrap up this week's episode of Learning Intelligence 17. I got that one right this time. I really hope I did. It's time for some shoutouts of the week. Alrighty then, it's time for some Shoutouts of the week! All these people either reached out to me via email, Twitter, social media, or wherever, commented on YouTube, and guys, thank you so much for reaching out. I really appreciate it. I hope I answered all of your questions that you have, and I really appreciate the kind words that you give me, the feedback. It really makes me excited to keep making these videos. So, thank you so much to all these guys, and as well, if you're watching, thank you so much to you. And don't forget, if you want to reach out to me anytime, my email is daniel@mrdbourke.com. But nonetheless, in no particular order, we have Barney, Alex, Rogue, Jal, Aaron, Sarab, Gregory, Lewis, and Dimitrios. And I apologize if I pronounced any of those names wrong, but thank you so guys. Thank you so guys. Thank you so guys. Thank you so guys much for Thank you guys so much for reaching out for— wow, I can't even talk anymore. But you know what I'm trying to say. Next week's video, you heard about it. Otherwise, I'm going to go for a walk now. I think it's about to storm where I'm at, so I'm going to be excited for that. I can read a book in the rain. Who else loves reading a book in the rain? That's it for this week's episode. Thank you so much for watching, and we'll catch you next week. And don't forget, keep learning.
More from Daniel

Small Language Models (SLMs) Are the Future: Fine-Tuning AI That Runs on Your iPhone

Introducing Sunny - A MedGemma-Powered Skin Health Tracking App (Kaggle Competition Entry)

Benchmarking: NVIDIA DGX Spark & NVIDIA RTX 4090 | Part 4 - Comparing the results

Benchmarking: NVIDIA DGX Spark & NVIDIA RTX 4090 | Part 3 - Running LLMs on the RTX 4090

Benchmarking: NVIDIA DGX Spark & NVIDIA RTX 4090 | Part 2 - Formalizing the tests

Benchmarking: NVIDIA DGX Spark & NVIDIA RTX 4090 | Part 1 - Creating a series of tests

Local Multimodal RAG on the NVIDIA DGX Spark | Part 4 - Publishing our demo to Hugging Face

Local Multimodal RAG on the NVIDIA DGX Spark | Part 3 - Putting it all together


