ziky90 ziky90 - 3 months ago 139x
Python Question

FCN in TensorFlow missing crop layer

I am currently trying to implement FCN for semantic segmentation in TensorFlow as it was previously done in Caffe here.

Unfortunately I'm struggling with following 3 things:

1) How to map "Deconvolution" layer from Caffe to TensorFlow? Is it correctly


2) How to map "Crop" layer from Caffe to TensorFlow? Unfortunately I can't see any alternative in TensorFlow. Is there equivalent for this in TensorFlow?

3) Does Caffe
correspond to TensorFlow softmax_cross_entropy_with_logits?

Thank you in advance for any advices, hints and help.

EDIT 9th May 2016:

1) I have found out that
really corresponds to deconvolution layer.

2) Crop layer for now seems to be really a problem. I have found out that there actually exists
, but this seems to be impossible to use for this purposes, because it can't work with dynamically created tensors nor with 4D tensors that you need to use after

Some more information might be on: https://github.com/tensorflow/tensorflow/issues/2049

EDIT 17th May 2016:

I have followed @24hours advice and build FCN in tensorflow, though I was not able to make it train on data of the arbitrary size.

2) Crop layer is really not needed.

3) I have used
at the end and it worked for me.


Thanks to the advice from @24hours I have found answer to all the 3 questions. Unfortunately FCN of arbitrary size in tensorflow is a bit more complicated than in caffe, but hopefully I'll solve that soon as well.

1) tf.nn.conv2d_transpose can be used.

2) Crop layer is not needed, output_size of the tf.nn.conv2d_transpose layer can be used instead.

3) At the end I have used tf.nn.sparse_softmax_cross_entropy_with_logits