函数一:initializer=tf.random_uniform_initializer(-0.1, 0.1, seed=123)

tf.random_uniform_initializer

参数:

  • minval:一个 python 标量或一个标量张量。要生成的随机值范围的下限。
  • maxval:一个 python 标量或一个标量张量。要生成的随机值范围的上限。对于浮点类型默认为1。
  • seed:一个 Python 整数。用于创建随机种子。查看 tf.set_random_seed 的行为。
  • dtype:数据类型。

函数二:lstm = tf.contrib.rnn.LSTMCell(rnn_size, initializer=tf.random_uniform_initializer(-0.1, 0.1, seed=123))

  定义基本的lstm单元,rnn_size是lstm cell中的单元数,与输入向量的维度是一致的。根据输入的词向量,来定义维度。

函数三:lstms = tf.contrib.rnn.MultiRNNCell([get_lstm(rnn_size) for _ in range(rnn_num_layers)])

  用于实例化递归神经网络,rnncell由多个simple cell组成,返回值为输入张量或者张量列表

函数四:encoder_outputs, encoder_states = tf.nn.dynamic_rnn(lstms, encoder_embed, source_sequence_len, dtype=tf.float32)

  encoder_embed代表输入,[x,y,z]x代表batch的大小,y文本长度,z是embedding编码的长度。  

  source-sequence_len代表输入的文本长度,可以设置为[x,y],x代表最大长度,y是此次长度,我也没看太懂,之后继续补充:https://blog.csdn.net/u010223750/article/details/71079036

  encoder_outputs,每一个迭代隐状态的输出

  encode_states,代表最后的编码的码字context Vector(其长度有什么确定?后面再补充)

  补充:官方文档:

  'outputs' is a tensor of shape [batch_size, max_time, cell_state_size]

  'state' is a tensor of shape [batch_size, cell_state_size]

  我们用一个小例子来说明其用法,假设你的RNN的输入input是[2,20,128],其中2是batch_size,20是文本最大长度,128是embedding_size,可以看出,有两个example,我们假设第二个文本长度只有13,剩下的7个是使用0-padding方法填充的。dynamic返回的是两个参数:outputs,last_states,其中outputs是[2,20,128],也就是每一个迭代隐状态的输出,last_states是由(c,h)组成的tuple,均为[batch,128]

  因此context vector的输出的长度为embedding编码的长度。

函数五:tf.identity

  看例子:https://blog.csdn.net/hu_guan_jie/article/details/78495297

  自己理解作用,通过tf.identity,在图中只有operation才会执行,因此通过简单的y=x赋值,在图中并不会执行,因此需要定义一个operation,在图中形成一个节点,tf.identity是返回一个一   模一样新的tensor的op,这会增加一个新节点到gragh中。

函数六:masks = tf.sequence_mask(target_sequence_len, max_target_sequence_len, dtype=tf.float32, name="masks")

  返回一个表示每个单元的前N个位置的mask张量。

  示例:

  tf.sequence_mask([1, 3, 2], 5) # [[True, False, False, False, False],

                 # [True, True, True, False, False],

                 # [True, True, False, False, False]]

  tf.sequence_mask([[1, 3],[2,0]]) # [[[True, False, False],

                  # [True, True, True]],

                 # [[True, True, False],

                   # [False, False, False]]]

函数七:encoder_embed = tf.contrib.layers.embed_sequence(rnn_inputs, source_vocab_size, encoder_embedding_size)

  tf.contrib.layers.embed_sequence(ids, vocab_size,  embed_dim)

  ids: 形状为[batch_size, doc_length]的int32或int64张量,也就是经过预处理的输入数据。

  vocab_size: 输入数据的总词汇量,指的是总共有多少类词汇,不是总个数

  embed_dim:想要得到的嵌入矩阵的维度

  返回值:Tensor of [batch_size, doc_length, embed_dim] with embedded sequences.

  

 

  

