人工智能入门学习——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()
相关推荐
火山引擎开发者社区1 天前
七夕漫谈|向量检索界的超强 CP:DiskANN 铺路,RaBitQ 加速,又准又快还能省
人工智能
孙启超1 天前
【大模型应用开发】LLM 到底是什么,以及它是怎么训练的
人工智能·lora·llm·微调·sft·token·rlhf
新知图书1 天前
7.1 需求分析与规划 《AI Agent智能体开发实践》
人工智能·agent·ai agent·智能体
clorinda1 天前
机器学习文本分类入门:从数据清洗到中文评论词向量转换
人工智能
小宋10211 天前
Dify 知识库实战:从 PDF 导入到带引用回答,完整搭建企业问答助手
人工智能·ai编程
Shaoxi Zhang1 天前
JAVA学习笔记035——对象和JSON格式
java·笔记·学习
用户938515635071 天前
从Vibe Coding到SDD:规范驱动开发如何拯救AI编程失控
人工智能
蓝速科技1 天前
蓝速科技桌面 AI 双屏翻译机:开放安卓系统商用价值解析
人工智能·科技
陈皮波比茶1 天前
Redis学习
数据库·redis·学习
博、、1 天前
社区家政平台开发实战指南:从需求分析到系统部署全流程解析
人工智能·数据挖掘·需求分析