python机器学习大作业用numoy构建原始CNN网络项目源码。在本项目中,通过numpy实现了一个CNN网络,包括其中的卷积层,池化层以及全连接层,通过公式推导、代码编写,加深了对于卷积、池化、反向传播等概念的理解。
采用现在主流的深度学习框架Pytorch实现识别,并与自己搭建的CNN训练结果进行比较。
采用相同的网络结构:
self.conv1 = nn.Conv2d(in_channels=1, out_channels=8, kernel_size=3, padding=0, stride=1)
self.maxpool = nn.MaxPool2d(kernel_size =2, stride=None, padding=0)
self.fc1 = nn.Linear(13 * 13 * 8, 512)
self.fc2 = nn.Linear(512, 10)
在3个epoch下测试结果:
相比与用numpy实现的CNN,其具有较高的稳定性,以及训练速度,因为PyTorch将输入转为张量形式,转入GPU中训练,同时用了SGD优化器,加快loss收敛速度。