TensorFlow is an open-source, highly flexible, and very extensible machine learning library, maintained mainly by Google, that can be used in a wide variety of applications, from Deep Learning research to high-performance AI services. Version 2.0 of this framework brought a user-friendlier and cleaner API accompanied by higher performance. At IUST, we are creating a set tutorial to be taught in our Deep Learning courses. These tutorials include comprehensive and in-depth materials on how to use TensorFlow 2 in practice. Our goal is to provide opinionated tutorials in which we point out the best practices for each use case. Moreover, these materials are created to be used in self-study or taught as a mini-course.
First, we aim to approach TensorFlow 2.0 from a practical point of view so that you can start using the framework as soon as possible. Secondly, we try to include and use a wide range of information such as TF team talks, API references, and practical experiences in the making of these materials to make it as comprehensive as possible. Thus, the user can enjoy an all-in-one package. Finally, tutorials are organized in a simple-to-complex manner that can benefit many newcomers. Moreover, the assignments that come with these tutorials make them a ready-to-use option in use in special (short) courses.
- Part #1: TensorFlow Architecture
- Part #2: Tensors and Basic Operations
- Part #3: Model Design APIs
- Part #4: Model Training APIs
- Part #5: TensorFlow Input Data Pipeline
- Part #6: Saving the Model
- Part #7: Transfer Learning & TensorHub
- Part #8: TensorBoard
- Part #9: TF 2.0 for NLP
- Part #10: TF 2.0 for Computer Vision
This set of tutorials is considered as an open-source community-driven project. Therefore, all kinds of contributions such as fix, new content, or new section are welcome. To have a consistent and coherent matertial, we have designed a set of rules and guides for contributions.
- Content correction: If you find some of the parts are not correct (in any levels), please open an issue and describe it, and if possible, provide a suggestion to fix that.
- Adding contents (and completing the current ones ): To find what sections and parts are incomplete, you need to visit each part's page. There is a suggested table of content in each section. You may want to complete the tutorial base on that or even recommend a new list of materials. Please open an issue and inform others that you are working on the tutorial. Finally, after you are ready, open a pull request.
- Adding a new part: If you think this tutorial needs a new section, please open an issue and discuss that with others.
Each part has at least three different segments. The first segment is the tutorial itself, which is basically a Jupyter notebook; the presentation slides for that part is the second segment; and finally, the solutions for the exercises is the last segment.
1. Noteboook
The notebook should be the primary source of educational material. Hence, you may consider completing it first. First, It should be as comprehensive as possible. Moreover, and more importantly, it must be wholly runnable, and the result of each runnable cell should be provided underneath. Additionally, you may consider designing a handful of exercises so that the students in the class can practice them during the session. Finally, all notebooks have to follow the template here.
2. Slides
Since Jupyter notebooks are not particularly useful in classes, the presentation slides are created to fulfill this goal. Ideally, each set of slides should be created from its corresponding notebook. Please consider designing slides that sequentially teach the TensorFlow code. That is, you should avoid showing a piece of code only in a single slide. To have coherent slides, we have created a Google Slides template, which you can access it from here.
3. Solutions
The answer to the exercises that you created in the main notebook should be provided in this segment. Please reference the questions using numbers and also include the exercise itself in the solutions file. This component follows the same template as that of the main notebook.