满足对神经网络的需求
一个不错的 autograd 张量库可以满足你对神经网络 90%的需求。从 tinygrad.optim 添加优化器(SGD、RMSprop、Adam),再编写一些 minibatching 样板代码,就可以实现你的需求。
示例如下:
from tinygrad.tensor import Tensorimport tinygrad.optim as optimfrom tinygrad.utils import layer_init_uniform
class TinyBobNet: def init(self): self.l1 = Tensor(layer_init_uniform(784, 128)) self.l2 = Tensor(layer_init_uniform(128, 10))
def forward(self, x): return x.dot(self.l1).relu().dot(self.l2).logsoftmax()
model = TinyBobNet()optim = optim.SGD([model.l1, model.l2], lr=0.001)
… and complete like pytorch, with (x,y) data
out = model.forward(x)loss = out.mul(y).mean()loss.backward()optim.step()
支持 GPU
tinygrad 通过 PyOpenCL 支持 GPU。但后向传播暂时无法支持所有 ops。
from tinygrad.tensor import Tensor(Tensor.one