循环神经网络系列(七)Tensorflow中ConvLSTMCell

本文详细介绍了在Tensorflow中如何实现ConvLSTMCell,包括其参数解析、内部实现细节,以及如何扩展到基于'peepholes connection'的ConvLSTM。重点探讨了ConvLSTM的卷积操作和与原始LSTM的关系。
摘要由CSDN通过智能技术生成

前面一文我们简单得介绍了ConvLSTM得原理和应用场景,现在来看看在Tensorflow它具体是如何实现得。 值得一说得是Tensorflow在实现这个算法得时候并没有使用peepholes,即下面的红色部分,而是基于原始的LSTM网络结构改变的。不过在最后,我也会给出一个仿照Tensorflow实现的基于peepholes的ConvLSTM版本。

1.用法

在接受具体用法前,先来大致解释一下参数。由于该算法是CNN与LSTM的一个结合,所以在说到对其中各个参数理解的时候,我会将其类比于CNN和LSTM中对应的参数。

def __init__(self,
               conv_ndims,
               input_shape,
               output_channels,
               kernel_shape,
               use_bias=True,
               skip_connection=False,
               forget_bias=1.0,
               initializers=None,
               name="conv_lstm_cell"):

参数:
conv_ndims:卷积维度,对于平面卷积来说都为2,例如图片的卷积处理;
input_shape:输入维度(除去batch_size),例如当conv_ndims=2时,输入维度就应该为[weight,high,channel],最简单的就是将它想象成一个图片;
output_channels:最终输出时的深度;就像是在conv2d中卷积核的深度一样,它决定了最终提取特征后的图像的深度
kernel_shape:卷积核的平面大小例如[3,3];熟悉conv2d的都知道卷积核的维度应该是4,这儿怎么才2,原因就是剩下的两个维度直接通过计算就可以得到,这部分在ConvLSTM的内部实现中完成
use_bias:这个很好理解,是否要使用偏置
剩下的参数保持默认就好。

1.1 单个单元cell.call()

import tensorflow.contrib as contrib
import tensorflow as tf

inputs = tf.placeholder(dtype=tf.float32, shape=[64, 10, 10, 28])  # [batch_size,width,high,channeals] 
cell = contrib.rnn.ConvLSTMCell(conv_ndims=2, input_shape=[10, 10, 28], output_channels=6, kernel_shape=[3, 3])
initial_state = cell.zero_state(batch_size=64, dtype=tf.float32)
output, final_state=cell.call(inputs=inputs,state=initial_state)
print(output)
print(final_state)

>>
Tensor("mul_2:0", shape=(64, 10, 10, 6), dtype=float32)
LSTMStateTuple(c=<tf.Tensor 'add_2:0' shape=(64, 10, 10, 6) dtype=float32>, h=<tf.Tensor 'mul_2:0' shape=(64, 10, 10, 6) dtype=float32>)

从图中我们可以看到每个输出结果的维度是由哪些参数所确定的。

1.2 按时

  • 13
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 30
    评论
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值