如何在张量流图中包含有状态操作?

时间:2017-05-01 17:44:55

标签: tensorflow deep-learning image-segmentation lstm

我想使用tensorflow将LSTM插入到完全卷积神经网络(FCN)中。也就是说,在第五个卷积层之后,我们得到了形状的张量(14,14,512),并且我将该张量调整到其原始空间大小(229,229,512)。我接下来要做的是将这个张量分割成超像素(比如1000个超像素),然后将它们逐个送入LSTM。

以下是问题:

我希望整个结构能够端到端训练。但是在让超像素进入LSTM之后我们丢失了空间信息。我必须将功能(在LSTM之后)映射回原始空间位置,以便它可以继续在FCN中流动。这种映射是张量流中的有状态操作,它不会让梯度在反向传播过程中回到图的最开始。

我还可以端到端地训练整个结构吗?我知道人们已经在Caffe中做到了这一点,但是我不确定它是否在张量流中是可行的?我希望这是我的错误,而不是张力流量的限制。谢谢

Notes :实际上我正在实现一个新的LSTM结构,我不确定现有的API是否可以提供帮助。我会尝试更具体地解决这个问题。

假设我将张量(229,229,512)分成4个区域A,B,C,D。其中,A和B是彼此的邻居。每个区域有4个LSTM,LSTMa,LSTMb,LSTMc和LSTMd。当我将B的特征输入到LSTMb时,它将受到LSTMa的隐藏状态的影响。(因为它们是邻居)。所以我需要在张量流图中的某处保存LSTMa的隐藏状态,并在更新A的邻居时调用它。但似乎那些操作,例如替换矩阵中的行(tf.scatter_update),是有状态操作,没有渐变。因此,整个架构可能不是端到端可训练的吗?

0 个答案:

没有答案