Deep Learning Frameworks (C2W3L10)

The Evolution of Deep Learning: A Practical Approach to Implementing Complex Models

As you have learned to implement deep learning algorithms from scratch using libraries such as Tyson and numpy, I'm glad you did. These skills will help you understand what these deep learning algorithms are really doing, but it's also important to recognize when it's no longer practical to do everything yourself from scratch. Fortunately, there are now many good deep learning software frameworks that can help you implement these models.

Implementing complex models like composition areas or recurrent neural networks is certainly possible using libraries like Tyson and numpy, but as you build very large applications, it becomes increasingly impractical to instrument everything yourself from scratch. This is where the benefits of using a deep learning framework come in. A good framework can help you understand how to implement these algorithms while also providing a more efficient way to deploy your models.

Take matrix multiplication for example. You should be able to implement how to multiply two matrices yourself, but as you build very large applications, it's probably not practical to implement your own matrix multiplication function from scratch. Instead, you want to call a numerical linear algebra library that can do it more efficiently for you. This is exactly what deep learning frameworks offer - they provide a higher level of abstraction than just a numerical linear algebra library, allowing you to focus on developing machine learning applications without having to implement every single algorithm yourself.

In recent years, deep learning has matured to the point where it's actually more practical and efficient to use these frameworks. With so many good deep learning software frameworks available today, each with its own dedicated user and developer community, it can be overwhelming to choose one that's right for your application. However, by using a framework that meets certain criteria, you can ensure that you're making the most of what deep learning has to offer.

One important criterion to consider when choosing a framework is ease of programming. This means both developing the neural network and iterating on it as well as deploying it for production. With thousands or millions of users depending on your application, you want a framework that can handle large-scale deployments efficiently. Another crucial criterion is running speeds, especially training on large data sets. Some frameworks will allow you to run your network more efficiently than others.

However, there's another important factor to consider when choosing a framework: whether it's truly open-source or not. For a framework to be truly open, it means not only being released under an open-source license but also having good governance in place. Unfortunately, some companies have a history of open sourcing software while maintaining single corporation control over the software and gradually closing off what was once open-source or moving functionality into proprietary cloud services.

When choosing a framework, it's essential to consider how much you trust that it will remain open-source for a long time rather than just being under the control of a single company. This depends on your preferences of language, as well as the application you're working on - computer vision, natural language processing, or online advertising, for example. Ultimately, I believe multiple frameworks could be good choices depending on your specific needs.

In conclusion, when it comes to implementing complex deep learning models, there's no one-size-fits-all solution. By understanding what each framework offers and considering the various criteria that make a good choice, you can ensure that you're making the most of what deep learning has to offer.

