Tensorflow中关于Tensor和Variable的理解

来源:互联网 发布:python lxml etree 编辑:程序博客网 时间:2024/06/05 02:30

刷课过程中思考到Variable和Tensor之间的区别,尝试发现在如下代码中:

a = tf.Variable(tf.ones(1))b = tf.add(a,tf.ones(1))

a是Variable,而b是Tensor。发现自己对Variable和Tensor之间的区分了解不多,所以搜索了一下,记录自己的思考,欢迎指教。

  1. Variable是可更改的(mutable),而Tensor是不可更改的。一个直接的例子就是Tensor不具有assign函数,而Variable含有。
  2. python和其他语言的API以及实现方式存在差异,本文只探讨general以及python方面的内容。
  3. Variable用于存储网络中的权重矩阵等变量,而Tensor更多的是中间结果等。
  4. Variable是会显示分配内存空间的(既可以是内存,也可以是显存),需要初始化操作(assign一个tensor),由Session管理,可以进行存储、读取、更改等操作。相反地,诸如Const, Zeros等操作创造的Tensor,是记录在Graph中,所以没有单独的内存空间;而其他未知的由其他Tensor操作得来的Tensor则是只会在程序运行中间出现。
  5. Tensor可以使用的地方,几乎都可以使用Variable。

参考资料:
https://stackoverflow.com/questions/37849322/how-to-understand-the-term-tensor-in-tensorflow
https://stackoverflow.com/questions/40866675/implementation-difference-between-tensorflow-variable-and-tensorflow-tensor
https://stackoverflow.com/questions/38556078/in-tensorflow-what-is-the-difference-between-a-variable-and-a-tensor
https://www.tensorflow.org/programmers_guide/variables
https://www.tensorflow.org/api_docs/python/tf/Variable