做的网站怎样百度能搜到做海报好的psd网站
2026/2/15 18:38:44 网站建设 项目流程
做的网站怎样百度能搜到,做海报好的psd网站,公众号平台官网入口,dedecms 食品网站浙大疏锦行 #x1f4d8; Day 33 实战作业#xff1a;深度学习 Hello World —— 手搓神经网络 1. 作业综述 核心目标#xff1a; 环境配置#xff1a;确认 PyTorch 环境安装成功#xff08;这是深度学习的第一道门槛#xff09;。数据张量化#xff1a;学会将 Nump…浙大疏锦行 Day 33 实战作业深度学习 Hello World —— 手搓神经网络1. 作业综述核心目标环境配置确认 PyTorch 环境安装成功这是深度学习的第一道门槛。数据张量化学会将 Numpy 数组转换为 PyTorch 认识的Tensor (张量)。模型定义继承nn.Module亲手搭建一个多层感知机 (MLP)。训练循环理解并实现“前向传播 - 计算 Loss - 反向传播 - 更新参数”的经典四步走。涉及知识点PyTorch 基础:torch.Tensor,nn.Module,nn.Linear,nn.ReLU.优化器:torch.optim.SGD(随机梯度下降).损失函数:nn.CrossEntropyLoss(交叉熵).场景类比sklearn: 像是吃泡面开水一泡fit就能吃predict但口味固定。PyTorch: 像是进厨房做菜你要自己切菜定义层、炒菜前向传播、尝咸淡计算 Loss、加盐更新参数。虽然麻烦但这才是大厨的必经之路。步骤 1数据准备 (Numpy to Tensor)场景描述神经网络对数据非常敏感。数值敏感必须进行归一化MinMax 或 Standard否则梯度会乱飞。类型敏感PyTorch 不认识 Numpy 数组必须转成Tensor。特征通常是FloatTensor(浮点数)分类标签必须是LongTensor(长整型)。任务加载 Iris 数据集并划分训练/测试集。使用MinMaxScaler进行归一化。关键将数据转换为 PyTorch 的 Tensor 格式。importtorchimportnumpyasnpfromsklearn.datasetsimportload_irisfromsklearn.model_selectionimporttrain_test_splitfromsklearn.preprocessingimportMinMaxScaler# 1. 加载数据irisload_iris()Xiris.data yiris.target# 2. 划分数据X_train,X_test,y_train,y_testtrain_test_split(X,y,test_size0.2,random_state42)# 3. 归一化 (神经网络标准动作)scalerMinMaxScaler()X_trainscaler.fit_transform(X_train)X_testscaler.transform(X_test)# 4. 转换为 Tensor (关键步骤)# 特征转为 FloatTensor (32位浮点), 标签转为 LongTensor (64位整型交叉熵要求)X_train_tensortorch.FloatTensor(X_train)y_train_tensortorch.LongTensor(y_train)X_test_tensortorch.FloatTensor(X_test)y_test_tensortorch.LongTensor(y_test)print(f训练集 Tensor 形状:{X_train_tensor.shape})print(f标签 Tensor 类型:{y_train_tensor.dtype})训练集 Tensor 形状: torch.Size([120, 4]) 标签 Tensor 类型: torch.int64步骤 2搭建神经网络 (Subclassing nn.Module)场景描述我们要搭建一个简单的MLP (多层感知机)来处理 Iris 分类。输入是 4 个特征输出是 3 个类别。中间加一层隐藏层比如 10 个神经元和激活函数。PyTorch 建模八股文定义类继承nn.Module。在__init__里定义有哪些层零件。在forward里定义数据怎么流向组装。任务定义SimpleMLP类包含输入层(4)-隐藏层(10)-ReLU-输出层(3)。importtorch.nnasnnclassSimpleMLP(nn.Module):def__init__(self):super(SimpleMLP,self).__init__()# 标准起手式# 定义层 (零件)# 4 - 10self.fc1nn.Linear(in_features4,out_features10)# 激活函数self.relunn.ReLU()# 10 - 3 (输出层)self.fc2nn.Linear(in_features10,out_features3)defforward(self,x):# 定义前向传播路径 (组装)# x - fc1 - relu - fc2 - outputoutself.fc1(x)outself.relu(out)outself.fc2(out)# 注意这里不需要 Softmax因为 CrossEntropyLoss 自带了returnout# 实例化模型modelSimpleMLP()print(model)SimpleMLP( (fc1): Linear(in_features4, out_features10, biasTrue) (relu): ReLU() (fc2): Linear(in_features10, out_features3, biasTrue) )步骤 3训练循环 (The Training Loop)场景描述这是 PyTorch 最劝退也最核心的部分。不同于model.fit()一键搞定我们需要手写循环前向传播: 算出预测值。计算损失: 预测值和真实值差多少梯度清零: 把上一步的梯度倒掉别累积。反向传播: 算出每个参数该怎么调。参数更新: 迈出一步 (Step)。任务定义损失函数CrossEntropyLoss和 优化器SGD。编写 1000 轮的训练循环并记录 Loss 变化。绘制 Loss 曲线。importtorch.optimasoptimimportmatplotlib.pyplotasplt# 1. 定义 Loss 和 Optimizercriterionnn.CrossEntropyLoss()# 学习率 lr0.1optimizeroptim.SGD(model.parameters(),lr0.1)# 2. 开始训练epochs1000loss_history[]print( 开始训练...)forepochinrange(epochs):# --- A. 前向传播 ---outputsmodel(X_train_tensor)losscriterion(outputs,y_train_tensor)# --- B. 反向传播与优化 (核心三件套) ---optimizer.zero_grad()# 1. 梯度清零loss.backward()# 2. 反向传播求梯度optimizer.step()# 3. 更新参数# 记录 Lossloss_history.append(loss.item())if(epoch1)%1000:print(fEpoch [{epoch1}/{epochs}], Loss:{loss.item():.4f})# 3. 可视化训练过程plt.plot(loss_history)plt.title(Training Loss)plt.xlabel(Epoch)plt.ylabel(Loss)plt.show()print(✅ 训练完成) 开始训练... Epoch [100/1000], Loss: 0.5708 Epoch [200/1000], Loss: 0.3821 Epoch [300/1000], Loss: 0.2937 Epoch [400/1000], Loss: 0.2323 Epoch [500/1000], Loss: 0.1876 Epoch [600/1000], Loss: 0.1555 Epoch [700/1000], Loss: 0.1325 Epoch [800/1000], Loss: 0.1160 Epoch [900/1000], Loss: 0.1040 Epoch [1000/1000], Loss: 0.0951✅ 训练完成 Day 33 总结打开“白盒”恭喜你完成了第一个 PyTorch 神经网络今天我们最大的收获是打破了黑盒。sklearn vs PyTorch 对照表动作sklearn (黑盒)PyTorch (白盒)定义模型clf MLPClassifier()class MyNet(nn.Module): ...训练clf.fit(X, y)写for循环 (前向反向更新)数据Numpy 数组torch.Tensor虽然代码变多了但你现在拥有了无限的自由。你可以随意修改层数、随意改变数据流向、随意自定义损失函数。这就是深度学习的魅力。Next Level:既然有了模型怎么评估它的好坏怎么保存它明天我们将继续完善这个工程

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询