人工智能深度学习NLP计算机视觉强化学习【免费下载链接】google-researchGoogle Research项目地址https://gitcode.com/gh_mirrors/go/google-research点击查看免费下载本篇技术指南以 Google Research 仓库中的 student_mentor_dataset_cleaning/README.md 为主体结合其 main.py 与training/子模块源码系统讲解学生-导师Student-Mentor协同训练这一噪声数据集清洗与训练框架的完整使用流程。读完本文你将掌握该项目的环境搭建、两种运行模式softmax / triplet、全部命令行参数语义以及训练循环、噪声注入、梯度快照、模型持久化等底层机制能够独立复现官方示例命令并扩展到自己的人工噪声数据集上。一、项目定位与核心思想student_mentor_dataset_cleaning是一个用于从带噪数据集中学习的研究性训练框架。其基本思想是维护两个模型Student学生承担实际分类/度量学习任务的目标模型在带噪、类不平衡的数据上训练Mentor导师一个二元分类器以学生模型在每条样本上的梯度快照为输入输出该样本是否可信的置信度权重从而引导学生过滤噪声样本。二者的训练交替进行先由导师给出样本权重学生据此加权训练随后根据学生在新数据上的梯度重新生成导师的训练数据再更新导师。通过这种以梯度为媒介的协同机制框架在不需要人工标注噪声标签的前提下自动学习如何区分干净样本与错误标签样本。从源码结构看项目按职责划分为三层training/trainers/ 下的trainer.py与trainer_triplet.py是两套训练循环实现training/datasets/ 负责数据加载与污染training/loss/triplet_loss.py 提供三元组损失training/utils.py 提供梯度快照与自定义回调入口统一收敛到 main.py。二、环境准备与依赖安装依赖清单见 requirements.txt核心包包括依赖用途tensorflow2.0模型构建与训练代码使用tf.keras eager executionabsl-py命令行参数解析absl.flags/absl.apptensorflow-datasetssoftmax 模式加载 MNISTtensorflow-probability数据集重采样与统计相关功能numpy / pandas / scipy / scikit-learn数值计算、CSV 读取、稀疏矩阵与线性回归triplet 模式scann近邻检索triplet 模式三元组挖掘的预留依赖PillowCSV 模式图像读取run.sh 给出了一个零手工干预的端到端环境搭建脚本先virtualenv -p python3 .在当前目录创建虚拟环境并激活再pip install -r .../requirements.txt安装依赖随后直接运行训练命令并在结束后清理临时目录。需要说明的是该脚本内部引用的模块名与仓库实际目录名存在差异官方 README 推荐的运行方式仍是下述python -m命令要求从仓库根目录google-research/执行以保证模块路径可被 Python 解析。三、快速开始官方示例命令README 给出的最小可用命令如下从仓库根目录执行# From google-research/ python -m student_mentor_dataset_cleaning.main --save_dir/tmp/models \ --student_epoch_count1 --mentor_epoch_count1该命令的含义是--save_dir/tmp/models指定模型检查点保存目录--student_epoch_count1每个迭代轮次中学生只训练 1 个 epoch--mentor_epoch_count1每个迭代轮次中导师只训练 1 个 epoch。由于max_iteration_count默认值为 20完整运行会执行最多 20 轮训练学生→训练导师的交替迭代但会在验证损失连续 20 轮不改善时提前终止见下文训练循环一节。不指定--mode时默认进入softmax模式自动通过tensorflow-datasets加载 MNIST无需准备任何本地数据文件。四、命令行参数全面解析所有参数均在 main.py 中通过absl.flags定义并在verify_arguments()main.py中做合法性校验。完整参数表如下参数默认值取值范围/说明--mini_batch_size32整数须为正。学生与导师共享的 mini-batch 大小--max_iteration_count20整数须为正。学生-导师交替训练的最大轮次数--student_epoch_count30整数须为正。每轮中学生最多训练的 epoch 数--mentor_epoch_count30整数须为正。每轮中导师最多训练的 epoch 数--modesoftmaxsoftmax或triplet。softmax 模式固定使用 MNIST 并忽略csv_pathtriplet 模式使用 CSV 指定的数据集--save_dir模型保存目录路径--tensorboard_log_dirTensorBoard 日志目录路径为空则不写日志--train_dataset_dir训练图像所在目录triplet 模式使用--csv_path训练数据 DataFrame/CSV 文件路径triplet 模式使用--student_initial_model学生模型初始化路径当前入口中已定义但暂未接入训练流程--delg_embedding_layer_dim2048triplet 模式中损失层的 embedding 维度五、softmax 模式MNIST 上的默认实验run_softmax()main.py演示了框架的完整装配方式学生模型是一个简单的全连接网络Flatten(28×28) → Dense(128, relu) → Dense(10)使用 Adamlr0.001优化器损失为SparseCategoricalCrossentropy(from_logitsTrue)并挂载了 Top-1~Top-4 准确率与交叉熵等指标。导师模型是一个二元分类网络Flatten(101770) → Dense(50, relu) → Dense(1, sigmoid)。输入维度 101770 与学生模型全部可训练参数被展平后的梯度向量长度一致梯度快照见下文输出经 sigmoid 归一化为 (0,1) 区间的样本可信度使用BinaryCrossentropy训练并记录 BinaryAccuracy、FalseNegatives、FalsePositives、TrueNegatives、TruePositives 等指标。之后调用trainer.train(...)进入交替训练主循环。六、triplet 模式基于 CSV 数据集的度量学习当--modetriplet时程序进入 run_triplet()实现位于 trainer_triplet.py其模块注释明确标注still work-in-progress学生模型换为ResNet152V2include_topFalse、ImageNet 预训练权重、输入 321×321×3、poolingavg损失为自定义 TripletLoss导师模型结构不变但输入维度变为 104000对应 triplet 梯度快照的展平长度见 utils.py数据通过 CsvDataset 从 CSV 加载图像按base_dir/x/y/z/id.jpg的三级目录结构存放x/y/z 为 image id 的前三个字符CSV 默认第 0 列为 image id、第 2 列为标签加载时按标签排序并截取前 1996 条。TripletLoss 的关键参数triplet_loss.py包括embedding_sizeembedding 维度、triplet_loss_margin默认 0.1、train_ratio默认 0.1用于切分近邻索引的训练子集、num_partitions默认 1000乘积量化分区数、num_neighbors默认 100、anchor_reuse_count_max默认 20每个 anchor 最多复用的三元组数等。损失计算时按easy positive hard negative策略挖掘三元组并用半硬三元组损失relu(‖a−p‖−‖a−n‖margin)triplet_semihard_loss_fnmargin 默认 1.0累计。源码中近邻检索internal_get_nearest_neighbors暂以pass占位等待接入 scann 检索器属实验性预留。七、训练循环的底层原理核心主循环位于 trainer.py 的 train()每轮迭代执行以下步骤计算样本权重_get_weights_dataset()trainer.py用utils.get_gradients_dataset_from_labelled_data计算学生在训练集上的梯度快照再逐条交给导师模型map(mentor)输出即每条样本的置信度权重重置并训练学生从save_dir/student/init.hdf5重新加载初始学生_reinitilize_student将(x, y, 权重)三元组数据传入student.fit(...)加权训练student_epoch_count个 epoch重置并训练导师_create_mentor_dataset()trainer.py对导师训练集施加噪声污染corrupt_dataset把未被修改的样本标为 1、标签被随机化的样本标为 0作为导师的监督信号随后从mentor/init.hdf5重新加载初始导师并训练mentor_epoch_count个 epoch训练时通过class_weight{0: 1-noise_rate, 1: noise_rate}平衡正负类早停与保优若本轮导师验证损失优于历史最优则保存best.hdf5并重置等待计数否则waiting 1超过patience20即终止整个迭代。代码中硬编码的默认污染参数为noise_rate0.110% 的标签被随机化、target_distribution_parameter0.01指数分布重采样的陡峭度控制类不平衡程度。训练过程中的关键回调trainer.py包括学生EarlyStoppingpatience60、导师EarlyStoppingpatience100、ReduceLROnPlateaufactor0.5、min_lr1e-7以及按 epoch 保存权重的ModelCheckpointweights.{epoch:04d}.hdf5。其中CustomEarlyStopping与CustomReduceLROnPlateauutils.py重写了on_train_begin为空操作目的是让状态在多次fit调用间不被重置。梯度快照机制utils.py对每条样本在tf.GradientTape内前向计算损失然后对学生的全部可训练权重求梯度并展平拼接得到一个一维向量——这正是导师模型的输入特征。triplet 变体utils.py则先生成三元组再对每个三元组计算半硬三元组损失的梯度通过from_generator构造输出形状为[104000]的梯度数据集。八、数据准备与噪声注入机制softmax 模式的数据由 mnist.create_dataset() 生成将 MNIST 训练集按0.4 / 0.1 / 0.5划分为学生训练集、学生验证集、导师训练集三份图像归一化到 [0,1]并只对学生训练集施加污染。污染流水线封装在 datasets.corrupt_dataset() 中包含两个环节类不平衡重采样imbalanced_sample_exponentialdatasets/init.py按指数分布对训练样本做过采样target_distribution_parameter0时近似均匀采样标签噪声add_noisedatasets/init.py以noise_rate概率将样本标签随机替换为另一个类别并将该样本的权重置 0——被噪声污染的样本因此天然带上了低权重标签供导师学习。此外dataset_split()datasets/init.py按随机阈值将导师数据集按 0.6/0.4 切分为训练与验证两部分。九、模型产物与 TensorBoard 日志训练产出统一写入--save_dir目录结构为save_dir/ ├── student/ │ ├── init.hdf5 # 初始学生每轮重置回此状态 │ ├── best.hdf5 # 历史最优学生 │ └── iteration_0000/ # 每轮的按 epoch 权重 │ └── weights.0000.hdf5 └── mentor/ ├── init.hdf5 # 初始导师 ├── best.hdf5 # 历史最优导师 └── iteration_0000/ └── weights.0000.hdf5若指定--tensorboard_log_dir则会在其下按student/iteration_XXXX、mentor/iteration_XXXX生成 TensorBoard 日志histogram_freq1并通过LearningRateLoggerutils.py额外记录每个 epoch 结束时的学习率标量便于在 TensorBoard 中观察学习率衰减与训练曲线。注意训练开始时trainer.train()会对save_dir与log_dir执行shutil.rmtree清理重复运行同一目录前请确认无需保留旧产物。十、注意事项与扩展建议运行目录python -m方式要求从仓库根目录google-research/执行否则模块student_mentor_dataset_cleaning无法被导入快速验证官方示例将两个 epoch 参数设为 1配合默认max_iteration_count20即可在几分钟内跑通完整交替训练并观察早停行为如需彻底快速冒烟也可进一步调小--max_iteration_count模式选择softmax 模式开箱即用自动下载 MNISTtriplet 模式需要自行准备train_dataset_dircsv_path数据且当前实现标注为 work-in-progress近邻检索逻辑为占位实现依赖版本代码基于 TF2 eager 模式入口处调用tf.compat.v1.enable_eager_execution()建议在 TensorFlow 2.x 环境中运行requirements.txt中tensorflow2.0z的写法按 pip 语义会被视为2.0处理可扩展方向--student_initial_model参数已预留但尚未接入训练流程若需从预训练权重启动学生可从 main.py 与trainer.train()的调用处入手扩展噪声率与重采样参数当前为代码内硬编码noise_rate0.1、target_distribution_parameter0.01可在训练器实现中按需调整以适配不同噪声强度的数据集。赞分享人工智能深度学习NLP计算机视觉强化学习【免费下载链接】google-researchGoogle Research项目地址https://gitcode.com/gh_mirrors/go/google-research点击查看免费下载相关推荐PokemonRedExperiments训练数据清洗delete_empty_imgs.txt使用指南PokemonRedExperiments训练数据清洗delete_empty_imgs.txt使用指南 在使用强化学习Reinforcement Lear强化学习深度学习AI应用Gramophone性能优化如何构建高效的Baseline ProfileGramophone性能优化如何构建高效的Baseline Profile Gramophone是一款严格遵循Android标准采用media3和Mater如何快速实现YOLOv7训练数据清洗噪声样本自动检测与过滤方法如何快速实现YOLOv7训练数据清洗噪声样本自动检测与过滤方法 YOLOv7作为当前最先进的实时目标检测算法其模型性能高度依赖训练数据的质量。噪声样本的存在人工智能深度学习计算机视觉创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
