Recommended Courses

If you've read through our lectures and want to learn more, we recommend reading the lecture notes or watching the videos of the CS229 and CS231n courses. CS229 takes a more mathematical look at standard machine learning methods, while CS231n focuses on deep learning algorithms for visual processing. The rigorous lecture notes for CS229 are especially helpful.

If you're interested in reinforcement learning, we recommend viewing the CS234 course notes, slides, or videos. If you want to learn more about generative models, slides and notes are available from the CS236 course, but no lecture recordings are available. Other interesting courses include CS224n, which covers natural language processing, and CS228: Probabilistic Graphical Models.

If some materials are unavailable because a course is currently in session, look for archived versions of previous offerings. Most courses should also have lecture videos from a previous year publicly available on YouTube.

In addition, if you need to brush up on your calculus knowledge, a good book is AOPS Calculus. The TJ BC Calculus material is also available to anyone for free on Blackboard. If you need work on your multivariable calculus knowledge, the TJ multi teachers use the Stewart Multivariable Calculus book, but Dr. Osborne's notes cover the much of the material in a more concise fashion.

Computational Resources

Unfortunately, TJ has a severe lack of GPUs. When the Computer Systems lab was upgraded a few years ago, the aging CPUs were replaced with then-modern i5-4690s. However, the GPUs remain GT 730s. If you would like to run your code on TJ machines, we recommend you use the computer called zoidberg, which has modern GPUs. Simply ssh using the following commands:
ssh zoidberg

All current students can access TJ syslab machines through ssh. Follow these instructions. If you would like to transfer data to the high performance computing cluster, take a look at this guide.

Installing Libraries on TJ Linux Machines

All the necessary dependencies (CUDA, cuDNN) have been installed for TensorFlow, Keras, and PyTorch on the Linux machines. Assuming the library you want hasn't already been installed, you'll need to install it with the --user flag. Use these commands on machines with GPUs for TensorFlow and Keras, respectively:
pip3 install tensorflow-gpu --user
pip3 install keras --user

Note that Keras requires a backend engine (TensorFlow is recommended).

For PyTorch, check the latest commands on the website. Select the proper Python and CUDA versions. You can check your python version by typing python and the CUDA version with nvcc --version.

If you are working on a standard Linux machine without a decent GPU, you'll need to install the CPU versions of these libraries. For TensorFlow, installation instructions are available here. For Pytorch, ensure you select "None" for the CUDA version. As always, you will need to add --user to all commands if you aren't working in a virtual environment, or don't have root.

Installing Libraries on Your Own Linux Machine

If you want to install these libraries on your own Linux computer, just remove the --user for the above commands, since you presumably have root. If you don't have a half-decent Nvidia GPU, running large deep learning models will take unreasonably long, and it is advisable you use the TJ GPU cluster. If you do have a GPU, make sure you have CUDA and cuDNN configured beforehand.

Libraries on Windows Machines

Most machine learning libraries are compatible with Windows, especially CPU versions. GPU-dependent deep learning libraries are often slower and less reliable on Windows, so use Linux if you can.

Machine Learning Club recommends using scikit-learn for simple machine learning. You can install it using:
pip3 install -U scikit-learn

If you are trying to run on TJ Windows machines, a bit of a workaround is required due to restrictions. Follow these instructions for scikit-learn.

Instructions for installing scikit-learn on TJHSST Windows Machines

If you can't get that to work, use our Instructions for ssh'ing into the syslab

Basic Vim and Nano Instructions

Python 2 or 3?

Machine Learning Club recommends Python 3 whenever possible. Almost all libraries have support for the latest version. Even though most support Python 2.7 as well, Python 2 support ends in 2020, so make the switch if you haven't already!