刚刚入坑机器学习,看到经典的BP神经网络就尝试了一下自己写代码实现。看到网上比较多人做函数拟合,我也就照猫画虎试了一下。下图是最后的拟合结果,一开始发现画的线乱七八糟,后面才发现是因为取数据没有按照顺序。
对于神经网络有了基本的概念以后,就想着实现效率更高的的神经网络,使用大神们设计的模块无疑是提高生产效率的好方法。pytorch近几年风头正劲,不仅效率高,学习难度也更低,我就决定学pytorch。
刚开始学需要了解张量,刚接触觉得很复杂,后面就不想那么多就当做列表看待。我使用Python用的数据类型最多的就是列表,记得将列表和张量的互换方式就基本不会出错。接下去学我又在数据的输入和训练上卡壳了。
我的数据类似是这样的
#训练数据
list1=[[x1,x2,x3...xn],[y1,y2,y3...yn],...,[p1,p2,p3...pn]]
#标签
list2=[[L1],[L2],[L3],....[LP]]
list1是训练的样本空间,list2是标签值。训练时每次输入值为list1的第二层列表,对应list2的第二层的标签值。一开始我想的是逐个将第二层取出转化成张量然后输入到神经网络中训练,后来发现大可不必,直接把list1和list2转换成的张量代入到神经网络中就可以,只要包层设置的节点数和数据的个数能对应上就好。
其实这个问题挺简单,但是网上很多关于pytorch的项目都是关于图像处理的,我不了解图像数据的输出形式所以比较难类比,着实摸索了一段时间。我比较菜,但我总觉得这个问题也会困扰一些新手,写出来希望能有一些帮助。