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

一个人想着一个人 提交于 2019-12-08 07:18:58

问题


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:


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



来源:https://stackoverflow.com/questions/41310637/no-opkernel-was-registered-to-support-op-conv2d-with-these-attrs

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!