人工智能入门学习——ANN、CNN基本概念和考试核心代码

一、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()
相关推荐
A hao1 小时前
HDR LED显示屏工作原理:高动态范围显示技术解析
大数据·图像处理·人工智能
IT_陈寒1 小时前
SpringBoot自动配置的坑,我的Bean怎么不生效?
前端·人工智能·后端
nopSled1 小时前
AlphaAvatar v0.6.4 架构升级:统一实时感知、RTC 解耦与在线 ENV Memory
人工智能·架构·实时音视频·agent·多模态
Rubin智造社1 小时前
从“+AI”到“AI原生”:一场底层逻辑的思维革命
人工智能·ai-native
辞旧 lekkk1 小时前
CMake工程指南(一)
linux·运维·服务器·开发语言·qt·学习·萌新
波动几何2 小时前
个人信息脱敏的本人角色模板技能personal-self
人工智能
领麦微红外2 小时前
MLX90614的国产替代方案——了解FW-D1红外测温传感器
人工智能·智能家居
回眸&啤酒鸭2 小时前
【回眸】搞钱灵感——AI 数字人口播博主自动化运营
大数据·人工智能·自动化
想会飞的蒲公英2 小时前
逻辑回归为什么叫回归,却用来做分类
人工智能·python·分类·回归·逻辑回归