李宏毅机器学习 hw3
时间: 2025-02-06 19:14:43 浏览: 61
### 李宏毅机器学习Homework 3解决方案与指导
#### CNN架构理解
卷积神经网络(Convolutional Neural Network, CNN)是一种专门用于处理具有网格结构的数据的深度前馈人工神经网络,最常应用于分析视觉层次的信息。CNN通过卷积层、池化层以及全连接层来提取图像特征并完成分类任务[^1]。
#### 数据预处理
对于输入数据集,在构建模型之前需进行必要的预处理操作。这通常包括但不限于:调整图片尺寸至统一标准;对像素值做标准化处理使得其均值接近于零且方差等于一;划分训练集和验证集以便评估模型性能等措施[^2]。
#### 基线代码解析
提供了一个基于PyTorch框架实现的基础版本程序作为参考起点。该脚本定义了简单的两层卷积加一层全连接构成的小型CNN,并设置了Adam优化器配合交叉熵损失函数来进行参数更新迭代过程。此外还包含了读取本地文件夹内所有类别子目录下的jpg格式样本文件的功能模块。
```python
import torch.nn as nn
class SimpleCNN(nn.Module):
def __init__(self):
super(SimpleCNN,self).__init__()
self.conv_layer = nn.Sequential(
nn.Conv2d(in_channels=3,out_channels=6,kernel_size=(5,5)),
nn.ReLU(),
nn.MaxPool2d(kernel_size=(2,2),stride=2),
nn.Conv2d(in_channels=6,out_channels=16,kernel_size=(5,5)),
nn.ReLU(),
nn.MaxPool2d(kernel_size=(2,2),stride=2)
)
self.fc_layer = nn.Sequential(
nn.Linear(400,120),
nn.ReLU(),
nn.Linear(120,84),
nn.ReLU(),
nn.Linear(84,num_classes)
)
def forward(self,x):
out=self.conv_layer(x)
out=out.view(-1,400)
out=self.fc_layer(out)
return out
```
#### 训练流程概述
整个训练过程中涉及到超参数的选择如批次大小(batch size),初始学习率(initial learning rate)及其衰减策略(schedule of decay rates),最大轮次(maximum number of epochs)等等因素都会影响最终效果的好坏程度。因此建议同学们可以多尝试不同的配置组合找出最适合当前任务需求的那一组设置方案[^3]。
阅读全文
相关推荐

















