基本原理
在TensorFlow中,所有的操作只有當你執行,或者另一個操作依賴於它的輸出時纔會運行。
運行op
構建圖時不需要顯示聲明變量名,如
tf.concat(axis=1, values=initial_state, name="initial_state")
直接使用圖中的name就可以運行了。
initial_state = sess.run(fetches="lstm/initial_state:0",
feed_dict={"case_feed:0": case_feature})
tensorflow會話
TensorFlow會自動生成一個默認的計算圖,如果沒有特殊指定,運算會自動加入這個計算圖中。TensorFlow中的會話也有類似的機制,但是TensorFlow不會自動生成默認的會話,而是需要手動指定。
tf.Session()創建一個會話,當上下文管理器退出時會話關閉和資源釋放自動完成。
tf.Session().as_default()創建一個默認會話,當上下文管理器退出時會話沒有關閉,還可以通過調用會話進行run()和eval()操作。
import tensorflow as tf
a = tf.constant([[3, 2, 7],
[2, 9, 8]])
print(a)
with tf.Session() as sess:
print(sess.run(a))
# print(a.eval()) #或者這樣
輸出:
Tensor("Const:0", shape=(2, 3), dtype=int32)
[[3 2 7]
[2 9 8]]
Note: 直接print只會打印tensor信息,是沒有數值的。參考[Tensorflow:輸入輸出]
import tensorflow as tf
a = tf.constant(1.0)
b = tf.constant(2.0)
with tf.Session().as_default() as sess:
print(a.eval())
print(b.eval(session=sess))
1.0
2.0
tensorflow數據類型及轉換
tf.string類型
tf.string 張量可以保存不同長度的字節串,因爲字節串被視爲原子單位。字符串長度不包括在張量尺寸中。即不管用py2還是py3,tf中的str都是bytes類型,有編碼的。
編碼轉換參考[TensorFlow支持Unicode,中文NLP終於省心了]
不過建議還是直接用bytes,不要變成unicode了,在tf內部還是會轉成bytes。
其它數據類型及轉換參考:
from: -柚子皮-
ref: