美文网首页
tensorflow使用笔记(持续更新)

tensorflow使用笔记(持续更新)

作者: CapsulE_07 | 来源:发表于2019-05-06 23:45 被阅读0次

    1. tf.py_func

    这个功能允许我们定义普通的python代码, 将tensor传入,并像操作numpy array一样去处理这些tensor数据。 在处理完之后,再以tensor返回出去。
    官方API: https://www.tensorflow.org/api_docs/python/tf/py_func
    使用实例

    def my_func(x):
      # x will be a numpy array with the contents of the placeholder below
      return np.sinh(x)
    input = tf.placeholder(tf.float32)
    y = tf.py_func(my_func, [input], tf.float32)
    

    2. 未纳入graph的节点

    tensorflow会将我们定义的操作整合成一个完整的graph。需要注意的是,一些节点因为后续没有被使用,会被排除在graph外面。 最终这些节点不会被执行。
    例如当我们想在执行中打印输出我们想观察的变量值时,我们会使用tf.Print操作。 但是如果这个结果的输出没被执行时,则这个op不会被执行。

    ## 如果后续这个value没被调用,则该打印输出不会被执行
    value = tf.Print(value,[value_1, value_2,value3], "three values I wanna watch: ")
    

    尤其在一些执行一些并没有输出的op时,我们更难通过在这些op后续增加节点,将其纳入graph中。我们可以通过tf.control_dependencies 来控制节点间的依赖,保证一些节点得到执行。

    #     ## 通过控制依赖保证 save_image_op 得到执行
         with tf.control_dependencies([save_image_op]):
             tensor_x= tf.identity(tensor_x) 
    

    3. 添加一行代码,使用Winograd算法加快训练速度

    执行时加上这么一行代码可以加快训练速度。
    Fast Convolution算法主要有基于Lagrange插值的Cook-Toom算法和基于中国剩余定理(Chinese remainder theorem)的Winograd算法。
    解释很好的博客链接:
    https://blog.csdn.net/u013498583/article/details/79481144
    https://blog.csdn.net/qq_32998593/article/details/86177151
    https://blog.csdn.net/antkillerfarm/article/details/78769624

        # Using the Winograd non-fused algorithms provides a small performance boost.
        os.environ['TF_ENABLE_WINOGRAD_NONFUSED'] = '1'
    

    相关文章

      网友评论

          本文标题:tensorflow使用笔记(持续更新)

          本文链接:https://www.haomeiwen.com/subject/avojoqtx.html