IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]TensorFlow的异常Reciprocal[T=DT_INT32](Variable_1/read)

    caimouse发表于 2017-04-01 09:08:38
    love 0

    在TF里,使用32位整数来计算倒数时会抛出这个异常:

    Traceback (most recent call last):
      File "C:\python35\lib\site-packages\tensorflow\python\client\session.py", line 1022, in _do_call
        return fn(*args)
      File "C:\python35\lib\site-packages\tensorflow\python\client\session.py", line 1000, in _run_fn
        self._extend_graph()
      File "C:\python35\lib\site-packages\tensorflow\python\client\session.py", line 1049, in _extend_graph
        self._session, graph_def.SerializeToString(), status)
      File "C:\python35\lib\contextlib.py", line 66, in __exit__
        next(self.gen)
      File "C:\python35\lib\site-packages\tensorflow\python\framework\errors_impl.py", line 469, in raise_exception_on_not_ok_status
        pywrap_tensorflow.TF_GetCode(status))
    tensorflow.python.framework.errors_impl.InvalidArgumentError: No OpKernel was registered to support Op 'Reciprocal' with these attrs.  Registered devices: [CPU,GPU], Registered kernels:
      device='CPU'; T in [DT_FLOAT]
      device='CPU'; T in [DT_HALF]
      device='CPU'; T in [DT_DOUBLE]
      device='CPU'; T in [DT_COMPLEX64]
      device='CPU'; T in [DT_COMPLEX128]
      device='GPU'; T in [DT_FLOAT]
      device='GPU'; T in [DT_HALF]
      device='GPU'; T in [DT_DOUBLE]
      device='GPU'; T in [DT_INT64]


    [[Node: Reciprocal = Reciprocal[T=DT_INT32](Variable_1/read)]]


    During handling of the above exception, another exception occurred:


    Traceback (most recent call last):
      File "D:\work\csdn\TF_API\src\TFAPI_6\TFAPI_6\TFAPI_17.py", line 31, in <module>
        demo.run_graph()
      File "D:\work\csdn\TF_API\src\TFAPI_6\TFAPI_6\TFAPI_17.py", line 21, in run_graph
        sess.run(init)
      File "C:\python35\lib\site-packages\tensorflow\python\client\session.py", line 767, in run
        run_metadata_ptr)
      File "C:\python35\lib\site-packages\tensorflow\python\client\session.py", line 965, in _run
        feed_dict_string, options, run_metadata)
      File "C:\python35\lib\site-packages\tensorflow\python\client\session.py", line 1015, in _do_run
        target_list, options, run_metadata)
      File "C:\python35\lib\site-packages\tensorflow\python\client\session.py", line 1035, in _do_call
        raise type(e)(node_def, op, message)
    tensorflow.python.framework.errors_impl.InvalidArgumentError: No OpKernel was registered to support Op 'Reciprocal' with these attrs.  Registered devices: [CPU,GPU], Registered kernels:
      device='CPU'; T in [DT_FLOAT]
      device='CPU'; T in [DT_HALF]
      device='CPU'; T in [DT_DOUBLE]
      device='CPU'; T in [DT_COMPLEX64]
      device='CPU'; T in [DT_COMPLEX128]
      device='GPU'; T in [DT_FLOAT]
      device='GPU'; T in [DT_HALF]
      device='GPU'; T in [DT_DOUBLE]
      device='GPU'; T in [DT_INT64]


    [[Node: Reciprocal = Reciprocal[T=DT_INT32](Variable_1/read)]]


    Caused by op 'Reciprocal', defined at:
      File "<string>", line 1, in <module>
      File "C:\python35\lib\idlelib\run.py", line 130, in main
        ret = method(*args, **kwargs)
      File "C:\python35\lib\idlelib\run.py", line 357, in runcode
        exec(code, self.locals)
      File "D:\work\csdn\TF_API\src\TFAPI_6\TFAPI_6\TFAPI_17.py", line 30, in <module>
        demo = DemoTF()
      File "D:\work\csdn\TF_API\src\TFAPI_6\TFAPI_6\TFAPI_17.py", line 16, in __init__
        self.reciprocal = tf.reciprocal(self.num2)
      File "C:\python35\lib\site-packages\tensorflow\python\ops\gen_math_ops.py", line 1964, in reciprocal
        result = _op_def_lib.apply_op("Reciprocal", x=x, name=name)
      File "C:\python35\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 763, in apply_op
        op_def=op_def)
      File "C:\python35\lib\site-packages\tensorflow\python\framework\ops.py", line 2395, in create_op
        original_op=self._default_original_op, op_def=op_def)
      File "C:\python35\lib\site-packages\tensorflow\python\framework\ops.py", line 1264, in __init__
        self._traceback = _extract_stack()


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


    [[Node: Reciprocal = Reciprocal[T=DT_INT32](Variable_1/read)]]


    从异常信息上来看,它是不支持tf.int32的类型运算的,所以抛出异常。只支持下面的类型:

      device='CPU'; T in [DT_FLOAT]
      device='CPU'; T in [DT_HALF]
      device='CPU'; T in [DT_DOUBLE]
      device='CPU'; T in [DT_COMPLEX64]
      device='CPU'; T in [DT_COMPLEX128]
      device='GPU'; T in [DT_FLOAT]
      device='GPU'; T in [DT_HALF]
      device='GPU'; T in [DT_DOUBLE]
      device='GPU'; T in [DT_INT64]

    代码如下:

    #python 3.5.3/TensorFlow 1.0/win 10    
    #2017-04-01 蔡军生  http://blog.csdn.net/caimouse    
    #
    #导入要使用的库
    import tensorflow as tf
    import numpy as np
    
    #演示API的类
    class DemoTF:
        def __init__(self):
            '''构造函数'''
            self.num1 = tf.Variable([1, -2, -3], dtype = tf.int32)
            self.num2 = tf.Variable([4, 5, -6], dtype = tf.int32)
            
            self.sign = tf.sign(self.num1)
            self.reciprocal = tf.reciprocal(self.num2)
            
        def run_graph(self):       
            init = tf.global_variables_initializer()  # 初始化变量
            with tf.Session() as sess:            
                sess.run(init)
                self.main(sess) #运行主函数
        def main(self, sess):
            '''主函数'''
            print(sess.run(self.sign)) 
            print(sess.run(self.reciprocal)) 
                    
    #主程序入口
    if __name__ == "__main__":
        demo = DemoTF()
        demo.run_graph()

    1. TensorFlow API攻略

    http://edu.csdn.net/course/detail/4495
    2. TensorFlow入门基本教程
    http://edu.csdn.net/course/detail/4369

    3. C++标准模板库从入门到精通 

    http://edu.csdn.net/course/detail/3324

    4.跟老菜鸟学C++

    http://edu.csdn.net/course/detail/2901

    5. 跟老菜鸟学python

    http://edu.csdn.net/course/detail/2592

    6. 在VC2015里学会使用tinyxml库

    http://edu.csdn.net/course/detail/2590

    7. 在Windows下SVN的版本管理与实战 

     http://edu.csdn.net/course/detail/2579

    8.Visual Studio 2015开发C++程序的基本使用 

    http://edu.csdn.net/course/detail/2570

    9.在VC2015里使用protobuf协议

    http://edu.csdn.net/course/detail/2582

    10.在VC2015里学会使用MySQL数据库

    http://edu.csdn.net/course/detail/2672




沪ICP备19023445号-2号
友情链接