【第三次作业】卷积神经网络

【第三次作业】卷积神经网络

【第一部分】视频学习心得及问题总结

1.视频学习心得

  • 卷积——通过在原始图像上平移来提取特征. 卷积核上所有作用点依次作用于原始像素点后(即乘起来),线性叠加的输出结果,即是最终卷积的输出,也是我们想要的结果,我们称为destination pixel.

  • 卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构前馈神经网络,是深度学习的代表算法之一。通过对此次视频的学习,我了解了卷积神经网络的一些基本概念包括:卷积、池化和全连接等。卷积神经网络应用广泛,应用于分类、检索、检测、人脸识别等领域。全连接网络在处理图像时存在参数过多导致过拟合的问题,二卷积神经网络通过局部关联、参数共享的方式解决了这个问题.
  • 神经网络的深度学习将会是未来人工智能发展的趋势.

2.问题总结

  • 使用ReLU而不是sigmoid,那为什么要引入Relu?

  • 在用二维卷积处理双胞胎兄弟的照片时,能分辨出哪个是哥哥,哪个是弟弟吗?

【代码练习】

1.MNIST数据集分类

  • 构造简单的CNN对数据集进行分类

 

  • 随着训练次数的不断增加、准确率也在不断增加。

 2.CIFAR10数据及分类

  • 利用CNN对CIFAR10数据集进行分类,分类并识别图片中的物理物体.

for epoch in range(10):  # 重复多轮训练
  for i, (inputs, labels) in enumerate(trainloader):
      inputs = inputs.to(device)
      labels = labels.to(device)
      # 优化器梯度归零
      optimizer.zero_grad()
      # 正向传播 + 反向传播 + 优化
      outputs = net(inputs)
      loss = criterion(outputs, labels)
      loss.backward()
      optimizer.step()
      # 输出统计信息
      if i % 100 == 0:  
          print('Epoch: %d Minibatch: %5d loss: %.3f' %(epoch + 1, i + 1, loss.item()))

print('Finished Training')

 

  • 随着训练次数增加、准确率不断增加、出错率随之不断减小.

 3.使用VGG16对CIFOR10分类

  • 此处有代码错误,第一个错误是cfg未定义,应改成self.cfg。其次,图片尺寸不匹配,该错误可通过在out=out.view前加入printf(out.shape)可进行查看应有的尺寸为512.

  • 完整代码修改如下,此处应注意nn.Linear(512,10)的前项应与out.view(-1,512)的后项保持一致。否则,会因不匹配导致出错.

  • 修改后进行训练如下,测试图片通过率为82.57%,建议设置GPU模式,不然会等待很长时间。

 

 

posted @ 2021-10-17 21:45  $ilvermonsteЯ  阅读(110)  评论(0)    收藏  举报