多分类任务中不同隐藏层层数对实验结果的影响

技术多分类任务中不同隐藏层层数对实验结果的影响 多分类任务中不同隐藏层层数对实验结果的影响1 导入实验所需要的包 import torch
import torch.nn as nn
import nu

多分类任务中不同隐藏层层数对实验结果的影响

一导入实验所需要的包

进口火炬

将火炬网导入为神经网络

将numpy作为铭牌导入

导入火炬视觉

导入torchvision.transforms作为转换

将matplotlib.pyplot导入为plt

来自火炬。utils。数据导入数据加载器

2下载MNIST数据集和读取数据

train _ dataset=火炬视觉。数据集。mnist(root='./数据集/MNIST ',训练=真,变换=变换。传感器(),下载=真)

test _ dataset=火炬视觉。数据集。mnist(root='./数据集/MNIST ',训练=假,变换=变换。传感器(),下载=真)

train _ x=train _ dataset。数据。cuda().float()/255

train _ y=train _ dataset。目标。cuda().长()

test_x=test_dataset.data.cuda().float()/255

test _ y=test _数据集。目标。cuda().长()

train _ dataset=TensorDataset(train _ x,train_y)

test _ dataset=TensorDataset(test _ x,test_y)

批处理大小=32

train _ ITER=DataLoader(train _ dataset,batch_size=32,shuffle=True)

test _ ITER=DataLoader(test _ dataset,batch_size=32,shuffle=False)

next(iter(train_iter))[0].形状

next(iter(test_iter))[0].形状

3定义模型参数

#训练次数和学习率

num _ epochs,lr=50,0.01

num_inputs,num_outputs=28*28,10

四定义模型

第一种:定义一个有三层的前馈神经网络

类线性网络1(nn .模块):

def __init__(self,num_inputs=784,num_outputs=10,num_hiddens=100):

super(LinearNet_1,self).__init__()

自线性化1=nn线性(数字输入,数字输出)

self.relu=nn .ReLU()

自线性化2=nn线性(数字输出)

向前延迟(自我,x):

x=自线性化1(x)

x=self.relu(x)

x=自线形2(x)

y=self.relu(x)

返回y

第二种:定义一个有四层的前馈神经网络

类线性网络2(nn .模块):

def __init__(self,num_inputs=784,num_outputs=10,num_hiddens1=100,num_hiddens2=100):

super(LinearNet_2,self).__init__()

自线性化1=nn线性(num_inputs,num_hiddens1)

self.relu=nn .ReLU()

自线性化2=nn线性(num_hiddens1,num_hiddens2)

非线性3=nn线性(num_hiddens2,num_outputs)

向前延迟(自我,x):

x=自线性化1(x)

x=self.relu(x)

x=自线形2(x)

x=self.relu(x)

x=自线形3(x)

y=self.relu(x)

返回y

第三种:定义一个有五层的前馈神经网络

类线性网络3(nn .模块):

def __init__(self,num_inputs=784,num_outputs=10,num_hiddens1=100,num_hiddens2=100,num_hiddens3=100):

super(LinearNet_3,self).__init__()

自线性化1=nn线性(num_inputs,num_hiddens1)

self.relu=nn .ReLU()

自线性化2=nn线性(num_hiddens1,num_hiddens2)

非线性3=nn线性(num_hiddens2,num_hiddens3)

非线性4=nn线性(num_hiddens3,num_outputs)

向前延迟(自我,x):

x=自线性化1(x)

x=self.relu(x)

x=自线形2(x)

x=self.relu(x)

x=自线形3(x)

x=self.relu(x)

x=自线形4(x)

y=self.relu(x)

返回y

5定义训练模型

def train(net,train_iter,test_iter,loss,num _ epochs,batch_size,params=None,lr=None,optimizer=None):

train_ls,test_ls=[],[]

对于范围内的纪元(num _ epoch):

ls,计数=0,0

对于train_iter:中的x,y

