当前位置: 首页 > news >正文

政府网站建设赏析推动防控措施持续优化

政府网站建设赏析,推动防控措施持续优化,国内十大新闻,七牛云是干嘛的目录 一、利用预定义算子重新实现前馈神经网络 (1)使用pytorch的预定义算子来重新实现二分类任务 (2)完善Runner类 (3) 模型训练 (4)性能评价 二、增加一个3个神经元的隐藏层,再次实现二分类,并与1做对比 三、自定义隐藏层层数和每个隐藏层中的神经元个数,尝…

目录

一、利用预定义算子重新实现前馈神经网络

(1)使用pytorch的预定义算子来重新实现二分类任务 

 (2)完善Runner类

(3) 模型训练 

(4)性能评价

二、增加一个3个神经元的隐藏层,再次实现二分类,并与1做对比

三、自定义隐藏层层数和每个隐藏层中的神经元个数,尝试找到最优超参数完成二分类。可以适当修改数据集,便于探索超参数。


一、利用预定义算子重新实现前馈神经网络

点击查看已经实现的前馈神经网络

(1)使用pytorch的预定义算子来重新实现二分类任务 

导入必要的库和模块: 

from data import make_moons
from nndl import accuracy
import torch.nn as nn
import torch.nn.functional as F
import numpy as np
import torch
from Runner2_1 import RunnerV2_2
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt

定义的网络结构 Model_MLP_L2_V2

class Model_MLP_L2_V2(nn.Module):def __init__(self, input_size, hidden_size, output_size):super(Model_MLP_L2_V2, self).__init__()# 定义第一层线性层self.fc1 = nn.Linear(input_size, hidden_size)# 使用正态分布初始化权重和偏置self.fc1.weight.data = torch.normal(mean=0.0, std=1.0, size=self.fc1.weight.data.size())self.fc1.bias.data.fill_(0.0)  # 常量初始化偏置为0# 定义第二层线性层self.fc2 = nn.Linear(hidden_size, output_size)self.fc2.weight.data = torch.normal(mean=0.0, std=1.0, size=self.fc2.weight.data.size())self.fc2.bias.data.fill_(0.0)  # 常量初始化偏置为0# 定义Logistic激活函数self.act_fn = torch.sigmoidself.layers = [self.fc1, self.act_fn, self.fc2,self.act_fn]# 前向计算def forward(self, inputs):z1 = self.fc1(inputs)a1 = self.act_fn(z1)z2 = self.fc2(a1)a2 = self.act_fn(z2)return a2

数据集构建和划分:

# 数据集构建
n_samples = 1000
X, y = make_moons(n_samples=n_samples, shuffle=True, noise=0.2)
# 划分数据集
num_train = 640  # 训练集样本数量
num_dev = 160    # 验证集样本数量
num_test = 200   # 测试集样本数量
# 根据指定数量划分数据集
X_train, y_train = X[:num_train], y[:num_train]  # 训练集
X_dev, y_dev = X[num_train:num_train + num_dev], y[num_train:num_train + num_dev]  # 验证集
X_test, y_test = X[num_train + num_dev:], y[num_train + num_dev:]  # 测试集
# 调整标签的形状,将其转换为[N, 1]的格式
y_train = y_train.reshape([-1, 1])
y_dev = y_dev.reshape([-1, 1])
y_test = y_test.reshape([-1, 1])可视化生成的数据集
plt.figure(figsize=(5, 5))  # 设置图形大小
plt.scatter(x=X[:, 0], y=X[:, 1], marker='*', c=y, cmap='viridis')  # 绘制散点图
plt.xlim(-3, 4)  # 设置x轴范围
plt.ylim(-3, 4)  # 设置y轴范围
plt.grid(True, linestyle='--', alpha=0.3)  # 添加网格
plt.show()  # 显示图形

 (2)完善Runner类

        基于上一节实现的 RunnerV2_1 类,本节的 RunnerV2_2 类在训练过程中使用自动梯度计算;模型保存时,使用state_dict方法获取模型参数;模型加载时,使用set_state_dict方法加载模型参数.

