Go does not have much traction in ML and for good reasons:
* not a single one organization or company is backing Go ML projects
* with exception couple papers, no research in neither computer vision, NLP, or RL is done in Go, no papers are implemented in Go. It is mostly Pytorch these days.
* Go language does not support: multi-dimensional indexing; N-dimensional arrays; operator overloading; short lambda notation — all these are loved by data science and machine learning community since it makes life a lot easier for them, but not in Go
* Go support for GPU is not good
* Go compiler does not support optimizations like SIMD — so even CPU intense workloads are not as performant
* Go calls to C can be made, but "cgo is not go" and benefits of Go deteriorate quickly with this approach — so a lot of ML code in C can not be really efficient with Go
* Audio / Video / Image / Spatial data is not supported well in Go (just try to run OpenCV in Go, likely it will be either IPC or cgo...)
* Many ML related libraries are supported by a single person or already deprecated or highly unstable or experimental
Is there way forward?
Writing experimentation, data visualization, data wrangling, modeling, training in Go is shooting yourself in the foot. I already tried this myself once for porting Julia code. I would not believe any single DS or ML person would use Go seriously for these purposes.
However, there is a niche that Go may fit — tabular data (your backend data model) + inference. Which means, ML model is developed and
trained in say Python/Julia/R but then ported to Go and loaded trained model artifacts. I recently wrote
https://github.com/nikolaydubina/go-featureprocessing as a first step in that direction and more work will follow up.
Here is what ML there is in Go at the moment:
*
https://github.com/josephmisiti/awesome-machine-learning#go*
https://github.com/avelino/awesome-go#machine-learning