
深度学习入门神经网络原理与 PyTorch 实战1. 神经网络基础神经网络结构 ├── 输入层接收原始特征 ├── 隐藏层提取特征可多层 ├── 输出层产生预测结果 └── 激活函数引入非线性 常见激活函数 ├── Sigmoid: σ(x) 1/(1e^(-x))输出 (0,1) ├── Tanh: tanh(x)输出 (-1,1) ├── ReLU: max(0,x)最常用 ├── LeakyReLU: max(0.01x, x) └── Softmax: 多分类输出概率2. PyTorch 基础importtorchimporttorch.nnasnnimporttorch.optimasoptim# 创建张量xtorch.randn(3,4)# 随机张量ytorch.zeros(3,4)# 零张量ztorch.ones(3,4)# 全 1 张量# GPU 加速devicetorch.device(cudaiftorch.cuda.is_available()elsecpu)xx.to(device)3. 构建神经网络importtorch.nnasnnclassSimpleNN(nn.Module):def__init__(self,input_size,hidden_size,output_size):super().__init__()self.layersnn.Sequential(nn.Linear(input_size,hidden_size),nn.ReLU(),nn.Dropout(0.2),nn.Linear(hidden_size,hidden_size),nn.ReLU(),nn.Dropout(0.2),nn.Linear(hidden_size,output_size))defforward(self,x):returnself.layers(x)# 创建模型modelSimpleNN(784,256,10).to(device)print(model)4. 训练循环importtorch.optimasoptimfromtorch.utils.dataimportDataLoader,TensorDataset# 数据准备datasetTensorDataset(X_train_tensor,y_train_tensor)dataloaderDataLoader(dataset,batch_size32,shuffleTrue)# 损失函数和优化器criterionnn.CrossEntropyLoss()optimizeroptim.Adam(model.parameters(),lr0.001)# 训练forepochinrange(100):model.train()total_loss0forbatch_X,batch_yindataloader:batch_X,batch_ybatch_X.to(device),batch_y.to(device)# 前向传播outputsmodel(batch_X)losscriterion(outputs,batch_y)# 反向传播optimizer.zero_grad()loss.backward()optimizer.step()total_lossloss.item()if(epoch1)%100:print(fEpoch{epoch1}, Loss:{total_loss/len(dataloader):.4f})5. 模型评估# 评估模式model.eval()withtorch.no_grad():outputsmodel(X_test_tensor.to(device))predictionsoutputs.argmax(dim1).cpu()accuracy(predictionsy_test_tensor).float().mean()print(f准确率:{accuracy:.4f})6. CNN 图像分类classSimpleCNN(nn.Module):def__init__(self,num_classes10):super().__init__()self.featuresnn.Sequential(nn.Conv2d(3,32,3,padding1),nn.ReLU(),nn.MaxPool2d(2),nn.Conv2d(32,64,3,padding1),nn.ReLU(),nn.MaxPool2d(2),nn.Conv2d(64,128,3,padding1),nn.ReLU(),nn.MaxPool2d(2),)self.classifiernn.Sequential(nn.Flatten(),nn.Linear(128*4*4,256),nn.ReLU(),nn.Dropout(0.5),nn.Linear(256,num_classes))defforward(self,x):xself.features(x)xself.classifier(x)returnx7. 模型保存与加载# 保存torch.save(model.state_dict(),model.pth)# 加载modelSimpleNN(784,256,10)model.load_state_dict(torch.load(model.pth))model.eval()总结概念说明前向传播输入 → 输出反向传播计算梯度优化器SGD/Adam/AdamW损失函数CrossEntropy/MSE正则化Dropout/BatchNorm