tf.contrib.rnn.static_rnn与tf.nn.dynamic_rnn区别
tf.contrib.rnn.static_rnn与tf.nn.dynamic_rnn区别
https://blog.csdn.net/u014365862/article/details/78238807
MachineLP的Github(欢迎follow):https://github.com/MachineLP
我的GitHub:https://github.com/MachineLP/train_cnn-rnn-attention 自己搭建的一个框架,包含模型有:vgg(vgg16,vgg19), resnet(resnet_v2_50,resnet_v2_101,resnet_v2_152), inception_v4, inception_resnet_v2等。
- chunk_size = 256
- chunk_n = 160
- rnn_size = 256
- num_layers = 2
- n_output_layer = MAX_CAPTCHA*CHAR_SET_LEN # 输出层
单层rnn:
tf.contrib.rnn.static_rnn:
输入:[步长,batch,input]
输出:[n_steps,batch,n_hidden]
还有rnn中加dropout
- def recurrent_neural_network(data):
- data = tf.reshape(data, [-1, chunk_n, chunk_size])
- data = tf.transpose(data, [1,0,2])
- data = tf.reshape(data, [-1, chunk_size])
- data = tf.split(data,chunk_n)
- # 只用RNN
- layer = {'w_':tf.Variable(tf.random_normal([rnn_size, n_output_layer])), 'b_':tf.Variable(tf.random_normal([n_output_layer]))}
- lstm_cell = tf.contrib.rnn.BasicLSTMCell(rnn_size)
- outputs, status = tf.contrib.rnn.static_rnn(lstm_cell, data, dtype=tf.float32)
- # outputs = tf.transpose(outputs, [1,0,2])
- # outputs = tf.reshape(outputs, [-1, chunk_n*rnn_size])
- ouput = tf.add(tf.matmul(outputs[-1], layer['w_']), layer['b_'])
- return ouput
多层rnn:
tf.nn.dynamic_rnn:
输入:[batch,步长,input]
输出:[batch,n_steps,n_hidden]
所以我们需要tf.transpose(outputs, [1, 0, 2]),这样就可以取到最后一步的output
- def recurrent_neural_network(data):
- # [batch,chunk_n,input]
- data = tf.reshape(data, [-1, chunk_n, chunk_size])
- #data = tf.transpose(data, [1,0,2])
- #data = tf.reshape(data, [-1, chunk_size])
- #data = tf.split(data,chunk_n)
- # 只用RNN
- layer = {'w_':tf.Variable(tf.random_normal([rnn_size, n_output_layer])), 'b_':tf.Variable(tf.random_normal([n_output_layer]))}
- #1
- # lstm_cell1 = tf.contrib.rnn.BasicLSTMCell(rnn_size)
- # outputs1, status1 = tf.contrib.rnn.static_rnn(lstm_cell1, data, dtype=tf.float32)
- def lstm_cell():
- return tf.contrib.rnn.LSTMCell(rnn_size)
- def attn_cell():
- return tf.contrib.rnn.DropoutWrapper(lstm_cell(), output_keep_prob=keep_prob)
- # stack = tf.contrib.rnn.MultiRNNCell([attn_cell() for _ in range(0, num_layers)], state_is_tuple=True)
- stack = tf.contrib.rnn.MultiRNNCell([lstm_cell() for _ in range(0, num_layers)], state_is_tuple=True)
- # outputs, _ = tf.nn.dynamic_rnn(stack, data, seq_len, dtype=tf.float32)
- outputs, _ = tf.nn.dynamic_rnn(stack, data, dtype=tf.float32)
- # [batch,chunk_n,rnn_size] -> [chunk_n,batch,rnn_size]
- outputs = tf.transpose(outputs, (1, 0, 2))
- ouput = tf.add(tf.matmul(outputs[-1], layer['w_']), layer['b_'])
- return ouput
tf.contrib.rnn.static_rnn与tf.nn.dynamic_rnn区别的更多相关文章
- 深度学习原理与框架-递归神经网络-RNN网络基本框架(代码?) 1.rnn.LSTMCell(生成单层LSTM) 2.rnn.DropoutWrapper(对rnn进行dropout操作) 3.tf.contrib.rnn.MultiRNNCell(堆叠多层LSTM) 4.mlstm_cell.zero_state(state初始化) 5.mlstm_cell(进行LSTM求解)
问题:LSTM的输出值output和state是否是一样的 1. rnn.LSTMCell(num_hidden, reuse=tf.get_variable_scope().reuse) # 构建 ...
- 关于tensorflow里面的tf.contrib.rnn.BasicLSTMCell 中num_units参数问题
这里的num_units参数并不是指这一层油多少个相互独立的时序lstm,而是lstm单元内部的几个门的参数,这几个门其实内部是一个神经网络,答案来自知乎: class TRNNConfig(obje ...
- tf.contrib.rnn.core_rnn_cell.BasicLSTMCell should be replaced by tf.contrib.rnn.BasicLSTMCell.
For Tensorflow 1.2 and Keras 2.0, the line tf.contrib.rnn.core_rnn_cell.BasicLSTMCell should be repl ...
- tensorflow教程:tf.contrib.rnn.DropoutWrapper
tf.contrib.rnn.DropoutWrapper Defined in tensorflow/python/ops/rnn_cell_impl.py. def __init__(self, ...
- tf.contrib.rnn.LSTMCell 里面参数的意义
num_units:LSTM cell中的单元数量,即隐藏层神经元数量.use_peepholes:布尔类型,设置为True则能够使用peephole连接cell_clip:可选参数,float类型, ...
- tensorflow笔记6:tf.nn.dynamic_rnn 和 bidirectional_dynamic_rnn:的输出,output和state,以及如何作为decoder 的输入
一.tf.nn.dynamic_rnn :函数使用和输出 官网:https://www.tensorflow.org/api_docs/python/tf/nn/dynamic_rnn 使用说明: A ...
- tf.nn.dynamic_rnn
tf.nn.dynamic_rnn(cell,inputs,sequence_length=None, initial_state=None,dtype=None, parallel_iteratio ...
- TF之RNN:实现利用scope.reuse_variables()告诉TF想重复利用RNN的参数的案例—Jason niu
import tensorflow as tf # 22 scope (name_scope/variable_scope) from __future__ import print_function ...
- 第十六节,使用函数封装库tf.contrib.layers
这一节,介绍TensorFlow中的一个封装好的高级库,里面有前面讲过的很多函数的高级封装,使用这个高级库来开发程序将会提高效率. 我们改写第十三节的程序,卷积函数我们使用tf.contrib.lay ...
随机推荐
- Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) B. Verse Pattern 水题
B. Verse Pattern 题目连接: http://codeforces.com/contest/722/problem/B Description You are given a text ...
- 针对MyISAM锁表的解决方案
最近服务器上经常出现mysql进程占CPU100%的情况,使用show processlist命令后,看到出现了很多状态为LOCKED的sql.使用show status like 'table%'检 ...
- 如何快速将Linux文件系统迁移到Azure存储
概述 前一段时间一直在给一个客户将原先搭载在Linux(客户使用的是CentOS 7.0)上的NFS快速迁移到Azure存储上,并且为了保证数据完整性还需要另开一个存储做冷备,架构图如下: 通过Cli ...
- 使用 IntraWeb (21) - 基本控件之 TIWTabControl
TIWTabControl 包含的是 TIWTabPage; 设计时通过右键菜单 Add Page 添加(再给页面添加东西时一定要先选定页面); 下面例子是动态添加的. TIWTabControl 所 ...
- MongoDb GridFS的使用
MongoDb GridFS 是MongoDB的文件存储方案,主要用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片.音频等),对大文件有着更好的性能. 要在C#中使用GridFS,首先 ...
- XAML / Self binding, bindingcontext
Hello, I want to bind the text property of a editor element to BindableProperty. Here is what I trie ...
- 魔兽私服TrinityCore 运行调试流程
配置参见上一篇:TrinityCore 魔兽世界私服11159 完整配置 (1)启动Web服务器 打开TC2_Web_Mysql目录,运行“启动Web服务器.exe” 自动弹出帐号注册界面,并启动Ap ...
- 没有可用的复制构造函数或复制构造函数声明为“explicit”
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\vector(810) : error C2558: str ...
- javascript:currentStyle和getComputedStyle的兼容写法
currentStyle:获取计算后的样式,也叫当前样式.最终样式. 优点:可以获取元素的最终样式,包括浏览器的默认值,而不像style只能获取行间样式,所以更常用到. 注意:不能获取复合样式如bac ...
- VS Supercharger插件的破解
Supercharger我已经用了很多年了,感觉十分不错,最初使用的时候,是叫做CodeMap.不过要想很好的使用起来这个VS插件,需要对其进行细致的设置. 这里不再多说了,看下,这个软件怎么破解吧. ...