Pytorch实现玉米基因表达量预测模型

一、实验要求

通过搭建残差卷积网络,实现对玉米基因表达量的预测

二、实验目的

  1. 理解基因表达量预测问题:基因表达预测是生物信息学和基因组学领域中的重要任务之一,促进学科交叉融合。
  2. 熟悉深度学习框架PyTorch:通过实现基因表达量预测模型,学习如何使用PyTorch构建、训练和评估深度学习模型。
  3. 掌握处理基因表达数据的基本技术:包括数据预处理、模型设计、训练和评估等。

三、实验过程

1.搭建模型

模型结构如下:

使用PyTorch定义了一个用于回归任务的神经网络模型。模型结构是一个卷积神经网络(CNN),先在一个数据集上进行训练,使用均方误差损失,并在验证集上监控训练进度。最后,在测试集上评估模型性能,计算皮尔逊相关系数和R平方等性能指标。下面对代码进行解读:

BasenjiModel 类:定义了基因表达量预测模型。

其包含多个卷积块、池化层、批归一化、Dropout等层的堆叠,以及GELU激活函数。

初始化方法'init':定义了模型的结构和超参数。

输入参数包括目标数量、输入通道数量,以及多个卷积块的相关参数。

其中,conv1kc, conv2kc, conv3kc是卷积核数量,conv1ks, conv2ks, conv3ks是卷积核大小,conv1st, conv2st, conv3st是步幅,conv1pd, conv2pd, conv3pd是填充,pool1ks, pool2ks, pool3ks是池化大小,pdrop1, pdrop2, pdrop3是丢弃率。

convdc是扩张卷积块数量,convdkc是扩张卷积核数量,convdks是扩张卷积核大小

卷积块(conv_block_1 , conv_block_2, conv_block_3):

每个块包括 GELU 激活、卷积、批归一化、最大池化和丢弃层。

扩张卷积块 (self.dilations ):

通过循环创建了多个扩张卷积块,每个块包括扩张卷积、批归一化、GELU激活、1*1卷积、批归一化和丢弃层。

线性层 (conv_block_5 ):

这部分包括 GELU 激活、Flatten 操作、线性层和丢弃。用于将卷积块的输出映射到目标数量。

truncated_normal方法:使用正态分布初始化权重

Forward方法:前向传播,接受一个输入序列,通过卷积块和扩张卷积块,返回最终的输出

Compile方法:将模型移动到指定的设备

MyDataset类: 加载数据集,从指定目录中的文件中读取数据

init 方法:

首先,循环遍历路径下的所有文件,每个文件包含两个 NumPy 数组,一个用于输入 'arr_0',一个用于标签 'arr_1'。将所有输入和标签张量连接成一个大的张量,作为数据集的输入和标签

getitem 方法:返回一个元组,包含索引对应位置的输入张量和标签张量,用于按索引获取数据集中的单个样本

****len 方法:****返回数据集的长度

训练过程:对模型进行多个epoch的训练,并在每个epoch结束时用验证集对模型进行评估

设置超参:训练总轮数:EPOCH=10,每个批次的样本数量:BATCH_SIZE=32

用MyDataset类加载需使用的数据

其中,shuffle=True 表示在每个 epoch 开始时是否打乱数据

在训练循环中,用tqdm创建进度条将训练进程可视化

在训练batch时,首先将图像和标签传输到指定device,然后清空模型的梯度,接着对模型进行前向推理,计算损失,随后进行反向传播,更新模型的参数,并用进度条显示进程完成度。

如果当前epoch是最后一个batch,将进行验证集评估

先关闭模型的训练状态,避免模型权重更新。随后对验证集的DataLoader进行迭代,过程和训练过程类似,将输入和标签移动到指定设备,随后进行前向传播计算验证损失,记录验证损失和验证Pearson相关系数,接着更新进度条,显示当前epoch的训练损失、验证损失和验证pcc。

模型评估:

首先,将模型设置为评估模式,不更新权重。然后对测试集DataLoader进行迭代,通过前向传播,得到模型对测试集的预测。随后,计算测试集的皮尔逊相关系数和R平方评价模型,并打印出,画出测试集上真实值和预测值之间的散点图。

2)运行程序

在itc平台上,按要求将训练集、验证集和测试集数据放到对应文件夹中运行程序

解压相关数据文件

运行程序后报错,显示当前服务器内存不够

使用内存更大的服务器再次运行程序

四、实验结果

本实验中的相关数据

num_targets=1,n_channel=4

conv_block_1, conv_block_2, conv_block_3,conv_block_4,conv_block_5共五个卷积块

EPOCH=10,BATCH_SIZE=32

运行结果:

五、实验总结

在这次实验中,我了解了玉米基因表达量的预测任务,并通过残差卷积网络的搭建完成这一任务。实验中使用的网络结构为CNN,其中包括卷积层、批归一化层、激活函数和残差连接。模型能够捕获基因序列中的关键特征,从而实现对表达量的准确预测。

这次对实验代码并没有过多的修改,主要是理解程序流程等,加深将模型应用到实际问题的理解。在运行程序时遇到了之前实验中并没有出现的服务器内存不够的情况,也通过向有经验同学请教,学会了使用其他服务器,完成程序运行。这也让我更熟悉服务器的使用,比如如何上传数据,如何连接服务器等等,学到了很多有用的方法。并且,我也认识到基因表达量预测是一个具有挑战性的任务,不仅需要深度学习模型的灵活运用,还需要对生物学背景的理解。

相关推荐
郝同学今天有进步吗几秒前
构建 LangGraph Code Review Agent(七):实现规则匹配、Finding Guardrails 与 Markdown 报告
python·ai·fastapi·code review
科技圈快迅17 分钟前
在机场与高铁站:智能服务机器人正在深度对接业务系统,实现从信息孤岛到移动服务窗口的转变
大数据·人工智能·机器人
xuhe219 分钟前
一劳永逸!解决 AutoDL 系统盘(30GB)爆满与 pip 缓存迁移
linux·python·ai·jupyter
小企鹅么么26 分钟前
【AI应用开发工程师】第七章:Agent 工程与实践
人工智能
CIO_Alliance29 分钟前
AI+iPaaS解决方案:跨系统业务流程自动化助力企业AI化转型
运维·人工智能·自动化
综合资讯39 分钟前
2026年打开设备ETF的产品清单:八只同类,两只能买
人工智能·科技·芯片·半导体·科创
声讯电子40 分钟前
A-59 双麦双通道语音处理模块:重新定义全双工通话的极限性能
人工智能·语音识别·ai降噪·usb接口·回音消除
菜鸟‍43 分钟前
【论文学习】Frontiers in Physics 2024 || Cap2Seg:基于文本描述生成的 COVID-19 医学图像分割性能提升方法
人工智能·学习
陕西企来客44 分钟前
生成式引擎优化(GEO)行业白皮书:从流量分配到认知占有的战略跃迁
人工智能·算法·机器学习·技术好geo优化
梦想的颜色1 小时前
飞书 CLI + Skill 完全硬核指南|让 AI Agent 全自动操控飞书(消息 / 文档 / 日历 / 多维表)
人工智能·飞书·办公自动化·飞书 skill·飞书全自动工作流·agent 工具集成