X=X。重塑(-1,num_inputs) #[32,28,28] - [32,784]

l=损失(净额(X,y)

optimizer.zero_grad()

l.backward()

optimizer.step()

ls=l.item()*y.shape[0]

train_ls.append(ls)

ls,计数=0,0

对于test_iter:中的x,y

X=X。整形(-1,输入数)

l=损失(净额(X,y)

ls=l.item()*y.shape[0]

test_ls.append

如果(纪元1)%5==0:

打印(“epoch: %d,train loss: %f,test loss :% f”%(epoch 1,train_ls[-1],test_ls[-1])

回程列车,测试

6 模型训练

total_net=[LinearNet_1,LinearNet_2,LinearNet_3]

Train_loss,Test_loss=[],[]

#定义损失函数

损失=nn .CrossEntropyLoss()

对于cur_net in total_net:

net=cur_net()

net.parameters()中的参数为:

nn.init.normal_(参数,平均值=0,标准=0.01)

优化器=火炬。optim。SGD(净额。参数(),lr=0.001)

train_ls,test_ls=train(net,train_iter,test_iter,loss,num_epochs,batch_size,net.cuda().参数,lr,优化器)

Train_loss.append(train_ls)

Test_loss.append(test_ls)

七绘制不同隐藏层数损失图

x=np.linspace(0,len(train_ls),len(train_ls))

PLT。图大小=(10,8))

对于(0,3):范围内的我

PLT。PLT(x,Train_loss[i],标签=f '带{ I }隐藏层: ',线宽=1.5)

plt.xlabel('epoch ')

plt.ylabel("损失")

plt.legend()

plt.title("列车损失")

plt.show()

因上求缘,果上努力~~~~ 作者:希望每天涨粉,转载请注明原文链接:https://www .cn博客。com/BlairgString/p/15511072。超文本标记语言

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/70029.html

(0)

相关推荐

  • 碳还原氧化铁的化学方程式,碳还原氧化铁的化学方程式

    技术碳还原氧化铁的化学方程式,碳还原氧化铁的化学方程式氧化铁与碳发生反应的化学方程式碳还原氧化铁的化学方程式:2Fe2O3+3C=高温=4Fe+3CO2(气体)氧化铁,别名三氧化二铁、烧褐铁矿、烧赭土、铁丹、铁红、红粉、

    生活 2021年10月25日
  • 怎么使用Python开发设备程序

    技术怎么使用Python开发设备程序这篇文章主要讲解了“怎么使用Python开发设备程序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Python开发设备程序”吧

    攻略 2021年10月23日
  • Python列表的定义及使用方法是什么

    技术Python列表的定义及使用方法是什么这篇文章主要介绍“Python列表的定义及使用方法是什么”,在日常操作中,相信很多人在Python列表的定义及使用方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操

    攻略 2021年11月1日
  • 止鼾方法,如何克服别人打呼噜的噪音

    技术止鼾方法,如何克服别人打呼噜的噪音在人生道路上,不论是遇到什么情况,什么时候,什么人,首先认准,都有缘分,世界没有无缘无故的爱,也没有无缘无故的恨。只要是机会,机遇,缘分,或者是爱人,情人,朋友,同事,同志,好友,领

    生活 2021年10月20日
  • Windows如何实现任务计划隐藏显示黑窗口

    技术Windows如何实现任务计划隐藏显示黑窗口小编给大家分享一下Windows如何实现任务计划隐藏显示黑窗口,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Windows 任务计划隐藏显示黑窗口,主要通

    攻略 2021年11月18日
  • 怎么用ps换背景颜色,PS如何抠图替换背景色

    技术怎么用ps换背景颜色,PS如何抠图替换背景色1怎么用ps换背景颜色、打开要用ps进行抠图和换背景的图片,直接使用快捷键Ctrl+O打开,或在【文件】中选择【打开】,找到相应的素材点击即可,如下图所示:2、图片打开后,

    生活 2021年10月19日