news 2026/7/19 12:44:00

Day 37 MLP神经网络的训练

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Day 37 MLP神经网络的训练

@浙大疏锦行

1.cuda 的检查

import torch torch.cuda if torch.cuda.is_available(): print("CUDA可用!") device_count = torch.cuda.device_count() print(f"可用的CUDA设备数量:{device_count}") current_device = torch.cuda.current_device() print(f"当前使用的CUDA设备索引:{current_device}") device_name = torch.cuda.get_device_name(current_device) print(f"当前CUDA设备的名称:{device_name}") cuda_version = torch.version.cuda print(f"CUDA版本:{cuda_version}") else: print("CUDA不可用。")

2.简单神经网络的流程

a.数据预处理

from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split import numpy as np iris = load_iris() X = iris.data y = iris.target X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=42) print(X_train.shape) print(y_train.shape) print(X_test.shape) print(y_test.shape) from sklearn.preprocessiong import MinMaxScaler scaler = MinMaxScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) X_train = torch.FloatTensor(X_train) y_train = torch.LongTensor(y_train) X_test = torch.FloatTensor(X_test) y_test = torch.LongTensor(y_test)

b.模型的定义

i.继承nn.Module类

ii.定义每一个层

iii.定义前向传播流程

import torch import torch.nn as nn import torch.optim as optim class MLP(nn.Module): def__init__(self): super(MLP,self).__init__() self.fc1 = nn.Linear(4,10) self.relu = nn.ReLU() self.fc2 = nn.Linear(10,3) def forward(self,x): out = self.fc1(x) out = self.relu(out) out = self.fc2(out) return out model = MLP()

c.定义损失函数和优化器

criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(model.parameters(), 1r=0.01)

d.定义训练流程

num_epochs = 20000 losses = [] for epoch in range(num_epochs): outputs = model.forward(X_train) loss = criterison(outputs,y_train) optimizer.zero_grad() loss.backward() optimizer.step() losses.append(loss.item()) if(epoch + 1) % 100 == 0: print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f})

e.可视化loss过程

import matplotlib.pyplot as plt plt.plot(range(num_epochs),losses) plt.xlabel('Epoch') plt.ylabel('Loss') plt.title('Training Loss over Epochs') plt.show()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/19 9:48:37

测试 - 单元测试(JUnit)

JUnit 官网 Mockito 官网 一、概念 1.1 注解 Test标记一个函数为测试方法。BeforeEach、AfterEach在每个测试方法 前/后 执行,用于 准备/清理 运行环境。BeforeAll、AfterAll在所有测试 前/后 执行(必须是静态方法),用于 执行…

作者头像 李华
网站建设 2026/7/18 22:02:59

C++中多态

文章目录前言一、多态的概念二、多态的定义以及实现三、抽象类四、多态的原理1. 虚函数表2. 多态的原理3. 动态绑定与静态绑定前言 本文中的代码都是在X64环境下编译运行的,涉及的指针都是8bytes,切换其他平台需要考虑指针问题。 一、多态的概念 多态是…

作者头像 李华
网站建设 2026/7/17 23:49:20

c++经典练习题-多分支

目录 1304. 冷饮的价格(2) 1044. 找出最经济型的包装箱型号 1039. 求三个数的最大数 1035. 判断成绩等级 1300. 小明暑假的零花钱 1322. 求数的量级? 1049. 汉译英 1391. 公交卡充值问题? 1668. 运动会成绩统计 1669. 上…

作者头像 李华
网站建设 2026/7/19 7:36:05

qt为什么转向用cmake放弃qmake

Qt 从 qmake 转向 CMake 是其构建系统战略的重大转型,这一转变在 Qt6 中全面落地。下面从 技术、生态、工程实践 三个维度,系统解释: 一、Qt 使用 CMake 的核心好处 1. 强大的跨平台与多编译器支持 CMake 原生支持: Windows&…

作者头像 李华
网站建设 2026/7/18 13:00:03

云屋音视频 SDK 凭何成为信创技术困局的 “破局者”?

云屋音视频 SDK:信创技术困局的破局先锋在信息技术应用创新不断加速的大环境下,企业对于音视频技术的需求层次显著提升,不再局限于基础功能,而是朝着国产化、安全合规以及自主可控的高阶方向发展。然而,传统音视频方案…

作者头像 李华