"WEBVTTKind: captionsLanguage: enyou've learn to implement deep learning algorithms more or less from scratch using Tyson and numpy and I'm glad you did that because I wanted you to understand what these deep learning algorithms are really doing but you find it lets you implement more complex models such as composition areas or recurrent neural networks well if you start to implant very large models that is increasingly not practical ways for most people it's not practical to instrument everything yourself from scratch fortunately there are now many good deep learning software frameworks that can help you implement these models to make an analogy I think that hopefully you understand how to do a matrix multiplication and you should be able to implement you know how to code to multiply two matrices yourself but as you build very large applications you probably not want to implement your own matrix multiplication function but instead you want to call a numerical linear algebra library they could do it more efficiently for you but it still helps you understand how multiplying two matrices were so I think deep learning has now matured to that point where it's actually more practical and you be more efficient doing some things with some of the deep learning frameworks so let's take a look at the frameworks out there today there are many deep learning frameworks that makes it easy for you to implement new networks and here are some of the leading ones each of these frameworks has a dedicated user and developer community and I think each of these frameworks is a credible choice for some subset of applications there are a lot of people writing articles comparing these deep learning frameworks and how well these people in frameworks changes and because these frameworks are often evolving in getting better at month-to-month I'll leave you to do a few internet searches yourself if you want to see the arguments on the pros and cons of some of these frameworks but I think many of these frameworks are evolving and getting better very rapidly so rather than to strongly endorsing any of the Australian works I want to share of you the criteria on I would recommend you use to choose framework one important criteria is the ease of programming and that means both developing the neural network and iterating on it as well as deploying it for production for actual use by you know thousands or millions or maybe hundreds of millions of users depending on what you're trying to do a second important criteria is running speeds especially training on large data sets some frameworks will let you run in training your network more efficiently than others and then one criteria that people don't often talk about but I think is important is whether or not the framework is truly open and for a framework to be truly open it means not only to be open source but I think it means good governance as well unfortunately in the software industry some companies have a history of open sourcing software but maintaining single corporation control of the software and then over some number of years as people start to use their software some companies have a history of gradually closing off what was open-source or perhaps moving functionality into their own proprietary cloud services so one thing I pay a bit of attention to is how much you trust that a framework will remain open source you know for a long time rather than just being under the control of a single company which for whatever reason may choose to close it off in the future even if the software is currently released under open source but at least in the short term depending on your preferences of language whether you prefer Python or Java or C++ or something else and depending on what application you're working on whether it's computer vision or natural language processing or online advertising or something else I think multiple of these frameworks could be a good choice so that's it on programming frameworks by providing a higher level of abstraction than just a numerical linear algebra library any of these programming worlds can make you more efficient as you develop machine learning applicationsyou've learn to implement deep learning algorithms more or less from scratch using Tyson and numpy and I'm glad you did that because I wanted you to understand what these deep learning algorithms are really doing but you find it lets you implement more complex models such as composition areas or recurrent neural networks well if you start to implant very large models that is increasingly not practical ways for most people it's not practical to instrument everything yourself from scratch fortunately there are now many good deep learning software frameworks that can help you implement these models to make an analogy I think that hopefully you understand how to do a matrix multiplication and you should be able to implement you know how to code to multiply two matrices yourself but as you build very large applications you probably not want to implement your own matrix multiplication function but instead you want to call a numerical linear algebra library they could do it more efficiently for you but it still helps you understand how multiplying two matrices were so I think deep learning has now matured to that point where it's actually more practical and you be more efficient doing some things with some of the deep learning frameworks so let's take a look at the frameworks out there today there are many deep learning frameworks that makes it easy for you to implement new networks and here are some of the leading ones each of these frameworks has a dedicated user and developer community and I think each of these frameworks is a credible choice for some subset of applications there are a lot of people writing articles comparing these deep learning frameworks and how well these people in frameworks changes and because these frameworks are often evolving in getting better at month-to-month I'll leave you to do a few internet searches yourself if you want to see the arguments on the pros and cons of some of these frameworks but I think many of these frameworks are evolving and getting better very rapidly so rather than to strongly endorsing any of the Australian works I want to share of you the criteria on I would recommend you use to choose framework one important criteria is the ease of programming and that means both developing the neural network and iterating on it as well as deploying it for production for actual use by you know thousands or millions or maybe hundreds of millions of users depending on what you're trying to do a second important criteria is running speeds especially training on large data sets some frameworks will let you run in training your network more efficiently than others and then one criteria that people don't often talk about but I think is important is whether or not the framework is truly open and for a framework to be truly open it means not only to be open source but I think it means good governance as well unfortunately in the software industry some companies have a history of open sourcing software but maintaining single corporation control of the software and then over some number of years as people start to use their software some companies have a history of gradually closing off what was open-source or perhaps moving functionality into their own proprietary cloud services so one thing I pay a bit of attention to is how much you trust that a framework will remain open source you know for a long time rather than just being under the control of a single company which for whatever reason may choose to close it off in the future even if the software is currently released under open source but at least in the short term depending on your preferences of language whether you prefer Python or Java or C++ or something else and depending on what application you're working on whether it's computer vision or natural language processing or online advertising or something else I think multiple of these frameworks could be a good choice so that's it on programming frameworks by providing a higher level of abstraction than just a numerical linear algebra library any of these programming worlds can make you more efficient as you develop machine learning applications\n"