python打卡day40@浙大疏锦行
知识点回顾:
- 彩色和灰度图片测试和训练的规范写法:封装在函数中
- 展平操作:除第一个维度batchsize外全部展平
- dropout操作:训练阶段随机丢弃神经元,测试阶段eval模式关闭dropout
一、彩色/灰度图片处理规范写法
def process_image(image, is_grayscale=False):"""统一处理彩色/灰度图像"""if is_grayscale:# 灰度图处理 (H,W) -> (1,H,W)image = image.unsqueeze(0) if len(image.shape) == 2 else imageelse:# 彩色图处理 (H,W,C) -> (C,H,W)if len(image.shape) == 3 and image.shape[-1] == 3:image = image.permute(2, 0, 1)return image.float() / 255.0 # 归一化
二、展平操作规范
class Net(nn.Module):def forward(self, x):# 保留batch维度,其余展平x = x.view(x.size(0), -1) # (batch, C*H*W)return self.fc(x)
三、Dropout训练/测试模式规范
model = nn.Sequential(nn.Linear(784, 256),nn.Dropout(0.5), # 训练时50%概率丢弃nn.ReLU(),nn.Linear(256, 10)
)# 训练阶段
model.train() # 启用dropout
output = model(inputs)# 测试阶段
model.eval() # 关闭dropout
with torch.no_grad():test_output = model(test_inputs)
关键点说明:
1. 图像处理函数应自动适配输入维度
2. 展平操作必须保留batch维度
3. dropout的行为通过 train() / eval() 自动切换
4. 测试阶段建议配合 torch.no_grad() 减少内存消耗