tinygrad:一個(gè)不到1000行代碼的深度學(xué)習(xí)框架
近期,一個(gè)不到1000行的深度學(xué)習(xí)框架tinygrad火了,麻雀雖小,但五臟俱全,這個(gè)深度學(xué)習(xí)框架使用起來和PyTorch類似,目前已經(jīng)開源在GitHub上,而且收獲了2.3K星:

項(xiàng)目地址:https://github.com/geohot/tinygrad
本質(zhì)上說,tinygrad就是一個(gè)可微的Tensor庫,但是對(duì)于訓(xùn)練一個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)它是足夠了,項(xiàng)目也給一個(gè)簡(jiǎn)單的case:
from tinygrad.tensor import Tensorimport tinygrad.optim as optimfrom tinygrad.utils import layer_init_uniformclass 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) dataout = model.forward(x)loss = out.mul(y).mean()loss.backward()optim.step()
另外tinygrad也支持GPU:
from tinygrad.tensor import Tensor(Tensor.ones(4,4).cuda() + Tensor.ones(4,4).cuda()).cpu()
其實(shí)我們當(dāng)然不會(huì)用這樣的框架來真正訓(xùn)練網(wǎng)絡(luò),但是1000行的代碼量我們倒是可以稍微啃一下,對(duì)理解深度學(xué)習(xí)框架內(nèi)部原理還是非常有幫助的,希望感興趣的小伙伴們可以查閱。

另外,一個(gè)類似的項(xiàng)目是micrograd?(https://github.com/karpathy/micrograd),也可以比較一下。
推薦閱讀
無需tricks,知識(shí)蒸餾提升ResNet50在ImageNet上準(zhǔn)確度至80%+
不妨試試MoCo,來替換ImageNet上pretrain模型!
mmdetection最小復(fù)刻版(七):anchor-base和anchor-free差異分析
mmdetection最小復(fù)刻版(四):獨(dú)家yolo轉(zhuǎn)化內(nèi)幕
機(jī)器學(xué)習(xí)算法工程師
? ??? ? ? ? ? ? ? ? ? ? ? ??????? ??一個(gè)用心的公眾號(hào)
?

