pytorch实现手写数字识别,pytorch自己做数据集
这篇文章主要介绍了PyTorch手写数字数据集进行多分类,损失函数采用交叉熵,激活函数采用雷鲁,优化器采用带有动量的小型批处理g算法,需要的朋友可以参考一下
目录
一、实现过程0、导包1、准备数据2、设计模型3、构造损失函数和优化器4、训练和测试二、参考文献
一、实现过程
本文对经典手写数字数据集进行多分类,损失函数采用交叉熵,激活函数采用雷鲁,优化器采用带有动量的小型批处理g算法。
所有代码如下:
0、导包
进口火炬
从参考导入变换、数据集
从torch.utils.data导入数据加载器
导入火炬. nn .功能为F
将火炬. optim作为使最优化导入
1、准备数据
批处理大小=64
转换=转换。撰写([
转变ToTensor(),
转变。规格化((0.1307),(0.3081),)
])
# 训练集
train_dataset=数据集MNIST(root= g :/datasets/mnist ,train=真,下载=假,转换=变换)
train _ loader=数据加载器(train _ dataset,shuffle=True,batch_size=batch_size)
# 测试集
测试数据集=数据集MNIST(root= g :/datasets/mnist ,train=False,download=False,transform=transform)
test _ loader=数据加载器(test _ dataset,shuffle=False,batch_size=batch_size)
2、设计模型
class Net(torch.nn.Module):
def __init__(self):
超级(净,自)。__init__()
self.l1=torch.nn.Linear(784,512)
self.l2=torch.nn.Linear(512,256)
self.l3=torch.nn.Linear(256,128)
self.l4=torch.nn.Linear(128,64)
self.l5=torch.nn.Linear(64,10)
定义向前(自身,x):
x=x.view(-1,784)
x=F.relu(self.l1(x))
x=F.relu(self.l2(x))
x=F.relu(self.l3(x))
x=F.relu(self.l4(x))
回归自我。l5(x)
模型=网络()
# 模型加载到国家政治保卫局。参见国家政治保卫局上
设备=手电筒。设备( cuda :0 如果火炬。cuda。is _ available()else CPU )
型号至(设备)
3、构造损失函数和优化器
标准=火炬。nn。交叉入口型()
optimizer=optim .新加坡元(模型参数(),lr=0.01,动量=0.5)
4、训练和测试
定义火车(纪元):
运行损失=0.0
对于batch_idx,枚举中的数据(火车_装载机,0):
输入,目标=数据
optimizer.zero_grad()
#向前向后更新
输出=模型(输入到(设备))
损耗=标准(输出,目标到(设备))
loss.backward()
optimizer.step()
running_loss=loss.item()
如果batch_idx % 300==299:
print([%d,%d] loss: %.3f % (epoch 1,batch_idx 1,running_loss/300))
运行损失=0.0
定义测试():
正确=0
总计=0
用火炬号_grad():
对于测试_加载程序:中的数据
图像、标签=数据
输出=模型(图像到(设备))
_,预测=torch.max(outputs.data,dim=1)
total=labels.size(0)
正确=(predicted.cpu()==标签)。sum().项目()
打印(测试集的准确度为: %d %% % (100 *正确/总计))
对于范围(10):中的纪元
火车(时代)
测试()
运行结果如下:
[1300]损失: 2.166
[1600]损失: 0.797
[1,900]损失: 0.405
测试集:的准确度为90 %
[2,300]损失: 0.303
[2600]损失: 0.252
[2,900]损失: 0.218
测试集:的准确度为94 %
[3300]损失: 0.178
[3600]损失: 0.168
[3900]损失: 0.142
测试集:的准确度为95 %
[4300]损失: 0.129
[4600]损失: 0.119
[4900]损失: 0.110
测试集:的准确度为96 %
[5300]损失: 0.094
[5600]损失: 0.092
[5900]损失: 0.091
测试集:的准确度为96 %
损失: 0.077
[6600]损失: 0.070
损失: 0.075
测试集:的准确度为97 %
[7,300]损失: 0.061
[7600]损失: 0.058
损失: 0.058
测试集:的准确度为97 %
[8300]损失: 0.043
[8,600]损失: 0.051
[8900]损失: 0.050
测试集:的准确度为97 %
损失: 0.041
[9600]损失: 0.038
损失: 0.043
测试集:的准确度为97 %
[10,300]损失: 0.030
[10,600]损失: 0.032
[10,900]损失: 0.033
测试集:的准确度为97 %
二、参考文献
[1]https://www.bilibili.com/video/BV1Y7411d7Ys? P=9就是这样。本文介绍了PyTorch手写数字数据集的多分类。更多相关python多分类内容,请搜索热门IT软件开发工作室往期文章或继续浏览以下相关文章。希望大家以后多多支持热门IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。