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 os

os.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 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值