標籤:

執行tf.convert_to_tensor()時,究竟發生了什麼?

最近在看別人TensorFlow的代碼,總想弄明白「這句命令什麼時候執行,執行之後發生了什麼」,特別是讀取數據的時候。今天弄明白了tf.convert_to_tensor()執行的時候發生了什麼,在這裡做一下筆記。

先看代碼:

self.image_list, self.label_list = read_labeled_image_list(self.data_dir, self.data_list)n self.images = tf.convert_to_tensor(self.image_list, dtype=tf.string)n self.labels = tf.convert_to_tensor(self.label_list, dtype=tf.string)n

這裡的read_labeled_image_list是用來讀取圖像和標籤的路徑的,返回兩個list。

打上斷點,看這兩句話執行之後的效果。

tf.convert_to_tensor()執行後返回一個Tensor,問題是,這個Tensor是什麼樣子的?

在TF的Graph中,Tensor是邊,Op是點,TensorFlow將Tensor與對應的Op的關係描述為「The Operation that produces this tensor as an output.」

我們可以看到這個Tensor的Op是誰:

name: "create_inputs/Const"nop: "Const"nattr {n key: "dtype"n value {n type: DT_STRINGn }n}nattr {n key: "value"n value {n tensor {n dtype: DT_STRINGn tensor_shape {n dim {n size: 5598n }n }n string_val: "00000.png"n string_val: "00001.png"n string_val: "00002.png"n ……n }n }n}n

可以看到執行完這兩條語句之後,當前的Graph上多出來兩個Op:

綜上所述,執行tf.convert_to_tensor()的時候,在圖上生成了一個Op,Op中保存了傳入參數的數據。

推薦閱讀:

1.4 卷積神經網路初探
深入淺出Tensorflow(一):深度學習及TensorFlow簡介
Deep Learning的IR「之爭」
Tensorflow源碼解讀(一):AttentionnSeq2Seq模型
深入淺出Tensorflow(四):卷積神經網路

TAG:TensorFlow |