
一、ANN人工神经网络ANN 用多层“线性变换 非线性激活”拟合函数关系输入 → 加权求和 → 非线性 → 再加权 → 输出2. 结构拆解考试最常挖空1Linear线性层y Wx b做“特征变换 / 维度映射” 例如10维 → 64维 → 1维2ReLU激活函数ReLU(x) max(0, x)加入“非线性”否则整个网络只是线性回归 没有 ReLUANN 线性模型很弱3Forward前向传播输入 → 一层层计算 → 得到预测值 x → Linear → ReLU → Linear → output4Loss损失函数衡量“预测错多少”分类CrossEntropyLoss回归MSELoss5Optimizer优化器根据 loss 更新参数 SGD Adam最常用W W - lr * gradientANN通过多层LinearReLU进行非线性映射在Forward中计算预测值通过Loss衡量误差并通过Optimizer反向更新参数。二、CNN卷积神经网络CNN 处理“空间结构数据”图像、遥感影像2. 每一层在干什么1Conv2d卷积层核心作用提取局部特征边缘、纹理、形状 小窗口滑动权重共享 关键点局部感受野参数共享比ANN省参数2Pooling池化压缩信息 保留关键特征MaxPooling取最大值 AvgPooling取平均值 作用降维防止过拟合增强平移不变性3Flatten把“二维特征图”拉成一维向量(32, 32, 64) → 655364Linear分类器把特征 → 最终类别CNN通过卷积层提取局部空间特征池化层进行降维与特征压缩Flatten将特征展平后输入全连接层完成分类或回归任务。三、核心代码 模板1机器学习标准流程SVM / RF / LRimport 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_size0.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) 模板2ANNPyTorchclass 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训练model ANN() criterion nn.MSELoss() optimizer torch.optim.Adam(model.parameters(), lr0.001) for epoch in range(E): output model(x) loss criterion(output, y) loss.backward() optimizer.step() optimizer.zero_grad() 模板3CNN遥感分类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 模板8Accuracyfrom sklearn.metrics import accuracy_score acc accuracy_score(y_true, y_pred) 模板9RMSE / MAE / R²from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score rmse mean_squared_error(y_true, y_pred, squaredFalse) mae mean_absolute_error(y_true, y_pred) r2 r2_score(y_true, y_pred) 模板10绘图必考import matplotlib.pyplot as plt plt.plot(loss_list) plt.show() plt.scatter(y_true, y_pred) plt.show()