2017-07-03 182 views
2

因此,我試圖在tf.int32批次上使用tf.int32過濾器運行卷積(標準depthwise_conv2d)。我收到錯誤:TypeError: Value passed to parameter 'input' has DataType int32 not in list of allowed values: float32, float64。鑑於我不需要漸變,我想知道是否有人知道可以表達卷積的op,並且接受int?謝謝!在TensorFlow中卷積整數張量

+0

你不想輸入的任何理由將其轉換爲浮點數?卷積涉及規範化,無論如何將使輸出浮動。 –

+0

嘿 - 感謝您的評論。不知道卷積涉及任何規範化,並且看起來[這裏](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/conv_ops.cc),這似乎最終呼籲[在這裏](https://bitbucket.org/eigen/eigen/src/9b065de03d016d802a25366ff5f0055df6318121/unsupported/Eigen/CXX11/src/Tensor/README.md?at=default&fileviewer=file-view-default#markdown-header-wzxhzdk178operationwzxhzdk179-convolveconst- kernel-kernel-const-dimensions-dims),我看不到標準化發生的地方。使用現在很好的NumPy結束 –

+0

在正常卷積中,歸一化被吸收在內核權重中。但是你的問題是關於整數卷積(我認爲你想出於某種原因想要做),那麼就會涉及到標準化。 –

回答

1

你不能這樣做,因爲conv2d不接受INT類型:

input: A Tensor. Must be one of the following types: half, float32. A 4-D tensor. The dimension order is interpreted according to the value of data_format, see below for details.

所以,你的解決方案,要麼編寫自己的conv2dint(這將只是一個他們與不同類型的conv2d複印件)或使用他們的conv2d並申請tf.cast(res_from_conv, tf.int32)