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 相关文章推荐
python中的字典详细介绍
Sep 18 Python
Python聚类算法之凝聚层次聚类实例分析
Nov 20 Python
Python网络编程详解
Oct 31 Python
python生成圆形图片的方法
Mar 25 Python
Python在groupby分组后提取指定位置记录方法
Apr 20 Python
python pandas实现excel转为html格式的方法
Oct 23 Python
Python实现的KMeans聚类算法实例分析
Dec 29 Python
Python中Numpy ndarray的使用详解
May 24 Python
python模拟点击网页按钮实现方法
Feb 25 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
Sep 03 Python
python绘制分布折线图的示例
Sep 24 Python
Python+pyaudio实现音频控制示例详解
Jul 23 Python
Python数据类型最全知识总结
May 31 #Python
教你怎么用Python操作MySql数据库
Django集成富文本编辑器summernote的实现步骤
Python基础知识学习之类的继承
May 31 #Python
Django实现聊天机器人
Python趣味挑战之教你用pygame画进度条
Python趣味挑战之用pygame实现简单的金币旋转效果
May 31 #Python
You might like
咖啡知识 咖啡养豆要养多久 排气又是什么
2021/03/06 新手入门
php在线打包程序源码
2008/07/27 PHP
php中filter函数验证、过滤用户输入的数据
2014/01/13 PHP
浅谈php提交form表单
2015/07/01 PHP
实例讲解PHP中使用命名空间
2019/01/27 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
2019/10/30 PHP
Laravel 微信小程序后端实现用户登录的示例代码
2019/11/26 PHP
jquery之empty()与remove()区别说明
2010/09/10 Javascript
JS高级笔记
2011/07/13 Javascript
深入分析Cookie的安全性问题
2015/03/01 Javascript
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
javascript实现unicode与ASCII相互转换的方法
2015/12/10 Javascript
浅析Javascript匿名函数与自执行函数
2016/02/06 Javascript
JS实现非首屏图片延迟加载的示例
2018/01/06 Javascript
js实现一个页面多个倒计时的3种方法
2019/02/25 Javascript
React组件设计模式之组合组件应用实例分析
2020/04/29 Javascript
vue vant中picker组件的使用
2020/11/03 Javascript
JavaScript中常用的3种弹出提示框(alert、confirm、prompt)
2020/11/10 Javascript
[55:35]VGJ.S vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python中的localtime()方法使用详解
2015/05/22 Python
Python中条件判断语句的简单使用方法
2015/08/21 Python
Eclipse中Python开发环境搭建简单教程
2016/03/23 Python
python Django框架实现自定义表单提交
2016/03/25 Python
json跨域调用python的方法详解
2017/01/11 Python
Python网络编程 Python套接字编程
2017/09/13 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
2018/04/17 Python
Python中的字符串切片(截取字符串)的详解
2019/05/15 Python
Python使用configparser读取ini配置文件
2020/05/25 Python
Python数据可视化常用4大绘图库原理详解
2020/10/23 Python
python爬虫用scrapy获取影片的实例分析
2020/11/23 Python
瑞贝卡·明可弗包包官网:Rebecca Minkoff
2016/07/21 全球购物
先进党支部事迹材料
2014/01/13 职场文书
精通CAD能手自荐书
2014/01/31 职场文书
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android
SQLServer中exists和except用法介绍
2021/12/04 SQL Server
使用CSS定位HTML元素的实现方法
2022/07/07 HTML / CSS