So if I want to use my GPU for machine learning applications, I would have to run my programs under Windows rather than from inside the WSL?
Indeed. There is a 'uservoice' about this issue:
https://wpdev.uservoice.com/forums/266908-command-prompt-con...
If you install an X server, such as VcXsrv and set the DISPLAY variable (typically export DISPLAY=:0 will suffice), you can just run X11 apps. For instance, here's a screenshot of a Prolog/Tk application running on WSL:
https://danieldk.eu/Posts/2017-01-10-Alpino-Windows/alpino-w...
I have installed Windows on a workstation just to try WSL out and it's quite impressive. Many regular applications just work. I could build Ubuntu packages and upload them to my PPA (I just had to use fakeroot-tcp to replace fakeroot).
Of course, there are also things that don't work for obvious reasons. E.g. because they require facilities deep in the kernel (performance counters/perf) or because they require kernel modules and hardware access (running CUDA programs).