Tensorflow 使用Bidirectional()包装器构建双向LSTM模型,预测DNA序列功能
循环神经网络(RNN)
循环神经网络RNN能处理时间序列,过去几年中,应用 RNN 在语音识别,语言建模,翻译,图片描述等问题上已经取得一定成功,并且这个列表还在增长。RNN模型的一个代表是LSTM ,这是一种特别的 RNN,比标准的 RNN 在很多的任务上都表现得更好,因此获得了非常多的应用。值得一提的是,lstm的作者也Jürgen Schmidhuber 也是机器学习领域的大牛,名气比三巨头稍微低一些。该大牛和GAN的发明者Ian Goodfellow 之间有些互怼冲突,感兴趣的朋友可以查看这个文章从PM到GAN——LSTM之父Schmidhuber横跨22年的怨念(文字版) 。
双向循环神经网络(BRNN)
RNN和LSTM都只能依据之前时刻的时序信息来预测下一时刻的输出,但在有些问题中,当前时刻的输出不仅和之前的状态有关,还可能和未来的状态有关系。比如预测一句话中缺失的单词不仅需要根据前文来判断,还需要考虑它后面的内容,真正做到基于上下文判断。BRNN有两个RNN上下叠加在一起组成的,输出由这两个RNN的状态共同决定。因此BRNN是综合前后的信息来训练模型,在DNA结构预测等应用很多。关于BRNN可以参考这篇文章通俗易懂理解——双向LSTM.
使用双向LSTM预测DNA序列
将DNA序列用one_hot编码后,使用lstm和卷积神经网络连用可以用来预测DNA的功能,本代码试图复制论文“DanQ: a hybrid convolutional and recurrent deep neural network for quantifying the function of DNA sequences (Nucleic Acids Research, 2016, Vol. 44, No. 11 e107)“的网络结构,供感兴趣大家参考。one-hot编码请看本人文章字符串(如DNA序列,蛋白质序列)的编码和用于机器学习和神经网络
网络结构:
代码:
import tensorflow as tf
from tensorflow.keras import datasets, layers, optimizers, Sequential, metrics
import numpy as np
from scipy import sparse
import osos.environ["CUDA_VISIBLE_DEVICES"] = "0"#导入要训练的数据
allmatrix = sparse.load_npz('allmatrix_sparse.npz').toarray().astype('float32') # 稀疏矩阵存储的数据
allmatrix = allmatrix.reshape(21030, 2000, 4) # one-hot编码
target = np.load('target.txt.npy')x = tf.convert_to_tensor(allmatrix)
y = tf.convert_to_tensor(target, dtype=tf.int32)# 分训练集,验证集,测试集(70:10:20)
idx = tf.range(allmatrix.shape[0])
idx = tf.random.shuffle(idx)
x_train, y_train = tf.gather(x, idx[:int(0.7 * len(idx))]), tf.gather(y, idx[:int(0.7 * len(idx))])
x_val, y_val = tf.gather(x, idx[int(0.7 * len(idx)):int(0.8 * len(idx))]), tf.gather(y, idx[int(0.7 * len(idx)):int(0.8 * len(idx))])
x_test, y_test = tf.gather(x, idx[int(0.8 * len(idx)):]), tf.gather(y, idx[int(0.8 * len(idx)):])batchsz = 256db = tf.data.Dataset.from_tensor_slices((x_train, y_train))
db = db.shuffle(6000).batch(batchsz).repeat()
db_val = tf.data.Dataset.from_tensor_slices((x_val, y_val))
db_val = db_val.batch(batchsz)
db_test = tf.data.Dataset.from_tensor_slices((x_test, y_test))
db_test = db_test.batch(batchsz)#构建双向LSTM
forward_lstm = layers.LSTM(320, return_sequences=True, unroll=True) # go_backwards 默认为false
backward_lstm = layers.LSTM(320,go_backwards=True,return_sequences=True, unroll=True)# 注意前后lstm的 go_backwards 必须设置不同,一个为false一个为truebrnn = layers.Bidirectional(forward_lstm,merge_mode='concat',backward_layer=backward_lstm)# 构建全局网络,包含卷积层,池化层,双向LSTM层
network = Sequential([layers.Conv1D(320, kernel_size=26, padding='valid', activation=tf.nn.relu), #1D卷积layers.MaxPooling1D(13, 13), # 1D 池化层layers.Dropout(0.2),brnn, # 双向lstmlayers.Flatten(),layers.Dense(64, activation=tf.nn.relu), layers.Dropout(0.4),layers.Dense(1, activation='sigmoid')])
# 查看网络结构
network.build(input_shape=(None, 2000, 4))
network.summary()# 编译网络
network.compile(optimizer=optimizers.Adam(lr=0.5),loss=tf.keras.losses.BinaryCrossentropy(),metrics=['accuracy'])
# 训练网络
network.fit(db, epochs=200, validation_data=db_val,validation_steps=2, steps_per_epoch=x_train.shape[0]//batchsz)# 测试网络
network.evaluate(db_test)
Tensorflow 使用Bidirectional()包装器构建双向LSTM模型,预测DNA序列功能相关推荐
- 猿创征文丨深度学习基于双向LSTM模型完成文本分类任务
大家好,我是猿童学,本期猿创征文的第三期,也是最后一期,给大家带来神经网络中的循环神经网络案例,基于双向LSTM模型完成文本分类任务,数据集来自kaggle,对电影评论进行文本分类. 电影评论可以蕴含 ...
- 深度学习基于双向 LSTM 模型完成文本分类任务
大家好,本期给大家带来神经网络中的循环神经网络案例,基于双向LSTM模型完成文本分类任务,数据集来自kaggle,对电影评论进行文本分类. 电影评论可以蕴含丰富的情感:比如喜欢.讨厌.等等.情感分析( ...
- LSTM模型、双向LSTM模型以及模型输入输出的理解
循环神经网路(RNN)在工作时一个重要的优点在于,其能够在输入和输出序列之间的映射过程中利用上下文相关信息.然而不幸的是,标准的循环神经网络(RNN)能够存取的上下文信息范围很有限.这个问题就使得隐含 ...
- 深度学习多变量时间序列预测:LSTM算法构建时间序列多变量模型预测交通流量+代码实战
深度学习多变量时间序列预测:LSTM算法构建时间序列多变量模型预测交通流量+代码实战 LSTM(Long Short Term Memory Network)长短时记忆网络,是一种改进之后的循环神经网 ...
- 深度学习多变量时间序列预测:Encoder-Decoder LSTM算法构建时间序列多变量模型预测交通流量+代码实战
深度学习多变量时间序列预测:Encoder-Decoder LSTM算法构建时间序列多变量模型预测交通流量+代码实战 LSTM是一种时间递归神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要 ...
- 【火炉炼AI】机器学习006-用决策树回归器构建房价评估模型
[火炉炼AI]机器学习006-用决策树回归器构建房价评估模型 (本文所使用的Python库和版本号: Python 3.5, Numpy 1.14, scikit-learn 0.19, matplo ...
- 【ML】基于机器学习的房价预测研究(系列7:双向LSTM模型)
写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌. 本次实战的项目是:基于机器学习的房价预测研究(附完整代 ...
- 使用深度双向LSTM模型构造社区问答系统
/* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/ author: 张俊林 关于社区问答系统的问题背景,我们在之前的"利用卷积神经网络构造社区问答系统"一文里 ...
- 时间序列深度学习:状态 LSTM 模型预测太阳黑子
目录 时间序列深度学习:状态 LSTM 模型预测太阳黑子 教程概览 商业应用 长短期记忆(LSTM)模型 太阳黑子数据集 构建 LSTM 模型预测太阳黑子 1 若干相关包 2 数据 3 探索性数据分析 ...
最新文章
- 《JUnit实战(第2版)》—第2章2.4节用Suite来组合测试
- Pat乙级 1038 统计同成绩学生
- PAT甲级1048 Find Coins :[C++题解]哈希表、两个硬币之和为定值
- 什么是元宇宙?为何要关注它?
- Python里的map、reduce、filter、lambda、列表推导式
- 【操作系统复习】中断和异常
- SpringMVC 集成 mybatisPlus
- 利用Octopress搭建一个Github博客
- MyBatis中使用LIKE关键字模糊查询
- javaWeb三大框架总结
- C#中反射的使用(How to use reflect in CSharp)(3)Emit的使用
- foxmail邮件加载失败重试_Foxmail提示错误的解决方案
- JavaScript BOM基础
- poj2054 Color a Tree
- Linux - 虚拟网络设备- TUN,TAP,ip tunnel
- jetson nano使用python读取解析GPS数据(GPRMC,GPGGA)。
- php下载安装教程,PHP for Windows安装图文详细教程
- 0基础学SQL-Task02 SQL基础查询与排序(共7节)
- android ppt 转图片显示不全,ppt转pdf图片显示不全怎么办 这两种方法供您参考
- 专访:InMobi全球CEO Naveen Tewari