Python训练营-Day33

import torch
torch.cudaimport torch# 检查CUDA是否可用
if torch.cuda.is_available():print("CUDA可用!")# 获取可用的CUDA设备数量device_count = torch.cuda.device_count()print(f"可用的CUDA设备数量: {device_count}")# 获取当前使用的CUDA设备索引current_device = torch.cuda.current_device()print(f"当前使用的CUDA设备索引: {current_device}")# 获取当前CUDA设备的名称device_name = torch.cuda.get_device_name(current_device)print(f"当前CUDA设备的名称: {device_name}")# 获取CUDA版本cuda_version = torch.version.cudaprint(f"CUDA版本: {cuda_version}")
else:print("CUDA不可用。")# 仍然用4特征,3分类的鸢尾花数据集作为我们今天的数据集
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import numpy as npimport pandas as pd
from sklearn.datasets import load_iris# 加载鸢尾花数据集
iris = load_iris()# 创建包含特征和标签的DataFrame
df = pd.DataFrame(data=iris.data, columns=iris.feature_names
)# 添加分类标签列(数值形式)
df['target'] = iris.target# 添加分类名称列(文本形式)
df['species'] = df['target'].apply(lambda x: iris.target_names[x]
)# 设置显示选项以查看更多行
pd.set_option('display.max_rows', 200)# 显示完整数据集
print("鸢尾花数据集完整数据(150行):")
display(df)  # 在Jupyter Notebook中使用# 加载鸢尾花数据集
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.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test) #确保训练集和测试集是相同的缩放# 将数据转换为 PyTorch 张量,因为 PyTorch 使用张量进行训练
# y_train和y_test是整数,所以需要转化为long类型,如果是float32,会输出1.0 0.0
X_train = torch.FloatTensor(X_train)
y_train = torch.LongTensor(y_train)
X_test = torch.FloatTensor(X_test)
y_test = torch.LongTensor(y_test)import torch
import torch.nn as nn
import torch.optim as optimclass MLP(nn.Module): # 定义一个多层感知机(MLP)模型,继承父类nn.Moduledef __init__(self): # 初始化函数super(MLP, self).__init__() # 调用父类的初始化函数# 前三行是八股文,后面的是自定义的self.fc1 = nn.Linear(4, 10)  # 输入层到隐藏层self.relu = nn.ReLU()self.fc2 = nn.Linear(10, 3)  # 隐藏层到输出层
# 输出层不需要激活函数,因为后面会用到交叉熵函数cross_entropy,交叉熵函数内部有softmax函数,会把输出转化为概率def forward(self, x):out = self.fc1(x)out = self.relu(out)out = self.fc2(out)return out# 实例化模型
model = MLP()# 分类问题使用交叉熵损失函数
criterion = nn.CrossEntropyLoss()# 使用随机梯度下降优化器
optimizer = optim.SGD(model.parameters(), lr=0.01)# # 使用自适应学习率的化器
# optimizer = optim.Adam(model.parameters(), lr=0.001)# 训练模型
num_epochs = 20000 # 训练的轮数# 用于存储每个 epoch 的损失值
losses = []for epoch in range(num_epochs): # range是从0开始,所以epoch是从0开始# 前向传播outputs = model.forward(X_train)   # 显式调用forward函数# outputs = model(X_train)  # 常见写法隐式调用forward函数,其实是用了model类的__call__方法loss = criterion(outputs, y_train) # output是模型预测值,y_train是真实标签# 反向传播和优化optimizer.zero_grad() #梯度清零,因为PyTorch会累积梯度,所以每次迭代需要清零,梯度累计是那种小的bitchsize模拟大的bitchsizeloss.backward() # 反向传播计算梯度optimizer.step() # 更新参数# 记录损失值losses.append(loss.item())# 打印训练信息if (epoch + 1) % 100 == 0: # range是从0开始,所以epoch+1是从当前epoch开始,每100个epoch打印一次print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}')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()

@浙大疏锦行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/911819.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/911819.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【STM32】中断优先级管理 NVIC

这篇文章是对 Cortex-M3 内核中断系统 和 STM32F1 系列 NVIC(嵌套向量中断控制器) 的解析说明。我将从结构清晰、层次分明的角度,对 NVIC 中断优先级分组的概念和 STM32F103 的实际情况做一个系统性的总结与叙述。 参考资料: STM32F1xx官方资料:《STM32中文参考手册V10》…

Angular2--高级特性(TODO)

1 基础 关于Angular的基础部分,几个核心部分和框架,在之前都写过了。Angular1--Hello-CSDN博客 Angular的几个核心部分和框架: 模板就是组件中的template,对应MVC的V。 组件类就是Component类,对应对应MVC的C。 服…

pikachu靶场通关笔记44 SSRF关卡02-file_get_content(三种方法渗透)

目录 一、SSRF 1、简介 2、原理 二、file_get_contents函数 1、功能 2、参数 3、返回值 4、file_get_contents与SSRF 三、渗透实战 1、基本探测 2、http协议 (1)访问upload-labs靶场 (2)访问yijuhua.txt 3、file协议…

Android 控件 - EditText 的 Hint(Hint 基本用法、Hint 进阶用法、单独设置 Hint 的大小)

一、EditText 的 Hint 1、基本介绍 在 Android 开发中,EditText 的 Hint 用于显示提示文本 提示文本当用户没有输入任何内容时显示,输入内容后自动消失 2、基本使用 (1)在 XML 布局文件中设置 在 XML 布局文件中设置 Hint …

PostgreSQL(知识片):索引关联度indexCorrelation

