Tensorflow与RNN、双向LSTM等的踩坑记录及解决


Posted in Python onMay 31, 2021

1、tensorflow(不定长)文本序列读取与解析

tensorflow读取csv时需要指定各列的数据类型。

但是对于RNN这种接受序列输入的模型来说,一条序列的长度是不固定。这时如果使用csv存储序列数据,应当首先将特征序列拼接成一列。

例如两条数据序列,第一项是标签,之后是特征序列

[0, 1.1, 1.2, 2.3] 转换成 [0, '1.1_1.2_2.3']

[1, 1.0, 2.5, 1.6, 3.2, 4.5] 转换成 [1, '1.0_2.5_1.6_3.2_4.5']

这样每条数据都只包含固定两列了。

读取方式是指定第二列为字符串类型,再将字符串按照'_'分割并转换为数字。

关键的几行代码示例如下:

def readMyFileFormat(fileNameQueue):
    reader = tf.TextLineReader()
    key, value = reader.read(fileNameQueue)

    record_defaults = [["Null"], [-1], ["Null"], ["Null"], [-1]]
    phone1, seqlen, ts_diff_strseq, t_cod_strseq, userlabel = tf.decode_csv(value, record_defaults=record_defaults)
    ts_diff_str = tf.string_split([ts_diff_strseq], delimiter='_')
    t_cod_str = tf.string_split([t_cod_strseq], delimiter='_')
    # 每个字符串转数字
    Str2Float = lambda string: tf.string_to_number(string, tf.float32)
    Str2Int = lambda string: tf.string_to_number(string, tf.int32)
    ts_diff_seq = tf.map_fn(Str2Float, ts_diff_str.values, dtype = tf.float32) # 一定要加上dtype,且必须与fn的输出类型一致
    t_cod_seq = tf.map_fn(Str2Int, t_cod_str.values, dtype = tf.int32)

2、时序建模的序列预测、序列拟合、标签预测,及输入数据格式

序列预测、拟合的“标签”都是序列本身,区别是未来时刻或者是当前时刻,当前时刻的拟合任务类似于antoencoder的reconstruction

标签预测常见于语言学建模,有单词级标签的分词与整句标签的情感分析,前者需要对每一个单词输入都要输出其分词标识,后者是取最后若干输出级联前馈神经网络分类器

keras的输入-输出对:需要将序列拆分成多个片段

序列形式:

按时间列表:static_bidirectional_rnn

多维数组:bidirectional_dynamic_rnn与stack_bidirectional_dynamic_rnn 变长双向rnn的正确使用姿势

3、多任务设置及相应的输出向量划分

对于标签预测任务,按需取输出即可

对于序列预测、拟合:

双向lstm:通常用于拟合。但如果需要捕捉动态信息,尽管需要序列完整输入,则仍可以加上正向预测与反向预测

单向lstm:拟合与预测

4、zero padding

后一般需要通过tf.boolean_mask()隔离这些零的影响,函数输入包括数据矩阵和补零位置的指示矩阵。

5、get_shape()方法

与 tf.shape() 类型区别,前者得到一个list,后者得到一个tensor

6、双向LSTM的信息瓶颈的解决

Tensorflow与RNN、双向LSTM等的踩坑记录及解决

如果在时间步的最后输出,则可能会导致开始的一些字符被遗忘门给遗忘。

所以这里就对每个时间步的输出做出了处理,

主要处理有:

1、拼接:把所有的输出拼接在一起。

2、Average

3、Pooling

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
Oct 29 Python
Python2.X/Python3.X中urllib库区别讲解
Dec 19 Python
Python多线程原理与用法详解
Aug 20 Python
virtualenv 指定 python 解释器的版本方法
Oct 25 Python
Python 一句话生成字母表的方法
Jan 02 Python
Python 进程之间共享数据(全局变量)的方法
Jul 16 Python
python实现连连看辅助之图像识别延伸
Jul 17 Python
Python中list的交、并、差集获取方法示例
Aug 01 Python
Python实现的微信红包提醒功能示例
Aug 22 Python
Django model重写save方法及update踩坑详解
Jul 27 Python
python实现简单的学生管理系统
Feb 22 Python
windows安装python超详细图文教程
May 21 Python
Python数据类型最全知识总结
May 31 #Python
教你怎么用Python操作MySql数据库
Django集成富文本编辑器summernote的实现步骤
Python基础知识学习之类的继承
May 31 #Python
Django实现聊天机器人
Python趣味挑战之教你用pygame画进度条
Python趣味挑战之用pygame实现简单的金币旋转效果
May 31 #Python
You might like
PHP IPV6正则表达式验证代码
2010/02/16 PHP
深入了解PHP类Class的概念
2012/06/14 PHP
php bootstrap实现简单登录
2016/03/08 PHP
javascript parseInt 函数分析(转)
2009/03/21 Javascript
IE7中javascript操作CheckBox的checked=true不打勾的解决方法
2009/12/07 Javascript
一个收集图片的bookmarlet(js 刷新页面中的图片)
2010/05/27 Javascript
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
2013/06/25 Javascript
javascript 小数取整简单实现方式
2014/05/30 Javascript
javascript实现左右控制无缝滚动
2014/12/31 Javascript
javaScript中push函数用法实例分析
2015/06/08 Javascript
在Node.js应用中使用Redis的方法简介
2015/06/24 Javascript
JavaScript中SetInterval与setTimeout的用法详解
2015/11/10 Javascript
基于jquery fly插件实现加入购物车抛物线动画效果
2016/04/05 Javascript
移动端日期插件Mobiscroll.js使用详解
2016/12/19 Javascript
基于JavaScript实现复选框的全选和取消全选
2017/02/09 Javascript
JavaScript正则获取地址栏中参数的方法
2017/03/02 Javascript
关于foreach循环中遇到的问题小结
2017/05/08 Javascript
使用JavaScript实现node.js中的path.join方法
2018/08/12 Javascript
JS原生带缩略图的图片切换效果
2018/10/10 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
vue draggable resizable gorkys与v-chart使用与总结
2019/09/05 Javascript
Python求解平方根的方法
2015/03/11 Python
Python实现在线音乐播放器
2017/03/03 Python
Python下载网络文本数据到本地内存的四种实现方法示例
2018/02/05 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
python基于三阶贝塞尔曲线的数据平滑算法
2019/12/27 Python
基于python的docx模块处理word和WPS的docx格式文件方式
2020/02/13 Python
利用CSS3实现进度条的两种姿势详解
2017/03/21 HTML / CSS
产品工艺师的岗位职责
2013/11/15 职场文书
小学新学期寄语
2014/04/02 职场文书
商务英语专业大学生职业生涯规划书
2014/09/14 职场文书
2014年十一国庆节活动方案
2014/09/16 职场文书
2014年信访维稳工作总结
2014/12/08 职场文书
2016年推广普通话宣传周活动总结
2016/04/06 职场文书
干货干货!2019最新优秀创业计划书
2019/03/21 职场文书
php 原生分页
2021/04/01 PHP