news 2026/5/16 18:29:52

Day40 Python Study

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Day40 Python Study

@浙大疏锦行

import torch import torch.nn as nn import torch.optim as optim from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split import numpy as np # 仍然用4特征,3分类的鸢尾花数据集作为我们今天的数据集 # 加载鸢尾花数据集 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) class MLP(nn.Module): # 定义一个多层感知机(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) # 隐藏层到输出层 # 输出层不需要激活函数,因为后面会用到交叉熵函数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 = [] import time start_time = time.time() # 记录开始时间 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模拟大的bitchsize 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()

Epoch [100/20000], Loss: 1.0496
Epoch [200/20000], Loss: 0.9832
Epoch [300/20000], Loss: 0.9200
Epoch [400/20000], Loss: 0.8511
Epoch [500/20000], Loss: 0.7790
Epoch [600/20000], Loss: 0.7097
Epoch [700/20000], Loss: 0.6492
......
Epoch [19000/20000], Loss: 0.0620
Epoch [19100/20000], Loss: 0.0618
Epoch [19200/20000], Loss: 0.0617
Epoch [19300/20000], Loss: 0.0616
Epoch [19400/20000], Loss: 0.0615
Epoch [19500/20000], Loss: 0.0614
Epoch [19600/20000], Loss: 0.0613
Epoch [19700/20000], Loss: 0.0612
Epoch [19800/20000], Loss: 0.0611
Epoch [19900/20000], Loss: 0.0610
Epoch [20000/20000], Loss: 0.0609
Training time: 9.49 seconds

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 6:38:02

NOTA修饰的艾塞那肽-4, Exendin-4

一、Exendin-4基本信息英文名称:Exendin-4中文名称:艾塞那肽 - 4单字母序列:H-HGEGTFTSDLSKQMEEEAVRLFIEWLKNGGPSSGAPPPS-NH2三字母序列:H-His-Gly-Glu-Gly-Thr-Phe-Thr-Ser-Asp-Leu-Ser-Lys-Gln-Met-Glu-Glu-Glu-Ala-Val-Arg-Leu…

作者头像 李华
网站建设 2026/5/16 3:34:54

DiT终极指南:用Transformer架构重新定义图像生成的完整教程

想象一下,当你还在为传统扩散模型那令人头疼的训练成本和有限扩展性而苦恼时,一个全新的解决方案已经悄然出现——DiT,这个将Transformer与扩散模型完美融合的架构,正在彻底改变我们对图像生成技术的认知。今天,就让我…

作者头像 李华
网站建设 2026/5/14 7:34:41

DOTA修饰的艾塞那肽-4,Exendin-4

一、Exendin-4基本信息英文名称:Exendin-4中文名称:艾塞那肽 - 4单字母序列:H-HGEGTFTSDLSKQMEEEAVRLFIEWLKNGGPSSGAPPPS-NH2三字母序列:H-His-Gly-Glu-Gly-Thr-Phe-Thr-Ser-Asp-Leu-Ser-Lys-Gln-Met-Glu-Glu-Glu-Ala-Val-Arg-Leu…

作者头像 李华
网站建设 2026/5/11 17:19:56

DFO修饰艾塞那肽-4,Exendin-4

一、Exendin-4基本信息英文名称:Exendin-4中文名称:艾塞那肽 - 4单字母序列:H-HGEGTFTSDLSKQMEEEAVRLFIEWLKNGGPSSGAPPPS-NH2三字母序列:H-His-Gly-Glu-Gly-Thr-Phe-Thr-Ser-Asp-Leu-Ser-Lys-Gln-Met-Glu-Glu-Glu-Ala-Val-Arg-Leu…

作者头像 李华
网站建设 2026/5/15 1:15:26

Label Studio多语言配置实战:轻松实现全球化数据标注

Label Studio多语言配置实战:轻松实现全球化数据标注 【免费下载链接】label-studio 项目地址: https://gitcode.com/gh_mirrors/lab/label-studio 在数据标注领域,Label Studio作为一款功能强大的开源工具,其多语言支持能力让全球团…

作者头像 李华
网站建设 2026/5/13 19:44:00

告别操作盲区:KeyCastr实现完美实时操作可视化

告别操作盲区:KeyCastr实现完美实时操作可视化 【免费下载链接】keycastr KeyCastr, an open-source keystroke visualizer 项目地址: https://gitcode.com/gh_mirrors/ke/keycastr 你是不是也有过这样的经历?🤔 做技术分享时&#xf…

作者头像 李华