索引关联度的绝对值越大,说明这个索引数据越好。绝对值最大为1。 首先我们创建一个表:tbl_corr,包含列:col、col_asc、col_desc、col_rand、data,col_asc存储顺序数据,col_desc存储降序数据,col…

React纯函数和hooks原理

纯函数 JS 若满足其下条件 ,被称为纯函数 1。确定的输入一定产生确定的输出 2 不产生副作用 另外redux中的reducer也要求是纯函数 Fiber 架构和hooks原理 useRef 在组件的整个声明周期内保持不变 用法:1绑定dom元素 或者 绑定一个类组件 因为函数式…

养老专业实训室虚拟仿真建设方案:助力人才培养与教育教学革新

随着我国老龄化程度加深,养老服务行业人才需求激增。养老专业实训室虚拟仿真建设方案凭借虚拟仿真技术,为养老专业教育教学带来革新,对人才培养意义重大。点击获取实训室建设方案 一、构建多元化虚拟场景,丰富实践教学内容 模拟居…

LangChain 提示词工程:语法结构详解与完整实战指南

LangChain 提示词工程:语法结构详解与完整实战指南 我将为您系统性地解析 LangChain 中各类提示模板的核心语法结构,通过清晰展示语法与对应代码示例,帮助您彻底掌握提示工程的实现方法。所有示例均围绕报幕词生成场景展开。 在这里插入图片…

20250625解决在Ubuntu20.04.6LTS下编译RK3588的Android14出现cfg80211.ko的overriding问题

Z:\14TB\versions\rk3588-android14-FriendlyElec\mkcombinedroot\res\vendor_modules.load 【拿掉/删除这一项目!】 cfg80211.ko 20250625解决在Ubuntu20.04.6LTS下编译RK3588的Android14出现cfg80211.ko的overriding问题 2025/6/25 20:20 缘起:本文针对…

在WSL下搭建JavaWeb: JDBC学习环境

在WSL下搭建JavaWeb: JDBC学习环境 前言 ​ 笔者最近打算放松一下,接触一点经典的Java Web技术,自己在闲暇时间时玩一玩JavaWeb技术。这里开一个小系列整理一下最近学习的东西,以供参考和学习。 ​ 笔者的计划是使用VSCode写代码&#xff…

pscc系统如何部署,怎么更安全更便捷?

磐石云PSCC系统的安全高效部署需结合云原生架构与零信任安全模型,以下是经过大型项目验证的部署方案及最佳实践: 一、智能部署架构(混合云模式) 二、安全增强部署方案 1. 基础设施安全 网络隔离 采用 三层网络分区:互…

协程驱动的高性能异步 HTTP 服务器:基础实现与任务调度机制

一、引言:为什么用协程实现 HTTP 服务器? 传统 HTTP 服务器的编程模型大致分为: 多线程阻塞型:每连接一线程,简洁但扩展性差 事件驱动模型(如 epoll 状态机):高性能但逻辑复杂 回…

《视频:点亮数字时代的光影魔方》

视频的前世今生:从诞生到爆火 视频的发展历程是一部充满创新与变革的历史,它见证了科技的飞速进步和人类对信息传播与娱乐方式不断追求的过程。从早期的雏形到如今的全面普及,视频经历了多个重要阶段,每一个阶段都伴随着关键节点与…

秋招Day14 - MySQL - 运维

百万级别以上的数据如何删除? 这么大量的DELETE操作可能会导致长时间锁表 可以进行批量删除,把要删除的数据分为多个小批次处理。 也可以采用创建新表,把不需要删除的数据迁移过来,然后废弃旧表。需要检查新表空间是否足够、分…

(C++)vector数组相关基础用法(C++教程)(STL库基础教程)

源代码&#xff1a; #include <iostream> #include <vector> #include <string> using namespace std;int main(){char a;int b;int c;vector <char> numbers;cout<<"请输入一组字符&#xff08;按下#结束&#xff09;:\n";while(1){…

面试的问题

主题&#xff1a;LLM相关、多模态相关、python编程、java编程 参见&#xff1a;小红书面试相关的帖子 LLM相关&#xff1a; 02.大语言模型架构/1.attention/1.attention.md qzl66/llm_interview_note - Gitee.com 02.大语言模型架构/Transformer架构细节/Transformer架构细…

【EDA软件】【应用功能子模块网表提供和加载编译方法】

1.背景 使用者做FPGA应用开发&#xff0c;将开发成果交给自己的客户&#xff0c;但是并不想提供RTL源码以及加密的源码&#xff0c;只想提供网表文件。 2.方法 2.1 指定应用功能子模块设置为Top层&#xff1b; 2.2 运行综合&#xff0c;在outputs文件夹下会生成该应用功能子…

Spring:多数据源配置多个事务管理器DEMO

Spring配置文件&#xff1a; 配置2个事务管理器&#xff1a;txManager和txManager2 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLS…

通用 Excel 导出功能设计与实现:动态列选择与灵活配置

在企业级应用开发中&#xff0c;数据导出是高频需求。本文介绍一种支持动态列选择、灵活配置的通用 Excel 导出方案&#xff0c;通过前后端协同设计&#xff0c;实现导出字段、列顺序、数据格式的自定义&#xff0c;满足多样化业务场景。 一、功能架构设计 核心特性 动态字段…

安全壁垒 - K8s 的 RBAC、NetworkPolicy 与 SecurityContext 精要

安全壁垒 - K8s 的 RBAC、NetworkPolicy 与 SecurityContext 精要 如果说 Kubernetes 是我们构建云原生应用的“城市”,那么我们已经学会了如何规划道路(网络)、建设住宅(Pod 调度)、提供水电(存储)以及智能调节城市规模(自动伸缩)。现在,是时候为这座城市安装“城门…