Want to start by saying I understand why the author chose to use pyTorch for the code samples in MINST. As this is currently the industry standard and bleeping edge for training neural networks, it makes sense to use this to familiarize students with the library while teaching the basics of this subject.
However, as someone new to the use of neural nets, but vary familiar with programming in general, I have to admit it made understanding the underlying methodology a bit more cumbersome that it could have been.
The problem is these highly abstracted, high-level functions do not give a clear impression of what's happening, and require significant explanation in English, and effort to "imagine" what the functions are doing to add up to the whole algorithm. I understand they want to teach the use of PyTorch/FastAI, however, in a document related to teaching the "foundation" of a particular algorithm, I think it would be worth it to also include a version of the script in code that is less abstract, and more direct. For example, instead of saying "Because using Python loops are slow, we use such-and-such Tensor function" and stopping there, it would be very beneficial to additionally add how it could be done using a loop with more foundational, C-like coding elements to really display what's happening, or even something more pseudo-code (if you don't want to program a function in the doc to calculate derivatives, for example).
High-level abstractions are great for making less code and doing complicated tasks with little effort. But, also remembers that this action obscures the underlying process. As the goal of this document is to teach the underlying process, only using the high-level abstraction to do it is a little counter productive.
Want to start by saying I understand why the author chose to use pyTorch for the code samples in MINST. As this is currently the industry standard and bleeping edge for training neural networks, it makes sense to use this to familiarize students with the library while teaching the basics of this subject.
However, as someone new to the use of neural nets, but vary familiar with programming in general, I have to admit it made understanding the underlying methodology a bit more cumbersome that it could have been.
The problem is these highly abstracted, high-level functions do not give a clear impression of what's happening, and require significant explanation in English, and effort to "imagine" what the functions are doing to add up to the whole algorithm. I understand they want to teach the use of PyTorch/FastAI, however, in a document related to teaching the "foundation" of a particular algorithm, I think it would be worth it to also include a version of the script in code that is less abstract, and more direct. For example, instead of saying "Because using Python loops are slow, we use such-and-such Tensor function" and stopping there, it would be very beneficial to additionally add how it could be done using a loop with more foundational, C-like coding elements to really display what's happening, or even something more pseudo-code (if you don't want to program a function in the doc to calculate derivatives, for example).
High-level abstractions are great for making less code and doing complicated tasks with little effort. But, also remembers that this action obscures the underlying process. As the goal of this document is to teach the underlying process, only using the high-level abstraction to do it is a little counter productive.