For example, here's how easy it is to construct a fully-connected neural net with a dynamically random number of recurrent hidden layers in PyTorch. Yes, it's a silly example, but it shows how easy it is to construct dynamic DNNs with PyTorch:
import random
import torch
class MySillyDNN(torch.nn.Module):
def __init__(self, input_dim, hidden_dim, output_dim):
super(MySillyDNN, self).__init__()
self.input_layer = torch.nn.Linear(input_dim, hidden_dim)
self.hidden_layer = torch.nn.Linear(hidden_dim, hidden_dim)
self.output_layer = torch.nn.Linear(hidden_dim, output_dim)
def forward(self, x, max_recurrences=3):
hidden_relu = self.input_layer(x).clamp(min=0)
for r in range(random.randint(0, max_recurrences)):
hidden_relu = self.hidden_layer(hidden_relu).clamp(min=0)
y_pred = self.output_layer(hidden_relu)
return y_pred
It would be a hassle to do something like this with other frameworks like TensorFlow or Theano, which require you to specify the computational graph (including conditionals, if any) before you can run the graph.PyTorch's define-the-graph-by-running-it approach is sooo nice for quick-n'-dirty experimentation with dynamic graphs.
You can even create and tinker with dynamic graphs interactively on a Python REPL :-)
For real-world workloads, I, along with my work colleagues, currently use TensorFlow, which has good performance, large community infrastructure, and fantastic tooling around it. If an idea shows promise in PyTorch, our next step is usually to implement it in TensorFlow with more data. But we do a lot of experimental tinkering in TensorFlow too. It depends on the learning task at hand.
Note that this version of PyTorch is the first one to support distributed workloads such as multi-node training.
Does it meet your needs?
PyTorch is a Python package that provides two high-level features:
Tensor computation (like NumPy) with strong GPU acceleration
Deep neural networks built on a tape-based autograd system
You can reuse your favorite Python packages such as NumPy, SciPy and Cython to extend PyTorch when needed.
We are in an early-release beta. Expect some adventures and rough edges.
https://www.oreilly.com/ideas/why-ai-and-machine-learning-re...
https://twitter.com/soumithchintala/status/89417353800895692...