news 2026/4/18 3:52:38

Day41 图像数据与显存

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Day41 图像数据与显存

@浙大疏锦行

import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns import warnings import time from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, classification_report, confusion_matrix import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader, TensorDataset from sklearn.preprocessing import StandardScaler warnings.filterwarnings("ignore") # 设置中文字体 plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False # 读取数据 data = pd.read_csv('E:\PyStudy\data.csv') # 预处理代码(保持不变) discrete_features = data.select_dtypes(include=['object']).columns.tolist() # Home Ownership 标签编码 home_ownership_mapping = { 'Own Home': 1, 'Rent': 2, 'Have Mortgage': 3, 'Home Mortgage': 4 } data['Home Ownership'] = data['Home Ownership'].map(home_ownership_mapping) # Years in current job 标签编码 years_in_job_mapping = { '< 1 year': 1, '1 year': 2, '2 years': 3, '3 years': 4, '4 years': 5, '5 years': 6, '6 years': 7, '7 years': 8, '8 years': 9, '9 years': 10, '10+ years': 11 } data['Years in current job'] = data['Years in current job'].map(years_in_job_mapping) # Purpose 独热编码 data = pd.get_dummies(data, columns=['Purpose']) data2 = pd.read_csv("data.csv") list_final = [] for i in data.columns: if i not in data2.columns: list_final.append(i) for i in list_final: data[i] = data[i].astype(int) # Term 0 - 1 映射 term_mapping = { 'Short Term': 0, 'Long Term': 1 } data['Term'] = data['Term'].map(term_mapping) data.rename(columns={'Term': 'Long Term'}, inplace=True) # 连续特征用中位数补全 continuous_features = data.select_dtypes(include=['int64', 'float64']).columns.tolist() for feature in continuous_features: mode_value = data[feature].mode()[0] data[feature].fillna(mode_value, inplace=True) # 划分数据集 X = data.drop(['Credit Default'], axis=1) y = data['Credit Default'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 数据标准化(对神经网络很重要) scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test) # 转换为PyTorch张量 X_train_tensor = torch.FloatTensor(X_train_scaled) y_train_tensor = torch.LongTensor(y_train.values) X_test_tensor = torch.FloatTensor(X_test_scaled) y_test_tensor = torch.LongTensor(y_test.values) input_size = X_train_scaled.shape[1] class MLP(nn.Module): def __init__(self, input_dim, hidden_dim=128, output_dim=2): # 二分类输出2 super(MLP, self).__init__() # 动态设置输入维度 self.fc1 = nn.Linear(input_dim, hidden_dim) # 输入层到隐藏层 self.bn1 = nn.BatchNorm1d(hidden_dim) # 批归一化 self.relu = nn.ReLU() self.dropout = nn.Dropout(0.3) # Dropout防止过拟合 self.fc2 = nn.Linear(hidden_dim, hidden_dim // 2) self.bn2 = nn.BatchNorm1d(hidden_dim // 2) self.fc3 = nn.Linear(hidden_dim // 2, hidden_dim // 4) self.fc4 = nn.Linear(hidden_dim // 4, output_dim) # 输出层 def forward(self, x): out = self.fc1(x) out = self.bn1(out) out = self.relu(out) out = self.dropout(out) out = self.fc2(out) out = self.bn2(out) out = self.relu(out) out = self.dropout(out) out = self.fc3(out) out = self.relu(out) out = self.fc4(out) return out # 实例化模型 model = MLP(input_dim=input_size) # 分类问题使用交叉熵损失函数 criterion = nn.CrossEntropyLoss() # 使用随机梯度下降优化器 optimizer = optim.SGD(model.parameters(), lr=0.01) # 训练模型 num_epochs = 20000 # 训练的轮数 # 用于存储每个 epoch 的损失值 losses = [] import time start_time = time.time() # 记录开始时间 for epoch in range(num_epochs): # 训练模式 model.train() # 前向传播 - 使用张量而不是DataFrame outputs = model(X_train_tensor) loss = criterion(outputs, y_train_tensor) # 反向传播和优化 optimizer.zero_grad() loss.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}') time_all = time.time() - start_time # 计算训练时间 print(f'Training time: {time_all:.2f} seconds') 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/4/18 3:48:14

PyTorch-CUDA-v2.6镜像中的CUDA工具包包含哪些核心组件?

PyTorch-CUDA-v2.6镜像中的CUDA工具包包含哪些核心组件&#xff1f; 在深度学习工程实践中&#xff0c;一个常见的痛点是&#xff1a;明明代码写得没问题&#xff0c;模型结构也合理&#xff0c;可一运行就报错——不是CUDA不可用&#xff0c;就是cuDNN加载失败。更糟的是&…

作者头像 李华
网站建设 2026/4/14 14:12:37

PyTorch-CUDA-v2.6镜像如何调用多块GPU进行并行计算

PyTorch-CUDA-v2.6镜像如何调用多块GPU进行并行计算 在现代深度学习项目中&#xff0c;模型复杂度与数据规模的指数级增长使得单卡训练逐渐成为性能瓶颈。哪怕是最新的RTX 4090&#xff0c;在面对百亿参数的大模型时也显得力不从心。这时候&#xff0c;我们真正需要的不是更强的…

作者头像 李华
网站建设 2026/4/16 13:45:13

PyTorch-CUDA-v2.6镜像如何帮助你节省至少80%环境配置时间

PyTorch-CUDA-v2.6镜像如何帮助你节省至少80%环境配置时间 在深度学习项目启动的前48小时里&#xff0c;有多少开发者真正把时间花在了模型设计上&#xff1f;更多时候&#xff0c;我们都在和驱动版本、CUDA兼容性、cuDNN缺失这些“老朋友”打交道。明明买的是A100服务器&…

作者头像 李华
网站建设 2026/4/16 18:05:49

Day42 图像数据与显存

# 先继续之前的代码 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader , Dataset # DataLoader 是 PyTorch 中用于加载数据的工具 from torchvision import datasets, transforms # torchvision 是一个用于计算机视觉…

作者头像 李华
网站建设 2026/3/17 1:14:25

Python入门第一步:环境搭建+基础语法,手把手教你

一、引言 Python&#xff0c;作为当今最受欢迎的编程语言之一&#xff0c;以其简洁易读的语法和强大的功能广泛应用于数据科学、人工智能、Web 开发等众多领域。对于新手来说&#xff0c;迈出 Python 入门的第一步至关重要。这一步主要包括环境搭建和掌握基础语法&#xff0c;就…

作者头像 李华
网站建设 2026/4/13 10:43:53

Win7到Win11通用USB串口驱动下载推荐

从Windows 7到Win11&#xff0c;一条USB串口线如何“通吃”所有系统&#xff1f; 你有没有遇到过这样的场景&#xff1a; 手头有个老PLC要调试&#xff0c;设备只支持RS-232串口&#xff1b; 你的笔记本是全新的Win11&#xff0c;连个DB9接口都没有&#xff1b; 插上USB转串…

作者头像 李华