├── .github └── workflows │ └── twitter-together.yml ├── README.md ├── _config.yml ├── ai_job_concepts.md ├── autonomous_car └── README.md ├── computer_vision └── README.md ├── data_engineering └── README.md ├── gans └── README.md ├── generative_ai └── README.md ├── new_resources └── README.md ├── reinforcement_learning ├── README.md └── notebooks │ └── Reinforcement_Q_Learning_from_Scratch_in_Python_with_OpenAI_Gym_Taxi.ipynb ├── robotics └── README.md ├── stat_prob └── README.md ├── talks ├── AI and ML for Precision Medicine.pdf ├── GDSC WOW TN - Navaneeth Share.pdf ├── PyExpo2023.md └── saama-ai-agents │ ├── Pdf Share AI Agents - Saama Monthly Meetup Sep 2024 Final.pptx.pdf │ ├── basic-langchain-agent.ipynb │ └── simple-react.ipynb ├── tinyml.md ├── tweets ├── README.md ├── test.tweet └── test2.tweet └── webinars ├── computer_vision └── Computer Vision Share.pdf └── decision_trees_and_random_forest └── Ensemble_Methods.ipynb /.github/workflows/twitter-together.yml: -------------------------------------------------------------------------------- 1 | on: [push, pull_request] 2 | name: Twitter, together! 3 | jobs: 4 | preview: 5 | name: Preview 6 | runs-on: ubuntu-latest 7 | if: github.event_name == 'pull_request' 8 | steps: 9 | - uses: gr2m/twitter-together@v1.x 10 | env: 11 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 12 | tweet: 13 | name: Tweet 14 | runs-on: ubuntu-latest 15 | if: github.event_name == 'push' && github.ref == 'refs/heads/master' 16 | steps: 17 | - name: checkout master 18 | uses: actions/checkout@v2 19 | - name: Tweet 20 | uses: gr2m/twitter-together@v1.x 21 | env: 22 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 23 | TWITTER_ACCESS_TOKEN: ${{ secrets.TWITTER_ACCESS_TOKEN }} 24 | TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }} 25 | TWITTER_API_KEY: ${{ secrets.TWITTER_API_KEY }} 26 | TWITTER_API_SECRET_KEY: ${{ secrets.TWITTER_API_SECRET_KEY }} 27 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # An Ultimate Compilation of AI Resources for Mathematics, Machine Learning and Deep Learning 2 | 3 | ## _Knowledge Not Shared is wasted. - Clan Jacobs_ 4 | 5 | ### This collection is a compilation of Excellent ML and DL Tutorials created by the people below 6 | 7 | - [Andrej Karpathy blog](http://karpathy.github.io/) 8 | - [Brandon Roher](https://e2eml.school/blog.html) 9 | - [Andrew Trask](https://iamtrask.github.io/) 10 | - [Jay Alammar](https://jalammar.github.io/) 11 | - [Sebastian Ruder](https://ruder.io/) 12 | - [Distill](https://distill.pub/) 13 | - [StatQuest with Josh Starmer](https://www.youtube.com/user/joshstarmer) 14 | - [sentdex](https://www.youtube.com/channel/UCfzlCWGWYyIQ0aLC5w48gBQ) 15 | - [Lex Fridman](https://www.youtube.com/user/lexfridman) 16 | - [3Blue1Brown](https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw) 17 | - [Alexander Amini](https://www.youtube.com/user/Zan560) 18 | - [The Coding Train](https://www.youtube.com/user/shiffman) 19 | - [Christopher Olah](https://colah.github.io/) 20 | ## Communities to Follow 21 | 22 | - [AI Coimbatore](https://www.meetup.com/AICoimbatore/) *Join here*🔗⬇️ 23 | - [Telegram : For Daily Updates](https://t.me/joinchat/MmtTDRUcEqIuAPpr6Ph0Jw) 24 | - [Facebook : Coimbatore School of AI](https://www.facebook.com/groups/440187506472896/) 25 | - [TensorFlow User Group Coimbatore](https://www.tensorflow.org/community/groups) 26 | - [Meetup : TFUGCbe](https://www.meetup.com/TFUGCbe/) 27 | - [Facebook : TFUGCbe](https://www.facebook.com/groups/2425901487658992/) 28 | 29 | ## This Repo is Created and Maintained by 30 | 31 | _Navaneeth Malingan_ 32 | 33 | 34 | Instagram 35 | 36 | 37 | 38 | LinkdeIN 39 | 40 |
41 | 42 | ## Why Data Science and how to get started? 43 | 44 | - [🖥️ HOW TO GET STARTED WITH MACHINE LEARNING!](https://www.youtube.com/watch?v=I74ymkoNTnw) 45 | - [How to Build a Meaningful Career in Data Science](https://www.datacamp.com/community/blog/how-to-build-a-meaningful-career-in-data-science) 46 | - [My Self-Created Artificial Intelligence Masters Degree](https://hackernoon.com/my-self-created-ai-masters-degree-ddc7aae92d0e) 47 | - [PyImageSearch](https://www.pyimagesearch.com/start-here/) 48 | - [5 Beginner Friendly Steps to Learn Machine Learning and Data Science with Python](https://www.mrdbourke.com/5-beginner-friendly-steps-to-learn-machine-learning/) 49 | 50 | 51 | ## Intro to ML 52 | 53 | - [Luis Serrano: A Friendly Introduction to Machine Learning](https://www.youtube.com/watch?v=IpGxLWOIZy4) 54 | - [StatQuest: A Gentle Introduction to Machine Learning](https://www.youtube.com/watch?v=Gv9_4yMHFhI) 55 | - [Machine Learning For Everyone](https://vas3k.com/blog/machine_learning/) _Summarize's Machine Learning algorithms and their applications in simple words with real-world examples._ 56 | 57 | ## Anyone can do Machine Learning 58 | 59 | - [Teachable Machine](https://teachablemachine.withgoogle.com/) _Train a computer to recognize your own images, sounds, & poses. A fast, easy way to create machine learning models for your sites, apps, and more – no expertise or coding required._ 60 | 61 | ## MOOCs 62 | 63 | - [Machine Learning by Andrew Ng, Stanford](https://www.coursera.org/learn/machine-learning) _IMDB 10/10 LOL :P_ 64 | - [Datacamp : Data Engineer with Python](https://www.datacamp.com/tracks/data-engineer-with-python) 65 | - [Intro to Machine Learning](https://classroom.udacity.com/courses/ud120) _Topics Covered Naive Bayes, SVM, Decision Trees, Regressions, Outliers, Clustering, Feature Scaling, Text Learning, Feature Selection, PCA, Validation, Evaluation Metrics_ 66 | - [Intro to TensorFlow for Deep Learning](https://classroom.udacity.com/courses/ud187) _The Best Course for Learning TensorFlow_ 67 | - [End-to-End Machine Learning](https://end-to-end-machine-learning.teachable.com/courses/) 68 | - [NVIDIA DEEP LEARNING INSTITUTE](https://www.nvidia.com/en-us/deep-learning-ai/education/) 69 | - [Introduction to Machine Learning for Coders!](http://course18.fast.ai/ml) 70 | - [Practical Deep Learning for Coders, v3](https://course.fast.ai/) 71 | - [FastAI](https://www.fast.ai/) 72 | 73 | ## Courses from Top Universities 74 | ### Stanford University 75 | - [CS221 - Artificial Intelligence: Principles and Techniques by Percy Liang and Dorsa Sadigh](https://www.youtube.com/playlist?list=PLoROMvodv4rOca_Ovz1DvdtWuz8BfSWL2) 76 | - [CS229 - Machine Learning by Andrew Ng](https://www.youtube.com/playlist?list=PLoROMvodv4rMiGQp3WXShtMGgzqpfVfbU) 77 | - [CS230 - Deep Learning by Andrew Ng](https://www.youtube.com/playlist?list=PLoROMvodv4rOABXSygHTsbvUz4G_YQhOb) 78 | - [CS231n - Convolutional Neural Networks for Visual Recognition by Fei-Fei Li and Andrej Karpathy](https://www.youtube.com/playlist?list=PL3FW7Lu3i5JvHM8ljYj-zLfQRF3EO8sYv) 79 | - [CS224n - Natural Language Processing with Deep Learning by Christopher Manning](https://www.youtube.com/playlist?list=PLoROMvodv4rOSH4v6133s9LFPRHjEmbmJ) 80 | - [CS234 - Reinforcement Learning by Emma Brunskill](https://www.youtube.com/playlist?list=PLoROMvodv4rOSOPzutgyCTapiGlY2Nd8u) 81 | - [ CS330 - Deep Multi-task and Meta Learning by Chelsea Finn](https://www.youtube.com/playlist?list=PLoROMvodv4rNjRoawgt72BBNwL2V7doGI) 82 | - [CS25 - Transformers United](https://www.youtube.com/playlist?list=PLoROMvodv4rNiJRchCzutFw5ItR_Z27CM) 83 | 84 | ### Carnegie Mellon University 85 | - [CS/LTI 11-711: Advanced NLP by Graham Neubig](https://www.youtube.com/playlist?list=PL8PYTP1V4I8D0UkqW2fEhgLrnlDW9QK7z) 86 | - [CS/LTI 11-747: Neural Networks for NLP by Graham Neubig](https://www.youtube.com/playlist?list=PL8PYTP1V4I8AkaHEJ7lOOrlex-pcxS-XV) 87 | - [CS/LTI 11-737: Multilingual NLP by Graham Neubig](https://www.youtube.com/playlist?list=PL8PYTP1V4I8BhCpzfdKKdd1OnTfLcyZr7) 88 | - [CS/LTI 11-777: Multimodal Machine Learning by Louis-Philippe Morency](https://www.youtube.com/channel/UCqlHIJTGYhiwQpNuPU5e2gg/videos) 89 | - [CS/LTI 11-785: Introduction to Deep Learning by Bhiksha Raj and Rita Singh](https://www.youtube.com/channel/UC8hYZGEkI2dDO8scT8C5UQA/playlists) 90 | - [CS/LTI Low Resource NLP Bootcamp 2020 by Graham Neubig](https://www.youtube.com/playlist?list=PL8PYTP1V4I8A1CpCzURXAUa6H4HO7PF2c) 91 | 92 | ### Massachusetts Institute of Technology 93 | - [6.S191 - Introduction to Deep Learning by Alexander Amini and Ava Amini](https://www.youtube.com/playlist?list=PLtBw6njQRU-rwp5__7C0oIVt26ZgjG9NI) 94 | - [6.S094 - Deep Learning by Lex Fridman](https://www.youtube.com/playlist?list=PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf) 95 | - [6.S192 - Deep Learning for Art, Aesthetics, and Creativity by Ali Jahanian](https://www.youtube.com/playlist?list=PLCpMvp7ftsnIbNwRnQJbDNRqO6qiN3EyH) 96 | 97 | ### University College London 98 | - [COMP M050 Reinforcement Learning by David Silver](https://www.youtube.com/watch?v=2pWv7GOvuf0) 99 | 100 | 101 | ## YouTube ML Playlists 102 | 103 | - [Machine Learning by StatQuest with Josh Starmer](https://www.youtube.com/playlist?list=PLblh5JKOoLUICTaGLRoHQDuF_7q2GfuJF) 104 | - [Intelligence and Learning by The Coding Train](https://www.youtube.com/playlist?list=PLRqwX-V7Uu6YJ3XfHhT2Mm4Y5I99nrIKX) 105 | 106 | ## Machine Learning Glossary 107 | 108 | - [This glossary defines general machine learning terms in a variety of domains, as well as terms specific to TensorFlow.](https://developers.google.com/machine-learning/glossary) 109 | 110 | ## Machine Learning Fundamentals _(These terms will be often used in the below algorithms)_ 111 | 112 | - [Bias and Variance](https://www.youtube.com/watch?v=EuBBz3bI-aA) 113 | - [Cross Validation](https://www.youtube.com/watch?v=fSytzGwwBVw) 114 | - [Machine Learning Fundamentals: The Confusion Matrix](https://www.youtube.com/watch?v=Kdsp6soqA7o) 115 | - [Sensitivity and Specivicity](https://www.youtube.com/watch?v=sunUKFXMHGk) 116 | - [ROC and AUC, Clearly Explained!](https://www.youtube.com/watch?v=4jRBRDbJemM) 117 | - [StatQuest: R-squared explained](https://www.youtube.com/watch?v=2AQKmw14mHM) 118 | - [Regularization Part 1: Ridge Regression](https://www.youtube.com/watch?v=Q81RR3yKn30) 119 | - [Regularization Part 2: Lasso Regression](https://www.youtube.com/watch?v=NGf0voTMlcs) 120 | - [Maximum Likelihood](https://www.youtube.com/watch?v=XepXtl9YKwc) 121 | - [Covariance and Correlation Part 1: Covariance](https://www.youtube.com/watch?v=qtaqvPAeEJY) 122 | - [Statistics Fundamentals: The Mean, Variance and Standard Deviation](https://www.youtube.com/watch?v=SzZ6GpcfoQY) 123 | - [Statistics Fundamentals: Population Parameters](https://www.youtube.com/watch?v=vikkiwjQqfU) 124 | - [Glossary: Statistics](https://github.com/nature-of-code/NOC-S17-2-Intelligence-Learning/wiki/Glossary:-Statistics) 125 | - [Glossary: Machine Learning](https://github.com/nature-of-code/NOC-S17-2-Intelligence-Learning/wiki/Glossary:-Machine-Learning) 126 | - [Looking at R-Squared](https://medium.com/@erika.dauria/looking-at-r-squared-721252709098) 127 | 128 | ## Math 129 | 130 | - [Mathematics for Machine Learning](https://nivu.me/posts/mathematics-for-machine-learning/) _In this post I have compiled great e-resources (MOOC, YouTube Lectures, Books) for learning Mathematics for Machine Learning._ 131 | - [Mathematics for Machine Learning - Book](https://mml-book.github.io/) One great book for all things math for machine learning. (free eBook) 132 | - **I highly Recommend you to go through the following resources by 3Blue1Brown** 133 | - [Essence of Linear Algrbra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab)▶️ 134 | - [Essene of Calculus](https://www.youtube.com/playlist?list=PLZHQObOWTQDMsr9K-rj53DwVRMYO3t5Yr)▶️ 135 | - [Differential equations](https://www.youtube.com/playlist?list=PLZHQObOWTQDNPOjrT6KVlfJuKtYTftqH6)▶️ 136 | - [Gilbert Strang: Linear Algebra vs Calculus](https://www.youtube.com/watch?v=osEADxaIKIc)▶️ 137 | - [Basics of Integral Calculus in Tamil](https://www.youtube.com/watch?v=yMQjCFvMFgA)▶️ 138 | - [New fast.ai course: Computational Linear Algebra](https://www.fast.ai/2017/07/17/num-lin-alg/) 139 | - [Linear Algebra Book](http://www.deeplearningbook.org/contents/linear_algebra.html) 140 | 141 | ## Python 142 | 143 | - [Python Programming Tutorials by Socratica](https://www.youtube.com/watch?v=bY6m6_IIN94&list=PLi01XoE8jYohWFPpC17Z-wWhPOSuh8Er-)▶️ 144 | - [Python Tutorial by w3schools](https://www.w3schools.com/python/)📙 145 | - [Learning Python Programming](https://www.scaler.com/topics/python/)📙 146 | 147 | ## Numpy 148 | 149 | - [A Visual Intro to NumPy and Data Representation](https://jalammar.github.io/visual-numpy/) 150 | - [CS231n : Python Numpy Tutorial](http://cs231n.github.io/python-numpy-tutorial/#numpy) 151 | - [NumPy resources : part of the End-to-End Machine Learning library](https://brohrer.github.io/numpy_resources.html) 152 | - [100 numpy exercises (with solutions)](https://github.com/rougier/numpy-100) 153 | - [101 NumPy Exercises for Data Analysis (Python)](https://www.machinelearningplus.com/python/101-numpy-exercises-python/) 154 | - [Numpy Tutorial – Introduction to ndarray](https://www.machinelearningplus.com/python/numpy-tutorial-part1-array-python-examples/) 155 | - [Sci-Py Lectures : NumPy: creating and manipulating numerical data](https://scipy-lectures.org/intro/numpy/index.html) 156 | - [Python NumPy Tutorial for Beginners](https://www.youtube.com/watch?v=QUT1VHiLmmI)▶️ _Learn the basics of the NumPy library in this tutorial for beginners. It provides background information on how NumPy works and how it compares to Python's Built-in lists. This video goes through how to write code with NumPy. It starts with the basics of creating arrays and then gets into more advanced stuff. The video covers creating arrays, indexing, math, statistics, reshaping, and more._ 157 | - [Python NumPy Tutorial – Learn NumPy Arrays With Examples](https://www.edureka.co/blog/python-numpy-tutorial/) 158 | - [Python Numpy Array Tutorial](https://www.datacamp.com/community/tutorials/python-numpy-tutorial) 159 | - [NumPy Tutorial: Data analysis with Python](https://www.dataquest.io/blog/numpy-tutorial-python/) 160 | - [Deep Learning Prerequisites: The Numpy Stack in Python](https://www.youtube.com/playlist?list=PLxgDUj5eygKmlhteKFiXIIhdqmdD2TwVM)▶️ 161 | 162 | ## Pandas 163 | 164 | - [A Gentle Visual Intro to Data Analysis in Python Using Pandas](https://jalammar.github.io/gentle-visual-intro-to-data-analysis-python-pandas/) 165 | - [Data analysis in Python with pandas by Data School](https://www.youtube.com/watch?v=yzIMircGU5I&list=PL5-da3qGB5ICCsgW1MxlZ0Hq8LL5U3u9y)▶️ 166 | - [Best practices with pandas by Data School](https://www.youtube.com/watch?v=hl-TGI4550M&list=PL5-da3qGB5IBITZj_dYSFqnd_15JgqwA6)▶️ 167 | - [Python Pandas Tutorial: A Complete Introduction for Beginners](https://www.learndatasci.com/tutorials/python-pandas-tutorial-complete-introduction-for-beginners/) 168 | 169 | ## Machine Learning YouTube Playlists 170 | 171 | - [CodeBasics: Machine Learning Tutorial Python](https://www.youtube.com/watch?v=gmvvaobm7eQ&list=PLeo1K3hjS3uvCeTYTeyfe0-rN5r8zn9rw)▶️ 172 | - [StatQuest: Machine Learning](https://www.youtube.com/playlist?list=PLblh5JKOoLUICTaGLRoHQDuF_7q2GfuJF)▶️ 173 | - [sentdex: Machine Learning with Python](https://www.youtube.com/playlist?list=PLQVvvaa0QuDfKTOs3Keq_kaG2P55YRn5v)▶️ 174 | - [Simplilearn: Machine Learning Tutorial Videos](https://www.youtube.com/playlist?list=PLEiEAq2VkUULYYgj13YHUWmRePqiu8Ddy)▶️ 175 | - [Machine Learning Tutorial in Python](https://www.youtube.com/playlist?list=PL9ooVrP1hQOHUfd-g8GUpKI3hHOwM_9Dn)▶️ 176 | - [deeplizard: Machine Learning & Deep Learning Fundamentals](https://www.youtube.com/playlist?list=PLZbbT5o_s2xq7LwI2y8_QtvuXZedL6tQU)▶️ 177 | 178 | ## ML, DL Visual Explainers 179 | 180 | - [MLU-EXPLAIN](https://mlu-explain.github.io/) 181 | - [CNN Explainer](https://poloclub.github.io/cnn-explainer/) 182 | 183 | _Note: Below you can find the best lectures for popular Machine Learning Algorithms_ 184 | 185 | ## Linear Regression 186 | 187 | - [Linear Regression: A friendly introduction by Luis Serrano](https://www.youtube.com/watch?v=wYPUhge9w5c)▶️ 188 | - [Statistics 101: Linear Regression, The Very Basics](https://www.youtube.com/watch?v=ZkjP5RJLQF4)▶️ 189 | - [Regression Line Fitting Playground](https://phet.colorado.edu/sims/html/least-squares-regression/latest/least-squares-regression_en.html) 190 | - [Regression Curve Fitting Playground](https://phet.colorado.edu/sims/html/curve-fitting/latest/curve-fitting_all.html) 191 | 192 | ## Logistic Regression 193 | 194 | - [Linear Regression vs Logistic Regression | Data Science Training | Edureka](https://www.youtube.com/watch?v=OCwZyYH14uw)▶️ 195 | - [Logistic Regression and the Perceptron Algorithm: A friendly introduction by Luis Serrano](https://www.youtube.com/watch?v=jbluHIgBmBo)▶️ 196 | 197 | ## Decision Tree 198 | 199 | - [StatQuest: Decision Trees](https://www.youtube.com/watch?v=7VeUPuFGJHk)▶️ 200 | - [StatQuest: Decision Trees, Part 2 - Feature Selection and Missing Data](https://www.youtube.com/watch?v=wpNl-JwwplA)▶️ 201 | - [Decision Tree Introduction with example](https://www.geeksforgeeks.org/decision-tree-introduction-example/)📙 202 | - [Decision Tree](https://www.geeksforgeeks.org/decision-tree/)📙 203 | - [Python | Decision Tree Regression using sklearn](https://www.geeksforgeeks.org/python-decision-tree-regression-using-sklearn/)📙 204 | - [ML | Logistic Regression v/s Decision Tree Classification](https://www.geeksforgeeks.org/ml-logistic-regression-v-s-decision-tree-classification/)📙 205 | 206 | ## Random Forest 207 | 208 | - [StatQuest: Random Forests Part 1 - Building, Using and Evaluating](https://www.youtube.com/watch?v=J4Wdy0Wc_xQ)▶️ 209 | - [StatQuest: Random Forests Part 2: Missing data and clustering](https://www.youtube.com/watch?v=nyxTdL_4Q-Q)▶️ 210 | - [Random Forests for Complete Beginners](https://victorzhou.com/blog/intro-to-random-forests/)📙 211 | 212 | ## Boosting Machine Learning 213 | 214 | - [Boosting Machine Learning Tutorial | Adaptive Boosting, Gradient Boosting, XGBoost | Edureka](https://www.youtube.com/watch?v=kho6oANGu_A)▶️ 215 | - [AdaBoost, Clearly Explained](https://www.youtube.com/watch?v=LsK-xG1cLYA)▶️ 216 | - [Gradient Boost Part 1: Regression Main Ideas](https://www.youtube.com/watch?v=3CC4N4z3GJc)▶️ 217 | - [Gradient Boost Part 2: Regression Details](https://www.youtube.com/watch?v=2xudPOBz-vs)▶️ 218 | - [Gradient Boost Part 3: Classification](https://www.youtube.com/watch?v=jxuNLH5dXCs)▶️ 219 | - [Gradient Boost Part 4: Classification Details](https://www.youtube.com/watch?v=StWY5QWMXCw)▶️ 220 | - [XGBoost Part1: XGBoost Trees for Regression](https://www.youtube.com/watch?v=OtD8wVaFm6E)▶️ 221 | - [XGBoost Part 2: XGBoost Trees For Classification](https://www.youtube.com/watch?v=8b1JEDvenQU)▶️ 222 | - [Ensemble methods Sci-kit learn](https://scikit-learn.org/stable/modules/ensemble.html) 223 | 224 | ## SVM 225 | 226 | - [Support Vector Machines (SVMs): A friendly introduction by Luis Serrano](https://www.youtube.com/watch?v=Lpr__X8zuE8)▶️ 227 | - [Support Vector Machines, Clearly Explained!!! by StatQuest](https://www.youtube.com/watch?v=efR1C6CvhmE)▶️ 228 | - [Support Vector Machines Part 2: The Polynomial Kernel by StatQuest](https://www.youtube.com/watch?v=Toet3EiSFcM)▶️ 229 | - [Support Vector Machines Part 3: The Radial (RBF) Kernel by StatQuest](https://www.youtube.com/watch?v=Qc5IyLW_hns)▶️ 230 | - [How Support Vector Machines work / How to open a black box](https://www.youtube.com/watch?v=-Z4aojJ-pdg)▶️ 231 | - [Support Vector Machines - The Math of Intelligence (Week 1)](https://www.youtube.com/watch?v=g8D5YL6cOSE)▶️ 232 | - [Demystifying Support Vector Machines](https://towardsdatascience.com/demystifying-support-vector-machines-8453b39f7368)📙 233 | - [Support Vector Machine (SVM) - Fun and Easy Machine Learning](https://www.youtube.com/watch?v=Y6RRHw9uN9o)▶️ 234 | 235 | ## Bayes Theorem 236 | 237 | - [Bayes theorem, and making probability intuitive](https://www.youtube.com/watch?v=HZGCoVF3YvM)▶️ 238 | - [A friendly introduction to Bayes Theorem and Hidden Markov Models](https://www.youtube.com/watch?v=kqSzLo9fenk)▶️ 239 | - [The Bayesian Trap](https://www.youtube.com/watch?v=R13BD8qKeTg)▶️ 240 | - [Naive Bayes classifier: A friendly approach](https://www.youtube.com/watch?v=Q8l0Vip5YUw)▶️ 241 | 242 | ## K-Nearest Neighbors 243 | 244 | - [KNN from Scratch](https://machinelearningmastery.com/tutorial-to-implement-k-nearest-neighbors-in-python-from-scratch/)📙 245 | - [Machine Learning Basics with the K-Nearest Neighbors Algorithm](https://towardsdatascience.com/machine-learning-basics-with-the-k-nearest-neighbors-algorithm-6a6e71d01761)📙 246 | 247 | ## K-Means 248 | 249 | - [StatQuest: K-means clustering](https://www.youtube.com/watch?v=4b5d3muPQmA)▶️ 250 | - [Machine Learning Tutorial Python - 13: K Means Clustering](https://www.youtube.com/watch?v=EItlUEPCIzM)▶️ 251 | - [K Means Clustering Algorithm - K Means Example in Python - Machine Learning Algorithms - Edureka](https://www.youtube.com/watch?v=1XqG0kaJVHY)▶️ 252 | 253 | ## Principal Component Analysis (PCA) 254 | 255 | - [StatQuest: PCA main ideas in only 5 minutes!!!](https://www.youtube.com/watch?v=HMOI_lkzW08)▶️ 256 | - [StatQuest: Principal Component Analysis (PCA), Step-by-Step](https://www.youtube.com/watch?v=FgakZw6K1QQ)▶️ 257 | - [Principal Component Analysis (PCA) by Luis Serrano](https://www.youtube.com/watch?v=g-Hb26agBFg)▶️ 258 | 259 | ## Probabilistic Graphical Models 260 | 261 | - [Probabilistic Graphical Models Specialization](https://www.coursera.org/specializations/probabilistic-graphical-models) 262 | 263 | ## Gradient Descent from Scratch 264 | 265 | ### The Best 266 | 267 | - [Linear Regression using Gradient Descent](https://nivu.me/posts/linear-regression-using-gradient-descent)📙 268 | - [Gradient Descent, Step-by-Step](https://www.youtube.com/watch?v=sDv4f4s2SB8)▶️ 269 | - [Stochastic Gradient Descent, Clearly Explained!!!](https://www.youtube.com/watch?v=vMh0zPT0tLI)▶️ 270 | - [How Optimization Works](https://end-to-end-machine-learning.teachable.com/p/building-blocks-how-optimization-works) _A short series on the fundamentals of optimization for machine learning_ 271 | - [Linear Regression using Gradient Descent](https://towardsdatascience.com/linear-regression-using-gradient-descent-97a6c8700931) 272 | - [Code](https://github.com/chasinginfinity/ml-from-scratch) 273 | - [Polynomial Regression](https://towardsdatascience.com/polynomial-regression-bbe8b9d97491) 274 | - [Gradient Descent in Linear Regression - Math](https://www.geeksforgeeks.org/gradient-descent-in-linear-regression/)📙 275 | - [Neural Network Backpropagation Basics For Dummies](https://www.youtube.com/watch?v=8d6jf7s6_Qs)▶️ 276 | 277 | ### Extra Good Ones 278 | 279 | - [3.4: Linear Regression with Gradient Descent - Intelligence and Learning](https://www.youtube.com/watch?v=L-Lsfu4ab74)▶️ 280 | - [3.5: Mathematics of Gradient Descent - Intelligence and Learning](https://www.youtube.com/watch?v=jc2IthslyzM)▶️ 281 | - [3.5a: Calculus: Power Rule - Intelligence and Learning](https://www.youtube.com/watch?v=IKb_3FJtA1U)▶️ 282 | - [3.5b: Calculus: Chain Rule - Intelligence and Learning](https://www.youtube.com/watch?v=cE6wr0_ad8Y)▶️ 283 | - [3.5c: Calculus: Partial Derivative - Intelligence and Learning](https://www.youtube.com/watch?v=-WVBXXV81R4)▶️ 284 | 285 | ### Vanishing Gradient 286 | 287 | - [Vanishing Gradient Problem](https://www.youtube.com/watch?v=SKMpmAOUa2Q)▶️ 288 | - [How to overcome Vanishing Gradient Problem](https://www.youtube.com/watch?v=puux7KZQfsE)▶️ 289 | 290 | ### How to Handle Local Minima 291 | 292 | - https://datascience.stackexchange.com/questions/24534/does-gradient-descent-always-converge-to-an-optimum 293 | - https://datascience.stackexchange.com/questions/18802/does-mlp-always-find-local-minimum 294 | - https://www.coursera.org/learn/deep-neural-network/lecture/RFANA/the-problem-of-local-optima 295 | 296 | ## Scikit-learn 297 | 298 | - [An introduction to machine learning with scikit-learn](https://scikit-learn.org/stable/tutorial/basic/tutorial.html)📙 299 | - [Python Machine Learning: Scikit-Learn Tutorial](https://www.datacamp.com/community/tutorials/machine-learning-python) 300 | 301 | # Deep Learning 302 | 303 | - [DEEP BLUEBERRY BOOK](https://mithi.github.io/deep-blueberry/) _This is a tiny and very focused collection of links about deep learning. If you've always wanted to learn deep learning stuff but don't know where to start, you might have stumbled upon the right place!_ 304 | - [6.S191: Introduction to Deep Learning (2019)](http://introtodeeplearning.com/2019/) 305 | - [Class Lectures (YouTube) - MIT 6.S191: Introduction to Deep Learning](https://www.youtube.com/playlist?list=PLtBw6njQRU-rwp5__7C0oIVt26ZgjG9NI) 306 | - [Lab](https://github.com/aamini/introtodeeplearning_labs) 307 | - [MIT 6.S191 Introduction to Deep Learning (2020)](http://introtodeeplearning.com/) 308 | - [MIT 6.S191 Introduction to Deep Learning (2023) (YouTube)](https://youtube.com/playlist?list=PLtBw6njQRU-rwp5__7C0oIVt26ZgjG9NI) 309 | - [MIT Deep Learning Basics: Introduction and Overview](https://www.youtube.com/watch?v=O5xeyoRL95U) 310 | - [MIT Deep Learning by Lex Fridman](https://deeplearning.mit.edu/) 311 | - [Deep Learning Lectures (YouTube)](https://www.youtube.com/playlist?list=PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf) 312 | - [Deep Learning in Tamil](https://www.youtube.com/channel/UC2YVnH6aMky1SMdmlo5S9-A) 313 | 314 | ### Deep Leraning Books 315 | 316 | - [The Deep Learning Textbook from Ian Goodfellow, Yoshua Bengio, and Aaron Courville](http://www.deeplearningbook.org/) 317 | - [Neural Networks And Deep Learning by Michael Nielsen](http://neuralnetworksanddeeplearning.com/) 318 | - [Grokking Deep Learning by Andrew Trask](https://www.manning.com/books/grokking-deep-learning) 319 | 320 | ### Deep Lerning Papers 321 | 322 | - [Deep Learning Papers Reading Roadmap](https://github.com/floodsung/Deep-Learning-Papers-Reading-Roadmap) 323 | 324 | ## NN 325 | 326 | - [A friendly introduction to Deep Learning and Neural Networks](https://www.youtube.com/watch?v=BR9h47Jtqyw)▶️ 327 | - [Machine Learning for Beginners: An Introduction to Neural Networks](https://victorzhou.com/blog/intro-to-neural-networks/)📙 _A simple explanation of how they work and how to implement one from scratch in Python._ 328 | - [A Visual and Interactive Guide to the Basics of Neural Networks](https://jalammar.github.io/visual-interactive-guide-basics-neural-networks/)📙 329 | - [A Visual And Interactive Look at Basic Neural Network Math](https://jalammar.github.io/feedforward-neural-networks-visual-interactive/)📙 330 | - [Neural Network Architectures](https://www.youtube.com/watch?v=oJNHXPs0XDk)▶️ 331 | - [Neural Networks Demystified by Welch Labs](https://www.youtube.com/playlist?list=PLiaHhY2iBX9hdHaRr6b7XevZtgZRa1PoU)▶️ 332 | - [Supporting code for short YouTube series Neural Networks Demystified.](https://github.com/stephencwelch/Neural-Networks-Demystified) 333 | - [Neural networks Series by 3Blue1Brows](https://www.youtube.com/playlist?list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi)▶️ 334 | 335 | ## Computer Vision 336 | 337 | - [CS131 Computer Vision: Foundations and Applications Fall 2019](http://vision.stanford.edu/teaching/cs131_fall1920/index.html) 338 | - [CS231A: Computer Vision, From 3D Reconstruction to Recognition Winter 2018](http://web.stanford.edu/class/cs231a/) 339 | - [CS231n Convolutional Neural Networks for Visual Recognition](https://cs231n.github.io/) 340 | - [Computer Vision Notebooks](https://diegoinacio.github.io/computer-vision-notebooks-page/) 341 | 342 | ### CNN 343 | 344 | - [CS231n: Convolutional Neural Networks for Visual Recognition Spring 2019](http://cs231n.stanford.edu/) 345 | - [CS231n: Convolutional Neural Networks for Visual Recognition](http://cs231n.github.io/) 346 | - [A friendly introduction to Convolutional Neural Networks and Image Recognition](https://www.youtube.com/watch?v=2-Ol7ZB0MmU) 347 | - [A Comprehensive Guide to Convolutional Neural Networks — the ELI5 way](https://towardsdatascience.com/a-comprehensive-guide-to-convolutional-neural-networks-the-eli5-way-3bd2b1164a53) 348 | - [Tensorflow Convolutional Neural Network (CNN)](https://www.tensorflow.org/tutorials/images/cnn) 349 | - [Convolutional Networks Book](http://www.deeplearningbook.org/contents/convnets.html) 350 | - [CNNs, Part 1: An Introduction to Convolutional Neural Networks](https://victorzhou.com/blog/intro-to-cnns-part-1/) 351 | - [CS231n Winter 2016 BY Andrej Karpathy 15 Videos](https://www.youtube.com/watch?v=NfnWJUyUJYU&list=PLkt2uSq6rBVctENoVBg1TpCC7OQi31AlC) 352 | - [Intuitive understanding of 1D, 2D, and 3D Convolutions in Convolutional Neural Networks](https://stackoverflow.com/questions/42883547/intuitive-understanding-of-1d-2d-and-3d-convolutions-in-convolutional-neural-n) 353 | - [CNN Explainer](https://github.com/poloclub/cnn-explainer)_An interactive visualization system designed to help non-experts learn about Convolutional Neural Networks (CNNs)_ 354 | 355 | ### Object Detection 356 | 357 | #### [Evolution Of Object Detection Networks by Cogneethi](https://www.youtube.com/playlist?list=PL1GQaVhO4f_jLxOokW7CS5kY_J1t1T17S) 358 | _Deep-dive tutorial on Object Detection. Intuition lectures on topics ranging from Classical CV techniques like HOG, SIFT to Convolutional Neural Network based techniques like Overfeat, Faster RCNN etc. You will learn how the ideas have evolved from some of the earliest papers to current ones. 359 | And hence the name Evolution of Object Detection Networks._ 360 | 361 | - [SIFT | Scale Invariant Feature Transform](https://www.youtube.com/watch?v=ttD3pvM6pEI&list=PL1GQaVhO4f_jLxOokW7CS5kY_J1t1T17S&index=19&ab_channel=Cogneethi) 362 | - [Hog Intuition | Histogram of Oriented Gradients](https://www.youtube.com/watch?v=Qwc3a8cOKRU&list=PL1GQaVhO4f_jLxOokW7CS5kY_J1t1T17S&index=20&ab_channel=Cogneethi) 363 | - [NMS | Non Max Suppression](https://www.youtube.com/watch?v=07jFApuhh4I&list=PL1GQaVhO4f_jLxOokW7CS5kY_J1t1T17S&index=25&ab_channel=Cogneethi) 364 | - [Object Localization | Bounding Box Regression](https://www.youtube.com/watch?v=LZRfHkTNQqo&list=PL1GQaVhO4f_jLxOokW7CS5kY_J1t1T17S&index=49&ab_channel=Cogneethi) 365 | - [Object Detection](https://www.youtube.com/watch?v=77XJeT-Z-uE&list=PL1GQaVhO4f_jLxOokW7CS5kY_J1t1T17S&index=50&t=3s&ab_channel=Cogneethi) 366 | - [RCNN](https://www.youtube.com/watch?v=dtIZVJAcLxE&list=PL1GQaVhO4f_jLxOokW7CS5kY_J1t1T17S&index=60&t=1s&ab_channel=Cogneethi) 367 | - [Spatial Pyramid Matching | SPM](https://www.youtube.com/watch?v=6MwuK2wHlOg&list=PL1GQaVhO4f_jLxOokW7CS5kY_J1t1T17S&index=70&t=92s&ab_channel=Cogneethi) 368 | - [SPPNet Object Detection](https://www.youtube.com/watch?v=M3lx8GHrEsg&list=PL1GQaVhO4f_jLxOokW7CS5kY_J1t1T17S&index=72&ab_channel=Cogneethi) 369 | - [Fast RCNN Network](https://www.youtube.com/watch?v=ZBPQ7Hd46m4&list=PL1GQaVhO4f_jLxOokW7CS5kY_J1t1T17S&index=77&t=14s&ab_channel=Cogneethi) 370 | - [Faster RCNN](https://www.youtube.com/watch?v=po59qI5LJGU&list=PL1GQaVhO4f_jLxOokW7CS5kY_J1t1T17S&index=80&ab_channel=Cogneethi) 371 | - [Yolo v4 Object Detection - How it Works & Why it's So Amazing!](https://www.youtube.com/watch?v=_JzOFWx1vZg&t=1s&ab_channel=AugmentedStartups) 372 | - Frameworks and Libraries 373 | - [Detectron2 by Facebook AI](https://github.com/facebookresearch/detectron2) 374 | - [MMDetection](https://github.com/open-mmlab/mmdetection) 375 | - [MediaPipe](https://github.com/google/mediapipe) 376 | - [YOLO](https://pjreddie.com/darknet/yolo/) 377 | - [TensorFlow Object Detection API](https://github.com/tensorflow/models/tree/master/research/object_detection) 378 | - [Computer Vision Recipes](https://github.com/microsoft/computervision-recipes) 379 | - Labeling Tools 380 | - [LabelImg](https://github.com/tzutalin/labelImg) 381 | - [Roboflow](https://roboflow.com/) 382 | - [Label Studio](https://labelstud.io/) 383 | - Code samples 384 | - [YOLO-Object-Counting-API](https://github.com/tugot17/YOLO-Object-Counting-API) 385 | 386 | #### 3D Object Detection 387 | 388 | - [Announcing the Objectron Dataset | Google AI Blog](https://ai.googleblog.com/2020/11/announcing-objectron-dataset.html) 389 | - [MediaPipe Objectron | Objectron (3D Object Detection)](https://google.github.io/mediapipe/solutions/objectron.html) 390 | 391 | ### Image Segmentation 392 | 393 | - [Computer Vision Tutorial: A Step-by-Step Introduction to Image Segmentation Techniques (Part 1)](https://www.analyticsvidhya.com/blog/2019/04/introduction-image-segmentation-techniques-python/) 394 | 395 | ### GANs 396 | 397 | - [A Friendly Introduction to Generative Adversarial Networks (GANs) by Luis Serrano](https://www.youtube.com/watch?v=8L11aMN5KY8&ab_channel=Serrano.Academy) 398 | - [Generative Adversarial Networks (GANs) by Ahlad Kumar](https://www.youtube.com/playlist?list=PLdxQ7SoCLQAMGgQAIAcyRevM8VvygTpCu) 399 | - [Building our first simple GAN](https://www.youtube.com/watch?v=OljTVUVzPpM&ab_channel=AladdinPersson) 400 | - [Face editing with Generative Adversarial Networks](https://www.youtube.com/watch?v=dCKbRCUyop8) 401 | - [Variational Autoencoders](https://www.youtube.com/watch?v=9zKuYvjFFS8) 402 | - [Generative Adversarial Networks (GANs) in 50 lines of code (PyTorch)](https://medium.com/@devnag/generative-adversarial-networks-gans-in-50-lines-of-code-pytorch-e81b79659e3f) 403 | - [Generative Models](https://openai.com/blog/generative-models/) 404 | 405 | #### Style Transfer 406 | 407 | - [TensorFlow CNN for fast style transfer ⚡🖥🎨🖼](https://github.com/lengstrom/fast-style-transfer) 408 | 409 | ## NLP 410 | 411 | - [CS224n: Natural Language Processing with Deep Learning](http://web.stanford.edu/class/cs224n/) 412 | - [NLP and The Reformer](https://www.youtube.com/watch?v=rNG_hpSyZcE) 413 | - [The Illustrated Word2vec](https://jalammar.github.io/illustrated-word2vec/) 414 | 415 | ### RNN 416 | 417 | - [Illustrated Guide to Recurrent Neural Networks: Understanding the Intuition](https://www.youtube.com/watch?v=LHXXI4-IEns) 418 | - [Anyone Can Learn To Code an LSTM-RNN in Python (Part 1: RNN)](https://iamtrask.github.io/2015/11/15/anyone-can-code-lstm/) _Baby steps to your neural network's first memories._ 419 | - [The Unreasonable Effectiveness of Recurrent Neural Networks](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) 420 | - [An Introduction to Recurrent Neural Networks for Beginners](https://victorzhou.com/blog/intro-to-rnns/) _A simple walkthrough of what RNNs are, how they work, and how to build one from scratch in Python._ 421 | - [Attention and Augmented Recurrent Neural Networks by Distill](https://distill.pub/2016/augmented-rnns/) 422 | - [Visualizing memorization in RNNs by Distill](https://distill.pub/2019/memorization-in-rnns/) _Inspecting gradient magnitudes in context can be a powerful tool to see when recurrent units use short-term or long-term contextual understanding._ 423 | - [Deep Learning for NLP: ANNs, RNNs and LSTMs explained!](https://www.kdnuggets.com/2019/08/deep-learning-nlp-explained.html) 424 | 425 | ### LSTM 426 | 427 | - [Understanding LSTM Networks](http://colah.github.io/posts/2015-08-Understanding-LSTMs/) 428 | - [LSTM implementation explained](https://apaszke.github.io/lstm-explained.html) 429 | - [A Gentle Introduction to LSTM Autoencoders](https://machinelearningmastery.com/lstm-autoencoders/) 430 | 431 | 432 | ### Transformers and Self Attention 433 | #### Visual Guide to Transformer Neural Networks (Highly Recommended) 434 | 435 | - [Part 1 - Position Embeddings](https://www.youtube.com/watch?v=dichIcUZfOw&ab_channel=Hedu-MathofIntelligence) 436 | - [Part 2 - Multi-Head & Self Attention](https://www.youtube.com/watch?v=mMa2PmYJlCo&ab_channel=Hedu-MathofIntelligence) 437 | - [Part 3 - Decoder’s Masked Attention](https://www.youtube.com/watch?v=gJ9kaJsE78k&ab_channel=Hedu-MathofIntelligence) 438 | - [NLP Transformers Attention Playlist](https://www.youtube.com/playlist?list=PLxI06TjqRkofnRuvD-Ks0Qef5g73yrMQ7) 439 | - [The Illustrated Transformer](https://jalammar.github.io/illustrated-transformer/) 440 | - [The Annotated Transformer](https://nlp.seas.harvard.edu/2018/04/03/attention.html) 441 | - [Transformers Paper and Code](https://nn.labml.ai/transformers/index.html) 442 | - [Transformers from Scratch](https://e2eml.school/transformers.html) 443 | - [Transformers Notes](https://www.notion.so/Transformers-969f4b27c48147778c1e2dbda0c83ce0) 444 | - [Transformers, Explained: Understand the Model Behind GPT-3, BERT, and T5](https://daleonai.com/transformers-explained) 445 | - [A comprehensive overview of Transformer variants.](https://arxiv.org/abs/2106.04554) 446 | - [How to become an NLP & Transformer Model Guru](https://www.linkedin.com/pulse/how-become-transformer-model-guru-denis-rothman/) 447 | - [[MASTERCLASS] Transformers | Attention Models](https://youtu.be/N7u13zO8DPw) 448 | ### BERT 449 | 450 | - [Explaining BERT Simply Using Sketches](https://mlwhiz.medium.com/explaining-bert-simply-using-sketches-ba30f6f0c8cb) 451 | - [A Visual Guide to Using BERT for the First Time](https://jalammar.github.io/a-visual-guide-to-using-bert-for-the-first-time/) 452 | - [The Illustrated BERT, ELMo, and co. (How NLP Cracked Transfer Learning)](https://jalammar.github.io/illustrated-bert/) 453 | - [BERT Explained: State of the art language model for NLP](https://towardsdatascience.com/bert-explained-state-of-the-art-language-model-for-nlp-f8b21a9b6270) 454 | - [BioBERT, a language representation model for biomedical domain, especially designed for biomedical text mining tasks such as biomedical named entity recognition, relation extraction, question answering, etc](https://github.com/dmis-lab/biobert) 455 | 456 | ### GPT 457 | 458 | - [The Illustrated GPT-2 (Visualizing Transformer Language Models)](https://jalammar.github.io/illustrated-gpt2/) 459 | 460 | ## Reinforcement Learning 461 | 462 | - [Deep Reinforcement Learning Course 🕹️](https://simoninithomas.github.io/Deep_reinforcement_learning_Course/) _A Free course in Deep Reinforcement Learning from beginner to expert._ 463 | - [Implementation of Reinforcement Learning Algorithms. Python, OpenAI Gym, Tensorflow. Exercises and Solutions to accompany Sutton's Book and David Silver's course.](https://github.com/dennybritz/reinforcement-learning) 464 | - [Unity Machine Learning Agents Toolkit](https://github.com/Unity-Technologies/ml-agents) 465 | - [🖥️ WRITING MY FIRST MACHINE LEARNING GAME! (1/4)](https://www.youtube.com/watch?v=ZX2Hyu5WoFg) 466 | - [Deep Reinforcement Learning: Pong from Pixels by Andrej Karpathy](http://karpathy.github.io/2016/05/31/rl/) 467 | - [A Beginner's Guide to Deep Reinforcement Learning](https://pathmind.com/wiki/deep-reinforcement-learning) 468 | - [An Introduction to Unity ML-Agents](https://towardsdatascience.com/an-introduction-to-unity-ml-agents-6238452fcf4c) 469 | - [Deep Reinforcement Learning Algorithms with PyTorch](https://github.com/p-christ/Deep-Reinforcement-Learning-Algorithms-with-PyTorch) 470 | - [LECTURES: Introduction to Reinforcement Learning - David Silver](https://www.davidsilver.uk/teaching/) 471 | - [BOOK: Reinforcement Learning - An Introduction by Sutton and Barto](https://drive.google.com/open?id=1lsBhr8H_PVnyidewtqduvV4b8wcsnAiH) 472 | - [BOOK: Deep Reinforcement Learning Hands On by Maxim Lapan](https://drive.google.com/open?id=1YJUTUsDy2jQ_du-eoExQkk0miCT2NPRm) 473 | 474 | ## PyTorch 475 | 476 | - [Udacity : Deep Learning with PyTorch](https://classroom.udacity.com/courses/ud188) 477 | - [Deep Learning (PyTorch) : Code](https://github.com/udacity/deep-learning-v2-pytorch) 478 | - [Udacity : Secure AI](https://classroom.udacity.com/courses/ud185) 479 | - [TORCHSCRIPT](https://pytorch.org/docs/stable/jit.html) 480 | - [PyTorchZeroToAll (in English) Sung Kim a Series of 14 Videos](https://www.youtube.com/playlist?list=PLlMkM4tgfjnJ3I-dbhO9JTw7gNty6o_2m) 481 | - [Supporting Code](https://github.com/hunkim/PyTorchZeroToAll) 482 | - [Slides](https://drive.google.com/drive/folders/0B41Zbb4c8HVyUndGdGdJSXd5d3M) 483 | 484 | ## TensorFlow 485 | 486 | - [Introduction to TensorFlow 2.0: Easier for beginners, and more powerful for experts (TF World '19)](https://www.youtube.com/watch?v=5ECD8J3dvDQ) 487 | - [TensorFlow Lite: Solution for running ML on-device (TF World '19)](https://www.youtube.com/watch?v=0SpZy7iouFU) 488 | - [Machine Learning in JavaScript (TensorFlow Dev Summit 2018)](https://www.youtube.com/watch?v=YB-kfeNIPCE) 489 | - [TensorFlow.js Quick Start](https://www.youtube.com/watch?v=Y_XM3Bu-4yc) 490 | - [Keras vs. tf.keras: What’s the difference in TensorFlow 2.0?](https://www.pyimagesearch.com/2019/10/21/keras-vs-tf-keras-whats-the-difference-in-tensorflow-2-0/) 491 | - [How To Run TensorFlow Lite on Raspberry Pi for Object Detection](https://www.youtube.com/watch?v=aimSGOAUI8Y) 492 | - [How computers learn to recognize objects instantly | Joseph Redmon](https://www.youtube.com/watch?v=Cgxsv1riJhI) 493 | 494 | ### TensorFlow Courses 495 | 496 | - [Intro to TensorFlow for Deep Learning](https://classroom.udacity.com/courses/ud187) 497 | - [TensorFlow in Practice Specialization : Coursera](https://www.coursera.org/specializations/tensorflow-in-practice) 498 | - [TensorFlow: Data and Deployment Specialization : Coursera](https://www.coursera.org/specializations/tensorflow-data-and-deployment) 499 | 500 | ### PyTorch Vs TensorFlow 501 | 502 | - [Why is PyTorch becoming so popular among machine learning engineers?](https://www.quora.com/Why-is-PyTorch-becoming-so-popular-among-machine-learning-engineers) 503 | 504 | ## Transfer Learning 505 | 506 | - [Transfer Learning with Keras and Deep Learning](https://www.pyimagesearch.com/2019/05/20/transfer-learning-with-keras-and-deep-learning/) 507 | - [A Comprehensive Hands-on Guide to Transfer Learning with Real-World Applications in Deep Learning](https://towardsdatascience.com/a-comprehensive-hands-on-guide-to-transfer-learning-with-real-world-applications-in-deep-learning-212bf3b2f27a) 508 | - [TensorFlow Core Tutorials](https://www.tensorflow.org/tutorials) 509 | 510 | ## Deploy Models 511 | 512 | - [Machine Learning in 5 Minutes: How to deploy a ML model (SurveyMonkey Engineer explains)](https://www.youtube.com/watch?v=XsD2u7hAwI8) 513 | - [Deploy Machine Learning Models with Django](https://www.deploymachinelearning.com/) 514 | - [MlFlow - An open source platform for the machine learning lifecycle](https://mlflow.org/) 515 | - [TensorFlow: Data and Deployment Specialization](https://www.coursera.org/specializations/tensorflow-data-and-deployment) 516 | 517 | ## MlOps 518 | 519 | - [MLOps Primer - 2021 A collection of resources to learn about MLOps.](https://elvissaravia.substack.com/p/mlops-primer-2021) 520 | ## Code 521 | 522 | - [codebasics/py](https://github.com/codebasics/py) 523 | - [Google Codelabs](https://codelabs.developers.google.com/) 524 | 525 | ## CheatSheets 526 | 527 | - [Artificial Intelligence](https://stanford.edu/~shervine/teaching/cs-221/) 528 | - [Machine Learning](https://stanford.edu/~shervine/teaching/cs-229/) 529 | - [Deep Learning](https://stanford.edu/~shervine/teaching/cs-230/) 530 | - [Machine Learning tips and tricks](https://stanford.edu/~shervine/teaching/cs-229/cheatsheet-machine-learning-tips-and-tricks) 531 | - [Data Science Tools](https://www.mit.edu/~amidi/teaching/data-science-tools/) 532 | - [Machine Learning with R](https://www.mit.edu/~amidi/teaching/modeling/study-guide/machine-learning-with-r/) 533 | - [CHRIS ALBON Cheat Sheets and Flash Cards](https://chrisalbon.com/) 534 | - [MLOps Tooling Landscape v2 (+84 new tools) - Dec '20](https://huyenchip.com/2020/12/30/mlops-v2.html) 535 | - [Mathematical tools](https://stanford.edu/~shervine/teaching/cme-102/linear-algebra) 536 | - [Ordinary Differential Equations for Engineers](https://stanford.edu/~shervine/teaching/cme-102/cheatsheet-first-ode) 537 | 538 | 539 | ## Edge ML Kits 540 | 541 | - [Nvidia Jetson Nano Developer Kit](https://developer.nvidia.com/embedded/jetson-nano-developer-kit) 542 | - [Intel® Neural Compute Stick 2 (Intel® NCS2)](https://software.intel.com/en-us/neural-compute-stick) 543 | - [Coral](https://coral.ai/) 544 | 545 | ## Data Science Competitions 546 | 547 | - [Kaggle](https://www.kaggle.com/) 548 | 549 | ## Important Youtube🎬 Channels in the field of AI/ML/RL/DS 550 | 551 | - [3Blue1Brown](https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw) 552 | - [StatQuest with Josh Starmer](https://www.youtube.com/user/joshstarmer) 553 | - [Sentdex](https://www.youtube.com/user/sentdex) 554 | - [Luis Serrano](https://www.youtube.com/channel/UCgBncpylJ1kiVaPyP-PZauQ) 555 | - [Brandon Rohrer](https://www.youtube.com/user/BrandonRohrer) 556 | - [deeplizard](https://www.youtube.com/channel/UC4UJ26WkceqONNF5S26OiVw) 557 | - [Tech With Tim](https://www.youtube.com/channel/UC4JX40jDee_tINbkjycV4Sg) 558 | - [Microsoft Research](https://www.youtube.com/user/MicrosoftResearch) 559 | - [Corey Schafer](https://www.youtube.com/user/schafer5) 560 | - [Data School](https://www.youtube.com/user/dataschool) 561 | - [Two Minute Papers](https://www.youtube.com/user/keeroyz) 562 | - [Welch Labs](https://www.youtube.com/user/Taylorns34) 563 | - [Simplilearn](https://www.youtube.com/user/Simplilearn) 564 | - [Great Learning](https://www.youtube.com/user/beaconelearning) 565 | - [DeepLearning.TV](https://www.youtube.com/channel/UC9OeZkIwhzfv-_Cb7fCikLQ) 566 | - [TensorFlow](https://www.youtube.com/channel/UC0rqucBdTuFTjJiefW5t-IQ) 567 | - [Deeplearning.ai](https://www.youtube.com/channel/UCcIXc5mJsHVYTZR1maL5l9w) 568 | - [Code Bullet](https://www.youtube.com/channel/UC0e3QhIYukixgh5VVpKHH9Q) 569 | - [edureka!](https://www.youtube.com/user/edurekaIN) 570 | - [Lex Fridman](https://www.youtube.com/channel/UCSHZKyawb77ixDdsGog4iWA) 571 | - [The Artificial Intelligence Channel](https://www.youtube.com/user/Maaaarth) 572 | - [freeCodeCamp.org](https://www.youtube.com/channel/UC8butISFwT-Wl7EV0hUK0BQ) 573 | - [CloudxLab](https://www.youtube.com/channel/UC8mJ6DL1Q32UWyJUceoO8Jw) 574 | - [Alexander Amini](https://www.youtube.com/user/Zan560) 575 | - [Jeff Heaton](https://www.youtube.com/user/HeatonResearch) 576 | - [Abhishek Thakur](https://www.youtube.com/user/abhisheksvnit) 577 | - [The Coding Train](https://www.youtube.com/user/shiffman) 578 | 579 | ## Reference 580 | 581 | - [🖥️ HOW TO GET STARTED WITH MACHINE LEARNING!](https://www.youtube.com/watch?v=I74ymkoNTnw) 582 | - [My Self-Created Artificial Intelligence Masters Degree](https://hackernoon.com/my-self-created-ai-masters-degree-ddc7aae92d0e) 583 | - https://end-to-end-machine-learning.teachable.com/courses/667372/lectures/11900568 584 | - [ML Fundamentals by StatQuest](https://www.youtube.com/watch?v=Gv9_4yMHFhI&list=PLblh5JKOoLUICTaGLRoHQDuF_7q2GfuJF) 585 | - [Machine Learning with Python by sentdex](https://www.youtube.com/playlist?list=PLQVvvaa0QuDfKTOs3Keq_kaG2P55YRn5v) 586 | - [5 Beginner Friendly Steps to Learn Machine Learning and Data Science with Python - Daniel Bourke](https://www.mrdbourke.com/5-beginner-friendly-steps-to-learn-machine-learning/) 587 | - [Data School](https://www.dataschool.io/) 588 | - [Neural Networks and Deep Learning](http://neuralnetworksanddeeplearning.com/) 589 | - https://www.machinelearningisfun.com/ 590 | - https://medium.com/@ageitgey/machine-learning-is-fun-80ea3ec3c471 591 | - https://medium.com/greyatom 592 | - https://greyatom.com/glabs 593 | - [John Searle: "Consciousness in Artificial Intelligence" | Talks at Google](https://www.youtube.com/watch?v=rHKwIYsPXLg) 594 | - https://github.com/nature-of-code/NOC-S17-2-Intelligence-Learning/tree/master/week3-classification-regression 595 | - https://github.com/nature-of-code/NOC-S17-2-Intelligence-Learning 596 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-cayman -------------------------------------------------------------------------------- /ai_job_concepts.md: -------------------------------------------------------------------------------- 1 | 2 | ### **Module 1: Python Programming for Data Science** 3 | 4 | #### **Sub-module 1.1: Python Basics** 5 | - Data types and variables 6 | - Control structures (if-else, for loops, while loops) 7 | - Functions and lambda expressions 8 | - Exception handling 9 | 10 | #### **Sub-module 1.2: Advanced Python** 11 | - List comprehensions 12 | - Generators and iterators 13 | - Decorators 14 | - Context managers 15 | 16 | #### **Sub-module 1.3: Python Libraries** 17 | - NumPy (arrays, matrix operations) 18 | - pandas (dataframes, series, data manipulation) 19 | - Matplotlib (basic plotting, figures, and axes) 20 | - seaborn (statistical data visualization) 21 | 22 | --- 23 | 24 | ### **Module 2: Data Management and Manipulation** 25 | 26 | #### **Sub-module 2.1: Data Cleaning** 27 | - Handling missing data 28 | - Data type conversion 29 | - Normalizing and scaling 30 | 31 | #### **Sub-module 2.2: Data Exploration** 32 | - Descriptive statistics 33 | - Correlation analysis 34 | - Outlier detection 35 | 36 | #### **Sub-module 2.3: Data Wrangling** 37 | - Merging, joining, and concatenating data 38 | - Grouping and aggregation 39 | - Pivot tables and cross-tabulation 40 | 41 | --- 42 | 43 | ### **Module 3: Machine Learning** 44 | 45 | #### **Sub-module 3.1: Fundamentals of ML** 46 | - Supervised vs. unsupervised learning 47 | - Overfitting and underfitting 48 | - Bias Variance Tradeoff 49 | - Train-test split 50 | - Cross-validation 51 | 52 | #### **Sub-module 3.2: Regression Algorithms** 53 | - Linear regression (Line fitting, Residual, Gradient Descent) 54 | - Polynomial regression (Polynomial Order) 55 | - Ridge, Lasso and ElasticNet regression (What effed does each penalty term have on the training data) 56 | 57 | #### **Sub-module 3.3: Classification Algorithms** 58 | - Logistic regression (OVA, OVR) 59 | - Decision Trees (Gini, Entrophy) 60 | - Random Forests 61 | - Support Vector Machines (SVM) (Max-margin Classifier, Kernel trick [RBF, Linear, Sigmoid]) 62 | - k-Nearest Neighbors (k-NN) 63 | 64 | #### **Sub-module 3.4: Ensemble Methods** 65 | - Bagging 66 | - Boosting (AdaBoost, GradientBoost, XGBoost, CatBoost, LightGBM) 67 | - Stacking 68 | 69 | #### **Sub-module 3.5: Unsupervised Algorithms** 70 | - k-means clustering 71 | - Hierarchical clustering 72 | - Principal Component Analysis (PCA) 73 | 74 | #### **Sub-module 3.6: Model Evaluation** 75 | - Confusion matrix 76 | - ROC-AUC 77 | - Precision-Recall 78 | - F1 Score 79 | 80 | #### **Sub-module 3.7: Model Finetuning** 81 | - Grid Search 82 | - Optional 83 | - Cross-validation 84 | 85 | --- 86 | 87 | ### **Module 4: Deep Learning** 88 | 89 | #### **Sub-module 4.1: Neural Networks Basics** 90 | - Perceptrons 91 | - Activation functions (ReLU, sigmoid, tanh) 92 | - Feedforward neural networks 93 | - Backpropagation and gradient descent 94 | 95 | #### **Sub-module 4.2: Advanced Neural Networks** 96 | - Convolutional Neural Networks (CNNs) 97 | - LeNet, AlexNet, VGGNet, InceptionNet, ResNet, EfficientNet 98 | - Transfer Learning 99 | - Recurrent Neural Networks (RNNs) 100 | - Vanishing and Exploding Gradient 101 | - Long Short-Term Memory networks (LSTMs) 102 | - Autoencoders (VAE) 103 | - Generative Adversarial Networks (GANs) (DCGAN, PixGAN, CycleGAN) 104 | - Transformers 105 | 106 | #### **Sub-module 4.3: Frameworks and Tools** 107 | - TensorFlow 108 | - Keras 109 | - PyTorch 110 | 111 | #### **Sub-module 4.4: Model Optimization and Deployment** 112 | - Regularization techniques 113 | - Hyperparameter tuning (Grid search, Random search) 114 | - Model deployment (Flask, Docker) 115 | 116 | --- 117 | 118 | ### **Module 5: Gen AI** 119 | 120 | #### **Sub-module 5.1: Transformers)** 121 | - Sequence to Sequence Models 122 | - Attention Mechanism 123 | - Self Attention 124 | - Transformers, Positional Encoding 125 | 126 | #### **Sub-module 6.2: LLM Architectures** 127 | - Encoder Only Architecture 128 | - BERT (Bidirectional Encoder Representations from Transformers) 129 | - GPT (Generative Pre-trained Transformer) - often categorized as Decoder Only but can be adapted for encoder-only tasks 130 | DistilBERT (a distilled version of BERT that is lighter and faster) 131 | ALBERT (A Lite BERT for self-supervised learning of language representations) 132 | - Decoder Only Architecture 133 | - GPT (Generative Pre-trained Transformer) 134 | - Encoder-Decoder Architecture 135 | - Transformer (original model comprising both encoder and decoder) 136 | - BART (Bidirectional and Auto-Regressive Transformers) 137 | - T5 (Text-to-Text Transfer Transformer) 138 | 139 | #### **Sub-module 6.3: Prompt Engineering** 140 | - Zero-shot, Single Shot, Few Shot 141 | - RAG 142 | - OpenAI APIs 143 | - Using self-hosted LLMs, Huggingface 144 | 145 | --- 146 | 147 | ### **Module 6: Special Topics** 148 | 149 | #### **Sub-module 6.1: Natural Language Processing (NLP)** 150 | - Text preprocessing (tokenization, stemming, lemmatization) 151 | - Word embeddings (Word2Vec, GloVe) 152 | - Sentiment analysis 153 | - Named Entity Recognition (NER) 154 | 155 | #### **Sub-module 6.2: Computer Vision** 156 | - Image processing basics 157 | - Object detection 158 | - Image classification 159 | 160 | #### **Sub-module 6.3: Time Series Analysis** 161 | - ARIMA models 162 | - Seasonal decomposition 163 | - Forecasting 164 | 165 | 166 | Courses 167 | 168 | 1. https://www.coursera.org/professional-certificates/ibm-data-science 169 | 2. https://www.coursera.org/specializations/machine-learning-introduction 170 | 3. https://www.coursera.org/specializations/deep-learning 171 | 4. https://www.coursera.org/specializations/natural-language-processing 172 | 5. https://www.coursera.org/professional-certificates/tensorflow-in-practice 173 | 6. https://www.coursera.org/specializations/machine-learning-engineering-for-production-mlops 174 | 7. For LLM cover all short courses by dl.ai - https://www.deeplearning.ai/short-courses/ 175 | -------------------------------------------------------------------------------- /autonomous_car/README.md: -------------------------------------------------------------------------------- 1 | # SDC 2 | 3 | - [Self-Driving Cars Lectures by Lex Fridman](https://www.youtube.com/playlist?list=PLrAXtmErZgOeY0lkVCIVafdGFOTi45amq) 4 | 5 | ## [waymo-open-dataset](https://github.com/waymo-research/waymo-open-dataset) 6 | 7 | Waymo Open Dataset https://www.waymo.com/open 8 | 9 | ### MIT 6.S094: Deep Learning for Self-Driving Cars 10 | 11 | - [DeepTraffic](https://selfdrivingcars.mit.edu/deeptraffic/) 12 | -------------------------------------------------------------------------------- /computer_vision/README.md: -------------------------------------------------------------------------------- 1 | # Computer Vision 2 | 3 | ### Computer Vision Recipies 4 | 5 | [microsoft / computervision-recipes : Best Practices, code samples, and documentation for Computer Vision.](https://github.com/microsoft/computervision-recipes) 6 | 7 | ### Image Classification 8 | 9 | A form of inference in which an object in an image is determined to be of a particular class, such as a cat vs. a dog. 10 | 11 | ### Object Detection 12 | 13 | A form of inference in which objects within an image are detected, and a bounding box is output based on where in the image the object was detected. Usually, this is combined with some form of classification to also output which class the detected object belongs to. 14 | 15 | ### Semantic Segmentation 16 | 17 | A form of inference in which objects within an image are detected and classified on a pixel-by-pixel basis, with all objects of a given class given the same label. 18 | 19 | - [Semantic Segmentation](https://thegradient.pub/semantic-segmentation/) 20 | 21 | ### Instance Segmentation 22 | 23 | Similar to semantic segmentation, this form of inference is done on a pixel-by-pixel basis, but different objects of the same class are separately identified. 24 | 25 | ### [SSD](https://arxiv.org/abs/1512.02325) 26 | 27 | Single Shot MultiBox Detector. A neural network combining object detection and classification, with different feature extraction layers directly feeding to the detection layer, using default bounding box sizes and shapes. 28 | 29 | - [Understanding SSD MultiBox — Real-Time Object Detection In Deep Learning](https://towardsdatascience.com/understanding-ssd-multibox-real-time-object-detection-in-deep-learning-495ef744fab) 30 | 31 | ### [YOLO](https://arxiv.org/abs/1506.02640) 32 | 33 | One of the original neural networks to only take a single look at an input image, whereas earlier networks ran a classifier multiple times across a single image at different locations and scales. 34 | 35 | - [YOLOv4 in the CLOUD: Build and Train Custom Object Detector (FREE GPU)](https://www.youtube.com/watch?v=mmj3nxGT2YQ&ab_channel=TheAIGuy) 36 | - [YOLOv4-Cloud-Tutorial - Code](https://github.com/theAIGuysCode/YOLOv4-Cloud-Tutorial) 37 | - [The AI Guy](https://www.youtube.com/channel/UCrydcKaojc44XnuXrfhlV8Q/videos) 38 | 39 | ### [Faster R-CNN](https://arxiv.org/abs/1506.01497) 40 | 41 | A network, expanding on [R-CNN](https://arxiv.org/pdf/1311.2524.pdf) and [Fast R-CNN](https://arxiv.org/pdf/1504.08083.pdf), that integrates advances made in the earlier models by adding a Region Proposal Network on top of the Fast R-CNN model for an integrated object detection model. 42 | 43 | ### [MobileNet](https://arxiv.org/abs/1704.04861) 44 | 45 | A neural network architecture optimized for speed and size with minimal loss of inference accuracy through the use of techniques like [1x1 convolutions](https://stats.stackexchange.com/questions/194142/what-does-1x1-convolution-mean-in-a-neural-network). As such, MobileNet is more useful in mobile applications that substantially larger and slower networks. 46 | 47 | ### [ResNet](https://arxiv.org/abs/1512.03385) 48 | 49 | A very deep neural network that made use of residual, or “skip” layers that pass information forward by a couple of layers. This helped deal with the [vanishing gradient problem](https://towardsdatascience.com/the-vanishing-gradient-problem-69bf08b15484) experienced by deeper neural networks. 50 | 51 | ### [Inception](https://arxiv.org/pdf/1409.4842.pdf) 52 | 53 | A neural network making use of multiple different convolutions at each “layer” of the network, such as 1x1, 3x3 and 5x5 convolutions. The top architecture from the original paper is also known as GoogLeNet, an homage to [LeNet](http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf), an early neural network used for character recognition. 54 | 55 | ## Cool CVProjects 56 | 57 | ### [DeOldify](https://github.com/jantic/DeOldify) 58 | 59 | A Deep Learning based project for colorizing and restoring old images (and video!) 60 | -------------------------------------------------------------------------------- /data_engineering/README.md: -------------------------------------------------------------------------------- 1 | # Data Engineering Resources 2 | 3 | 4 | Data engineering is a field of work that involves **designing, building, and managing the infrastructure** and systems required to **collect, store, process, and analyze data**. Data engineers play a crucial role in the data lifecycle, ensuring that data is available, accessible, and reliable for various data-driven applications and decision-making processes. 5 | 6 | --- 7 | ## Here are some key resources for Data Engineering 8 | --- 9 | ### Batch Proceesing 10 | 11 | 12 | **Batch processing** is a data processing technique where a set of data is collected over a period of time and processed as a group or batch. In batch processing, data is processed in predefined batches rather than being processed in real-time or immediately upon arrival. to understand the basics of Data Engineering, see this resources. 13 | 14 | - [Understanding Data Engineering by Datacamp](https://app.datacamp.com/learn/courses/understanding-data-engineering) 15 | - [Introduction to Data Engineering by Datacamp](https://app.datacamp.com/learn/courses/introduction-to-data-engineering) 16 | - [Apache Spark Tutorial (used for Large Scale Data Processing using SQL commands)](https://spark.apache.org/docs/latest/sql-getting-started.html) 17 | - [Test your knowledge using ProjectPro](https://www.projectpro.io/article/big-data-interview-questions-/773) 18 | 19 | 20 | ### Stream Processing 21 | **Stream processing** is a method of data processing that involves continuously processing and analyzing data as it is generated or received in real-time. It enables the handling and analysis of data in motion, allowing for immediate insights and actions based on the streaming data. Here are some resources to refer to, 22 | - [Introduction to Apache Kafka Streams](https://kafka.apache.org/documentation/streams/) 23 | - [Apache Flink Documentation](https://nightlies.apache.org/flink/flink-docs-release-1.13/docs/try-flink/datastream/) 24 | - [Stream Processing Quiz](https://chauff.github.io/documents/bdp-quiz/streaming.html) 25 | 26 | 27 | ### Data Pipelines and Integration 28 | 29 | **Data pipelines and integration** are critical components of data engineering that involve the movement, transformation, and integration of data from various sources to a destination for further processing, analysis, or storage. They ensure that data flows seamlessly and reliably across different systems, enabling efficient data management and utilization. Refer these resources for reference. 30 | - [Building Data Engineering Pipelines in Python](https://app.datacamp.com/learn/courses/building-data-engineering-pipelines-in-python) 31 | - ["What is Data Integration?" by talend](https://www.talend.com/resources/what-is-data-integration/) 32 | - [Data Cleaning Challenge: Handling missing values](https://www.kaggle.com/code/rtatman/data-cleaning-challenge-handling-missing-values/notebook) 33 | 34 | --- 35 | 36 | Data engineering requires knowledge of programming languages (such as Python, Java, or Scala), database systems, big data technologies, cloud platforms, data modeling, and data warehousing concepts. Data engineers also need to keep up with the evolving landscape of data technologies and best practices to ensure efficient and effective data management. -------------------------------------------------------------------------------- /gans/README.md: -------------------------------------------------------------------------------- 1 | # Generative Adversarial Networks (GANs) 2 | 3 | - https://deepart.io/latest/ 4 | - https://medium.com/datadriveninvestor/the-infinite-art-machine-3a2decab85d9 (My DC Gan blog post) 5 | - https://github.com/tomguluson92/StyleGAN_PyTorch 6 | - https://magenta.tensorflow.org/gansynth 7 | - https://towardsdatascience.com/cyclegans-to-create-computer-generated-art-161082601709 8 | - https://deepdreamgenerator.com/ 9 | - https://www.thispersondoesnotexist.com/ 10 | - https://github.com/jantic/DeOldify 11 | 12 | # Links to codes I showed today 13 | 14 | - https://github.com/SubhadityaMukherjee/animeFaceGenerator 15 | - https://github.com/SubhadityaMukherjee/facegen 16 | - https://github.com/SubhadityaMukherjee/deepDream 17 | - https://github.com/SubhadityaMukherjee/neural_style_transfer 18 | 19 | # Where to learn GANs from 20 | 21 | Look at the papers I mentioned. Links in the link below 22 | 23 | - https://github.com/SubhadityaMukherjee/PaperImplementations (I have written notes about the stuff I explained today. WGAN, DCGAN, VAE etc) 24 | - https://pytorch.org/tutorials/beginner/dcgan_faces_tutorial.html 25 | - https://www.tensorflow.org/tutorials/generative/dcgan 26 | - https://towardsdatascience.com/demystifying-gans-in-tensorflow-2-0-9890834ab3d9 27 | - https://github.com/hindupuravinash/the-gan-zoo 28 | - https://hollobit.github.io/All-About-the-GAN/ 29 | 30 | # Other Links 31 | 32 | - Papers with code - https://paperswithcode.com/ 33 | - Experiments - https://experiments.withgoogle.com/ 34 | - Implementations - https://github.com/SubhadityaMukherjee/PaperImplementations 35 | - Datasetsearch - https://datasetsearch.research.google.com 36 | - Papers - https://github.com/terryum/awesome-deep-learning-papers#new-papers 37 | - Ai blog - https://ai.googleblog.com/ 38 | 39 | ## Demo 40 | 41 | - [Image-to-Image Translation with Conditional Adversarial Nets](https://phillipi.github.io/pix2pix/) 42 | - [Image-to-Image Demo](https://affinelayer.com/pixsrv/) _Interactive Image Translation with pix2pix-tensorflow_ 43 | 44 | # Courses 45 | 46 | - [A to Z ML/DL](https://www.udemy.com/course/machinelearning/) 47 | - [Udemy Deep Learning](https://www.udemy.com/course/deeplearning/) 48 | - [deeplearning.ai](https://www.deeplearning.ai/) 49 | - [Fastai](https://course.fast.ai/) 50 | 51 | # Blogs 52 | 53 | - [OpenAI](https://www.openai.com/) 54 | - [Distill](http://distill.pub/) 55 | - [Andrej Karpathy Blog](http://karpathy.github.io/) 56 | - [Colah's Blog](http://colah.github.io/) 57 | - [WildML](http://www.wildml.com/) 58 | - [FastML](http://www.fastml.com/) 59 | - [TheMorningPaper](https://blog.acolyer.org/) 60 | 61 | ### Compiled by 62 | 63 | **Subhaditya Mukherjee** 64 | 65 | - Email : msubhaditya@gmail.com 66 | - Linkedin : https://www.linkedin.com/in/subhaditya-mukherjee-a36883100 67 | - Github : www.github.com/SubhadityaMukherjee 68 | 69 | 70 | -------------------------------------------------------------------------------- /generative_ai/README.md: -------------------------------------------------------------------------------- 1 | ## Generative AI 2 | This is a comprehensive guide to understanding and navigating the realm of Generative AI. Generative AI has gained significant traction in recent years due to its wide range of applications across various domains. From generating realistic images to aiding in natural language processing tasks, Generative AI has revolutionized how we interact with and create content. 3 | 4 | ### LLMs From Scratch Series 5 | 6 | 1. Andrej Karpathy - [10 Vidoes](https://youtube.com/playlist?list=PLAqhIrjkxbuWI23v9cThsA9GvCAUhRvKZ&si=EuGApF9EXdu1_an5) 7 | - The spelled-out intro to neural networks and backpropagation: building micrograd 8 | - The spelled-out intro to language modeling: building makemore 9 | - Building makemore Part 2: MLP 10 | - Building makemore Part 3: Activations & Gradients, BatchNorm 11 | - Building makemore Part 4: Becoming a Backprop Ninja 12 | - Building makemore Part 5: Building a WaveNet 13 | - Let's build GPT: from scratch, in code, spelled out. 14 | - State of GPT 15 | - Let's build the GPT Tokenizer 16 | - Let's reproduce GPT-2 (124M) 17 | 18 | 2. StatQuest with Josh Starmer - [15 Videos](https://youtube.com/playlist?list=PLblh5JKOoLUIxGDQs4LFFD--41Vzf-ME1&si=DfkDMWz58VJgBrsD) 19 | - Recurrent Neural Networks (RNNs), Clearly Explained!!! 20 | - Long Short-Term Memory (LSTM), Clearly Explained 21 | - Word Embedding and Word2Vec, Clearly Explained!!! 22 | - Sequence-to-Sequence (seq2seq) Encoder-Decoder Neural Networks, Clearly Explained!!! 23 | - Attention for Neural Networks, Clearly Explained!!! 24 | - Transformer Neural Networks, ChatGPT's foundation, Clearly Explained!!! 25 | - Decoder-Only Transformers, ChatGPTs specific Transformer, Clearly Explained!!! 26 | - Tensors for Neural Networks, Clearly Explained!!! 27 | - Essential Matrix Algebra for Neural Networks, Clearly Explained!!! 28 | - The matrix math behind transformer neural networks, one step at a time!!! 29 | - The StatQuest Introduction to PyTorch 30 | - Introduction to Coding Neural Networks with PyTorch and Lightning 31 | - Long Short-Term Memory with PyTorch + Lightning 32 | - Word Embedding in PyTorch + Lightning 33 | - Coding a ChatGPT Like Transformer From Scratch in PyTorch 34 | 3. Sebastian Raschka - [5 Videos](https://youtube.com/playlist?list=PLTKMiZHVd_2Licpov-ZK24j6oUnbhiPkm&si=9oqXgWnDumkgA176) 35 | - Developing an LLM: Building, Training, Finetuning 36 | - Understanding PyTorch Buffers 37 | - Finetuning Open-Source LLMs 38 | - Insights from Finetuning LLMs with Low-Rank Adaptation 39 | - Building LLMs from the Ground Up: A 3-hour Coding Workshop 40 | 4. CodeEmporium - [12 Videos](https://youtube.com/playlist?list=PLTl9hO2Oobd97qfWC40gOSU8C0iu0m2l4&si=_kt_U8h_i2QtJyPj) 41 | - Self Attention in Transformer Neural Networks (with Code!) 42 | - Multi Head Attention in Transformer Neural Networks with Code! 43 | - Positional Encoding in Transformer Neural Networks Explained 44 | - Layer Normalization - EXPLAINED (in Transformer Neural Networks) 45 | - Blowing up the Transformer Encoder! 46 | - Transformer Encoder in 100 lines of code! 47 | - Blowing up Transformer Decoder architecture 48 | - Transformer Decoder coded from scratch 49 | - Sentence Tokenization in Transformer Code from scratch! 50 | - The complete guide to Transformer neural Networks! 51 | - The complete Transformer Neural Network Code in 300 lines! 52 | - Building a Translator with Transformers 53 | 54 | 5. Jay Alammar 55 | - Coming soon 56 | 57 | 6. Luis Serrano 58 | - Coming soon 59 | 60 | 61 | ### Modue 1 - Introduction to Generative AI 62 | 63 | | Topic | References | 64 | | --------------------------------------------------------- |:-------------------------------------------------------------------------------------------------------------------------------------------- | 65 | | Introduction to Generative AI,Importance and Applications | [Intro to Generartive AI - Google Cloud Tech▶️](https://www.youtube.com/watch?v=G2fqAlgmoPo&pp=ygUdaW50cm9kdWN0aW9uIHRvIGdlbmVyYXRpdmUgYWk%3D) | 66 | | Autoencoders and Variational Autoencoders (VAEs) | [Variational Autoencoders - ArxivInsights▶️](https://www.youtube.com/watch?v=9zKuYvjFFS8&t=346s&pp=ygUXdmFyaWF0aW9uYWwgYXV0b2VuY29kZXI%3D)
[Autoencoders Explained Easily▶️](https://youtu.be/SSXDkfiPs7c?si=3KD2T44sQQSMFjdG)
[Autoencoders - Jeremy Jordan🧾 ](https://www.jeremyjordan.me/autoencoders/) | 67 | |Generative Adversarial Networks (GANs)| [A Friendly Introduction to Generative Adversarial Networks (GANs) - Serrano.Academy▶️](https://www.youtube.com/watch?v=8L11aMN5KY8&t=1076s&pp=ygUER2Fucw%3D%3D)
[6 GAN Architectures You Really Should Know - neptune.ai🧾](https://neptune.ai/blog/6-gan-architectures)| 68 | |Autoregressive Models and RBMs|[Guide to Autoregressive Models- Turing🧾](https://www.turing.com/kb/guide-to-autoregressive-models)
[Autoregressive Diffusion Models - Yannic Kilcher▶️](https://www.youtube.com/watch?v=2h4tRsQzipQ)
[Restricted Boltzmann Machines (RBM)- Serrano.Academy▶️](https://www.youtube.com/watch?v=Fkw0_aAtwIw)
| 69 | |Text Generation and Language Modeling| [Text Generation-HuggingFace](https://huggingface.co/tasks/text-generation)🧾| 70 | 71 | ### Module 2 - Deep Learning Based Natural Language Processing 72 | | Topic | References | 73 | | ----- |:---------- | 74 | | Word Embedding | [Word Embedding and Word2Vec -StatQuest](https://www.youtube.com/watch?v=viZrOnJclY0)▶️
[Word2Vec, GloVe, FastText- CodeEmporium](https://www.youtube.com/watch?v=9S0-OC4LFNo&t=386s&pp=ygUQV29yZCBFbWJlZGRpbmdzIA%3D%3D)▶️
| 75 | |Representation Learning|[Representation Learning Complete Guide-AIM](https://analyticsindiamag.com/a-comprehensive-guide-to-representation-learning-for-beginners/#:~:text=Representation%20learning%20is%20a%20class,them%20to%20a%20given%20activity.)🧾| 76 | |Sequence-to-Sequence Models,Encoder-Decoder Architectures|[Sequence-to-Sequence (seq2seq) EncoderDecoder Neural Networks - StatQuest](https://www.youtube.com/watch?v=L8HKweZIOmg&pp=ygUbU2VxdWVuY2UtdG8tU2VxdWVuY2UgTW9kZWxz)▶️
[EncoderDecoder Seq2Seq Models - Kriz Moses](https://medium.com/analytics-vidhya/encoder-decoder-seq2seq-models-clearly-explained-c34186fbf49b)🧾| 77 | |seq2seq with Attention|[Sequence to Sequence (seq2seq) and Attention - Lena Voita](https://lena-voita.github.io/nlp_course/seq2seq_and_attention.html)🧾
[Attention for Neural Networks-StatQuest](https://www.youtube.com/watch?v=PSs6nxngL6k&pp=ygUsU2VxdWVuY2UgdG8gU2VxdWVuY2UgKHNlcTJzZXEpIGFuZCBBdHRlbnRpb24%3D)▶️| 78 | |Self Attention,Transformers| [Introduction to Transformers - Andrej Karpathy](https://www.youtube.com/watch?v=XfpMkf4rD6E)▶️
[Attention for Neural Networks-StatQuest](https://www.youtube.com/watch?v=PSs6nxngL6k)▶️
[Self attention-H2O.ai](https://h2o.ai/wiki/self-attention/)🧾
[What are Transformer Models and how do they work?-Serrano.Academy](https://www.youtube.com/watch?v=qaWMOYf4ri8)▶️| 79 | |Self-Supervised Learning |[Self-Supervised Learning: The Dark Matter of Intelligence-Yannic Kilcher](https://www.youtube.com/watch?v=Ag1bw8MfHGQ)▶️
[Self-Supervised Learning and Its Applications-neptune.ai🧾](https://neptune.ai/blog/self-supervised-learning)| 80 | |Advanced NLP|[Stanford CS224N: NLP with Deep Learning▶️](https://www.youtube.com/watch?v=rmVRLeJRkl4&list=PLoROMvodv4rMFqRtEuo6SGjY4XbRIVRd4&pp=iAQB)
[Natural Language Processing: Advance Techniques🧾](https://medium.com/analytics-vidhya/natural-language-processing-advance-techniques-in-depth-analysis-b67bca5db432) | 81 | -------------------------------------------------------------------------------- /new_resources/README.md: -------------------------------------------------------------------------------- 1 | # New Resourcecs for Review 2 | 3 | https://github.com/vinta/awesome-python 4 | 5 | 6 | Machine Learning Algorithms from scratch 7 | 8 | https://github.com/Gautam-J/Machine-Learning 9 | 10 | [Curated NLP Database List of 1000+ Natural Language Processing Datasets](https://metatext.io/datasets) 11 | 12 | https://github.com/jwasham/coding-interview-university 13 | 14 | https://github.com/aj-ames/Centerface-Deepstream 15 | 16 | https://github.com/kyclark/tiny_python_projects 17 | 18 | https://github.com/ageron/handson-ml2 19 | 20 | https://github.com/visenger/awesome-mlops 21 | 22 | https://github.com/garrettj403/SciencePlots 23 | 24 | https://github.com/whythawk/data-as-a-science 25 | 26 | https://github.com/TheAlgorithms/Python 27 | 28 | https://github.com/eugeneyan/applied-ml 29 | 30 | https://github.com/Rishit-dagli/Perceiver 31 | 32 | https://github.com/aj-ames/Activity-Recognition-TensorRT 33 | 34 | ### Over 200 figures and diagrams of the most popular deep learning architectures and layers FREE TO USE in your blog posts, slides, presentations, or papers. 35 | 36 | https://github.com/dvgodoy/dl-visuals 37 | 38 | https://jakevdp.github.io/PythonDataScienceHandbook/ 39 | 40 | https://github.com/huggingface/autonlp 41 | 42 | https://github.com/sayakpaul/Denoised-Smoothing-TF 43 | 44 | Maths https://github.com/Developer-Y/cs-video-courses#math-for-computer-scientist 45 | 46 | The algorithms https://github.com/TheAlgorithms/Python 47 | 48 | https://github.com/open-mmlab/mmdetection/tree/master/configs/fast_rcnn -------------------------------------------------------------------------------- /reinforcement_learning/README.md: -------------------------------------------------------------------------------- 1 | ### Reinforcement Learning 2 | 3 | - [Reinforcement Learning - David Silver | Deepmind | 2020](https://www.youtube.com/playlist?list=PLEAYkSg4uSQ2S3rHUCqz6W1ZKybVICeSP) 4 | 5 | - [Deep Reinforcement Learning Algorithms with PyTorch](https://github.com/p-christ/Deep-Reinforcement-Learning-Algorithms-with-PyTorch) 6 | 7 | - [LECTURES: Introduction to Reinforcement Learning - David Silver](https://www.davidsilver.uk/teaching/) 8 | 9 | - [BOOK: Reinforcement Learning - An Introduction by Sutton and Barto](https://drive.google.com/open?id=1lsBhr8H_PVnyidewtqduvV4b8wcsnAiH) 10 | 11 | - [BOOK: Deep Reinforcement Learning Hands On by Maxim Lapan](https://drive.google.com/open?id=1YJUTUsDy2jQ_du-eoExQkk0miCT2NPRm) 12 | -------------------------------------------------------------------------------- /reinforcement_learning/notebooks/Reinforcement_Q_Learning_from_Scratch_in_Python_with_OpenAI_Gym_Taxi.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "provenance": [] 7 | }, 8 | "kernelspec": { 9 | "name": "python3", 10 | "display_name": "Python 3" 11 | }, 12 | "language_info": { 13 | "name": "python" 14 | } 15 | }, 16 | "cells": [ 17 | { 18 | "cell_type": "code", 19 | "metadata": { 20 | "colab": { 21 | "base_uri": "https://localhost:8080/", 22 | "height": 689 23 | }, 24 | "id": "T2YZUIm4tgmJ", 25 | "outputId": "a4b83d45-5a86-4283-abfe-c2d226996aa0" 26 | }, 27 | "source": [ 28 | "!pip install cmake 'gym[atari]==0.22.0' scipy" 29 | ], 30 | "execution_count": 2, 31 | "outputs": [ 32 | { 33 | "output_type": "stream", 34 | "name": "stderr", 35 | "text": [ 36 | "/usr/local/lib/python3.9/dist-packages/ipykernel/ipkernel.py:283: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above.\n", 37 | " and should_run_async(code)\n" 38 | ] 39 | }, 40 | { 41 | "output_type": "stream", 42 | "name": "stdout", 43 | "text": [ 44 | "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n", 45 | "Requirement already satisfied: cmake in /usr/local/lib/python3.9/dist-packages (3.25.2)\n", 46 | "Collecting gym[atari]==0.22.0\n", 47 | " Downloading gym-0.22.0.tar.gz (631 kB)\n", 48 | "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m631.1/631.1 kB\u001b[0m \u001b[31m10.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", 49 | "\u001b[?25h Installing build dependencies ... \u001b[?25l\u001b[?25hdone\n", 50 | " Getting requirements to build wheel ... \u001b[?25l\u001b[?25hdone\n", 51 | " Preparing metadata (pyproject.toml) ... \u001b[?25l\u001b[?25hdone\n", 52 | "Requirement already satisfied: scipy in /usr/local/lib/python3.9/dist-packages (1.10.1)\n", 53 | "Requirement already satisfied: numpy>=1.18.0 in /usr/local/lib/python3.9/dist-packages (from gym[atari]==0.22.0) (1.22.4)\n", 54 | "Requirement already satisfied: importlib-metadata>=4.10.0 in /usr/local/lib/python3.9/dist-packages (from gym[atari]==0.22.0) (6.3.0)\n", 55 | "Requirement already satisfied: gym-notices>=0.0.4 in /usr/local/lib/python3.9/dist-packages (from gym[atari]==0.22.0) (0.0.8)\n", 56 | "Requirement already satisfied: cloudpickle>=1.2.0 in /usr/local/lib/python3.9/dist-packages (from gym[atari]==0.22.0) (2.2.1)\n", 57 | "Collecting ale-py~=0.7.4\n", 58 | " Downloading ale_py-0.7.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB)\n", 59 | "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.6/1.6 MB\u001b[0m \u001b[31m45.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", 60 | "\u001b[?25hRequirement already satisfied: importlib-resources in /usr/local/lib/python3.9/dist-packages (from ale-py~=0.7.4->gym[atari]==0.22.0) (5.12.0)\n", 61 | "Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.9/dist-packages (from importlib-metadata>=4.10.0->gym[atari]==0.22.0) (3.15.0)\n", 62 | "Building wheels for collected packages: gym\n", 63 | " Building wheel for gym (pyproject.toml) ... \u001b[?25l\u001b[?25hdone\n", 64 | " Created wheel for gym: filename=gym-0.22.0-py3-none-any.whl size=708393 sha256=d6829a811711e7f91023bc5545600c609f35fea94f934d60d8ed621ffddc1e37\n", 65 | " Stored in directory: /root/.cache/pip/wheels/c4/15/15/94c62e06887fb88768c5fa41482b80905ea71f3ede81040ffa\n", 66 | "Successfully built gym\n", 67 | "Installing collected packages: gym, ale-py\n", 68 | " Attempting uninstall: gym\n", 69 | " Found existing installation: gym 0.25.2\n", 70 | " Uninstalling gym-0.25.2:\n", 71 | " Successfully uninstalled gym-0.25.2\n", 72 | "Successfully installed ale-py-0.7.5 gym-0.22.0\n" 73 | ] 74 | }, 75 | { 76 | "output_type": "display_data", 77 | "data": { 78 | "application/vnd.colab-display-data+json": { 79 | "pip_warning": { 80 | "packages": [ 81 | "gym" 82 | ] 83 | } 84 | } 85 | }, 86 | "metadata": {} 87 | } 88 | ] 89 | }, 90 | { 91 | "cell_type": "markdown", 92 | "source": [ 93 | "https://www.gymlibrary.dev/environments/toy_text/taxi/" 94 | ], 95 | "metadata": { 96 | "id": "1zPmMwbagW-J" 97 | } 98 | }, 99 | { 100 | "cell_type": "code", 101 | "source": [ 102 | "import time" 103 | ], 104 | "metadata": { 105 | "id": "5AwJw8_qwmu4" 106 | }, 107 | "execution_count": 1, 108 | "outputs": [] 109 | }, 110 | { 111 | "cell_type": "code", 112 | "metadata": { 113 | "colab": { 114 | "base_uri": "https://localhost:8080/" 115 | }, 116 | "id": "R-fJA5uPthQx", 117 | "outputId": "2935628d-99eb-46c9-9d44-16507cb55659" 118 | }, 119 | "source": [ 120 | "import gym\n", 121 | "\n", 122 | "env = gym.make(\"Taxi-v3\").env\n", 123 | "\n", 124 | "env.reset() # reset environment to a new, random state\n", 125 | "\n", 126 | "env.render()" 127 | ], 128 | "execution_count": 6, 129 | "outputs": [ 130 | { 131 | "output_type": "stream", 132 | "name": "stdout", 133 | "text": [ 134 | "+---------+\n", 135 | "|R: |\u001b[43m \u001b[0m: :\u001b[35mG\u001b[0m|\n", 136 | "| : | : : |\n", 137 | "| : : : : |\n", 138 | "| | : | : |\n", 139 | "|\u001b[34;1mY\u001b[0m| : |B: |\n", 140 | "+---------+\n", 141 | "\n" 142 | ] 143 | } 144 | ] 145 | }, 146 | { 147 | "cell_type": "code", 148 | "source": [ 149 | "5 * 5 * 5 * 4\n", 150 | "# row, col, pick (R,G,B,Y,Car), drop(R,G,B,Y)" 151 | ], 152 | "metadata": { 153 | "id": "IAeH0kRedcXQ" 154 | }, 155 | "execution_count": null, 156 | "outputs": [] 157 | }, 158 | { 159 | "cell_type": "markdown", 160 | "source": [ 161 | "The filled square represents the taxi, which is **yellow** without a passenger and **green** with a passenger.\n", 162 | "\n", 163 | "The pipe (\"|\") represents a wall which the taxi cannot cross.\n", 164 | "\n", 165 | "- **R, G, Y, B** are the possible pickup and destination locations. \n", 166 | "- The **blue** letter represents the current passenger pick-up location, and the **purple** letter is the current destination." 167 | ], 168 | "metadata": { 169 | "id": "aOmdtV5hp5AG" 170 | } 171 | }, 172 | { 173 | "cell_type": "code", 174 | "source": [ 175 | "env.reset() # reset environment to a new, random state\n", 176 | "env.render()\n", 177 | "\n", 178 | "print(\"Action Space {}\".format(env.action_space))\n", 179 | "print(\"State Space {}\".format(env.observation_space))" 180 | ], 181 | "metadata": { 182 | "colab": { 183 | "base_uri": "https://localhost:8080/" 184 | }, 185 | "id": "OPO2pwrQpja0", 186 | "outputId": "3fa309f5-6fa7-4831-b9cb-f3b0d55e7bd1" 187 | }, 188 | "execution_count": 7, 189 | "outputs": [ 190 | { 191 | "output_type": "stream", 192 | "name": "stdout", 193 | "text": [ 194 | "+---------+\n", 195 | "|\u001b[34;1mR\u001b[0m:\u001b[43m \u001b[0m| : :G|\n", 196 | "| : | : : |\n", 197 | "| : : : : |\n", 198 | "| | : | : |\n", 199 | "|Y| : |\u001b[35mB\u001b[0m: |\n", 200 | "+---------+\n", 201 | "\n", 202 | "Action Space Discrete(6)\n", 203 | "State Space Discrete(500)\n" 204 | ] 205 | } 206 | ] 207 | }, 208 | { 209 | "cell_type": "code", 210 | "metadata": { 211 | "colab": { 212 | "base_uri": "https://localhost:8080/" 213 | }, 214 | "id": "-cp0nKFQtmeW", 215 | "outputId": "2c99ac8b-1745-49c5-9a81-f53d28084d1d" 216 | }, 217 | "source": [ 218 | "print(env.step(5)) # 0=Back, 1=Fwd , 2=Right , 3=Left, 4=pickup, 5=dropoff\n", 219 | "#observation, reward, done, info\n", 220 | "env.render()" 221 | ], 222 | "execution_count": 21, 223 | "outputs": [ 224 | { 225 | "output_type": "stream", 226 | "name": "stdout", 227 | "text": [ 228 | "(475, 20, True, {'prob': 1.0})\n", 229 | "+---------+\n", 230 | "|R: | : :G|\n", 231 | "| : | : : |\n", 232 | "| : : : : |\n", 233 | "| | : | : |\n", 234 | "|Y| : |\u001b[35m\u001b[34;1m\u001b[43mB\u001b[0m\u001b[0m\u001b[0m: |\n", 235 | "+---------+\n", 236 | " (Dropoff)\n" 237 | ] 238 | } 239 | ] 240 | }, 241 | { 242 | "cell_type": "code", 243 | "metadata": { 244 | "colab": { 245 | "base_uri": "https://localhost:8080/" 246 | }, 247 | "id": "JvR2a-FAuNxl", 248 | "outputId": "12a64971-cec0-4ac6-faaa-a595c47a6a3a" 249 | }, 250 | "source": [ 251 | "env.reset() # reset environment to a new, random state\n", 252 | "env.render()\n", 253 | "\n", 254 | "print(\"Action Space {}\".format(env.action_space))\n", 255 | "print(\"State Space {}\".format(env.observation_space))" 256 | ], 257 | "execution_count": 22, 258 | "outputs": [ 259 | { 260 | "output_type": "stream", 261 | "name": "stdout", 262 | "text": [ 263 | "+---------+\n", 264 | "|\u001b[34;1mR\u001b[0m: | : :\u001b[35mG\u001b[0m|\n", 265 | "| : |\u001b[43m \u001b[0m: : |\n", 266 | "| : : : : |\n", 267 | "| | : | : |\n", 268 | "|Y| : |B: |\n", 269 | "+---------+\n", 270 | "\n", 271 | "Action Space Discrete(6)\n", 272 | "State Space Discrete(500)\n" 273 | ] 274 | } 275 | ] 276 | }, 277 | { 278 | "cell_type": "code", 279 | "source": [ 280 | "# blue - pickup, purple - dropoff\n", 281 | "steps = [0,3,3,1,1,4,0,0,2,2,2,2,1,1,5]\n", 282 | "states = []\n", 283 | "\n", 284 | "for step in steps:\n", 285 | " resp = env.step(step)\n", 286 | " print(resp)\n", 287 | " states.append(resp)\n", 288 | " env.render()\n", 289 | " time.sleep(1)" 290 | ], 291 | "metadata": { 292 | "id": "k_B5TwhlsmwO" 293 | }, 294 | "execution_count": null, 295 | "outputs": [] 296 | }, 297 | { 298 | "cell_type": "code", 299 | "source": [ 300 | "env.reset()\n", 301 | "env.render()" 302 | ], 303 | "metadata": { 304 | "colab": { 305 | "base_uri": "https://localhost:8080/" 306 | }, 307 | "id": "KN_GZrupvP8h", 308 | "outputId": "cb02fcbc-1893-4472-c030-a2e8779ab7b9" 309 | }, 310 | "execution_count": 26, 311 | "outputs": [ 312 | { 313 | "output_type": "stream", 314 | "name": "stdout", 315 | "text": [ 316 | "+---------+\n", 317 | "|R: | : :\u001b[35mG\u001b[0m|\n", 318 | "| : | : : |\n", 319 | "| : : : : |\n", 320 | "| | : | : |\n", 321 | "|Y| :\u001b[43m \u001b[0m|\u001b[34;1mB\u001b[0m: |\n", 322 | "+---------+\n", 323 | "\n" 324 | ] 325 | } 326 | ] 327 | }, 328 | { 329 | "cell_type": "code", 330 | "metadata": { 331 | "colab": { 332 | "base_uri": "https://localhost:8080/" 333 | }, 334 | "id": "vmN4Rjxqv1Vg", 335 | "outputId": "9d905a7b-199a-4c1a-d2b9-b7340dfe4e38" 336 | }, 337 | "source": [ 338 | "state = env.encode(3, 1, 2, 0) # (taxi row, taxi column, passenger index, destination index)\n", 339 | "print(\"State:\", state)\n", 340 | "\n", 341 | "env.s = state\n", 342 | "env.render()" 343 | ], 344 | "execution_count": 27, 345 | "outputs": [ 346 | { 347 | "output_type": "stream", 348 | "name": "stdout", 349 | "text": [ 350 | "State: 328\n", 351 | "+---------+\n", 352 | "|R: | : :\u001b[35mG\u001b[0m|\n", 353 | "| : | : : |\n", 354 | "| : : : : |\n", 355 | "| | : | : |\n", 356 | "|Y| :\u001b[43m \u001b[0m|\u001b[34;1mB\u001b[0m: |\n", 357 | "+---------+\n", 358 | "\n" 359 | ] 360 | } 361 | ] 362 | }, 363 | { 364 | "cell_type": "code", 365 | "source": [ 366 | "env.env.s = 328\n", 367 | "env.render()" 368 | ], 369 | "metadata": { 370 | "colab": { 371 | "base_uri": "https://localhost:8080/" 372 | }, 373 | "id": "kpMfr0XJheef", 374 | "outputId": "38d62669-15a8-437e-e1b4-78809ead749f" 375 | }, 376 | "execution_count": 28, 377 | "outputs": [ 378 | { 379 | "output_type": "stream", 380 | "name": "stdout", 381 | "text": [ 382 | "+---------+\n", 383 | "|\u001b[35mR\u001b[0m: | : :G|\n", 384 | "| : | : : |\n", 385 | "| : : : : |\n", 386 | "| |\u001b[43m \u001b[0m: | : |\n", 387 | "|\u001b[34;1mY\u001b[0m| : |B: |\n", 388 | "+---------+\n", 389 | "\n" 390 | ] 391 | } 392 | ] 393 | }, 394 | { 395 | "cell_type": "markdown", 396 | "source": [ 397 | "## All possible states" 398 | ], 399 | "metadata": { 400 | "id": "njQX5jhv8Kxc" 401 | } 402 | }, 403 | { 404 | "cell_type": "code", 405 | "source": [ 406 | "for i in range(50):\n", 407 | " print(i)\n", 408 | " env.env.s = i\n", 409 | " env.render()\n", 410 | " # time.sleep(1)" 411 | ], 412 | "metadata": { 413 | "id": "KdTsHXnCwYAh" 414 | }, 415 | "execution_count": null, 416 | "outputs": [] 417 | }, 418 | { 419 | "cell_type": "code", 420 | "source": [ 421 | "env.env.s = 328\n", 422 | "env.render()" 423 | ], 424 | "metadata": { 425 | "colab": { 426 | "base_uri": "https://localhost:8080/" 427 | }, 428 | "id": "0MVGRfgwzI4-", 429 | "outputId": "ea317787-e1f0-4597-b4f7-2b66234e9571" 430 | }, 431 | "execution_count": 31, 432 | "outputs": [ 433 | { 434 | "output_type": "stream", 435 | "name": "stdout", 436 | "text": [ 437 | "+---------+\n", 438 | "|\u001b[35mR\u001b[0m: | : :G|\n", 439 | "| : | : : |\n", 440 | "| : : : : |\n", 441 | "| |\u001b[43m \u001b[0m: | : |\n", 442 | "|\u001b[34;1mY\u001b[0m| : |B: |\n", 443 | "+---------+\n", 444 | "\n" 445 | ] 446 | } 447 | ] 448 | }, 449 | { 450 | "cell_type": "markdown", 451 | "source": [ 452 | "## Reward Table\n", 453 | "\n", 454 | "The reward table, also known as the reward function, defines the rewards or penalties associated with each action in each state. It is a fixed table that specifies the immediate reward that the agent receives for taking a particular action in a particular state. The reward table is typically defined by the problem domain, and the Q-learning algorithm uses this table to learn the optimal policy." 455 | ], 456 | "metadata": { 457 | "id": "ekg3LiN08ycz" 458 | } 459 | }, 460 | { 461 | "cell_type": "code", 462 | "metadata": { 463 | "colab": { 464 | "base_uri": "https://localhost:8080/" 465 | }, 466 | "id": "2LL-qRKP1vwh", 467 | "outputId": "e2f2fc6e-4b55-4b21-df78-02496f8ab21e" 468 | }, 469 | "source": [ 470 | "env.P[328]" 471 | ], 472 | "execution_count": null, 473 | "outputs": [ 474 | { 475 | "output_type": "execute_result", 476 | "data": { 477 | "text/plain": [ 478 | "{0: [(1.0, 428, -1, False)],\n", 479 | " 1: [(1.0, 228, -1, False)],\n", 480 | " 2: [(1.0, 348, -1, False)],\n", 481 | " 3: [(1.0, 328, -1, False)],\n", 482 | " 4: [(1.0, 328, -10, False)],\n", 483 | " 5: [(1.0, 328, -10, False)]}" 484 | ] 485 | }, 486 | "metadata": {}, 487 | "execution_count": 21 488 | } 489 | ] 490 | }, 491 | { 492 | "cell_type": "markdown", 493 | "source": [ 494 | "This dictionary has the structure \n", 495 | "\n", 496 | "```{action: [(probability, nextstate, reward, done)]}.```" 497 | ], 498 | "metadata": { 499 | "id": "qjBAsSMI9Jol" 500 | } 501 | }, 502 | { 503 | "cell_type": "code", 504 | "source": [ 505 | "for step in range(6):\n", 506 | " env.env.s = 328\n", 507 | " print(env.step(step))\n", 508 | " env.render()" 509 | ], 510 | "metadata": { 511 | "id": "zuM9bjmUzpQW" 512 | }, 513 | "execution_count": null, 514 | "outputs": [] 515 | }, 516 | { 517 | "cell_type": "code", 518 | "source": [ 519 | "for i in range(10):\n", 520 | " print(env.action_space.sample())" 521 | ], 522 | "metadata": { 523 | "id": "8MaHb7EV2AmM", 524 | "colab": { 525 | "base_uri": "https://localhost:8080/" 526 | }, 527 | "outputId": "ffe368a4-6dc6-4e47-9b07-707ef59f5868" 528 | }, 529 | "execution_count": null, 530 | "outputs": [ 531 | { 532 | "output_type": "stream", 533 | "name": "stdout", 534 | "text": [ 535 | "4\n", 536 | "3\n", 537 | "5\n", 538 | "4\n", 539 | "4\n", 540 | "5\n", 541 | "2\n", 542 | "4\n", 543 | "0\n", 544 | "3\n" 545 | ] 546 | } 547 | ] 548 | }, 549 | { 550 | "cell_type": "markdown", 551 | "source": [ 552 | "# Solving the environment without Reinforcement Learning\n", 553 | "\n" 554 | ], 555 | "metadata": { 556 | "id": "7DAMMYw69mWH" 557 | } 558 | }, 559 | { 560 | "cell_type": "code", 561 | "metadata": { 562 | "colab": { 563 | "base_uri": "https://localhost:8080/" 564 | }, 565 | "id": "ZxHflKla8Tn2", 566 | "outputId": "591bb1ec-ba69-419a-a07b-66e3855446d9" 567 | }, 568 | "source": [ 569 | "env.s = 328 # set environment to illustration's state\n", 570 | "\n", 571 | "epochs = 0\n", 572 | "penalties, reward = 0, 0\n", 573 | "\n", 574 | "frames = [] # for animation\n", 575 | "\n", 576 | "done = False\n", 577 | "\n", 578 | "while not done:\n", 579 | " action = env.action_space.sample()\n", 580 | " state, reward, done, info = env.step(action)\n", 581 | "\n", 582 | " if reward == -10:\n", 583 | " penalties += 1\n", 584 | " \n", 585 | " # Put each rendered frame into dict for animation\n", 586 | " frames.append({\n", 587 | " 'frame': env.render(mode='ansi'),\n", 588 | " 'state': state,\n", 589 | " 'action': action,\n", 590 | " 'reward': reward\n", 591 | " }\n", 592 | " )\n", 593 | "\n", 594 | " epochs += 1\n", 595 | " \n", 596 | "print(\"Timesteps taken: {}\".format(epochs))\n", 597 | "print(\"Penalties incurred: {}\".format(penalties))" 598 | ], 599 | "execution_count": 54, 600 | "outputs": [ 601 | { 602 | "output_type": "stream", 603 | "name": "stdout", 604 | "text": [ 605 | "Timesteps taken: 99\n", 606 | "Penalties incurred: 29\n" 607 | ] 608 | } 609 | ] 610 | }, 611 | { 612 | "cell_type": "code", 613 | "source": [ 614 | "len(frames)" 615 | ], 616 | "metadata": { 617 | "colab": { 618 | "base_uri": "https://localhost:8080/" 619 | }, 620 | "id": "cl_9msXV1vZu", 621 | "outputId": "4f12e6cf-34f2-42c2-80fa-39573172dd8f" 622 | }, 623 | "execution_count": 47, 624 | "outputs": [ 625 | { 626 | "output_type": "execute_result", 627 | "data": { 628 | "text/plain": [ 629 | "568" 630 | ] 631 | }, 632 | "metadata": {}, 633 | "execution_count": 47 634 | } 635 | ] 636 | }, 637 | { 638 | "cell_type": "code", 639 | "metadata": { 640 | "colab": { 641 | "base_uri": "https://localhost:8080/" 642 | }, 643 | "id": "lXeu2sz6_IKj", 644 | "outputId": "e79413d2-a91a-489f-f8fc-1dc7a6d8beaa" 645 | }, 646 | "source": [ 647 | "from IPython.display import clear_output\n", 648 | "from time import sleep\n", 649 | "\n", 650 | "def print_frames(frames):\n", 651 | " for i, frame in enumerate(frames):\n", 652 | " clear_output(wait=True)\n", 653 | " print(frame['frame'])\n", 654 | " print(f\"Timestep: {i + 1}\")\n", 655 | " print(f\"State: {frame['state']}\")\n", 656 | " print(f\"Action: {frame['action']}\")\n", 657 | " print(f\"Reward: {frame['reward']}\")\n", 658 | " sleep(0.5)\n", 659 | " \n", 660 | "print_frames(frames)" 661 | ], 662 | "execution_count": 55, 663 | "outputs": [ 664 | { 665 | "output_type": "stream", 666 | "name": "stdout", 667 | "text": [ 668 | "+---------+\n", 669 | "|\u001b[35m\u001b[34;1m\u001b[43mR\u001b[0m\u001b[0m\u001b[0m: | : :G|\n", 670 | "| : | : : |\n", 671 | "| : : : : |\n", 672 | "| | : | : |\n", 673 | "|Y| : |B: |\n", 674 | "+---------+\n", 675 | " (Dropoff)\n", 676 | "\n", 677 | "Timestep: 99\n", 678 | "State: 0\n", 679 | "Action: 5\n", 680 | "Reward: 20\n" 681 | ] 682 | } 683 | ] 684 | }, 685 | { 686 | "cell_type": "markdown", 687 | "source": [ 688 | "# DP\n", 689 | "```\n", 690 | "[1,2,3,4,5]\n", 691 | "1 = 1\n", 692 | "3 = 1+2\n", 693 | "6 = 1+2+3\n", 694 | "10 = 1+2+3+4\n", 695 | "15 = 1+2+3+4+5\n", 696 | "\n", 697 | "1 = 1\n", 698 | "3 = 1 + 2\n", 699 | "6 = 3 + 3\n", 700 | "10 = 6 + 4\n", 701 | "15 = 10 + 5\n", 702 | "\n", 703 | "```\n" 704 | ], 705 | "metadata": { 706 | "id": "4Pq1CCK1ltAh" 707 | } 708 | }, 709 | { 710 | "cell_type": "code", 711 | "source": [], 712 | "metadata": { 713 | "id": "E1Z7s6TClF1u" 714 | }, 715 | "execution_count": null, 716 | "outputs": [] 717 | }, 718 | { 719 | "cell_type": "markdown", 720 | "source": [ 721 | "## Enter Reinforcement Learning\n", 722 | "\n", 723 | "We are going to use a simple RL algorithm called Q-learning which will give our agent some memory.\n", 724 | "\n", 725 | "## Intro to Q-learning\n", 726 | "\n", 727 | "Essentially, Q-learning lets the agent use the environment's rewards to learn, over time, the best action to take in a given state.\n", 728 | "\n", 729 | "\n", 730 | "![](https://miro.medium.com/v2/resize:fit:1400/1*EQ-tDj-iMdsHlGKUR81Xgw.png)" 731 | ], 732 | "metadata": { 733 | "id": "BQOGUzI0AZJk" 734 | } 735 | }, 736 | { 737 | "cell_type": "markdown", 738 | "source": [ 739 | "![image.png](data:image/png;base64,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)" 740 | ], 741 | "metadata": { 742 | "id": "Vsll17yDBkub" 743 | } 744 | }, 745 | { 746 | "cell_type": "markdown", 747 | "source": [ 748 | "# Implementing Q-learning in python\n" 749 | ], 750 | "metadata": { 751 | "id": "WZjbBG1nCy3e" 752 | } 753 | }, 754 | { 755 | "cell_type": "code", 756 | "source": [ 757 | "import numpy as np\n", 758 | "q_table = np.zeros([env.observation_space.n, env.action_space.n]) " 759 | ], 760 | "metadata": { 761 | "id": "i_qIgEQl_e_Z" 762 | }, 763 | "execution_count": 56, 764 | "outputs": [] 765 | }, 766 | { 767 | "cell_type": "code", 768 | "source": [ 769 | "q_table.shape" 770 | ], 771 | "metadata": { 772 | "colab": { 773 | "base_uri": "https://localhost:8080/" 774 | }, 775 | "id": "U-o-RjkMEYw0", 776 | "outputId": "86d40cc3-513b-4753-dd25-4ff601ce14af" 777 | }, 778 | "execution_count": 57, 779 | "outputs": [ 780 | { 781 | "output_type": "execute_result", 782 | "data": { 783 | "text/plain": [ 784 | "(500, 6)" 785 | ] 786 | }, 787 | "metadata": {}, 788 | "execution_count": 57 789 | } 790 | ] 791 | }, 792 | { 793 | "cell_type": "code", 794 | "source": [ 795 | "q_table" 796 | ], 797 | "metadata": { 798 | "colab": { 799 | "base_uri": "https://localhost:8080/" 800 | }, 801 | "id": "VBDP4B9mEdQo", 802 | "outputId": "0ba4f69c-5494-4f49-c2d7-53685cb9a470" 803 | }, 804 | "execution_count": 58, 805 | "outputs": [ 806 | { 807 | "output_type": "execute_result", 808 | "data": { 809 | "text/plain": [ 810 | "array([[0., 0., 0., 0., 0., 0.],\n", 811 | " [0., 0., 0., 0., 0., 0.],\n", 812 | " [0., 0., 0., 0., 0., 0.],\n", 813 | " ...,\n", 814 | " [0., 0., 0., 0., 0., 0.],\n", 815 | " [0., 0., 0., 0., 0., 0.],\n", 816 | " [0., 0., 0., 0., 0., 0.]])" 817 | ] 818 | }, 819 | "metadata": {}, 820 | "execution_count": 58 821 | } 822 | ] 823 | }, 824 | { 825 | "cell_type": "code", 826 | "source": [ 827 | "np.argmax([1,2,3])" 828 | ], 829 | "metadata": { 830 | "colab": { 831 | "base_uri": "https://localhost:8080/" 832 | }, 833 | "id": "_3qzI1fpqBdd", 834 | "outputId": "69627f73-1033-41af-aaef-824a151c8440" 835 | }, 836 | "execution_count": 62, 837 | "outputs": [ 838 | { 839 | "output_type": "execute_result", 840 | "data": { 841 | "text/plain": [ 842 | "2" 843 | ] 844 | }, 845 | "metadata": {}, 846 | "execution_count": 62 847 | } 848 | ] 849 | }, 850 | { 851 | "cell_type": "code", 852 | "source": [ 853 | "import random\n", 854 | "from IPython.display import clear_output" 855 | ], 856 | "metadata": { 857 | "id": "yOXysHFaDMNE" 858 | }, 859 | "execution_count": 59, 860 | "outputs": [] 861 | }, 862 | { 863 | "cell_type": "code", 864 | "source": [ 865 | "%%time\n", 866 | "\"\"\"Training the agent\"\"\"\n", 867 | "\n", 868 | "import random\n", 869 | "from IPython.display import clear_output\n", 870 | "\n", 871 | "# Hyperparameters\n", 872 | "alpha = 0.1 # learning rate\n", 873 | "gamma = 0.6 # discount factor\n", 874 | "epsilon = 0.1 # exploit and explore\n", 875 | "\n", 876 | "# For plotting metrics\n", 877 | "all_epochs = []\n", 878 | "all_penalties = []\n", 879 | "\n", 880 | "for i in range(1, 100001):\n", 881 | " state = env.reset()\n", 882 | "\n", 883 | " epochs, penalties, reward, = 0, 0, 0\n", 884 | " done = False\n", 885 | " \n", 886 | " while not done:\n", 887 | " if random.uniform(0, 1) < epsilon:\n", 888 | " action = env.action_space.sample() # Explore action space\n", 889 | " else:\n", 890 | " action = np.argmax(q_table[state]) # Exploit learned values\n", 891 | "\n", 892 | " next_state, reward, done, info = env.step(action) \n", 893 | " \n", 894 | " old_value = q_table[state, action]\n", 895 | " next_max = np.max(q_table[next_state])\n", 896 | " \n", 897 | " new_value = (1 - alpha) * old_value + alpha * (reward + gamma * next_max)\n", 898 | " q_table[state, action] = new_value\n", 899 | "\n", 900 | " if reward == -10:\n", 901 | " penalties += 1\n", 902 | "\n", 903 | " state = next_state\n", 904 | " epochs += 1\n", 905 | " \n", 906 | " if i % 100 == 0:\n", 907 | " clear_output(wait=True)\n", 908 | " print(f\"Episode: {i}\")\n", 909 | "\n", 910 | "print(\"Training finished.\\n\")" 911 | ], 912 | "metadata": { 913 | "colab": { 914 | "base_uri": "https://localhost:8080/" 915 | }, 916 | "id": "uzLQGY9_DqAK", 917 | "outputId": "75ca1c68-5d1c-4257-f6ed-9b1d04cfd4e6" 918 | }, 919 | "execution_count": 63, 920 | "outputs": [ 921 | { 922 | "output_type": "stream", 923 | "name": "stdout", 924 | "text": [ 925 | "Episode: 100000\n", 926 | "Training finished.\n", 927 | "\n", 928 | "CPU times: user 1min 8s, sys: 8.1 s, total: 1min 17s\n", 929 | "Wall time: 1min 14s\n" 930 | ] 931 | } 932 | ] 933 | }, 934 | { 935 | "cell_type": "code", 936 | "source": [ 937 | "for i in range(10):\n", 938 | " print(q_table[i])" 939 | ], 940 | "metadata": { 941 | "colab": { 942 | "base_uri": "https://localhost:8080/" 943 | }, 944 | "id": "B-NUS2JLrQ0g", 945 | "outputId": "5923e22b-6e1f-4d95-e9ef-28e5c28f2cc7" 946 | }, 947 | "execution_count": 65, 948 | "outputs": [ 949 | { 950 | "output_type": "stream", 951 | "name": "stdout", 952 | "text": [ 953 | "[0. 0. 0. 0. 0. 0.]\n", 954 | "[ -2.41837065 -2.3639511 -2.41837066 -2.36395109 -2.27325184\n", 955 | " -11.3639493 ]\n", 956 | "[ -1.870144 -1.45024 -1.87014399 -1.45024007 -0.7504\n", 957 | " -10.45023379]\n", 958 | "[ -2.36395101 -2.27325184 -2.36395029 -2.27325181 -2.1220864\n", 959 | " -11.27325008]\n", 960 | "[-2.4961915 -2.49656291 -2.4961915 -2.49680945 -9.45879238 -8.48029525]\n", 961 | "[0. 0. 0. 0. 0. 0.]\n", 962 | "[ -2.4961915 -2.49715321 -2.4961915 -2.49689163 -10.46663985\n", 963 | " -9.50877724]\n", 964 | "[-2.48236806 -2.48455841 -2.48236806 -2.484406 -8.47407677 -9.66789661]\n", 965 | "[-2.27325184 -2.32928432 -2.34522429 -2.34113999 -8.69224525 -9.39155281]\n", 966 | "[ -2.47061344 -2.47818772 -2.47855343 -2.47607242 -9.68543571\n", 967 | " -10.17891183]\n" 968 | ] 969 | } 970 | ] 971 | }, 972 | { 973 | "cell_type": "code", 974 | "source": [ 975 | "q_table[328]" 976 | ], 977 | "metadata": { 978 | "colab": { 979 | "base_uri": "https://localhost:8080/" 980 | }, 981 | "id": "_bfFkPsWDqRh", 982 | "outputId": "471c0837-7a52-4b0a-9cc1-bc2fa965581e" 983 | }, 984 | "execution_count": 66, 985 | "outputs": [ 986 | { 987 | "output_type": "execute_result", 988 | "data": { 989 | "text/plain": [ 990 | "array([ -2.40800594, -2.27325184, -2.3922264 , -2.35603561,\n", 991 | " -10.60994385, -10.80888382])" 992 | ] 993 | }, 994 | "metadata": {}, 995 | "execution_count": 66 996 | } 997 | ] 998 | }, 999 | { 1000 | "cell_type": "markdown", 1001 | "source": [ 1002 | "# Evaluating the agent\n" 1003 | ], 1004 | "metadata": { 1005 | "id": "JSYUfQQ-Fa0E" 1006 | } 1007 | }, 1008 | { 1009 | "cell_type": "code", 1010 | "source": [ 1011 | "\"\"\"Evaluate agent's performance after Q-learning\"\"\"\n", 1012 | "\n", 1013 | "total_epochs, total_penalties = 0, 0\n", 1014 | "episodes = 100\n", 1015 | "\n", 1016 | "for _ in range(episodes):\n", 1017 | " state = env.reset()\n", 1018 | " epochs, penalties, reward = 0, 0, 0\n", 1019 | " \n", 1020 | " done = False\n", 1021 | " \n", 1022 | " while not done:\n", 1023 | " action = np.argmax(q_table[state])\n", 1024 | " state, reward, done, info = env.step(action)\n", 1025 | "\n", 1026 | " if reward == -10:\n", 1027 | " penalties += 1\n", 1028 | "\n", 1029 | " epochs += 1\n", 1030 | "\n", 1031 | " total_penalties += penalties\n", 1032 | " total_epochs += epochs\n", 1033 | "\n", 1034 | "print(f\"Results after {episodes} episodes:\")\n", 1035 | "print(f\"Average timesteps per episode: {total_epochs / episodes}\")\n", 1036 | "print(f\"Average penalties per episode: {total_penalties / episodes}\")" 1037 | ], 1038 | "metadata": { 1039 | "colab": { 1040 | "base_uri": "https://localhost:8080/" 1041 | }, 1042 | "id": "hyvGhkEtE4Qc", 1043 | "outputId": "24681d5a-81f4-4e75-cd63-5c1fb03bf35e" 1044 | }, 1045 | "execution_count": null, 1046 | "outputs": [ 1047 | { 1048 | "output_type": "stream", 1049 | "name": "stdout", 1050 | "text": [ 1051 | "Results after 100 episodes:\n", 1052 | "Average timesteps per episode: 13.14\n", 1053 | "Average penalties per episode: 0.0\n" 1054 | ] 1055 | } 1056 | ] 1057 | }, 1058 | { 1059 | "cell_type": "markdown", 1060 | "source": [ 1061 | "## Realtime testing" 1062 | ], 1063 | "metadata": { 1064 | "id": "UTW0luFEFv_C" 1065 | } 1066 | }, 1067 | { 1068 | "cell_type": "code", 1069 | "source": [ 1070 | "env.env.s = 328\n", 1071 | "env.render()" 1072 | ], 1073 | "metadata": { 1074 | "colab": { 1075 | "base_uri": "https://localhost:8080/" 1076 | }, 1077 | "id": "HFLV9boOGJok", 1078 | "outputId": "38d50c38-019a-41c9-b7f7-6631236e2a5b" 1079 | }, 1080 | "execution_count": 67, 1081 | "outputs": [ 1082 | { 1083 | "output_type": "stream", 1084 | "name": "stdout", 1085 | "text": [ 1086 | "+---------+\n", 1087 | "|\u001b[35mR\u001b[0m: | : :G|\n", 1088 | "| : | : : |\n", 1089 | "| : : : : |\n", 1090 | "| |\u001b[43m \u001b[0m: | : |\n", 1091 | "|\u001b[34;1mY\u001b[0m| : |B: |\n", 1092 | "+---------+\n", 1093 | " (Dropoff)\n" 1094 | ] 1095 | } 1096 | ] 1097 | }, 1098 | { 1099 | "cell_type": "code", 1100 | "source": [ 1101 | "env.reset()\n", 1102 | "env.s = 328 # set environment to illustration's state\n", 1103 | "env.render()" 1104 | ], 1105 | "metadata": { 1106 | "colab": { 1107 | "base_uri": "https://localhost:8080/" 1108 | }, 1109 | "id": "7Uvgjw24rqid", 1110 | "outputId": "85529957-ec46-4462-d64b-13ff642b9d9a" 1111 | }, 1112 | "execution_count": 77, 1113 | "outputs": [ 1114 | { 1115 | "output_type": "stream", 1116 | "name": "stdout", 1117 | "text": [ 1118 | "+---------+\n", 1119 | "|R: | : :\u001b[34;1mG\u001b[0m|\n", 1120 | "| : | : : |\n", 1121 | "|\u001b[43m \u001b[0m: : : : |\n", 1122 | "| | : | : |\n", 1123 | "|\u001b[35mY\u001b[0m| : |B: |\n", 1124 | "+---------+\n", 1125 | "\n" 1126 | ] 1127 | } 1128 | ] 1129 | }, 1130 | { 1131 | "cell_type": "code", 1132 | "source": [ 1133 | "\n", 1134 | "epochs = 0\n", 1135 | "penalties, reward = 0, 0\n", 1136 | "\n", 1137 | "frames = [] # for animation\n", 1138 | "\n", 1139 | "done = False\n", 1140 | "\n", 1141 | "while not done:\n", 1142 | " action = np.argmax(q_table[state])\n", 1143 | " state, reward, done, info = env.step(action)\n", 1144 | "\n", 1145 | " if reward == -10:\n", 1146 | " penalties += 1\n", 1147 | " \n", 1148 | " # Put each rendered frame into dict for animation\n", 1149 | " frames.append({\n", 1150 | " 'frame': env.render(mode='ansi'),\n", 1151 | " 'state': state,\n", 1152 | " 'action': action,\n", 1153 | " 'reward': reward\n", 1154 | " }\n", 1155 | " )\n", 1156 | "\n", 1157 | " epochs += 1\n", 1158 | " \n", 1159 | "print(\"Timesteps taken: {}\".format(epochs))\n", 1160 | "print(\"Penalties incurred: {}\".format(penalties))" 1161 | ], 1162 | "metadata": { 1163 | "colab": { 1164 | "base_uri": "https://localhost:8080/" 1165 | }, 1166 | "id": "4ln37j7oFTlx", 1167 | "outputId": "d1b821bf-af7f-4ea9-87e6-89245be11b22" 1168 | }, 1169 | "execution_count": 78, 1170 | "outputs": [ 1171 | { 1172 | "output_type": "stream", 1173 | "name": "stdout", 1174 | "text": [ 1175 | "Timesteps taken: 18\n", 1176 | "Penalties incurred: 0\n" 1177 | ] 1178 | } 1179 | ] 1180 | }, 1181 | { 1182 | "cell_type": "code", 1183 | "source": [ 1184 | "env.render()" 1185 | ], 1186 | "metadata": { 1187 | "colab": { 1188 | "base_uri": "https://localhost:8080/" 1189 | }, 1190 | "id": "xmlwNJ82FTn5", 1191 | "outputId": "cefa9289-0507-4d0f-c922-f7afa39181f2" 1192 | }, 1193 | "execution_count": 79, 1194 | "outputs": [ 1195 | { 1196 | "output_type": "stream", 1197 | "name": "stdout", 1198 | "text": [ 1199 | "+---------+\n", 1200 | "|R: | : :G|\n", 1201 | "| : | : : |\n", 1202 | "| : : : : |\n", 1203 | "| | : | : |\n", 1204 | "|\u001b[35m\u001b[34;1m\u001b[43mY\u001b[0m\u001b[0m\u001b[0m| : |B: |\n", 1205 | "+---------+\n", 1206 | " (Dropoff)\n" 1207 | ] 1208 | } 1209 | ] 1210 | }, 1211 | { 1212 | "cell_type": "code", 1213 | "source": [], 1214 | "metadata": { 1215 | "id": "WCGeM6lSFTqU" 1216 | }, 1217 | "execution_count": null, 1218 | "outputs": [] 1219 | }, 1220 | { 1221 | "cell_type": "code", 1222 | "source": [], 1223 | "metadata": { 1224 | "id": "4roMfUOvFTxb" 1225 | }, 1226 | "execution_count": null, 1227 | "outputs": [] 1228 | }, 1229 | { 1230 | "cell_type": "markdown", 1231 | "source": [ 1232 | "https://www.learndatasci.com/tutorials/reinforcement-q-learning-scratch-python-openai-gym/\n", 1233 | "\n", 1234 | "https://developer.nvidia.com/blog/deep-learning-nutshell-reinforcement-learning/\n", 1235 | "\n", 1236 | "https://medium.com/@MoneyAndData/ai-anyone-can-understand-part-1-reinforcement-learning-6c3b3d623a2d\n", 1237 | "\n", 1238 | "https://arshren.medium.com/deep-q-learning-a-deep-reinforcement-learning-algorithm-f1366cf1b53d\n", 1239 | "\n", 1240 | "https://www.coursera.org/specializations/reinforcement-learning" 1241 | ], 1242 | "metadata": { 1243 | "id": "nFefBluGFT6Z" 1244 | } 1245 | }, 1246 | { 1247 | "cell_type": "code", 1248 | "source": [], 1249 | "metadata": { 1250 | "id": "my6tYnl6FV04" 1251 | }, 1252 | "execution_count": null, 1253 | "outputs": [] 1254 | } 1255 | ] 1256 | } -------------------------------------------------------------------------------- /robotics/README.md: -------------------------------------------------------------------------------- 1 | ### Robotics 2 | 3 | ## A curated collection of places where you can learn robotics, algorithms, and other useful tools for aspiring robotics software engineers. 4 | 5 | https://github.com/soaicbe/robotics-coursework 6 | -------------------------------------------------------------------------------- /stat_prob/README.md: -------------------------------------------------------------------------------- 1 | # MOOCS 2 | 3 | - [Statistics 110: Probability by Harvard](https://projects.iq.harvard.edu/stat110) 4 | - [Probability - The Science of Uncertainty and Data by MIT](https://www.edx.org/course/probability-the-science-of-uncertainty-and-data) 5 | - [Probability by Khan Academy](https://www.khanacademy.org/math/statistics-probability/probability-library/basic-theoretical-probability) 6 | 7 | # Courses 8 | 9 | - [Introduction to STAT 414 by PennState](https://online.stat.psu.edu/stat414/lesson/introduction-stat-414) 10 | - [StatLect](https://www.statlect.com/fundamentals-of-probability/) 11 | 12 | # YouTube 13 | 14 | - [Statistics by CrashCourse](https://www.youtube.com/playlist?list=PL8dPuuaLjXtNM_Y-bUAhblSAdWRnmBUcr) 15 | 16 | # Animations 17 | 18 | - [Seeing Theory](https://seeing-theory.brown.edu/basic-probability/index.html) 19 | -------------------------------------------------------------------------------- /talks/AI and ML for Precision Medicine.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivu/ai_all_resources/f93fbff99dc173b3f243fad18573f7444c2cfc8f/talks/AI and ML for Precision Medicine.pdf -------------------------------------------------------------------------------- /talks/GDSC WOW TN - Navaneeth Share.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivu/ai_all_resources/f93fbff99dc173b3f243fad18573f7444c2cfc8f/talks/GDSC WOW TN - Navaneeth Share.pdf -------------------------------------------------------------------------------- /talks/PyExpo2023.md: -------------------------------------------------------------------------------- 1 | # PyExpo 2023 Master Class on AI 2 | 3 | ### _By Navaneeth Malingan_ 4 | 5 | 6 | Instagram 7 | 8 | 9 | 10 | LinkdeIN 11 | 12 |
13 | 14 | ## Artificial Intelligence 15 | 16 | - Computer Vision 17 | - Image Classification 18 | - Object Detection 19 | - Activity Recognition 20 | - Text2Image (Image Generation) 21 | - Image2Text (Image Captioning) 22 | - OCR (Optical Character Recognition) 23 | 24 | - Natural Language Processing 25 | - Voice2Text 26 | - Text2Voice 27 | - Language Translation 28 | - Text Sentiment Analysis 29 | - Text Auto Correct 30 | - Text Generation - Auto Complete 31 | - Sentence Similarity 32 | 33 | 34 | 35 | ## [Teachable Machine](https://teachablemachine.withgoogle.com/) 36 | _Train a computer to recognize your own images, sounds, & poses. 37 | A fast, easy way to create machine learning models for your sites, apps, and more – no expertise or coding required._ 38 | 39 | [Sorting Marshmallows with AI: Using Coral + Teachable Machine](https://www.youtube.com/watch?v=ydzJPeeMiMI) 40 | 41 | ## [Edge Impulse](https://www.edgeimpulse.com/) 42 | _Edge Impulse is the leading development platform for machine learning on edge devices, free for developers and trusted by enterprises._ 43 | 44 | 45 | 46 | Check out here👇for example projects 47 | 48 | 49 | 50 | ## [Huggingface](https://huggingface.co/) 51 | 52 | ### Table Question Answering 53 | 54 | _TAPAS, the model learns an inner representation of the English language used in tables and associated texts, which can then be used to extract features useful for downstream tasks such as answering questions about a table, or determining whether a sentence is entailed or refuted by the contents of a table._ 55 | 56 | 57 | 58 | 59 | 60 | #### Movie Dataset Question & Answering 👇 61 | 62 | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1JQrQblgQ4WFqRGe1MTqu_LekP0A7u_Qd?usp=sharing) 63 | 64 | #### Voice2Text Notebook 👇 65 | 66 | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1J2f5Fpbhmn7Pon3HRcgZaG-18hy2lPMQ?usp=sharing) 67 | 68 | ### Stable Diffusion for Image Generation 69 | 70 | Stable Diffusion is a latent text-to-image diffusion model capable of generating photo-realistic images given any text input. 71 | 72 | 73 | 74 | 75 | #### Image Generation Notebook 👇 76 | 77 | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/117MVG3hWRmPcIHGwKbmekL3WnpvzAM6k?usp=sharing) 78 | 79 | ### Image Captioning 80 | 81 | 82 | 83 | ## [Roboflow](https://roboflow.com/) 84 | 85 | ### Python Webcam Inference Examples 86 | 87 | 88 | 89 | [Using Your Webcam with Roboflow Models](https://blog.roboflow.com/python-webcam/) 90 | 91 | 92 | 93 | -------------------------------------------------------------------------------- /talks/saama-ai-agents/Pdf Share AI Agents - Saama Monthly Meetup Sep 2024 Final.pptx.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivu/ai_all_resources/f93fbff99dc173b3f243fad18573f7444c2cfc8f/talks/saama-ai-agents/Pdf Share AI Agents - Saama Monthly Meetup Sep 2024 Final.pptx.pdf -------------------------------------------------------------------------------- /talks/saama-ai-agents/simple-react.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 28, 6 | "metadata": {}, 7 | "outputs": [ 8 | { 9 | "name": "stdout", 10 | "output_type": "stream", 11 | "text": [ 12 | "The dotenv extension is already loaded. To reload it, use:\n", 13 | " %reload_ext dotenv\n" 14 | ] 15 | } 16 | ], 17 | "source": [ 18 | "%load_ext dotenv\n", 19 | "%dotenv" 20 | ] 21 | }, 22 | { 23 | "cell_type": "code", 24 | "execution_count": 29, 25 | "metadata": {}, 26 | "outputs": [ 27 | { 28 | "name": "stdout", 29 | "output_type": "stream", 30 | "text": [ 31 | "Requirement already satisfied: numexpr in /Users/navaneethmalingan/anaconda3/envs/llm/lib/python3.10/site-packages (2.10.1)\n", 32 | "Requirement already satisfied: openai in /Users/navaneethmalingan/anaconda3/envs/llm/lib/python3.10/site-packages (1.40.6)\n", 33 | "Requirement already satisfied: numpy>=1.23.0 in /Users/navaneethmalingan/anaconda3/envs/llm/lib/python3.10/site-packages (from numexpr) (1.26.3)\n", 34 | "Requirement already satisfied: anyio<5,>=3.5.0 in /Users/navaneethmalingan/anaconda3/envs/llm/lib/python3.10/site-packages (from openai) (3.7.1)\n", 35 | "Requirement already satisfied: distro<2,>=1.7.0 in /Users/navaneethmalingan/anaconda3/envs/llm/lib/python3.10/site-packages (from openai) (1.9.0)\n", 36 | "Requirement already satisfied: httpx<1,>=0.23.0 in /Users/navaneethmalingan/anaconda3/envs/llm/lib/python3.10/site-packages (from openai) (0.27.0)\n", 37 | "Requirement already satisfied: jiter<1,>=0.4.0 in /Users/navaneethmalingan/anaconda3/envs/llm/lib/python3.10/site-packages (from openai) (0.5.0)\n", 38 | "Requirement already satisfied: pydantic<3,>=1.9.0 in /Users/navaneethmalingan/anaconda3/envs/llm/lib/python3.10/site-packages (from openai) (2.8.2)\n", 39 | "Requirement already satisfied: sniffio in /Users/navaneethmalingan/anaconda3/envs/llm/lib/python3.10/site-packages (from openai) (1.3.1)\n", 40 | "Requirement already satisfied: tqdm>4 in /Users/navaneethmalingan/anaconda3/envs/llm/lib/python3.10/site-packages (from openai) (4.66.4)\n", 41 | "Requirement already satisfied: typing-extensions<5,>=4.11 in /Users/navaneethmalingan/anaconda3/envs/llm/lib/python3.10/site-packages (from openai) (4.12.2)\n", 42 | "Requirement already satisfied: idna>=2.8 in /Users/navaneethmalingan/anaconda3/envs/llm/lib/python3.10/site-packages (from anyio<5,>=3.5.0->openai) (3.6)\n", 43 | "Requirement already satisfied: exceptiongroup in /Users/navaneethmalingan/anaconda3/envs/llm/lib/python3.10/site-packages (from anyio<5,>=3.5.0->openai) (1.2.2)\n", 44 | "Requirement already satisfied: certifi in /Users/navaneethmalingan/anaconda3/envs/llm/lib/python3.10/site-packages (from httpx<1,>=0.23.0->openai) (2023.11.17)\n", 45 | "Requirement already satisfied: httpcore==1.* in /Users/navaneethmalingan/anaconda3/envs/llm/lib/python3.10/site-packages (from httpx<1,>=0.23.0->openai) (1.0.5)\n", 46 | "Requirement already satisfied: h11<0.15,>=0.13 in /Users/navaneethmalingan/anaconda3/envs/llm/lib/python3.10/site-packages (from httpcore==1.*->httpx<1,>=0.23.0->openai) (0.14.0)\n", 47 | "Requirement already satisfied: annotated-types>=0.4.0 in /Users/navaneethmalingan/anaconda3/envs/llm/lib/python3.10/site-packages (from pydantic<3,>=1.9.0->openai) (0.7.0)\n", 48 | "Requirement already satisfied: pydantic-core==2.20.1 in /Users/navaneethmalingan/anaconda3/envs/llm/lib/python3.10/site-packages (from pydantic<3,>=1.9.0->openai) (2.20.1)\n", 49 | "Note: you may need to restart the kernel to use updated packages.\n" 50 | ] 51 | } 52 | ], 53 | "source": [ 54 | "%pip install numexpr openai" 55 | ] 56 | }, 57 | { 58 | "cell_type": "code", 59 | "execution_count": 30, 60 | "metadata": {}, 61 | "outputs": [ 62 | { 63 | "data": { 64 | "text/plain": [ 65 | "True" 66 | ] 67 | }, 68 | "execution_count": 30, 69 | "metadata": {}, 70 | "output_type": "execute_result" 71 | } 72 | ], 73 | "source": [ 74 | "# import libraries\n", 75 | "import openai\n", 76 | "import os\n", 77 | "from langchain.llms import OpenAI\n", 78 | "from langchain.agents import load_tools\n", 79 | "from langchain.agents import initialize_agent\n", 80 | "from dotenv import load_dotenv\n", 81 | "load_dotenv()" 82 | ] 83 | }, 84 | { 85 | "cell_type": "code", 86 | "execution_count": 31, 87 | "metadata": {}, 88 | "outputs": [], 89 | "source": [ 90 | "# load API keys; you will need to obtain these if you haven't yet\n", 91 | "os.environ[\"OPENAI_API_KEY\"] = os.getenv(\"OPENAI_API_KEY\")\n", 92 | "os.environ[\"SERPER_API_KEY\"] = os.getenv(\"SERPER_API_KEY\")" 93 | ] 94 | }, 95 | { 96 | "cell_type": "code", 97 | "execution_count": 32, 98 | "metadata": {}, 99 | "outputs": [], 100 | "source": [ 101 | "# llm = OpenAI(model_name=\"gpt-3.5-turbo\" ,temperature=0)\n", 102 | "llm = OpenAI()\n", 103 | "tools = load_tools([\"google-serper\", \"llm-math\"], llm=llm)\n", 104 | "agent = initialize_agent(tools, llm, agent=\"zero-shot-react-description\", verbose=True)" 105 | ] 106 | }, 107 | { 108 | "cell_type": "code", 109 | "execution_count": 19, 110 | "metadata": {}, 111 | "outputs": [ 112 | { 113 | "name": "stdout", 114 | "output_type": "stream", 115 | "text": [ 116 | "\n", 117 | "\n", 118 | "\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n", 119 | "\u001b[32;1m\u001b[1;3m We can use Google search to find out who Olivia Wilde's boyfriend is, then use the calculator to raise his age to the 0.23 power.\n", 120 | "Action: google_serper\n", 121 | "Action Input: \"Olivia Wilde boyfriend\"\u001b[0m\n", 122 | "Observation: \u001b[36;1m\u001b[1;3mIn January 2021, Wilde began dating singer Harry Styles after they met during the filming of Don't Worry Darling.\u001b[0m\n", 123 | "Thought:\u001b[32;1m\u001b[1;3m Now that we know Olivia Wilde's boyfriend is Harry Styles, we can use the calculator to raise his age to the 0.23 power.\n", 124 | "Action: Calculator\n", 125 | "Action Input: 27 ** 0.23\u001b[0m\n", 126 | "Observation: \u001b[33;1m\u001b[1;3mAnswer: 2.1340945944237553\u001b[0m\n", 127 | "Thought:\u001b[32;1m\u001b[1;3m I now know the final answer.\n", 128 | "Final Answer: Harry Styles' age raised to the 0.23 power is approximately 2.13.\u001b[0m\n", 129 | "\n", 130 | "\u001b[1m> Finished chain.\u001b[0m\n" 131 | ] 132 | }, 133 | { 134 | "data": { 135 | "text/plain": [ 136 | "\"Harry Styles' age raised to the 0.23 power is approximately 2.13.\"" 137 | ] 138 | }, 139 | "execution_count": 19, 140 | "metadata": {}, 141 | "output_type": "execute_result" 142 | } 143 | ], 144 | "source": [ 145 | "agent.run(\"Who is Olivia Wilde's boyfriend? What is his current age raised to the 0.23 power?\")" 146 | ] 147 | }, 148 | { 149 | "cell_type": "code", 150 | "execution_count": 34, 151 | "metadata": {}, 152 | "outputs": [ 153 | { 154 | "name": "stdout", 155 | "output_type": "stream", 156 | "text": [ 157 | "\n", 158 | "\n", 159 | "\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n", 160 | "\u001b[32;1m\u001b[1;3m I should search for information about Maddie Hamilton's boyfriend.\n", 161 | "Action: google_serper\n", 162 | "Action Input: \"Maddie Hamilton's boyfriend\"\u001b[0m\n", 163 | "Observation: \u001b[36;1m\u001b[1;3mMaddie Hamilton: The beautiful girlfriend of Yashasvi Jaiswal.\u001b[0m\n", 164 | "Thought:\u001b[32;1m\u001b[1;3m I should use the information I found to search for Yashasvi Jaiswal's age.\n", 165 | "Action: google_serper\n", 166 | "Action Input: \"Yashasvi Jaiswal age\"\u001b[0m\n", 167 | "Observation: \u001b[36;1m\u001b[1;3m22 years\u001b[0m\n", 168 | "Thought:\u001b[32;1m\u001b[1;3m I should multiply Yashasvi Jaiswal's age by 2.\n", 169 | "Action: Calculator\n", 170 | "Action Input: 22*2\u001b[0m\n", 171 | "Observation: \u001b[33;1m\u001b[1;3mAnswer: 44\u001b[0m\n", 172 | "Thought:\u001b[32;1m\u001b[1;3m I now know the final answer.\n", 173 | "Final Answer: 44\u001b[0m\n", 174 | "\n", 175 | "\u001b[1m> Finished chain.\u001b[0m\n" 176 | ] 177 | }, 178 | { 179 | "data": { 180 | "text/plain": [ 181 | "'44'" 182 | ] 183 | }, 184 | "execution_count": 34, 185 | "metadata": {}, 186 | "output_type": "execute_result" 187 | } 188 | ], 189 | "source": [ 190 | "agent.run(\"Who is maddie hamilton's boyfriend? What is his current age multiplied by 2?\")" 191 | ] 192 | }, 193 | { 194 | "cell_type": "code", 195 | "execution_count": 27, 196 | "metadata": {}, 197 | "outputs": [ 198 | { 199 | "name": "stdout", 200 | "output_type": "stream", 201 | "text": [ 202 | "\n", 203 | "\n", 204 | "\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n", 205 | "\u001b[32;1m\u001b[1;3m I should use google_serper to search for articles about Olivia Wilde\n", 206 | "Action: google_serper\n", 207 | "Action Input: Olivia Wilde\u001b[0m\n", 208 | "Observation: \u001b[36;1m\u001b[1;3mOlivia Wilde: American actress and director. Olivia Wilde is an American actress, director and producer. She played Remy \"Thirteen\" Hadley on the medical-drama television series House, and has appeared in the films Tron: Legacy, Cowboys & Aliens, The Incredible Burt Wonderstone, The Lazarus... Olivia Wilde Born: 1984 (age 40 years), New York, NY. Olivia Wilde Spouse: Tao Ruspoli (m. 2003–2011). Olivia Wilde Height: 5′ 7″. Olivia Wilde Children: 2. Olivia Wilde Parents: Andrew Cockburn and Leslie Cockburn. Olivia Wilde Siblings: Chloe Frances Cockburn and Charlie Philip Cockburn. Actress and activist Olivia Wilde is a modern day renaissance woman, starring in many acclaimed film productions, while simultaneously giving back to the ... Olivia Wilde is an American actress, director and producer. She played Remy \"Thirteen\" Hadley on the medical-drama television series House (2007–2012), ... Miniature enthusiast. · 1,940 posts · 4,139,189 followers · 786 following ... 4M Followers, 793 Following, 1940 Posts - Olivia Wilde (@oliviawilde) on Instagram: \"Miniature enthusiast.\" World champion parallel parker. youtu.be/FgmnKsED-jU Joined November 2009 503 Following 1.6M Followers American actress and director Olivia Wilde appeared in TRON: Legacy (2010), Her (2013), and as Dr. Remy \"Thirteen\" Hadley on Fox's medical drama House. Olivia Wilde is an actress and director. She appeared in shows like Skin and The O.C. before landing her most notable television role in 2007 as Remy ... Olivia Jane Cockburn, known professionally as Olivia Wilde, is an actor and director who was born on March 10, 1984 in New York City. In her early years, ... Olivia Wilde. 1183250 likes · 25 talking about this. Actress, co-founder of Conscious Commerce, and world champion parallel parker. Directors · Olivia Wilde · Amazon “Tache” · VW “Water Girl” · Booksmart · Don't Worry Darling · HP “Wake Up”.\u001b[0m\n", 209 | "Thought:\u001b[32;1m\u001b[1;3m Now I should use google_serper to search for articles about Olivia Wilde's boyfriend and their age difference\n", 210 | "Action: google_serper\n", 211 | "Action Input: Olivia Wilde boyfriend age difference\u001b[0m\n", 212 | "Observation: \u001b[36;1m\u001b[1;3mThe actress demurred from speaking at detail about him or their relationship, but she did address the scrutiny she received for their 10-year age gap and how happy she is now. “It's obviously really tempting to correct a false narrative,” Wilde said of those critical of a woman in her 30s dating a man a decade younger.\u001b[0m\n", 213 | "Thought:\u001b[32;1m\u001b[1;3m I should use google_serper to search for articles about Olivia Wilde's boyfriend\n", 214 | "Action: google_serper\n", 215 | "Action Input: Olivia Wilde boyfriend\u001b[0m\n", 216 | "Observation: \u001b[36;1m\u001b[1;3mIn January 2021, Wilde began dating singer Harry Styles after they met during the filming of Don't Worry Darling.\u001b[0m\n", 217 | "Thought:\u001b[32;1m\u001b[1;3m I should use google_serper to search for articles about Olivia Wilde's age\n", 218 | "Action: google_serper\n", 219 | "Action Input: Olivia Wilde age\u001b[0m\n", 220 | "Observation: \u001b[36;1m\u001b[1;3mTao Ruspoli\u001b[0m\n", 221 | "Thought:\u001b[32;1m\u001b[1;3m I should use google_serper to search for articles about Olivia Wilde's age difference\n", 222 | "Action: google_serper\n", 223 | "Action Input: Olivia Wilde age difference\u001b[0m\n", 224 | "Observation: \u001b[36;1m\u001b[1;3mDec. Wilde did her first in-depth interview since starting to date Styles with Vogue. The actress demurred from speaking at detail about him or their relationship, but she did address the scrutiny she received for their 10-year age gap and how happy she is now.\u001b[0m\n", 225 | "Thought:\u001b[32;1m\u001b[1;3m I now know the final answer\n", 226 | "Final Answer: Olivia Wilde is 37 years old and her boyfriend, Harry Styles, is 27 years old. They have a 10-year age difference.\u001b[0m\n", 227 | "\n", 228 | "\u001b[1m> Finished chain.\u001b[0m\n" 229 | ] 230 | }, 231 | { 232 | "data": { 233 | "text/plain": [ 234 | "'Olivia Wilde is 37 years old and her boyfriend, Harry Styles, is 27 years old. They have a 10-year age difference.'" 235 | ] 236 | }, 237 | "execution_count": 27, 238 | "metadata": {}, 239 | "output_type": "execute_result" 240 | } 241 | ], 242 | "source": [ 243 | "agent.run(\"What is Olivia Wilde's age? Who is her boyfriend? What is their age difference\")" 244 | ] 245 | }, 246 | { 247 | "cell_type": "code", 248 | "execution_count": null, 249 | "metadata": {}, 250 | "outputs": [], 251 | "source": [] 252 | } 253 | ], 254 | "metadata": { 255 | "kernelspec": { 256 | "display_name": "llm", 257 | "language": "python", 258 | "name": "python3" 259 | }, 260 | "language_info": { 261 | "codemirror_mode": { 262 | "name": "ipython", 263 | "version": 3 264 | }, 265 | "file_extension": ".py", 266 | "mimetype": "text/x-python", 267 | "name": "python", 268 | "nbconvert_exporter": "python", 269 | "pygments_lexer": "ipython3", 270 | "version": "3.10.13" 271 | } 272 | }, 273 | "nbformat": 4, 274 | "nbformat_minor": 2 275 | } 276 | -------------------------------------------------------------------------------- /tinyml.md: -------------------------------------------------------------------------------- 1 | https://github.com/PINTO0309/PINTO_model_zoo 2 | -------------------------------------------------------------------------------- /tweets/README.md: -------------------------------------------------------------------------------- 1 | # The tweets/ folder 2 | 3 | To create a new tweet create a new `*.tweet` file in this `tweets/` folder. 4 | 5 | [Create new tweet](../../../new/master/?filename=tweets/.tweet) 6 | 7 | ## Example 8 | 9 | Create a new file `tweets/hello-world.tweet` with the content 10 | 11 | > Hello, world! 12 | 13 | You can use subfolders, e.g. `tweets/2019-02/hello-world.tweet`, as long as the file is in the `tweets/` folder and has the `.tweet` file extension 14 | 15 | ## Create a tweet with a twitter poll 16 | 17 | **Note**: The configured twitter account needs to be authorized to use Twitters Ads API in order to send tweets including a poll. 18 | 19 | A tweet including a poll must end with 2-4 options in the following format 20 | 21 | > Here is some text 22 | > 23 | > ( ) option A 24 | > ( ) option B 25 | > ( ) option C 26 | > ( ) option D 27 | 28 | ## Notes 29 | 30 | - Only newly created files are handled, deletions, updates or renames are ignored. 31 | - `*.tweet` files will not be created for tweets you send out directly from twitter.com 32 | - If you need to rename an existing tweet file, please do so locally using [`git mv old_filename new_filename`](https://help.github.com/en/articles/renaming-a-file-using-the-command-line), otherwise it may occur as deleted and added which would trigger a new tweet. 33 | - your message must fit into a single tweet 34 | 35 | ## Questions? 36 | 37 | If you have any further questions or suggestions, please create an issue at https://github.com/gr2m/twitter-together/issues/new 38 | -------------------------------------------------------------------------------- /tweets/test.tweet: -------------------------------------------------------------------------------- 1 | test tweet 2 | -------------------------------------------------------------------------------- /tweets/test2.tweet: -------------------------------------------------------------------------------- 1 | Hello world. 2 | -------------------------------------------------------------------------------- /webinars/computer_vision/Computer Vision Share.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nivu/ai_all_resources/f93fbff99dc173b3f243fad18573f7444c2cfc8f/webinars/computer_vision/Computer Vision Share.pdf -------------------------------------------------------------------------------- /webinars/decision_trees_and_random_forest/Ensemble_Methods.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "name": "Ensemble Methods.ipynb", 7 | "provenance": [] 8 | }, 9 | "kernelspec": { 10 | "name": "python3", 11 | "display_name": "Python 3" 12 | } 13 | }, 14 | "cells": [ 15 | { 16 | "cell_type": "code", 17 | "metadata": { 18 | "id": "-mCmaGdYCtBc", 19 | "colab_type": "code", 20 | "colab": {} 21 | }, 22 | "source": [ 23 | "# Load Library\n", 24 | "from sklearn.datasets import make_moons\n", 25 | "from sklearn.metrics import accuracy_score\n", 26 | "from sklearn.model_selection import train_test_split\n", 27 | "from sklearn.tree import DecisionTreeClassifier\n", 28 | "from sklearn.ensemble import RandomForestClassifier,AdaBoostClassifier,GradientBoostingClassifier" 29 | ], 30 | "execution_count": 0, 31 | "outputs": [] 32 | }, 33 | { 34 | "cell_type": "code", 35 | "metadata": { 36 | "id": "4ja4yb4_CzlY", 37 | "colab_type": "code", 38 | "colab": {} 39 | }, 40 | "source": [ 41 | "# Step1: Create data set\n", 42 | "X, y = make_moons(n_samples=10000, noise=.5, random_state=0)" 43 | ], 44 | "execution_count": 0, 45 | "outputs": [] 46 | }, 47 | { 48 | "cell_type": "code", 49 | "metadata": { 50 | "id": "WbIUBF8pdXUF", 51 | "colab_type": "code", 52 | "colab": {} 53 | }, 54 | "source": [ 55 | "# Step2: Split the training test set\n", 56 | "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)" 57 | ], 58 | "execution_count": 0, 59 | "outputs": [] 60 | }, 61 | { 62 | "cell_type": "code", 63 | "metadata": { 64 | "id": "8vRma5CzC1id", 65 | "colab_type": "code", 66 | "outputId": "47d557ac-f8d7-4b3d-8fb8-94893afbc5fd", 67 | "colab": { 68 | "base_uri": "https://localhost:8080/", 69 | "height": 51 70 | } 71 | }, 72 | "source": [ 73 | "# Step 3: Fit a Decision Tree model as comparison\n", 74 | "clf = DecisionTreeClassifier()\n", 75 | "clf.fit(X_train, y_train)\n", 76 | "print(\" Train Accuracy\", accuracy_score(y_train, clf.predict(X_train)))\n", 77 | "print(\" Test Accuracy\", accuracy_score(y_test, clf.predict(X_test)))" 78 | ], 79 | "execution_count": 15, 80 | "outputs": [ 81 | { 82 | "output_type": "stream", 83 | "text": [ 84 | " Train Accuracy 1.0\n", 85 | " Test Accuracy 0.751\n" 86 | ], 87 | "name": "stdout" 88 | } 89 | ] 90 | }, 91 | { 92 | "cell_type": "code", 93 | "metadata": { 94 | "id": "LeoG6gvlC1oR", 95 | "colab_type": "code", 96 | "outputId": "42772dfc-410f-474d-c442-a940260ac783", 97 | "colab": { 98 | "base_uri": "https://localhost:8080/", 99 | "height": 51 100 | } 101 | }, 102 | "source": [ 103 | "# Step 4: Fit a Random Forest model, \" compared to \"Decision Tree model, accuracy go up by 5%\n", 104 | "clf = RandomForestClassifier(n_estimators=100, max_features=\"auto\",random_state=0)\n", 105 | "clf.fit(X_train, y_train)\n", 106 | "print(\" Train Accuracy\", accuracy_score(y_train, clf.predict(X_train)))\n", 107 | "print(\" Test Accuracy\", accuracy_score(y_test, clf.predict(X_test)))" 108 | ], 109 | "execution_count": 16, 110 | "outputs": [ 111 | { 112 | "output_type": "stream", 113 | "text": [ 114 | " Train Accuracy 1.0\n", 115 | " Test Accuracy 0.7965\n" 116 | ], 117 | "name": "stdout" 118 | } 119 | ] 120 | }, 121 | { 122 | "cell_type": "code", 123 | "metadata": { 124 | "id": "h_ntW2CiC1ll", 125 | "colab_type": "code", 126 | "outputId": "753a8327-e25f-4c2d-9d39-e3ee62c13192", 127 | "colab": { 128 | "base_uri": "https://localhost:8080/", 129 | "height": 51 130 | } 131 | }, 132 | "source": [ 133 | "# Step 5: Fit a AdaBoost model, \" compared to \"Decision Tree model, accuracy go up by 10%\n", 134 | "clf = AdaBoostClassifier(n_estimators=100)\n", 135 | "clf.fit(X_train, y_train)\n", 136 | "print(\" Train Accuracy\", accuracy_score(y_train, clf.predict(X_train)))\n", 137 | "print(\" Test Accuracy\", accuracy_score(y_test, clf.predict(X_test)))" 138 | ], 139 | "execution_count": 17, 140 | "outputs": [ 141 | { 142 | "output_type": "stream", 143 | "text": [ 144 | " Train Accuracy 0.825625\n", 145 | " Test Accuracy 0.833\n" 146 | ], 147 | "name": "stdout" 148 | } 149 | ] 150 | }, 151 | { 152 | "cell_type": "code", 153 | "metadata": { 154 | "id": "GXw2cMWuC92S", 155 | "colab_type": "code", 156 | "outputId": "ce935fdf-df0a-4405-e6d3-a41af02a7ae6", 157 | "colab": { 158 | "base_uri": "https://localhost:8080/", 159 | "height": 51 160 | } 161 | }, 162 | "source": [ 163 | "# Step 6: Fit a Gradient Boosting model, \" compared to \"Decision Tree model, accuracy go up by 10%\n", 164 | "clf = GradientBoostingClassifier(n_estimators=100)\n", 165 | "clf.fit(X_train, y_train)\n", 166 | "print(\" Train Accuracy\", accuracy_score(y_train, clf.predict(X_train)))\n", 167 | "print(\" Test Accuracy\", accuracy_score(y_test, clf.predict(X_test)))" 168 | ], 169 | "execution_count": 18, 170 | "outputs": [ 171 | { 172 | "output_type": "stream", 173 | "text": [ 174 | " Train Accuracy 0.829875\n", 175 | " Test Accuracy 0.8335\n" 176 | ], 177 | "name": "stdout" 178 | } 179 | ] 180 | }, 181 | { 182 | "cell_type": "code", 183 | "metadata": { 184 | "id": "QY37GWzl9CQD", 185 | "colab_type": "code", 186 | "colab": {} 187 | }, 188 | "source": [ 189 | "" 190 | ], 191 | "execution_count": 0, 192 | "outputs": [] 193 | } 194 | ] 195 | } --------------------------------------------------------------------------------