TensorFlow框架下的RNN实践小结

简介: 截至目前,TensorFlow的RNN APIs还处于Draft阶段。不过据官方解释,RNN的相关API已经出现在Tutorials里了,大幅度的改动应该是不大可能,现在入手TF的RNN APIs风险应该是不大的。

截至目前,TensorFlow的RNN APIs还处于Draft阶段。不过据官方解释,RNN的相关API已经出现在Tutorials里了,大幅度的改动应该是不大可能,现在入手TF的RNN APIs风险应该是不大的。

目前TF的RNN APIs主要集中在tensorflow.models.rnn中的rnn和rnn_cell两个模块。其中,后者定义了一些常用的RNN cells,包括RNN和优化的LSTM、GRU等等;前者则提供了一些helper方法。

创建一个基础的RNN很简单:

1 from tensorflow.models.rnn import rnn_cell
2 cell = rnn_cell.BasicRNNCell(inputs, state)

创建一个LSTM或者GRU的cell?

1 cell = rnn_cell.BasicLSTMCell(num_units)  #最最基础的,不带peephole。
2 cell = rnn_cell.LSTMCell(num_units, input_size)  #可以设置peephole等属性。
3 cell = rnn_cell.GRUCell(num_units)

调用呢?

1 output, state = cell(input, state)

这样自己按timestep调用需要设置variable_scope的reuse属性为True,懒人怎么做,TF也给想好了:

1 state = cell.zero_state(batch_size, dtype=tf.float32)
2 outputs, states = rnn.rnn(cell, inputs, initial_state=state)

再懒一点:

1 outputs, states = rnn.rnn(cell, inputs, dtype=tf.float32)

怕overfit,加个Dropout如何?

1 cell = rnn_cell.DropoutWrapper(cell, input_keep_prob=0.5, output_keep_prob=0.5)

做个三层的带Dropout的网络?

1 cell = rnn_cell.DropoutWrapper(cell, output_keep_prob=0.5)
2 cell = rnn_cell.MultiRNNCell([cell] * 3)
3 inputs = tf.nn.dropout(inputs, 0.5)  #给第一层单独加个Dropout。

一个坑——用rnn.rnn要按照timestep来转换一下输入数据,比如像这样:

1 inputs = [tf.reshape(t, (input_dim[0], 1)) for in tf.split(1, input_dim[1], inputs)]

rnn.rnn()的输出也是对应每一个timestep的,如果只关心最后一步的输出,取outputs[-1]即可。

注意一下子返回值的dimension和对应关系,损失函数和其它情况没有大的区别。

目前饱受诟病的是TF本身还不支持Theano中scan()那样可以轻松实现的不定长输入的RNN,不过有人反馈说Theano中不定长训练起来还不如提前给inputs加个padding改成定长的训练快。

本文转自博客园知识天地的博客,原文链接:TensorFlow框架下的RNN实践小结,如需转载请自行联系原博主。


相关文章
|
16天前
|
机器学习/深度学习 PyTorch TensorFlow
【TensorFlow】TF介绍及代码实践
【4月更文挑战第1天】TF简介及代码示例学习
|
5月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
【深度学习】Tensorflow、MindSpore框架介绍及张量算子操作实战(超详细 附源码)
【深度学习】Tensorflow、MindSpore框架介绍及张量算子操作实战(超详细 附源码)
65 0
|
5月前
|
机器学习/深度学习 自然语言处理 机器人
【Tensorflow+自然语言处理+RNN】实现中文译英文的智能聊天机器人实战(附源码和数据集 超详细)
【Tensorflow+自然语言处理+RNN】实现中文译英文的智能聊天机器人实战(附源码和数据集 超详细)
46 0
|
10月前
|
机器学习/深度学习 移动开发 算法
Python垃圾识别系统,TensorFlow+Django网页框架+深度学习模型+卷积网络【完整代码】
垃圾识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对5种垃圾数据集进行训练,最后得到一个识别精度较高的模型。并基于Django,开发网页端操作平台,实现用户上传一张垃圾图片识别其名称。
166 0
|
5月前
|
机器学习/深度学习 TensorFlow API
【Python/人工智能】TensorFlow 框架基本原理及使用
【Python/人工智能】TensorFlow 框架基本原理及使用
77 0
|
7月前
|
机器学习/深度学习 数据可视化 PyTorch
PyTorch 与 TensorFlow:机器学习框架之战
PyTorch 与 TensorFlow:机器学习框架之战
162 0
|
11月前
|
机器学习/深度学习 人工智能 数据可视化
人工智能创新挑战赛:海洋气象预测Baseline[4]完整版(TensorFlow、torch版本)含数据转化、模型构建、MLP、TCNN+RNN、LSTM模型训练以及预测
人工智能创新挑战赛:海洋气象预测Baseline[4]完整版(TensorFlow、torch版本)含数据转化、模型构建、MLP、TCNN+RNN、LSTM模型训练以及预测
人工智能创新挑战赛:海洋气象预测Baseline[4]完整版(TensorFlow、torch版本)含数据转化、模型构建、MLP、TCNN+RNN、LSTM模型训练以及预测
|
机器学习/深度学习 机器人 PyTorch
金玉良缘易配而木石前盟难得|M1 Mac os(Apple Silicon)天生一对Python3开发环境搭建(集成深度学习框架Tensorflow/Pytorch)
笔者投入M1的怀抱已经有一段时间了,俗话说得好,但闻新人笑,不见旧人哭,Intel mac早已被束之高阁,而M1 mac已经不能用真香来形容了,简直就是“香透满堂金玉彩,扇遮半面桃花开!”,轻抚M1 mac那滑若柔荑的秒控键盘,别说996了,就是007,我们也能安之若素,也可以笑慰平生。好了,日常吹M1的环节结束,正所谓剑虽利,不厉不断,材虽美,不学不高。本次我们尝试在M1 Mac os 中搭建Python3的开发环境。
金玉良缘易配而木石前盟难得|M1 Mac os(Apple Silicon)天生一对Python3开发环境搭建(集成深度学习框架Tensorflow/Pytorch)
|
机器学习/深度学习 TensorFlow 算法框架/工具
|
机器学习/深度学习 人工智能 PyTorch
深度学习四大框架之争(Tensorflow、Pytorch、Keras和Paddle)
深度学习四大框架之争(Tensorflow、Pytorch、Keras和Paddle)
深度学习四大框架之争(Tensorflow、Pytorch、Keras和Paddle)

热门文章

最新文章

相关实验场景

更多