As we have seen in the previous chapters, the Go ecosystem provides ample opportunities to solve machine learning problems natively. However, being obstinate in requiring the solution to remain pure-Go can lead to increased development time or even reduced training performance, as other, more specialized ML libraries can provide higher-level APIs or performance optimizations that have not been implemented in the corresponding Go libraries yet.
A good example of both is the Python ML library, Keras. The aim of this library is to provide a high-level API that allows the author to perform a wide range of ML tasks, such as data preprocessing, model training, model validation, and persistence. Its abstractions have concrete implementations in various backends, such as TensorFlow, which are known to be extremely performant. For these reasons...