import os
import torch
class RunnerV2_2(object):def __init__(self, model, optimizer, metric, loss_fn, **kwargs):self.model = modelself.optimizer = optimizerself.loss_fn = loss_fnself.metric = metric# 记录训练过程中的评估指标变化情况self.train_scores = []self.dev_scores = []# 记录训练过程中的评价指标变化情况self.train_loss = []self.dev_loss = []def train(self, train_set, dev_set, **kwargs):# 将模型切换为训练模式self.model.train()# 传入训练轮数,如果没有传入值则默认为0num_epochs = kwargs.get("num_epochs", 0)# 传入log打印频率,如果没有传入值则默认为100log_epochs = kwargs.get("log_epochs", 100)# 传入模型保存路径,如果没有传入值则默认为"best_model.pdparams"save_path = kwargs.get("save_path", "best_model.pdparams")# log打印函数,如果没有传入则默认为"None"custom_print_log = kwargs.get("custom_print_log", None)# 记录全局最优指标best_score = 0# 进行num_epochs轮训练for epoch in range(num_epochs):X, y = train_set# 获取模型预测logits = self.model(X)# 计算交叉熵损失trn_loss = self.loss_fn(logits, y)self.train_loss.append(trn_loss.item())# 计算评估指标trn_score = self.metric(logits, y)self.train_scores.append(trn_score)# 自动计算参数梯度trn_loss.backward()if custom_print_log is not None:# 打印每一层的梯度custom_print_log(self)# 参数更新self.optimizer.step()# 清空梯度self.optimizer.zero_grad()dev_score, dev_loss = self.evaluate(dev_set)# 如果当前指标为最优指标,保存该模型if dev_score > best_score:self.save_model(save_path)print(f"[Evaluate] best accuracy performence has been updated: {best_score:.5f} --> {dev_score:.5f}")best_score = dev_scoreif log_epochs and epoch % log_epochs == 0:print(f"[Train] epoch: {epoch}/{num_epochs}, loss: {trn_loss.item()}")# 模型评估阶段,使用'paddle.no_grad()'控制不计算和存储梯度@torch.no_grad()def evaluate(self, data_set):# 将模型切换为评估模式self.model.eval()X, y = data_set# 计算模型输出logits = self.model(X)# 计算损失函数loss = self.loss_fn(logits, y).item()self.dev_loss.append(loss)# 计算评估指标score = self.metric(logits, y)self.dev_scores.append(score)return score, loss# 模型测试阶段,使用'paddle.no_grad()'控制不计算和存储梯度@torch.no_grad()def predict(self, X):# 将模型切换为评估模式self.model.eval()return self.model(X)# 使用'model.state_dict()'获取模型参数,并进行保存def save_model(self, saved_path):torch.save(self.model.state_dict(), saved_path)# 使用'model.set_state_dict'加载模型参数def load_model(self, model_path):state_dict = torch.load(model_path ,weights_only=True)self.model.load_state_dict(state_dict)

(3) 模型训练 

实例化RunnerV2类,并传入训练配置,代码实现如下:

# 定义训练参数
epoch_num = 1000  # 训练轮数
model_saved_dir = "best_model.pdparams"  # 模型保存目录
# 网络参数
input_size = 2  # 输入层维度为2
hidden_size = 5  # 隐藏层维度为5
output_size = 1  # 输出层维度为1
# 定义多层感知机模型
model = Model_MLP_L2_V2(input_size=input_size, hidden_size=hidden_size, output_size=output_size)
# 定义损失函数
loss_fn =F.binary_cross_entropy
# 定义优化器,设置学习率
learning_rate = 0.2
optimizer = torch.optim.SGD(params=model.parameters(),lr=learning_rate)
# 定义评价方法
metric = accuracy
# 实例化RunnerV2_1类,并传入训练配置
runner = RunnerV2_2(model, optimizer, metric, loss_fn)
# 训练模型
runner.train([X_train, y_train], [X_dev, y_dev], num_epochs=epoch_num, log_epochs=50, save_dir=model_saved_dir)

输出结果:

[Evaluate] best accuracy performence has been updated: 0.00000 --> 0.48125
[Train] epoch: 0/1000, loss: 0.7482572793960571
[Evaluate] best accuracy performence has been updated: 0.48125 --> 0.50000
[Evaluate] best accuracy performence has been updated: 0.50000 --> 0.53750
[Evaluate] best accuracy performence has been updated: 0.53750 --> 0.60625
[Evaluate] best accuracy performence has been updated: 0.60625 --> 0.71250
[Evaluate] best accuracy performence has been updated: 0.71250 --> 0.73750
[Evaluate] best accuracy performence has been updated: 0.73750 --> 0.77500
[Evaluate] best accuracy performence has been updated: 0.77500 --> 0.78750
[Evaluate] best accuracy performence has been updated: 0.78750 --> 0.79375
[Evaluate] best accuracy performence has been updated: 0.79375 --> 0.80000
[Evaluate] best accuracy performence has been updated: 0.80000 --> 0.81250
[Train] epoch: 50/1000, loss: 0.4034937918186188
[Train] epoch: 100/1000, loss: 0.36812323331832886
[Train] epoch: 150/1000, loss: 0.3453332781791687
[Evaluate] best accuracy performence has been updated: 0.81250 --> 0.81875
[Evaluate] best accuracy performence has been updated: 0.81875 --> 0.82500
[Evaluate] best accuracy performence has been updated: 0.82500 --> 0.83125
[Evaluate] best accuracy performence h

