Tensorflow MaxPool 不接受 float64
Tensorflow MaxPool doesn't accept float64
我正在使用 Tensorflow 训练 CNN。我目前的计算基于 Float32,这是初始化变量时的一种默认设置。
我猜想通过使用 float64
作为我的 dtype 我可以获得更准确的结果所以我改变了我的 varibales 的初始化如下:
w1 = tf.Variable(tf.random_normal([5, 5, 3, 64], stddev=0.1, dtype=tf.float64))
但我在 maxpool
操作中遇到以下错误:
我检查了 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.
当前未实现对单精度浮点值以外的类型的 tf.nn.max_pool()
支持,并且文档不正确。 (我已将其更新到上游,它应该很快就会出现在 GitHub 和网站上。)
不兼容的原因是TensorFlow有一个specialized implementation of max-pooling on GPUs for performance reasons, and we almost always use tf.float32
when training deep networks, so there isn't equivalent support for the other types. It would be possible to add, so contributions are welcome: see the GitHub issue供大家讨论
我正在使用 Tensorflow 训练 CNN。我目前的计算基于 Float32,这是初始化变量时的一种默认设置。
我猜想通过使用 float64
作为我的 dtype 我可以获得更准确的结果所以我改变了我的 varibales 的初始化如下:
w1 = tf.Variable(tf.random_normal([5, 5, 3, 64], stddev=0.1, dtype=tf.float64))
但我在 maxpool
操作中遇到以下错误:
我检查了 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.
当前未实现对单精度浮点值以外的类型的 tf.nn.max_pool()
支持,并且文档不正确。 (我已将其更新到上游,它应该很快就会出现在 GitHub 和网站上。)
不兼容的原因是TensorFlow有一个specialized implementation of max-pooling on GPUs for performance reasons, and we almost always use tf.float32
when training deep networks, so there isn't equivalent support for the other types. It would be possible to add, so contributions are welcome: see the GitHub issue供大家讨论