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

news/2024/10/8 11:51:40/

一、实验要求

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

二、实验目的

 

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

三、实验过程

 

1.搭建模型

模型结构如下:

a2cb11ec52e34866ab6b361796bd3434.png

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

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

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

 c8ebe6a9d04f4a90bf249ef6fcc5b2a9.png

初始化方法‘__init__’:定义了模型的结构和超参数。

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

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

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

 3a10322de9fa40b9987ab287f406feee.png

 

卷积块(conv_block_1, conv_block_2, conv_block_3):

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

6d5ab150241f4347afc48ce6c959db91.png

扩张卷积块 (self.dilations):

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

ac83165d95ef436693f42905d61d4900.png

线性层 (conv_block_5):

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

 bd0bcb0ed2634ff78c9ca7904f431caa.png

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

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

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

 60210f2a132a4b6ba84eebf82b073b13.png

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

d2a3be1b86c84faab9d979e2f4a3ca2f.png

__init__ 方法:

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

2ffe7a403e7542fc8eb8194e6e3b18b6.png 

 

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

__len__ 方法:返回数据集的长度

8a732ed1618b4de38d4ede822f4f487b.png

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

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

用MyDataset类加载需使用的数据

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

 08093a7e01e14d53b9fe647d914eed2c.png

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

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

 ddc88bdf1a7b4b59892a0470cb2a7f65.png

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

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

548e6418d2fd4bb2b35d2cb6424d665b.png

 

模型评估:

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

f69522dd9b2a4ec0abf7e0a632cd7a98.png

2)运行程序

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

解压相关数据文件

dd6b8b0372ac4062aa404e14eca0ced2.png

c1a6812c0c8144f4b402221ce4a6103e.png

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

 61cba0527d114893a999876c61da8391.png

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

53c88d4067ac41ad8a8cc0bf3edd5a38.png

551e67497e2d446ea6111815dce48aa4.png

四、实验结果 

本实验中的相关数据

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

运行结果:

fc23a8e1a7c54b77b13d3d52e1cb3333.png

五、实验总结

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

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

 


http://www.ppmy.cn/news/1536101.html

相关文章

【AIGC】ChatGPT提示词Prompt高效编写模式:结构化Prompt、提示词生成器与单样本/少样本提示

💯前言 在如今AI技术迅猛发展的背景下,尽管像ChatGPT这样的大型语言模型具备强大的生成能力,但它们的输出质量有时仍难以完全满足我们的预期。为了让ChatGPT生成更加准确、可靠的内容,掌握高效的Prompt编写技巧变得尤为重要。本文…

GAN生成对抗网络介绍

系列文章目录 目录 前言 二、组成 三、思想 四、应用 五、基本原理 1、生成器G 2、判别器D 3、训练过程 4、核心公式(目标函数或者损失函数) 总结 前言 生成对抗网络(Generative Adversarial Networks,简称GANs&#x…

OpenAI 开发者大会!实时语音功能有API了,GPT-4o支持多模态微调,上下文cache功能上线

家人们!十一假期第1天, OpenAI一年一度的开发者大会又来了惹!今年的开发者大会分成三部分分别在美国、英国、新加坡三个地点举办,刚刚结束的是第一场。 去年的OpenAI开发者大会公布了GPT-4 Turbo和GPTs,今年没有大更新…

随着硬件水平的提升,LabVIEW有哪些过去的编程方法被淘汰掉了

随着硬件水平的不断提升,尤其是处理器性能、存储能力、通信速度等方面的飞跃,LabVIEW的一些早期编程方法逐渐被更高效、现代的编程技术所取代。以下是一些随着硬件升级而逐步淘汰的LabVIEW编程方法和技术: 1. 低效的数据流传输方式 过去由于…

基于深度学习的动作识别与分类

基于深度学习的动作识别与分类是指通过深度学习模型从视频或传感器数据中自动识别和分类人类动作的过程。这项技术广泛应用于视频监控、安全监控、体育分析、医疗康复、虚拟现实(VR)和增强现实(AR)等领域。以下是基于深度学习的动…

SpringBoot基础(三):Logback日志

SpringBoot基础系列文章 SpringBoot基础(一):快速入门 SpringBoot基础(二):配置文件详解 SpringBoot基础(三):Logback日志 目录 一、日志依赖二、日志格式1、记录日志2、默认输出格式3、springboot默认日志配置 三、日志级别1、基础设置2、…

【60天备战2024年11月软考高级系统架构设计师——第39天:性能优化与高可用设计】

高可用性是云架构的重要目标之一,确保系统在任何情况下都能提供服务。 高可用设计的关键策略 冗余部署:在多个可用区或数据中心部署冗余实例,以防止单点故障。故障转移机制:设计故障检测与转移策略,确保在故障发生时…

李宏毅深度学习-循环神经网络RNN

Recurrent Neural Network 这个问题可以使用一个前馈神经网络(feedforward neural network)来解,如图5.2 所示, 输入是一个单词,把“上海”变成一个向量,“丢”到这个神经网络里面。输入是一个单词&#x…