從零開始學 TensorFlow (1)(TensorFlow安裝 +TensorFlow中定義數據流圖)

 

本筆記是基於 《TensorFlow 實踐與智能系統》而寫

注:本書的源碼地址 https://github.com/backstopmedia/tensorflowbook 點擊可下載 。

目錄

1.TensorFlow 的安裝

2.構建第一個TensorFlow數據流圖(附含解決tensorboard無法啓動和顯示問題:No dashboards are active for the current data set.orNo graph definition files were found. )

3.Tensor (張量)的形狀

4.TensorFlow 的 Operation

5. TensorFlow 的 Graph 對象

6.TensorFlow Session

7.利用佔位節點添加輸入

8.Variable 對象


 

1.TensorFlow 的安裝

由於此書沒有基於windows 的安裝教程,因此在百度上找了下安裝教程。如下:

:以下安裝方法是參照 簡書上的一篇文章而來。

TenssorFlow 是什麼?

TenssorFlow 中文社區是這樣介紹的:

TensorFlow™ 是一個採用數據流圖(data flow graphs),用於數值計算的開源軟件庫。節點(Nodes)在圖中表示數學操作,圖中的線(edges)則表示在節點間相互聯繫的多維數據數組,即張量(tensor)。它靈活的架構讓你可以在多種平臺上展開計算,例如臺式計算機中的一個或多個CPU(或GPU),服務器,移動設備等等。TensorFlow 最初由Google大腦小組(隸屬於Google機器智能研究機構)的研究員和工程師們開發出來,用於機器學習和深度神經網絡方面的研究,但這個系統的通用性使其也可廣泛用於其他計算領域。


這兒只是介紹一下,在windows 10 下使用Anaconda3安裝 TenssorFlow的經驗 ;

TenssorFlow現在還不支持Python 3.7;解決辦法就是創建Python 3.6的環境或者重新安裝Python 3.6了。

方法 1: 創建基於python 3.6 的tensorflow環境

> conda create --name tensorflow python=3.6
> conda activate tensorflow
> conda install tensorflow
> python3 
>>> import tensorflow as tf  #不報錯就表示安裝成功
>>> exit()
> conda deactivate
> conda remove --name tensorflow --all

方法 2: 創建python36環境,安裝tensorflow

> conda create --name python36 python==3.6.7 
> conda activate python36
> conda install tensorflow 
> python3 
>>> import tensorflow as tf  #不報錯就表示安裝成功
>>> exit()
> conda deactivate

方法 3: Anaconda Python 3.7換成3.6

> conda install python=3.6.7
> conda install tensorflow 
> python3 
>>> import tensorflow as tf  #不報錯就表示安裝成功
>>> exit()

2.構建第一個TensorFlow數據流圖(附含解決tensorboard無法啓動和顯示問題:No dashboards are active for the current data set.orNo graph definition files were found. )


1)注意點:
這兩個函數  tf.train.SummaryWriter()     tf.summary.FileWriter() 已被替換爲 tf.compat.v1.summary.FileWriter()

2)源碼1及結果

import tensorflow as tf
# from  tensorboard import SummaryWriter

a = tf.constant(5, name="input_a")
b = tf.constant(3, name="input_b")
c = tf.multiply(a, b, name="multi_c")
d = tf.add(a, b, name="add_d" )
e = tf.add(c, d, name="add_e")

# print(a.name, b, c, d, e)
#以上代碼並不會有實質性結果的輸出 如果需要輸出結果需要添加一下代碼

sess = tf.compat.v1.Session()
print(sess.run(c))
print(sess.run(e))

# writer = tf.train.SummaryWriter('./my_graph', sess.graph)
# writer = tf.summary.FileWriter('./my_graph', sess.graph)

writer = tf.compat.v1.summary.FileWriter('./my_graph', sess.graph)
# writer = tf.compat.v1.summary.FileWriter('E:/logfile/test', sess.graph )
# tf.get_default_graph()

writer.close()
sess.close()
print(writer)

print('end')

 3)使用TensorBoard 生成的流圖

在Terminal 下輸入命令 : tensorboard --logdir=my_graph  打印如下信息 (注意下生成的my_graph的路徑)

如果本步驟有問題請按照如下鏈接嘗試解決:https://blog.csdn.net/sinat_20729643/article/details/78683677

 4)簡化流圖

 

3.Tensor (張量)的形狀

1)測試代碼及輸出結果

""" 獲取張量的形狀 """

import tensorflow as tf

mystery_tensor = ([1, 2], [3, 4])
# mystery_tensor = (3, 2, 4)
shape = tf.shape(mystery_tensor, name="mystery_tensor")

print(shape)

4.TensorFlow 的 Operation

1)運算符

 

2)相關代碼及結果

"""tensorflow  的 opreation"""

import tensorflow as tf
import numpy as np
import os
# 設置警告級別
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

a = np.array([2, 3], dtype=np.int32)
b = np.array([4, 5], dtype=np.int32)
c = tf.add(a, b, name="my_add_op")
# c = a+b

print(c)

sess = tf.Session()
# sess = tf.compat.v1.Session()
print(sess.run(c))

writer = tf.compat.v1.summary.FileWriter('./my_graph', sess.graph)

writer.close()
sess.close()
print(writer)

5. TensorFlow 的 Graph 對象

6.TensorFlow Session

7.利用佔位節點添加輸入

"""利用佔位節點添加輸入"""
import tensorflow as tf
import numpy as np

# 創建一個長度爲2 數據類型爲 int32 的佔位向量
a = tf.placeholder(tf.int32, shape=[2], name="my_input")

#將佔位向量視爲其他任意的 Tensor 對象, 加以使用
b = tf.reduce_prod(a, name="prod_b")
c = tf.reduce_sum(a, name="sum_c")

#完成數據流圖的定義
d = tf.add(b, c, name="add_d")

#定義一個TensorFlow Session 對象
sess = tf.Session()
# 創建一個將傳給 feed_dict 參數的字典
# 鍵: ‘a' 指向佔位符輸出 Tensor 對象的句柄
# 值: 一個值爲 [5, 3]、類型爲int32 的向量

input_dict = {a: np.array([5, 3], dtype=np.int32)}

print(sess.run(d, feed_dict=input_dict))

8.Variable 對象

1)創建variable

2)variable對象的初始化

3)variable對象的修改

 

4)trainable參數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章