一、ANN(人工神经网络)
ANN = 用多层"线性变换 + 非线性激活"拟合函数关系
输入 → 加权求和 → 非线性 → 再加权 → 输出
2. 结构拆解(考试最常挖空)
(1)Linear(线性层)
y = Wx + b
做"特征变换 / 维度映射" 例如:10维 → 64维 → 1维
(2)ReLU(激活函数)
ReLU(x) = max(0, x)
加入"非线性",否则整个网络只是线性回归
👉 没有 ReLU:ANN = 线性模型(很弱)
(3)Forward(前向传播)
输入 → 一层层计算 → 得到预测值
x → Linear → ReLU → Linear → output
(4)Loss(损失函数)
衡量"预测错多少"
分类:CrossEntropyLoss
回归:MSELoss
(5)Optimizer(优化器)
根据 loss 更新参数 SGD Adam(最常用)
W = W - lr * gradient
ANN通过多层Linear+ReLU进行非线性映射,在Forward中计算预测值,通过Loss衡量误差,并通过Optimizer反向更新参数。
二、CNN(卷积神经网络)
CNN = 处理"空间结构数据"(图像、遥感影像)
2. 每一层在干什么?
(1)Conv2d(卷积层)
核心作用:
提取局部特征(边缘、纹理、形状) 小窗口滑动+权重共享
👉 关键点:局部感受野;参数共享(比ANN省参数)
(2)Pooling(池化)
压缩信息 + 保留关键特征
MaxPooling:取最大值 AvgPooling:取平均值
👉 作用:降维;防止过拟合;增强平移不变性
(3)Flatten
把"二维特征图"拉成一维向量
(32, 32, 64) → 65536
(4)Linear(分类器)
把特征 → 最终类别
CNN通过卷积层提取局部空间特征,池化层进行降维与特征压缩,Flatten将特征展平后输入全连接层完成分类或回归任务。
三、核心代码
🧠 模板1:机器学习标准流程(SVM / RF / LR)
python
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score / rmse / r2
# 1. 数据
X = ...
y = ...
# 2. 切分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 3. 模型
model = Model()
# 4. 训练
model.fit(X_train, y_train)
# 5. 预测
y_pred = model.predict(X_test)
# 6. 评价
score = metric(y_test, y_pred)
🧠 模板2:ANN(PyTorch)
python
class ANN(nn.Module):
def __init__(self):
super().__init__()
self.fc1 = nn.Linear(in_dim, 64)
self.fc2 = nn.Linear(64, 1)
def forward(self, x):
x = F.relu(self.fc1(x))
x = self.fc2(x)
return x
训练:
python
model = ANN()
criterion = nn.MSELoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
for epoch in range(E):
output = model(x)
loss = criterion(output, y)
loss.backward()
optimizer.step()
optimizer.zero_grad()
🧠 模板3:CNN(遥感分类)
python
class CNN(nn.Module):
def __init__(self):
super().__init__()
self.conv1 = nn.Conv2d(3, 16, 3)
self.pool = nn.MaxPool2d(2)
self.fc = nn.Linear(16*X, num_classes)
def forward(self, x):
x = self.pool(F.relu(self.conv1(x)))
x = x.view(x.size(0), -1)
x = self.fc(x)
return x
🧠 模板8:Accuracy
python
from sklearn.metrics import accuracy_score
acc = accuracy_score(y_true, y_pred)
🧠 模板9:RMSE / MAE / R²
python
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
rmse = mean_squared_error(y_true, y_pred, squared=False)
mae = mean_absolute_error(y_true, y_pred)
r2 = r2_score(y_true, y_pred)
🧠 模板10:绘图(必考)
python
import matplotlib.pyplot as plt
plt.plot(loss_list)
plt.show()
plt.scatter(y_true, y_pred)
plt.show()