tensorflow实现lstm中遇到的函数记录
函数一: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中遇到的函数记录的更多相关文章
- Swift中关于集合计算的几种函数记录(intersect、symmetricDifference、union、subtract)
很久之前用过一次,后来就忘了...扎心,现在记录一下 PS:这几种函数其实不限于swift内的,在JavaScript.python.DB等其他语言,应该也有类似用法,这里我只简单讲了在swift内的 ...
- Tensorflow中的run()函数
1 run()函数存在的意义 run()函数可以让代码变得更加简洁,在搭建神经网络(一)中,经历了数据集准备.前向传播过程设计.损失函数及反向传播过程设计等三个过程,形成计算网络,再通过会话tf.Se ...
- numpy函数库中一些常用函数的记录
##numpy函数库中一些常用函数的记录 最近才开始接触Python,python中为我们提供了大量的库,不太熟悉,因此在<机器学习实战>的学习中,对遇到的一些函数的用法进行记录. (1) ...
- 【tensorflow基础】tensorflow中 tf.reduce_mean函数
参考 1. tensorflow中 tf.reduce_mean函数: 完
- 第二十一节,使用TensorFlow实现LSTM和GRU网络
本节主要介绍在TensorFlow中实现LSTM以及GRU网络. 一 LSTM网络 Long Short Term 网络—— 一般就叫做 LSTM ——是一种 RNN 特殊的类型,可以学习长期依赖信息 ...
- Tensorflow的基本概念与常用函数
Tensorflow一些常用基本概念与函数(一) 1.tensorflow的基本运作 为了快速的熟悉TensorFlow编程,下面从一段简单的代码开始: import tensorflow as tf ...
- Tensorflow一些常用基本概念与函数(二)
1.tensorflow的基本运作 为了快速的熟悉TensorFlow编程,下面从一段简单的代码开始: import tensorflow as tf #定义‘符号’变量,也称为占位符 a = tf. ...
- Tensorflow一些常用基本概念与函数(三)
摘要:本系列主要对tf的一些常用概念与方法进行描述.本文主要针对tensorflow的数据IO.图的运行等相关函数进行讲解.为‘Tensorflow一些常用基本概念与函数’系列之三. 1.序言 本文所 ...
- Tensorflow一些常用基本概念与函数(四)
摘要:本系列主要对tf的一些常用概念与方法进行描述.本文主要针对tensorflow的模型训练Training与测试Testing等相关函数进行讲解.为‘Tensorflow一些常用基本概念与函数’系 ...
随机推荐
- [CQOI2007]矩形
题目 点这里看题目. 分析 插头 DP ,考虑枚举一下两块之间的分割线,本质上就是两个端点都在边界上的路径. DP 过程中,我们将没有端点在边界上面的路径称为 1 路径,反之叫 2 路径 ...
- 深入理解Java虚拟机学习笔记(一)-----Java内存区域
一 概述 对于 Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像C/C++程序开发程序员这样为内一个 new 操作去写对应的 delete/free 操作,不容易出现内存泄漏和内存溢出问题 ...
- C# 什么是泛型 ?以及对泛型各方面的一些知识点的整理
1.1 理解什么是泛型 在.NET 2.0,可以成为革命性壮举的, 就是引入了激动人心的特性——泛型..NET泛型是CLR和高级语言共同支持的一种全新的结构,实现了一种将类型抽象化的通用处理方式.在泛 ...
- Task.Result跟 Task.GetAwaiter.GetResult()相同吗?怎么选?
前几天在用线程池执行一些任务时运到一种情形,就是回调方法中使用到了异步方法,但是回调方法貌似不支持async await的写法.这时候我应该如何处理呢?是使用Task.Result来获取返回结果,还是 ...
- Jmeter 测试接口
创建线程组 添加HTTP请求 查看结果树
- 手机U盘制作成系统启动盘后在手机端无法识别
本人最近用手机U盘做了个系统启动盘,突然发现U盘再次插到手机的时候,手机无法识别出U盘了,于是百度了一下,百度结果大概是跟U盘的格式有关.结果我想起了之前用的DiskGenius可以看到u盘的隐藏盘符 ...
- 01 . 容器编排简介及Kubernetes核心概念
Kubernetes简介 Kubernetes是谷歌严格保密十几年的秘密武器-Borg的一个开源版本,是Docker分布式系统解决方案.2014年由Google公司启动. Kubernetes提供了面 ...
- JavaWeb网上图书商城完整项目--过滤器解决中文乱码
我们知道,如果是POST请求,我们需要调用request.setCharacterEncoding(“utf-8”)方法来设计编码:如果是GET请求,我们需要自己手动来处理编码问题.如果我们使用了En ...
- 尚学堂 216 java中的字节码操作
所谓的字节码操作就是操作我们已经加载的字节码 接下来我们重点来讲解javaassist类库 使用需要下载jar包,把jar包添加到对应的工程之后 package com.bjsxt.test; pub ...
- 使用java类的方式配置spring 需要什么注解?
1.@Configuration 修饰类,声明当前类是一个配置类,相当于applicationContext.xml文件 2.@ComponentScan 用于指定spring在初始化容器时要扫描的包 ...