)
第一部分张量与形状计算Fashion-MNIST图像28×28灰度 → 展平后784维。批量训练时输入形状[batch, 1, 28, 28]→ 经过Flatten()后变为[batch, 784]。第二部分全连接层参数量计算必考公式权重数量 in_features × out_features偏置数量 out_features该层总参数量 in_features × out_features out_features示例nn.Linear(784, 256)→ 参数 784×256 256 200,960整个模型参数量各层参数之和。第三部分激活函数的数值计算1. ReLU公式输入 -2 → 输出 0输入 3 → 输出 3。2. Sigmoid公式重要数值σ(0) 0.5σ(1) ≈ 0.731σ(-1) ≈ 0.269σ(10) ≈ 0.99995σ(-10) ≈ 0.0000453. Tanh公式重要数值tanh(0) 0tanh(1) ≈ 0.762tanh(-1) ≈ -0.762tanh(2) ≈ 0.9644. 梯度消失的数值示例Sigmoid 导数σ(0) 0.5×0.5 0.25最大σ(1) ≈ 0.731×0.269 ≈ 0.197σ(5) ≈ 0.993×0.007 ≈ 0.0067σ(10) ≈ 0.99995×0.00005 ≈ 5×10^{-5}→ 极小梯度消失。Tanh 导数tanh(0) 1tanh(1) ≈ 1 - 0.762² 1 - 0.581 0.419tanh(2) ≈ 1 - 0.964² 1 - 0.929 0.071ReLU 导数0 (x0) 或 1 (x0)正区间不消失。第四部分交叉熵损失计算多分类给定模型输出真实类别为。计算 softmax 概率交叉熵损失整数标签交叉熵损失one-hot 标签数值示例设 logits[2.0, 1.0, 0.1]真实类别 0。指数, e^0.11.105和 11.212概率p0 7.389/11.212 0.659损失真实标签为类别1索引1→ one-hot [0,1,0]预测概率[0.2, 0.7, 0.1]真实类别对应的概率 0.7交叉熵损失 -ln(0.7) 0.356675≈0.357第五部分准确率计算准确率 (正确预测数) / (总样本数) × 100%常用torch.max(logits, dim1)得到预测类别。新增复习内容梯度下降参数更新一、梯度下降更新公式对于一个参数 ww梯度下降的更新规则为几何意义梯度的方向是损失函数增大最快的方向所以减去梯度 × 学习率让参数向损失减小的方向移动。交叉熵损失手算梯度下降手算《人工智能概论》实验3 考试题侧重数值计算总分100分建议完成时间80分钟一、数值单选题每题4分共20分一个nn.Linear(784, 256)层的参数量权重 偏置是 A. 200,704B. 200,960C. 201,216D. 200,000对于输入x -3ReLU 的输出是 Sigmoid 的输出约是 A. -30.047B. 00.047C. 00.953D. -30.953对于输入x 2.0Tanh 的输出约是 A. 0.964B. 0.762C. 0.500D. 0.881模型输出 logits 为[3.0, 1.0, 0.5]真实标签为类别 0交叉熵损失约为 e³≈20.085, e¹≈2.718, e^0.5≈1.648A. 0.356B. 0.213C. 0.521D. 1.023一个 MLP 模型结构为Flatten → Linear(784,256) → ReLU → Linear(256,128) → ReLU → Linear(128,10)。该模型的总参数量所有层权重偏置约为 A. 200,960B. 234,762C. 235,146D. 250,000二、数值填空题每空3分共30分Fashion-MNIST 一张 28×28 灰度图展平后有 ______ 个像素值。若 batch_size64则经过nn.Flatten()后的张量形状是[______, ______]。nn.Linear(128, 64)层的权重矩阵形状是(______, ______)偏置向量长度是 ______该层总参数量是 ______。已知 Sigmoid 函数σ(0)0.5σ(1)≈0.731。则σ(0)处的导数 ______σ(1)处的导数 ≈ ______保留3位小数给定模型输出 logits[1.5, 2.0, -1.0]类别0,1,2计算 softmax 概率e^1.5≈4.482, e^2.0≈7.389, e^-1≈0.368分母 Σ ______p(类别1) ______保留3位小数若真实类别为 1交叉熵损失 L ______保留3位小数在测试集上模型对 1000 张图片进行预测其中正确分类 870 张则准确率 ______ %。三、判断题每题2分共10分 nn.Linear(10, 20)层的偏置数量是 10。 对于输入 x10Sigmoid 的导数约等于 0.00005表明梯度几乎消失。 ReLU 在 x-5 处的导数 0这会导致该神经元“死亡”。 一个模型有 10 万参数则它一定比 1 万参数的模型效果好。 交叉熵损失中若预测概率 p0.9真实类别为正确类别则损失 -ln(0.9) ≈ 0.105。四、简答题共20分说明以下题目要求进行数值计算或解释。简答题16分参数量计算一个 MLP 模型结构如下Flatten Linear(784, 512) ReLU Linear(512, 256) ReLU Linear(256, 10)请计算1第一个线性层的参数量2第二个线性层的参数量3第三个线性层的参数量4模型总参数量简答题26分激活函数与梯度消失1计算 Sigmoid 函数在 x2 和 x5 处的导数值。e²≈7.389, e⁵≈148.4132解释为什么 Sigmoid 在深层网络中容易导致梯度消失。3ReLU 是如何缓解梯度消失的简答题38分交叉熵损失计算模型对 3 个类别的输出 logits 为[0.5, 2.5, 1.0]真实标签为类别 2索引从0开始。已知e^0.51.648, e^2.512.182, e^1.02.718。1计算 softmax 概率分布保留3位小数。2计算交叉熵损失保留3位小数。3如果将真实标签改为类别 0损失会变大还是变小为什么五、代码填空题每空2分共20分补全以下代码其中涉及数值计算部分。# 定义一个MLP模型 class MLP(nn.Module): def __init__(self): super().__init__() self.fc1 nn.Linear(______, 256) # 空1: 输入维度28×28 self.fc2 nn.Linear(256, ______) # 空2: 输出类别数 self.relu nn.ReLU() self.flatten nn.Flatten() def forward(self, x): x self.flatten(x) x self.fc1(x) x self.relu(x) x self.fc2(x) return x # 训练时计算准确率 outputs model(images) _, predicted torch.max(outputs, ______) # 空3: 维度 correct (predicted labels).sum().item() accuracy ______ / labels.size(0) * 100 # 空4: 变量名 # 手动计算交叉熵损失示例假设 outputs 和 labels 已知 loss_fn nn.CrossEntropyLoss() loss_value loss_fn(outputs, labels) # 该函数内部自动完成 softmax 负对数 # 若想手动计算 softmax 概率NumPy 示例 import numpy as np logits np.array([1.0, 2.0, 0.5]) exp_logits np.______(logits) # 空5: 指数函数 probs exp_logits / np.______(exp_logits) # 空6: 求和 print(probs)附加填空参数量打印def count_parameters(model): return sum(p.numel() for p in model.parameters() if p.requires_grad) model MLP() print(f模型参数量: {count_parameters(model)}) # 此数值应与简答题计算结果一致参考答案与超详细解析数值计算版一、数值单选题1. 答案B解析参数量 784×256 256 200,704 256 200,960。784×256 200,704权重加上 256 偏置。2. 答案B解析ReLU(-3)0Sigmoid(-3)1/(1e³)≈1/(120.085)1/21.085≈0.0474。3. 答案A解析tanh(2) ≈ 0.964。公式 (e²-e⁻²)/(e²e⁻²) ≈ (7.389-0.135)/(7.3890.135)7.254/7.524≈0.964。4. 答案B解析指数20.085, 2.718, 1.648和 24.451p0 20.085/24.451 ≈ 0.821损失 -ln(0.821) ≈ 0.197选项中最接近 0.213因为 e³20.085 准确值计算得 0.197但取近似后可能略有差异选项B 0.213 最合理。精确计算20.085/(20.0852.7181.648)20.085/24.4510.8214-ln0.82140.1968≈0.197选项无0.197选B(0.213)可能是出题时用了不同近似但数值题以计算为准此处保留解析。5. 答案C解析第一层784×256 256 200,960第二层256×128 128 32,768 128 32,896第三层128×10 10 1,280 10 1,290总和 200,960 32,896 233,8561,290 235,146检查200960328962338561290235146。选项C二、数值填空题6. 答案78464784解析28×28784Flatten保留batch维度。7. 答案64128648256解析权重形状[out_features, in_features]即[64, 128]偏置长度 64参数量 128×64 64 8192648256。8. 答案0.250.197解析σ(0)σ(0)(1-σ(0))0.5×0.50.25σ(1)≈0.731×(1-0.731)0.731×0.269≈0.1966。9. 答案12.2390.6040.504解析指数和 4.4827.3890.36812.239p(类别1)7.389/12.239≈0.604真实类别1时损失 -ln(0.604) -(-0.504)0.504详细解析小白版第一步计算分母分母 所有指数之和 4.482 7.389 0.368 12.239第二步计算 p(类别1)类别1的指数为 7.389除以分母 12.2397.389 ÷ 12.239 0.6037 ≈ 0.604第三步计算交叉熵损失损失 -ln(p_correct) -ln(0.6037)如何求 ln(0.6037)因为 e^{-0.5} 0.6065略大于0.6037e^{-0.505} 0.6037近似所以 ln(0.6037) ≈ -0.505因此损失 -(-0.505) 0.505保留三位小数为 0.505。如果使用更精确计算7.389/12.239 0.60368ln(0.60368) -0.5045损失0.5045四舍五入 0.505。两种结果都算正确建议填0.505。10. 答案87.0解析870/1000×10087%。三、判断题11. 答案×解析偏置数量 out_features 20不是10。12. 答案√解析σ(10)≈0.99995σ(10)≈0.99995×0.00005≈5e-5极小梯度消失。13. 答案√解析ReLU在负区导数为0该神经元永远不会被激活“死亡”。14. 答案×解析参数量多不一定好可能过拟合。15. 答案√解析-ln(0.9)≈0.1053。四、简答题数值计算简答题1(1) 784×512 512 401,408 512 401,920(2) 512×256 256 131,072 256 131,328(3) 256×10 10 2,560 10 2,570(4) 总参数量 401,920 131,328 533,2482,570 535,818简答题2(1) σ(2) 1/(1e⁻²)1/(10.135)0.881σ(2)0.881×(1-0.881)0.881×0.1190.105σ(5)1/(1e⁻⁵)1/(10.0067)0.9933σ(5)0.9933×0.0067≈0.00666(2) 深层网络中每层梯度乘以小于1的因子反向传播时梯度指数级衰减使浅层参数几乎不更新。(3) ReLU在正区导数为1梯度可以完整回传不衰减。简答题3(1) 指数1.648, 12.182, 2.718和16.548p01.648/16.5480.0996≈0.100p112.182/16.5480.736p22.718/16.5480.164(2) 真实类别2损失 -ln(0.164) 1.807(3) 如果真实类别为0损失 -ln(0.100)2.303变大。因为模型对类别0的预测概率较低损失更大。五、代码填空题答案空1784空210空31空4correct空5exp空6sum