tinygrad:一个不到1000行代码的深度学习框架

共 1376字,需浏览 3分钟

 ·

2020-12-07 17:22

近期,一个不到1000行的深度学习框架tinygrad火了,麻雀虽小,但五脏俱全,这个深度学习框架使用起来和PyTorch类似,目前已经开源在GitHub上,而且收获了2.3K星:



项目地址https://github.com/geohot/tinygrad


本质上说,tinygrad就是一个可微的Tensor库,但是对于训练一个简单的神经网络它是足够了,项目也给一个简单的case:

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()


另外tinygrad也支持GPU:


from tinygrad.tensor import Tensor(Tensor.ones(4,4).cuda() + Tensor.ones(4,4).cuda()).cpu()


其实我们当然不会用这样的框架来真正训练网络,但是1000行的代码量我们倒是可以稍微啃一下,对理解深度学习框架内部原理还是非常有帮助的,希望感兴趣的小伙伴们可以查阅。


另外,一个类似的项目是micrograd (https://github.com/karpathy/micrograd),也可以比较一下。



推荐阅读

CNN:我不是你想的那样

TF Object Detection 终于支持TF2了!

无需tricks,知识蒸馏提升ResNet50在ImageNet上准确度至80%+

不妨试试MoCo,来替换ImageNet上pretrain模型!

重磅!一文深入深度学习模型压缩和加速

从源码学习Transformer!

mmdetection最小复刻版(七):anchor-base和anchor-free差异分析

mmdetection最小复刻版(四):独家yolo转化内幕


机器学习算法工程师


                                    一个用心的公众号


 

浏览 15
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报