While it's possible to learn theory alone, we highly recommend that you pick up coding if you want to implement your own models from scratch. While many languages can be used, we recommend Python.
CodingBat: Site filled with live coding problems (Python/Java)
Codecademy: Guided, self-paced online course
Project Euler: More advanced problems, larger difficulty range
As for frameworks, anything works. For general purposes, scikit-learn is very beginner-friendly. For more involved deep learning, we recommend PyTorch.
We recommend using Jupyter Notebook / Google Colab. Both allow you to run code/add markdown text
in blocks, making it easy to combine code, comments, and visualizations.
As for GPUs, Virginia Tech has ARC (Advanced Research Computing), which hosts
multiple clusters. The link show documentation for ARC's clusters, as well as info on how to access them. There are also some GPU nodes
on rlogin (use 'ssh portal.cs.vt.edu'
).
Andrew Ng has some online courses on machine learning and deep learning.
Stanford has several useful resources. There's
CS229 (standard ML),
CS231n (Deep Learning for Computer Vision),
CS234 (Reinforcement Learning),
CS236 (Generative Models), and much more.
Definitely check out the lecture notes for these classes. Many have lectures videos online.
This is is a great textbook on machine learning if you prefer a hands-on approach.
This is a great online book on neural nets and deep learning.
Here's another great one.
Finally, this book goes over several mathetmatical concepts in ML.
If you haven't already, watch DeepMind's AlphaGo documentary.
Someone also compiled a list of focused links for deep learning. It looks promising.