[英]In Tensorflow, what is the difference between a Variable and a Tensor?
[英]What's the difference between Tensor and Variable in Tensorflow
Tensorflow 中的Tensor
和Variable
什么區別? 我在這個 stackoverflow answer 中注意到,我們可以在任何可以使用Tensor
地方使用Variable
。 但是,我未能對Variable
執行session.run()
:
A = tf.zeros([10]) # A is a Tensor
B = tf.Variable([111, 11, 11]) # B is a Variable
sess.run(A) # OK. Will return the values in A
sess.run(B) # Error.
Variable
基本上是Tensor
一個包裝器,它在多次調用run
維護狀態,我認為通過保存和恢復圖形可以使一些事情變得更容易。 Variable
需要先初始化,然后才能運行。 您在定義Variable
時提供了一個初始值,但您必須調用它的初始化函數才能在會話中實際分配此值,然后使用Variable
。 一種常見的方法是使用tf.global_variables_initalizer()
。
例如:
import tensorflow as tf
test_var = tf.Variable([111, 11, 1])
sess = tf.Session()
sess.run(test_var)
# Error!
sess.run(tf.global_variables_initializer()) # initialize variables
sess.run(test_var)
# array([111, 11, 1], dtype=int32)
至於為什么你使用Variable
s 而不是Tensor
s,基本上一個Variable
是一個具有額外功能和效用的Tensor
。 您可以將Variable
指定為可訓練的(實際上是默認值),這意味着您的優化器將對其進行調整以盡量減少您的成本函數; 您可以指定Variable
在分布式系統上的位置; 您可以輕松保存和恢復Variable
和圖形。 可以在此處找到有關如何使用Variable
的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.