Tensorflow 张量流-卷积+;lstm

Tensorflow 张量流-卷积+;lstm,tensorflow,Tensorflow,我试图实现本文中图1的体系结构 我已经学习了有关tensorflow的lstm教程,但这对我没有帮助,因为输入数据没有及时卷积。我需要在每个帧上按顺序运行CNN,然后将其馈送给lstm。有人知道这方面的任何示例代码吗?我通过及时展开卷积网络并将串联输出张量输入LSTM网络,为多通道时间序列数据实现了类似的体系结构。LSTM网络由标准的tf.contrib.rnn.LSTMBlockCell、tf.contrib.rnn.multirncell和tf.nn.dynamic\u rnn创建 更好的时

我试图实现本文中图1的体系结构


我已经学习了有关tensorflow的lstm教程,但这对我没有帮助,因为输入数据没有及时卷积。我需要在每个帧上按顺序运行CNN,然后将其馈送给lstm。有人知道这方面的任何示例代码吗?

我通过及时展开卷积网络并将串联输出张量输入LSTM网络,为多通道时间序列数据实现了类似的体系结构。LSTM网络由标准的
tf.contrib.rnn.LSTMBlockCell
tf.contrib.rnn.multirncell
tf.nn.dynamic\u rnn
创建

更好的时间展开方法是使用
tf.while\u loop
创建网络的卷积部分

下面的代码说明了这个想法,但未经测试

conv_输出=[None]*len(迭代器)
使用tf.variable_scope(“ConvNet”):
对于idx,枚举中的帧(帧):
#假设预先创建了共享权重和偏差变量
对于枚举(conv_映射)中的i(权重、偏差):
使用tf.name_scope(“Conv{}”.format(i)):
conv_out=tf.add(
tf.nn.conv2d(
转换输入,#[批次、输入高度、输入宽度、输入通道]
权重,#[过滤器高度、过滤器宽度、输入通道、输出通道]
步幅=[1,1,1,1],
padding=“VALID”,name=“Conv{}”.format(i)),
bias,name=“Add{}”.format(i))
conv_out=tf.nn.relu(conv_out,name=“relu{}”.format(i))
使用tf.name_scope(“Pool{}.format(i)):
pool\u out=tf.nn.max\u pool(
转换输出,#[批次、输入高度、输入宽度、输入通道]
ksize=[1,池大小,1,1],
步幅=[1,池大小,1,1],
padding='VALID',name=“Pool{}”.format(i))
conv_输出[idx]=池输出
conv_in=pool_out
堆叠=tf.stack(转换输出,1)
整形=tf。整形(堆叠,[-1,len(conv_输出),conv_输出[-1]。形状[-1])#[批量大小,帧数,最后一层特征映射
num_lstm_单元格=[8,8]
cell_series=[tf.contrib.rnn.LSTMBlockCell(n)表示num_lstm_单元格中的n]
layers=tf.contrib.rnn.MultiRNNCell(单元格系列,状态为元组=True)
#输入批次x的LSTM网络预测
净输出,状态=tf.nn.dynamic(层,重新成形,数据类型=tf.float32)

你现在有进一步的进展吗?是的,我找到了如何使用它。你介意分享你的知识吗?