pytorch 实现的cnn卷积神经网络
2019-03-02 13:33
411 查看
pytorch 实现的cnn卷积神经网络
简介
卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一 [1-2] 。由于卷积神经网络能够进行平移不变分类(shift-invariant classification),因此也被称为“平移不变人工神经网络(Shift-Invariant Artificial Neural Networks, SIANN)” [3] 。
网络结构
卷积神经网络大致的结构顺序是:输入层 -> 卷积层->激活层->池化层->卷积层->激活层->池化层->全连接层-> 展平层
大概的图片如下:
网络实现
就像上面说的那样一步一步写就好了呀。
import torch import torchvision import torch.nn as nn import matplotlib.pyplot as plt import torch.autograd.variable as Variable import torch.utils.data as Data class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1=nn.Sequential( nn.Conv2d( in_channels=1, out_channels=16, kernel_size=2, ), nn.ReLU(), nn.MaxPool2d(kernel_size=2), ) self.conv2=nn.Sequential( nn.Conv2d( in_channels=16, out_channels=32, kernel_size=2, ), nn.ReLU(), nn.MaxPool2d(kernel_size=2), ) self.fc=nn.Linear(32*7*7,10) def forward(self, x): x=self.conv1(x), x=self.conv2(x), x=x.view(x.size(0),-1), return self.fc(x)
就这样,一个完整的cnn卷积神经网络就搭建完成了。
现在print输出一下
print(Net())
运行结果如下:
训练步骤
训练数据
既然网络搭建完成了,接下来的事情当然是训练啦,训练的话当然得有数据啦
EPOCH=1 BATCH_SIZE=50 LR=0.001 DOWNLOAD_MINST= True # 训练的数据 train_data=torchvision.datasets.MNIST( root='./mnist', train=True, transform=torchvision.transforms.ToTensor(), download=DOWNLOAD_MINST )
上面的代码会自动将训练数据下载到你的当前目录的mnist文件夹内,当你文件下载好后,以后再运行的时候记得把DOWNLOAD_MINST参数改成False,避免重复下载文件。
rnn =Net() #实例化 # print(rnn) optimizer=torch.optim.Adam(rnn.parameters(),lr=0.01) loss_fuc=nn.CrossEntropyLoss() for epoch in range(EPOTCH): for step,x,y in enumerate(train_loader): #trainloader 是训练的数据 out_put=rnn(x) loss=loss_fuc(out_put,y) optimizer.zero_grad() loss.backward() optimizer.step() if epoch%2==0: # print something test_output=cnn(test_x) pred_y=torch.max(test_output,1)[1].cuda().data.squeeze() # accuracy = float((pred_y == test_y).astype(int).sum()) / float(test_y.size(0)) accuracy=float(torch.sum(pred_y==test_y))/test_y.size(0) print('EPOCH:',epoch,'| train loss: %.4f' %loss.data,'| test accuracy: %.2f' %accuracy)
测试数据
光这样还不能看出咱的神经网络预测的结果吧,那再来一个测试数据
test_data=torchvision.datasets.MNIST( root='./mnist/', train=False, ) # 此段代码置于末尾 test_output=cnn(test_x[:10]) pred_y=torch.max(test_output,1)[1].cuda().data.squeeze() print(pred_y,'prediction number') print(test_y[:10], 'real number')
运行截图
我们可以看到最后的准确率还是蛮高的哈,预测的图片上的前十个数字都对了。
这篇文章是在我看了莫烦大大的学习视频后写的,如果大家对Pytorch感兴趣,欢迎去莫烦大大的学习区学习啊。
网址如下啦:
https://morvanzhou.github.io/tutorials/machine-learning/torch/1-1-A-ANN-and-NN/
相关文章推荐
- PyTorch上实现卷积神经网络CNN
- Pytorch实现卷积神经网络CNN
- pytorch cnn 识别手写的字实现自建图片数据
- Pytorch实现CNN时间序列预测
- PyTorch快速入门教程四(cnn:卷积神经网络 )
- Pytorch:经典卷积神经网络LeNet实现
- PyTorch快速入门教程四(cnn:卷积神经网络 )
- pytorch 8 CNN 卷积神经网络
- 深度学习之卷积神经网络CNN及tensorflow代码实现
- DeepLearning tutorial(5)CNN卷积神经网络应用于人脸识别(详细流程+代码实现)
- Attention is all you need pytorch实现 源码解析03 - 模型的训练(2)- transformer模型的代码实现以及结构
- Attention is all you need pytorch实现 源码解析04 - 模型的测试以及翻译
- tensorflow 下CNN卷积神经网络实现
- Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现
- CNN(卷积神经网络)是什么?原理/作用和实现方法。
- 【转】Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现
- Pytorch打怪路(一)pytorch进行CIFAR-10分类(2)定义卷积神经网络
- 卷积神经网络(CNN):从原理到实现
- UFLDL教程的卷积神经网络(CNN)实现
- 深度学习之卷积神经网络CNN及tensorflow代码实现示例