赞
踩
LSTM是一种特殊的RNN,很好的解决了RNN中梯度消失的问题。LSTM的结构如下:
在LSTM中,有遗忘门、输入门、和输出门。LSTM在三维空间的结构如下:
详细的理论知识参见:循环神经网络RNN详细推导和LSTM(长短时间记忆模型)的详细推导。
1、参数设置的理解:
这里主要指输入维度,输出维度、时间步长等参数的设置,如下:
#输入图片是28*28
n_inputs=28 #输入一行,一行有28个数据
max_time=28 #一共有28行
lstm_size=100 #隐藏层单元
n_classes=10 #10个分类
batch_size=50 #每个样本50个批次
2、张量维度的改变tf.reshape():
用于改变张量的维度,在卷积池化完成后,改变张量的维度用于全连接,定义如下:
tf.reshape(tensor, shape, name=None)
参数:
返回值:返回一个新的,大小为shape的张量。
程序示例:
import tensorflow as tf
x=[[[1,2]],[[7,8]],[[4,5]],[[6,9]]]
y=tf.reshape(x,[-1,4]) #-1:表示第一维信息由系统自己确定,这里是2
with tf.Session() as sess:
print((sess.run(y)))
#输出:
[[1 2 7 8]
[4 5 6 9]]
3、tf.contrib.rnn.BasicLSTMCell():
该函数是基础的LSTM循环网络单元(即:block)。将forget_bias(默认值:1)添加到忘记门的偏差(biases)中以便在训练开始时减少以往的比例(scale)。该神经元不允许单元裁剪(cell clipping),也不使用peep-hole连接,它是一个基本的LSTM神经元。想要更高级的模型可以使用:tf.nn.rnn_cell.LSTMCell。tf.contrib.rnn.BasicLSTMCell()函数定义如下:
##########当使用函数缺省参数时,函数的默认参数如下:
cell = tf.contrib.rnn.BasicLSTMCell(num_units, forget_bias=1.0, state_is_tuple=True,
activation=None, reuse=None,name=None,dtype=None)
tf.nn.rnn_cell.LSTMCell()函数定义:
tf.nn.rnn_cell.BasicLSTMCell(num_units, forget_bias=1.0, state_is_tuple=True,
act
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。