No OpKernel was registered to support Op 'Conv2D' with these attrs

6.3k views Asked by At

new to this may be something dumb but cant get conv2d to run


windows 10

anaconda 4.2.13

python 3.5.2

C:\windows\system32>nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2016 NVIDIA Corporation Built on Sat_Sep__3_19:05:48_CDT_2016 Cuda compilation tools, release 8.0, V8.0.44

cudnn 5.1

TensorFlow 0.12


import numpy as np
import tensorflow as tf

graph1 = tf.Graph()
with graph1.as_default():
    f=tf.constant(   np.ones(10).reshape(1,1,-1,1)   )
    g=tf.constant(   np.ones(3).reshape(1,-1,1,1)   )
    conv1=tf.nn.conv2d( f,g, strides=[1,1,1,1] , padding="SAME",name="conv1")

with tf.Session(graph=graph1) as sess:
    sess.run(tf.global_variables_initializer())
    print(sess.run(f))
    print(sess.run(g))
    print(sess.run(conv1))
    sess.close()

results in:

InvalidArgumentError (see above for traceback): No OpKernel was registered to support Op 'Conv2D' with these attrs.  Registered devices: [CPU,GPU], Registered kernels:
  device='CPU'; T in [DT_HALF]
  device='CPU'; T in [DT_FLOAT]
  device='GPU'; T in [DT_HALF]
  device='GPU'; T in [DT_FLOAT]

    [[Node: conv = Conv2D[T=DT_DOUBLE, data_format="NHWC", padding="SAME", strides=[1, 1, 1, 1], use_cudnn_on_gpu=true](Const, Const_1)]]
1

There are 1 answers

2
Yaroslav Bulatov On BEST ANSWER

You should change two lines to

f=tf.constant(   np.ones(10).reshape(1,1,-1,1).astype(np.float32)   )
g=tf.constant(   np.ones(3).reshape(1,-1,1,1).astype(np.float32)   )

Otherwise those nodes take on default numpy type of float64, which doesn't have Conv2D kernel