Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is PyTorch called PyTorch? [closed]

I have been looking into deep learning frameworks lately and have been wondering about the origin of the name of PyTorch.

With Keras, their home page nicely explains the name's origin, and with something like TensorFlow, the reasoning behind the name seems rather clear. For PyTorch, however, I cannot seem to come across why it is so named.

Of course, I understand the "Py-" prefix and also know that PyTorch is a successor in some sense of Torch. But I am still wondering: what is the original idea behind the "-Torch" part? Is it known what the origin of the name is?

like image 312
Grayscale Avatar asked Jul 26 '18 03:07

Grayscale


1 Answers

This is a good question, not sure why it was down-voted: there is a lot of information and history stored in the names that are chosen for artifacts.

Here a short answer, formed as another question:

Torch, SMORCH ???

PyTorch developed from Torch7. A precursor to the original Torch was a library called SVM-Torch (http://bengio.abracadoudou.com/SVMTorch.html), which was developed around 2001. The SVM stands for Support Vector Machines.

SVM-Torch is a decomposition algorithm similar to SVM-Light (http://svmlight.joachims.org/), but adapted to regression problems, according to this paper:

http://www.ai.mit.edu/projects/jmlr/papers/volume1/collobert01a/collobert01a.ps.gz

Also around this time, G.W.Flake described the sequential minimal optimization algorithm (SMO), which could be used to train SVMs on sparse data sets, and this was incorporated into NODElib.

Interestingly, this was called the SMORCH algorithm. You can find this paper on the wayback machine:

https://web.archive.org/web/20030319153242/http://www.neci.nj.nec.com/homepages/flake/smorch.ps

And more about SMORCH in the NODElib docs: https://github.com/gwf/NODElib/blob/master/include/nodelib/svm.h

Optimization of the SVMs is:

  • performed by a variation of John Platt's sequential minimal
  • optimization (SMO) algorithm. This version of SMO is generalized
  • for regression, uses kernel caching, and incorporates several
  • heuristics; for these reasons, we refer to the optimization
  • algorithm as SMORCH.

So SMORCH =

Sequential Minimal Optimization Regression Caching Heuristics

I can't answer definitively, but my thinking is "Torch" is a riff or evolution of "Light" from SVM-Light combined with a large helping of SMORCHiness. You'd need to check in with the authors of SVMTorch and SVM-Light to confirm that this is indeed what "sparked" the name. It is reasonable to assume that the "TO" of Torch stands for some other optimization, rather than SMO, such as Tensor Optimization, but I haven't found any direct reference...yet.

Update 12/3/2018: in comments below.

like image 79
Good Lux Avatar answered Oct 31 '22 17:10

Good Lux