第1题:球星投篮命中率预测
题目概述
给定一份球星投篮的csv文件,包含以下变量(均已归一化):
•loc_x / loc_y:投篮时球星在球场上的横向/纵向位置
•minutes_remaining:当前节剩余的分钟数
•shot_distance:投篮距离篮筐的距离
•shot_made_flag:投篮是否命中(1=命中,0=未命中)
训练集 20,000 条数据,测试集约 5,000 条。
任务
使用 PyTorch 实现多层感知机(MLP),根据投篮位置(loc_x, loc_y)预测是否命中。
约束条件
• 输入2个特征(loc_x, loc_y),输出1个标签(shot_made_flag)
• 最多使用3个线性层,每层最多8个神经元
• 激活函数只能从 ReLU、Sigmoid、Tanh、ELU、LeakyReLU、PReLU 中选择
• 不得使用 nn.Sequential() 嵌套
评分
网络结构满足要求时,分数 = 测试集准确率。不满足要求则记0分。A榜使用测试集50%数据(赛中可见),B榜使用剩余50%(赛后公布,为最终成绩)。
第2题:真假图像识别
题目概述
CIFAR10 是一个常用的图像分类数据集,每张图像是 3×32×32 的彩色图像。从中选取 5,000 张真实拍照图像作为训练集,1,000 张作为测试集。
同时使用扩散模型(Diffusion Model)在 CIFAR10 上生成了 6,000 张"虚假"图像(训练集5,000张,测试集1,000张)。
任务
使用 PyTorch 设计一个卷积神经网络(CNN),区分哪张图片是"真实"图片,哪张是"虚假"图片。
约束条件
• 真实图片 Label=0,虚假图片 Label=1
• 至少包括 2个卷积层(nn.Conv2d)和 2个池化层(nn.MaxPool2d)
• 最多只能包括 2个线性层(nn.Linear)
• 不得使用 nn.Sequential() 嵌套
评分
网络复杂度分数:Network_Simplicity_Score = 1 / (Num_Linear + Num_Conv + 1)
最终得分:Score = (Network_Simplicity_Score + Accuracy) × 3/4
即:网络越简洁、准确率越高,分数越高。不满足结构要求则记0分。
第3题:新闻文本分类
题目概述
提供一个新闻文本分类数据集(csv格式),包含两个变量:
•text:新闻文本内容
•category:新闻文本类别
训练集 1,000 个样本,测试集 200 个样本。
任务
使用 PyTorch 设计训练一个自然语言处理模型,输入新闻语句,输出新闻类别。建议使用 Embedding + LSTM。
约束条件
• CPU训练+测试总时间不能超过10分钟
评分
在规定时间内完成时,评分 = 所有类别 F1-Score 的平均值。超时则记0分。
第4题:求解部分数据丢失的单摆运动
题目概述
提供一个带阻力的单摆运动数据集(csv格式),包含时间 t(秒)和摆角 θ(弧度)。传感器在实验过程中突然中断了若干秒后才被重启,且在中断期间某一时刻小球受到了竖直向下的恒定外力 F。

单摆示意图
运动满足微分方程:a(t) = -α · ω(t) - β · sin(θ(t))
其中 α = μ/m(空气阻力参数),未施力时 β₁ = g/l,施力后 β₂ = g/l + F/(ml)。质量 m=1,重力加速度 g=9.8。
训练集数据曲线如下:

训练集 θ(t) 数据曲线
任务
根据记录的时间和摆角数据,使用 PyTorch "回归"出微分方程参数,补齐残缺数据并进行预测。需要求解以下5个参数:
1绳子长度 l
2空气阻力 μ
3外力大小 F
4施力后下一次 θ(t)=0 的时刻 t_nextzerotheta
5施加外力的时刻 t_Fput
注意:训练集、测试集A和测试集B的微分方程参数均不相同。选手需要提交的是一种通用的求解方法,能针对不同数据集自动求解正确参数。
评分
各参数评分(X_pre 为预测值,X_real 为真实值):
• 绳长 l:S₁ = exp(-10|l_pre - l_real|)
• 空气阻力 μ:S₂ = exp(-10|μ_pre - μ_real|)
• 外力 F:S₃ = exp(-|F_pre - F_real|)
• 过零时刻:S₄ = exp(-10|t_pre - t_real|)
• 施力时刻:S₅ = exp(-10|t_pre - t_real|)
最终得分:Score = (S₁ + S₂ + 2S₃ + 2S₄ + 2S₅) / 8
附录:PyTorch求解微分方程示例
题目提供了一个"带阻力的直线运动"的完整示例代码,演示如何用 PyTorch 回归微分方程参数:

附录示例:带阻力的直线运动示意图
微分方程:a(t) = -α·v(t) - β·s(t)。使用差分代替导数计算速度和加速度,将 α、β 定义为 nn.Parameter,通过梯度下降回归参数,最后用 scipy.integrate.odeint 求解微分方程进行预测。

