毕业论文初步问题
一、基础必问 **你的毕业论文研究背景和意义是什么?**要点:骨折筛查量大、医生疲劳、漏诊 / 误诊;AI 辅助诊断提高效率、基层普及。 **为什么选这个课题?你个人做了哪些工作?**要点:结合医疗 AI 热点、临床需求;你负责:选题、方案、数据集、模型训练、实验、写论文。 **目前进展到哪一步了?遇到什么困难?怎么解决的?**你现在:完成选题、方案设计。可以说:数据集获取、数据标注、类别不平衡、小目标检测难、过拟合等。 “您问的这个方法是伪标签(Pseudo Labeling),也是我毕设里计划采用的核心半监督策略。具体来说,我会先用少量标注好的骨折影像,训练出一个基础的 YOLOv11 模型,之后用这个模型去预测大量无标注的骨折 X 光片,筛选出置信度高于 0.85 的检测结果,将其作为‘伪标签’,再把这些带伪标签的数据和真实标注数据混合,重新训练 YOLOv11,反复迭代优化。这样做既能充分利用医院里大量未标注的影像资源,又能避免低置信度的错误标签干扰模型训练,刚好解决医疗影像标注成本高的痛点,同时也能进一步提升 YOLOv11 对细小、不规则骨折病灶的检测精...
数学建模比赛思路
用模拟退火做 2024B 题 第 2、3 问1. 先明确:我们要 “优化什么” 目标:让整个生产流程的总成本最低(检测费 + 装配费 + 报废损失 + 拆解费…) 决策变量(就是我们要定的方案): 配件 1 检不检测? 配件 2 检不检测? 成品 检不检测? 不合格成品:报废 / 拆解?(问题 3 就是把这些决策扩展到 m 个工序、n 个配件) 2. 模拟退火具体怎么做 随机生成一个初始方案比如:先随便定一套规则 —— 配件 1 不检、配件 2 检、成品检、不合格拆解。算出这套方案的总成本。 在当前方案附近,小改一下,生成新方案比如把 “配件 2 检测” 改成 “不检测”,或把 “拆解” 改成 “报废”。这就是模拟退火的邻域搜索。 比较成本,决定要不要换新方案 如果新方案更便宜:直接接受。 如果新方案更贵:也有一定概率接受(防止卡在局部最差方案)。 慢慢 “降温”,降低接受差方案的概率一开始允许乱试,后期越来越严谨,最后收敛到成本最低的稳定方案。 3. 问题 2 和 问题 3 的区别 问题 2:只有2 个配件 + 1 道装配,变量少,模拟退火...
复试项目二
学习了self-attention,并使用Bert完成影评情感分类任务 对比RNN和LSTM的优势和劣势,sa的架构 RNN 是一类会保留历史信息的循环神经网络,通过隐藏状态传递,把前面的信息带给后面,用来处理序列数据。 LSTM 是改进版的 RNN,通过门控机制(遗忘门、输入门、输出门,再加上细胞状态(记忆单元))控制信息的遗忘和记忆,解决了普通 RNN 长期依赖、梯度消失的问题。 自注意力机制直接建模全局依赖,不像 RNN、LSTM 那样只能按顺序一步步计算,并行计算效率更高,还能避免长序列梯度消失,捕捉远距离依赖更稳定、效果更强。 RNN往神经网络里面放了一个传家宝,这个传家宝里面记忆着历史信息,每层网络都会往传家宝里放自己的东西。但缺点是如果上下文距离过长,传家宝里会放入很多没用的东西。于是引出LSTM,使用遗忘门输入门输出门和记忆单元解决。但需要一句一句传入,效率太低,故引入自注意力机制,可以同时获取全局信息,并行处理效率更高。 Bert的原理? 结构:由 多层 Transformer Encoder 堆叠而成(base 12 层); 核心:双向多头自注意力,...
机试树和图
并查集 123456789101112131415161718192021222324252627282930313233343536373839#include<bits/stdc++.h>using namespace std;const int maxn=1005;int fa[maxn];int f(int x){ if(x==fa[x]){ return x; } fa[x]=f(fa[x]); return fa[x];}int main() { int n,m; while(cin>>n){ if(n==0){ break; } cin>>m; for(int i=1;i<=n;i++){ fa[i]=i; } int sum=0; fo...
机试搜索问题
BFS1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071#include <bits/stdc++.h>using namespace std;const int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};char mmap[105][105];struct node{int x,y;int step;};int bfs(int x,int y,int h,int w){ vector<vector<bool>> visited(h+1,vector<bool>(w+1,false)); queue<node> q; node s...
机试高精度问题
高精度问题 string&insert(size_t pos, size_t count,char ch); 表格 参数 代码中的值 具体含义 pos 0 插入位置:从字符串 b 的第 0 个位置(开头) 开始插入 count a.length() - b.length() 插入数量:需要补充的 ‘0’ 的个数(等于 a 和 b 的长度差) ch '0' 插入字符:要插入的是字符 ‘0’(不是数字 0) 1234567891011121314151617181920212223242526272829303132#include <bits/stdc++.h>using namespace std;string add(string a,string b){ //让a成为长串 if(a.length()<b.length()) a.swap(b); //初始化result字符串为数值0 string result(a.length(),0); //b前面补零,在哪里插?插几个...
机试链表问题
建立链表并升序排列 12345678910111213141516171819202122232425262728293031323334#include <bits/stdc++.h>using namespace std;struct node{ int elem; struct node* next;};int main (){ int n=5,num; node* head=new node(); head->next=NULL; while(n--){ cin>>num; node* p=head->next; node* q=head; while(p!=NULL&&p->elem<num){ q=p; p=p->next; } node* s=new node(); ...
机试文件操作
ofstream写入文件 123456789101112131415161718192021222324252627282930#include<bits/stdc++.h> // 记忆点1:万能头包含了文件操作的fstream,若单独写需加 #include <fstream>using namespace std;int main() { // 1. 定义文件名(路径) string f_name="text.txt"; // 记忆点2:路径分2种 // ✅ 相对路径:"text.txt" → 保存在程序运行的「当前文件夹」(最常用,好记) // ✅ 绝对路径:Windows下要写 "G:\\C++\\try2\\text.txt"(\要写两个,因为\是转义符),或 "G:/C++/try2/text.txt"(/不用转义,更简单) // 2. 创建写文件对象 + 关联文件(打开文件) ofstream fout(f...
复试项目一
基于半监督学习的交通标志识别 (Python/PyTorch) 线性和微调迁移学习: 借用大佬的模型,让我们的模型一开始就具有特征提取的能力,最后换一下探测头(即最后分多少类),这样效果会比用自己的模型好很多。 线性探测和微调是迁移学习的两种核心策略,核心区别是: 线性探测:只训练模型最后一层分类头,冻结所有卷积层,即特征提取层(权重不更新); 微调:解冻全部 / 部分特征提取层,小学习率(1e-4)让整个模型(特征层 + 分类头)一起训练更新。 resnet做了什么改善?第一,使用残差连接,解决梯度消失 梯度消失和梯度爆炸是要解决的问题,梯度爆炸可以通过relu或sigmoid解决,但梯度消失不容易解决。 由于梯度回传本身就是一个求导的过程。 resNet令out = f(x) + x,它缓解梯度消失的关键不是让导数大于 1,而是给梯度回传增加了一条 “直达路径”:反向传播时,损失对输入的梯度由两部分组成 —— 卷积层学习的残差项梯度,加上直接传递的梯度(这一项系数是 1,无衰减); 哪怕深层卷积层的梯度逐渐衰减,梯度仍能通过 “+1” 的直...
机试8-动态规划
最大字段和(与a[i]有关这个有点意思。 核心思路(Kadane 算法):“边走边选”想象你从第一个数开始,逐个往后走,每走到一个数,只做两个选择: 选:把当前数加入 “之前选的那段”,继续累加; 不选:扔掉之前选的所有数,从当前数重新开始。 如果原来的dp[i-1]加上当前的a[i]得到的结果,结果还没有当前的a[i]大,那就从当前的开始选(用来解决正负的问题) 每次选完后,记录一下 “当前能凑出的最大和”,最后全局最大的那个就是答案。 代码里的关键变量(对应思路) a[i]:存储原始的数字数组; dp[i]:表示 “以第 i 个数结尾的连续子数组的最大和”(比如dp[3]就是以第 4 个数结尾的最大和); max_sum:记录遍历过程中所有dp[i]的最大值(最终答案) 二、通俗解释代码的执行步骤以测试用例 5 -2 1 -3 4 -1 为例(n=5,数组是[-2,1,-3,4,-1]),一步步看代码怎么跑: 步骤 1:初始化 读取 n=5,读取数组a = [-2,1,-3,4,-1]; dp[0] = a[0] = -2(第一个数结尾的子数组只...