tensorflow实现lstm中遇到的函数记录的更多相关文章

  1. Swift中关于集合计算的几种函数记录(intersect、symmetricDifference、union、subtract)

    很久之前用过一次,后来就忘了...扎心,现在记录一下 PS:这几种函数其实不限于swift内的,在JavaScript.python.DB等其他语言,应该也有类似用法,这里我只简单讲了在swift内的 ...

  2. Tensorflow中的run()函数

    1 run()函数存在的意义 run()函数可以让代码变得更加简洁,在搭建神经网络(一)中,经历了数据集准备.前向传播过程设计.损失函数及反向传播过程设计等三个过程,形成计算网络,再通过会话tf.Se ...

  3. numpy函数库中一些常用函数的记录

    ##numpy函数库中一些常用函数的记录 最近才开始接触Python,python中为我们提供了大量的库,不太熟悉,因此在<机器学习实战>的学习中,对遇到的一些函数的用法进行记录. (1) ...

  4. 【tensorflow基础】tensorflow中 tf.reduce_mean函数

    参考 1. tensorflow中 tf.reduce_mean函数: 完

  5. 第二十一节,使用TensorFlow实现LSTM和GRU网络

    本节主要介绍在TensorFlow中实现LSTM以及GRU网络. 一 LSTM网络 Long Short Term 网络—— 一般就叫做 LSTM ——是一种 RNN 特殊的类型,可以学习长期依赖信息 ...

  6. Tensorflow的基本概念与常用函数

    Tensorflow一些常用基本概念与函数(一) 1.tensorflow的基本运作 为了快速的熟悉TensorFlow编程,下面从一段简单的代码开始: import tensorflow as tf ...

  7. Tensorflow一些常用基本概念与函数(二)

    1.tensorflow的基本运作 为了快速的熟悉TensorFlow编程,下面从一段简单的代码开始: import tensorflow as tf #定义‘符号’变量,也称为占位符 a = tf. ...

  8. Tensorflow一些常用基本概念与函数(三)

    摘要:本系列主要对tf的一些常用概念与方法进行描述.本文主要针对tensorflow的数据IO.图的运行等相关函数进行讲解.为‘Tensorflow一些常用基本概念与函数’系列之三. 1.序言 本文所 ...

  9. Tensorflow一些常用基本概念与函数(四)

    摘要:本系列主要对tf的一些常用概念与方法进行描述.本文主要针对tensorflow的模型训练Training与测试Testing等相关函数进行讲解.为‘Tensorflow一些常用基本概念与函数’系 ...

随机推荐

  1. VS Code项目中通过npm包的方式共享代码片段的方案实现

    VS Code项目中通过npm包的方式共享代码片段的方案实现 上周在 "VS Code项目中共享自定义的代码片段方案" 的文章中提到过一个共享代码片段的方案,上周经过调研后并没有发 ...

  2. 求求你,别问了,Java字符串是不可变的

    最近,又有好几个小伙伴问我这个问题:"二哥,为什么 Java 的 String 要设计成不可变的啊?"说实话,这也是一道非常经典的面试题,面试官超喜欢问.我之前写过这方面的文章,现 ...

  3. Python format格式化函数

    参考资料:https://www.runoob.com/python/att-string-format.html 在学习Python的时候碰到了一个很有趣的格式化输入的技巧,下面记录在此. Pyth ...

  4. Android学习笔记.9.png格式图片

    .9.png可以保证图片在合适的位置进行局部拉伸,避免了图片全局缩放造成的图片变形问题.AS提供了制作点9图片的便捷入口,并且会检查你的.9图是否有不合理的拉伸区域. 选中图片点击create 9-p ...

  5. 【解读】TCP三次握手和四次挥手

    TCP有6种标识:    1.SYN(建立连接) 2.ACK(确认) 3.PSH(传送) 4.FIN(结束) 5.RST(重置) 6.URG(紧急) 一.TCP三次握手   第一次握手(发送:连接请求 ...

  6. elasticserach数据库深度分页查询的原理

    深度分页存在的问题 https://segmentfault.com/a/1190000019004316?utm_source=tag-newest 在实际应用中,分页是必不可少的,例如,前端页面展 ...

  7. Spring事务深入剖析--spring事务失效的原因

    之前我们讲的分布式事务的调用都是在一个service中的事务方法,去调用另外一个service中的业务方法, 如果在一个sevice中存在两个分布式事务方法,在一个seivice中两个事务方法相互嵌套 ...

  8. shell编程之系统环境变量2

    本课程是<Tony老师聊shell——变量>课程的延续,主要介绍Linux shell编程基础中的运算符.包括declare命令.数值运算方法和变量测试.首先在declare命令中介绍了数 ...

  9. 弹性配置为构建提速 - CODING & 腾讯云 CVM 最佳实践

    CODING 中提供了内置云主机用来执行持续集成(CI)中的构建计划,能够胜任大部分构建任务.但如果碰上了大型项目的构建,或者需要在本地服务器生成构建成果,单个计算资源就显得有点捉急了.针对这一部分需 ...

  10. "该公众号暂时无法提供服务,请稍后再试"的问题

    倒腾了好久,对微信公众号也不是很熟悉.不知道怎么看问题,php学的也不久. 1.定位问题. 网上找了很久,最后找到两种定位问题的方式. a.https://blog.csdn.net/qq_28506 ...