2015-12-18 27 views
2

我正在使用Tensorflow來培訓CNN。我目前正在計算Float32,這是初始化變量時的默認值。Tensorflow MaxPool不接受float64

我猜想,通過使用float64作爲我的D類,所以我改變了我的varibales的動初始化如下,我可以得到更準確的結果:

w1 = tf.Variable(tf.random_normal([5, 5, 3, 64], stddev=0.1, dtype=tf.float64)) 

但我得到以下的maxpool操作錯誤: 我chacked maxpool文檔和它接受值類型如下: value: A 4-D Tensor with shape [batch, height, width, channels] and type float32, float64, qint8, quint8, qint32.

但我得到以下錯誤。這是一個錯誤還是我做錯了什麼?

Input 'input' of 'MaxPool' Op has type float64 that does not match expected type of float32.


Traceback (most recent call last): 
    File "/Users/hamedketabdar/LearningTensorFlow/CIFAR-Khodam/convolutional_network_batch_2d2c_clean_64f.py", line 213, in <module> 
    pred = conv_net(x, weights, biases, keep_prob) 
    File "/Users/hamedketabdar/LearningTensorFlow/CIFAR-Khodam/convolutional_network_batch_2d2c_clean_64f.py", line 153, in conv_net 
    conv1 = max_pool(conv1, k=2) # Normally K=2 
    File "/Users/hamedketabdar/LearningTensorFlow/CIFAR-Khodam/convolutional_network_batch_2d2c_clean_64f.py", line 135, in max_pool 
    return tf.nn.max_pool(img, ksize=[1, k, k, 1], strides=[1, k, k, 1], padding='SAME') 
    File "/usr/local/lib/python2.7/site-packages/tensorflow/python/ops/nn_ops.py", line 235, in max_pool 
    name=name) 
    File "/usr/local/lib/python2.7/site-packages/tensorflow/python/ops/gen_nn_ops.py", line 449, in _max_pool 
    strides=strides, padding=padding, name=name) 
    File "/usr/local/lib/python2.7/site-packages/tensorflow/python/ops/op_def_library.py", line 430, in apply_op 
    (prefix, dtypes.as_dtype(input_arg.type).name)) 
TypeError: Input 'input' of 'MaxPool' Op has type float64 that does not match expected type of float32. 
+0

已開通問題:https://github.com/tensorflow/tensorflow/issues/547 –

+0

我給自己打開了這個問題 – user2576346

+0

謝謝。我添加了鏈接,以便其他人可以找到它。不是每個人都知道在那裏看。 –

回答

3

支持tf.nn.max_pool()比單精度浮點值其他類型的目前未實現,並且該文檔是不正確。 (我的上游更新它,它應該很快就會出現在GitHub和網站。)

的原因不兼容是TensorFlow對GPU的性能原因specialized implementation of max-pooling,我們幾乎總是使用tf.float32訓練深網絡時,所以沒有其他類型的等效支持。可以添加,因此歡迎提供:請參閱GitHub issue以獲得更多討論。

+1

很遺憾。不僅文檔也在愚弄我(也就是說'tf.nn.max_pool()'允許'tf.float64'),而且對64位浮點數也不感興趣。我並不是很有經驗,但我認爲(對於真正的大/深網絡)64位浮點數可以在更少的訓練時間產生更好的結果,因爲精度更高?! – daniel451