项目介绍:
每张图片都是28*28的像素
1,使用全连接层
图像拆分成一维像素阵列作为输入值,输入到神经网络中。打包多个图像输入称为一个batch
2,输出数据需要做归一化,使数据概率在0-1之间
3,一个batch_size设置为15,共训练两次
通过调节a和b,使训练值与真实值的误差减小,形成一个最优解的问题
4,加入激活函数,使之变成非线性问题
本次项目激活函数使用整流函数,也称为线性整流函数(Rectified Linear Unit, ReLU)
使用GPU训练网络
数据会自动放在cpu中
使用GPU训练主要有三部分,网络模型、数据(输入、标注)、损失函数
必须确保这三部分在都CPU中或GPU上,否则报错
使用方式:使用if torch.cuda.is_available()判断GPU是否可用
- xx.cuda()放到GPU上 或者 xx.cpu()放回到cpu上
- device = torch.device("cpu")
device1 = torch.device("cuda")
xx.to(device)放回到cpu上
xx.to(device1)放到gpu上 - device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
mnist数据集下载问题
如果网络可以,pytorch会自动下载mnist数据集,如果下载失败,下面介绍手动下载
手动下载mnist数据集文件,并导入pytorch的方法
- 下载原始文件,如下图所示
- 执行dataset.MNIST()下载失败之后会生成MNIST-raw文件夹
- 将第一步的文件放入raw文件夹,再次执行dataset.MNIST()即可完成,数据集导入
matplotlib.pyplot报错
使用matplotlib.pyplot遇到can‘t convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory问题
解决问题:matplotlib.pyplot执行之前需要将神经网络和数据都转移到cpu中
net = net.cpu()x = x.cpu()