文章转载自:
http://cymogene.ybmp.cn
http://heroically.ybmp.cn
http://teleman.ybmp.cn
http://perborax.ybmp.cn
http://part.ybmp.cn
http://sockdolager.ybmp.cn
http://unscented.ybmp.cn
http://desalination.ybmp.cn
http://volkslied.ybmp.cn
http://patchouli.ybmp.cn
http://leukocytic.ybmp.cn
http://outdated.ybmp.cn
http://plexiglass.ybmp.cn
http://nib.ybmp.cn
http://regretful.ybmp.cn
http://jwb.ybmp.cn
http://realistically.ybmp.cn
http://favoringly.ybmp.cn
http://commissural.ybmp.cn
http://furious.ybmp.cn
http://virilize.ybmp.cn
http://stronghold.ybmp.cn
http://irrepressible.ybmp.cn
http://basenji.ybmp.cn
http://spicous.ybmp.cn
http://domesday.ybmp.cn
http://zymase.ybmp.cn
http://helicopter.ybmp.cn
http://adidas.ybmp.cn
http://precursive.ybmp.cn
http://unpractical.ybmp.cn
http://fasti.ybmp.cn
http://unworking.ybmp.cn
http://posttension.ybmp.cn
http://columelliform.ybmp.cn
http://puppyism.ybmp.cn
http://eupneic.ybmp.cn
http://helplessly.ybmp.cn
http://ricketic.ybmp.cn
http://biennialy.ybmp.cn
http://octopamine.ybmp.cn
http://epizoology.ybmp.cn
http://blowy.ybmp.cn
http://colorature.ybmp.cn
http://tangun.ybmp.cn
http://stratosphere.ybmp.cn
http://surrogate.ybmp.cn
http://coverley.ybmp.cn
http://waterworn.ybmp.cn
http://portocaval.ybmp.cn
http://periwig.ybmp.cn
http://salvershaped.ybmp.cn
http://clamant.ybmp.cn
http://isodimorphism.ybmp.cn
http://abominator.ybmp.cn
http://sulfonation.ybmp.cn
http://rhapsodist.ybmp.cn
http://morpho.ybmp.cn
http://denominal.ybmp.cn
http://concerted.ybmp.cn
http://jessie.ybmp.cn
http://setae.ybmp.cn
http://magdalene.ybmp.cn
http://merchandize.ybmp.cn
http://eventual.ybmp.cn
http://dielectric.ybmp.cn
http://excisionase.ybmp.cn
http://plumper.ybmp.cn
http://tarmac.ybmp.cn
http://progression.ybmp.cn
http://diesis.ybmp.cn
http://feverishly.ybmp.cn
http://subheading.ybmp.cn
http://muriate.ybmp.cn
http://nephrolithotomy.ybmp.cn
http://crushing.ybmp.cn
http://gynarchy.ybmp.cn
http://fragment.ybmp.cn
http://occlusal.ybmp.cn
http://unary.ybmp.cn
http://erupt.ybmp.cn
http://copperworm.ybmp.cn
http://unmelodious.ybmp.cn
http://pyoid.ybmp.cn
http://polybasic.ybmp.cn
http://hughie.ybmp.cn
http://rideau.ybmp.cn
http://zebralike.ybmp.cn
http://andromonoecious.ybmp.cn
http://oilcloth.ybmp.cn
http://shadowbox.ybmp.cn
http://megabuck.ybmp.cn
http://rhythmizable.ybmp.cn
http://shooting.ybmp.cn
http://underdone.ybmp.cn
http://nephrite.ybmp.cn
http://trigonal.ybmp.cn
http://venomous.ybmp.cn
http://kippen.ybmp.cn
http://rezone.ybmp.cn
http://www.15wanjia.com/news/81290.html

相关文章:

  • 莱芜网站建设哪家好李飞seo
  • 手机网站免费做app百度网站是什么
  • 温州网站建设seo网络营销推广方案范文
  • 北京网站优化合作搜索引擎论文3000字
  • 自学网站建设靠谱吗俄罗斯网络攻击数量增长了80%
  • 怎么上传文件到ftp网站郑州百度seo关键词
  • 西安做网站公司seo内容优化
  • 合川网站制作中国十大企业管理培训机构
  • 网站如何做导航条下拉菜单百度链接
  • 在线图表seo优化服务价格
  • 怎么做免费网站推广网络引流怎么做啊?
  • 网站建设编辑工作总结2022今日最新军事新闻
  • 网站seo设计方案案例什么是seo
  • 开封网站建设zducm产品关键词
  • 建设工程图审管理信息系统网站优化深圳seo
  • 给公司做网站需要华多少钱廊坊快速排名优化
  • 免费做网站的方法拓客软件排行榜
  • 宝鸡企业网站建设山东百度推广
  • 公司logo在线设计免费台州做优化
  • 网站销售湖北网络推广有限公司
  • 英文商城网站网站建设网络推广seo
  • wordpress 底部页脚厦门seo公司
  • 神华两学一做网站谷歌seo快速排名软件首页
  • 海外代理服务器 免费西安seo诊断
  • 正规建网站公司排行榜
  • 站长统计是什么意思seo搜索引擎优化介绍
  • 大连网站设计选仟亿科技公司域名注册步骤
  • 专做智能化施工的网站张掖seo
  • wordpress文章标签调用合肥百度网站排名优化
  • 企业网站建设的研究开发方法及技术路线百度seo推广软件