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

一、实验要求

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

二、实验目的

 

  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.rhkb.cn/news/438169.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css 数字比汉字要靠上

这个问题通常是由于数字字体的下排的问题造成的,也就是数字的底部边缘位置比汉字的顶部边缘位置更靠下。为了解决这个问题,可以尝试以下几种方法: 使用CSS的vertical-align属性来调整对齐方式。例如,可以将数字的对齐方式设置为to…

Linux高级编程_27_系统调用

文章目录 系统调用函数分类系统编程概述系统调用概述**类UNIX系统的软件层次** 用户态和内核态系统调用与库函数的关系文件操作符概述文件磁盘权限 系统调用之文件操作open:打开文件close:关闭文件write:写入read:读取 文件状态fcntl 函数stat 函数 st_mode的值示例 1&#xff…

【优选算法之队列+宽搜/优先级队列】No.14--- 经典队列+宽搜/优先级队列算法

文章目录 前言一、队列宽搜示例:1.1 N 叉树的层序遍历1.2 ⼆叉树的锯⻮形层序遍历1.3 ⼆叉树最⼤宽度1.4 在每个树⾏中找最⼤值 二、优先级队列(堆)示例:2.1 最后⼀块⽯头的重量2.2 数据流中的第 K ⼤元素2.3 前 K 个⾼频单词2.4 …

数造科技入选中国信通院《高质量数字化转型产品及服务全景图》三大板块

9月24日,2024大模型数字生态发展大会暨“铸基计划”年中会议在北京召开。会上,中国信通院发布了2024年《高质量数字化转型产品及服务全景图(上半年度)》和《高质量数字化转型技术解决方案(上半年度)》等多项…

网络编程篇:UDP协议

一 UDP协议格式 16位源端口号:表示数据从哪里来。16位目的端口号:表示数据要到哪里去。16位UDP长度:表示整个数据报(UDP首部UDP数据)的长度。16位UDP检验和:如果UDP报文的检验和出错,就会直接将…

【Kubernetes】常见面试题汇总(五十三)

目录 118. pod 状态为 ErrlmagePull ? 119.探测存活 pod 状态为 CrashLoopBackOff ? 特别说明: 题目 1-68 属于【Kubernetes】的常规概念题,即 “ 汇总(一)~(二十二)” 。…

MongoDB聚合操作及索引底层原理

目录 链接:https://note.youdao.com/ynoteshare/index.html?id=50fdb657a9b06950fa255a82555b44a6&type=note&_time=1727951783296 本节课的内容: 聚合操作: 聚合管道操作: ​编辑 $match 进行文档筛选 ​编辑 将筛选和投影结合使用: ​编辑 多条件匹配: …

Springboot + netty + rabbitmq + myBatis

目录 0.为什么用消息队列1.代码文件创建结构2.pom.xml文件3.三个配置文件开发和生产环境4.Rabbitmq 基础配置类 TtlQueueConfig5.建立netty服务器 rabbitmq消息生产者6.建立常规队列的消费者 Consumer7.建立死信队列的消费者 DeadLetterConsumer8.建立mapper.xml文件9.建立map…

King3399 SDK(ubuntu文件系统)编译简明教程

该文章仅供参考,编写人不对任务实验设备、人员及测量结果负责!!! 0 引言 文章主要介绍King3399(瑞芯微rk3399开发板,荣品)官方SDK(Ubuntu文件系统)编译过程&#xff0c…

【本地免费】SimpleTex 图像识别latex公式

文章目录 相关教程相关文献安装教程 由于mathpix开始收费了,于是本文将介绍一款目前本地免费的SimpleTex工具 相关教程 【超详细安装教程】LaTeX-OCR 图像识别latex公式(开源免费)_latex图片识别-CSDN博客 相关文献 SimpleTex主页——致力…

Elasticsearch使用Easy-Es + RestHighLevelClient实现深度分页跳页

注意!!!博主只在测试环境试了一下,没有发到生产环境跑。因为代码还没写完客户说不用弄了( •̩̩̩̩_•̩̩̩̩ ) 也好,少个功能少点BUG 使用from size的时候发现存在max_result_window10000的限制&…

薄膜凸起和开裂是同一种应力导致的吗?

知识星球里的学员问:我们产线上薄膜出了质量问题,都一概归结为应力过大。麻烦讲讲应力的种类,以及不同种类的应力会造成哪些薄膜问题? 内应力的种类? 内应力的分类很多,如果我们按作用的效果来分&#xff…

树莓派 AI 摄像头(Raspberry Pi AI Camera)教程

系列文章目录 前言 人们使用 Raspberry Pi 产品构建人工智能项目的时间几乎与我们生产 Raspberry Pi 的时间一样长。随着我们发布功能越来越强大的设备,我们能够支持的原生应用范围也在不断扩大;但无论哪一代产品,总会有一些工作负载需要外部…

嵌入式外设应用(代码)

文章目录 1. 工业自动化2. 智能家居设备3. 汽车电子4. 生命体征监测仪5. 物联网应用 嵌入式外设应用广泛,有很多应用领域: 1. 工业自动化 应用场景:使用传感器监测设备状态,控制电机的启动和停止。 示例代码: #inc…

Stream流的终结方法(二)——collect

1.Stream流的终结方法 2. collect方法 collect方法用于收集流中的数据放到集合中去,可以将流中的数据放到List,Set,Map集合中 2.1 将流中的数据收集到List集合中 package com.njau.d10_my_stream;import java.util.*; import java.util.f…

SSL VPN | Easyconnect下载安装使用 (详尽)

EasyConnect是一款远程连接工具,为用户提供简便、快捷的远程访问和控制解决方案。 目录 下载 安装 使用 卸载 下载 通过链接进入官网技术支持板块 深信服技术支持-简单、高效、自助化服务 (sangfor.com.cn)https://support.sangfor.com.cn/ 选择软件下载 在安…

ElasticSearch学习笔记(三)Ubuntu 2204 server elasticsearch集群配置

如果你只是学习elasticsearch的增、删、改、查等相关操作,那么在windows上安装一个ES就可以了。但是你如果想在你的生产环境中使用Elasticsearch提供的强大的功能,那么还是建议你使用Linux操作系统。 本文以在Ubuntu 2204 server中安装elasticsearch 8.…

Redis:hash类型

Redis:hash类型 hash命令设置与读取HSETHGETHMGET 哈希操作HEXISTSHDELHKEYSHVALSHGETALLHLENHSETNXHINCRBYHINCRBYFLOAT 内部编码ziplisthashtable 目前主流的编程语言中,几乎都提供了哈希表相关的容器,Redis自然也会支持对应的内容&#xf…

【Godot4.3】用2D网格模拟一点透视

概述 空间的透视是可以在二维平面上参数化计算和模拟的。本篇基于CanvasItem绘制函数draw_colored_polygon()自带的UV坐标和贴图功能,实现基础的平行透视效果。 或者可以叫做一点透视,由一个消失点决定物体的透视效果。 测试代码 extends Node2Dvar re…

【课程学习】Wireless Communications

Goldsmith A. Wireless communications[M]. Cambridge university press, 2005. Wireless Communications 无线通信课程 文章目录 2-Path Loss, Shadowing, and Multipath2.4-Two-Ray Multipath Model时延扩展 delay spread P33 3-Statistical Multipath Channel Models3.3-Wid…