初见PyTorch
主要记录自己在学习pytorch
时的一些心得
明确目标
在学习前定一个小目标可以让学习更有针对性,比如这次我学习pytorch
给自己定的目标是初步学习完以后可以独立完成训练mnist
和cifar10
两个入门的图像分类任务。在此基础上进一步学习一些细节上的概念和pytorch
的相关API操作。
框架的意义
虽然是第一次使用pytorch
,但在心里默认它和我以前用过的其它框架没有本质的区别,比如图像处理框架opencv
或数据计算框架numpy
。
我的理解是框架是为了解决某些特定领域的问题而开发的工具包,例如如果一个木匠要做椅子、桌子、衣柜的话,他就需要一些处理木头的工具,这些工具的集合就是一个框架,姑且叫它木匠框架。
又例如一个汽车修理师傅,他日常使用的可能就是扳手、起子、游标卡尺一类的工具,我们可以叫它们修理框架。因为需要处理的问题不同,所以开发出来的框架也不同,所以说框架是解决特定问题的工具包集合。
如今我们面对的是深度学习一类的问题,所以人们开发出来了pytorch
、tensorflow
、caffe
等一类的框架。有了这个理解,后面就是学习如何使用这些框架了。
框架里的2828定律
现在有一个问题,计算机领域里的框架,动辄几百上千个API接口,也就是几百上千个工具,难道都需要从头开始,一个一个学起吗?我的经验是,不一定。
我们在生活中经常听到28定律,比如成绩好的学生只占百分之20,一个公司最优秀的员工占员工总数的百分之20。其实框架里的API也一样,最常用的接口只占总数的百分之20,而刚开始学习所需要掌握的接口又只占常用接口的百分之20。我们假设pytorch
有500个接口的话,那入门学习需要掌握的接口只有500x0.2x0.2=20
个,怎么样,是不是一下感觉到轻松了许多。