作為一個全面且靈活的開源機器學習平台,我們可以藉助TensorFlow 建立適用於桌面、行動、Web 和雲環境的機器學習模型,也可以簡單說TensorFlow 是一個開源的機器學習的框架,我們可以使用TensorFlow 來快速地建立神經網絡,同時快速地進行網路的訓練、評估與保存。
我們在安裝TensorFlow之後,每次使用可以直接進行導入方便快捷
import TensorFlow as tf
TensorFlow官方網站如下:
關於TensorFlow |TensorFlow中文官網(google.cn)
● 彈性強:只要運算能表示為計算流程圖,都可以使用TF。
● 真正的可移植性:支援桌上型電腦、伺服器(CPU、GPU皆可)、嵌入式裝置。
● 多語言支援:基於Python,也提供C 使用介面、Ipython互動介面。
● 視覺化工具:TensorFlow提供一個強大的視覺化工具,TensorBoard。
● 豐富的封裝庫支援:TFlearn、TF-Slim、Keras等。
#● 不支援Windows
##除了TensorFlow所擁有的所有優勢外,它對Windows使用者的功能非常有限。對於Linux用戶則是非常友善的.
● 支援GPU
TensorFlow只有NVIDIA對GPU的支援和Python程式語言對GPU程式設計的支援。 1.2.3 TensorFlow架構解讀
#第一層:設備通訊層,由設備層和網路層組成,負責網路通訊和設備管理。設備管理可實現TF設備異質的特性,設備層支援CPU、GPU、Mobile等不同設備的通訊實作。網路通訊依賴
#gRPC
#通訊協定實現不同裝置間的資料傳輸和更新。
第二層:Kernel 實現層,以Tensor為處理對象,依賴網路通訊和設備記憶體分配,實現了各種Tensor操作或計算,主要是機器學習的內核實現。
第三層:圖計算層,由分散式主控和資料流執行器組成,包含本地計算流程圖和分散式計算流程圖的實作。分散式主控根據負載能力將不同的工作量分配在不同的設備上,資料流執行器基於最好的實驗方式來執行資料流程圖.
###第四層: API介面層,C API是TF功能模組的介面封裝,它是用C語言實作的。選擇C語言是因為它是一種底層語言,簡單快速、可靠,並且可以在任何作業系統上運行。 ############第五層: Client 層,Python,C 等程式語言在應用層透過API介面層呼叫TF核心功能實現相關實驗與應用。 ############而TensorFlow的最後一層包含用python和C 實現的訓練和推理函式庫。 ######想全面了解TensorFlow入門實作的基礎理論和設計思路,可以到中國大學MOOC 學習《 TensorFlow 入門實操課程》 ,快速上手TensorFlow基本應用與實作。
此處以Ubuntu 16.04 或更高版本(64 位元)為例進行解說
PIP 是一種套件管理系統,用於安裝和管理用Python 寫的軟體套件。
首先我們需要安裝python環境, 需要使用Python 3.6-3.9 和pip 19.0 及更高版本.如果不確定我們是否已經安裝,可以通過版本檢查的方式進行查看,確保後續可以繼續進行.
python3 –version pip3 --version
如果沒有安裝,請參考如下程式碼:
sudo apt update sudo apt install python3-dev python3-pip python3-venv
重點: 其實,此處針對python的安裝我更建議安裝anaconda,這樣可以省很多的事情,anaconda包含了conda、Python等190多個科學包及其依賴項. 能減少各種庫問題,版本問題.
其次我們需要建立環境,這裡建議是安裝虛擬環境
最後我們啟動虛擬環境,然後在虛擬環境下進行TensorFlow pip 軟體包的安裝
pip install --upgrade TensorFlow
安裝結束以後可以進行驗證,確保安裝成功
python -c "import TensorFlow
git clone --recurse-submodules https://github.com/TensorFlow/TensorFlow
安裝
#參考 https:/ /www.php.cn/link/a03caec56cd82478bf197475b48c05f9
##設定./configure以你的實際情況如實回答一系列問題。回答之後 bazel 會對環境進行配置,此時需要機器可以存取外網,以便取得一些編譯依賴套件。一些包包可能需要翻牆。
編譯
bazel build -c opt --config=cuda //TensorFlow/tools/pip_package:build_pip_package
Docker 是一個開源的應用程式容器引擎,讓開發者可以打包他們的應用程式以及依賴套件到一個可移植的容器中,然後發佈到任何流行的Linux 機器上,也可以實現虛擬化。
當你透過 Docker 安裝和執行 TensorFlow 時,它與你機器上先前已安裝的軟體包完全隔離。
官方映像
官方提供了4 個Docker 映像可供使用:
#僅CPU 版,無開發環境:gcr.io/TensorFlow/TensorFlow
僅CPU 版,有開發環境:gcr.io/TensorFlow/TensorFlow:latest- devel
支援GPU,無開發環境:gcr.io/TensorFlow/TensorFlow:latest-gpu
支援GPU,有開發環境: gcr.io/TensorFlow/TensorFlow:latest-devel-gpu
建立Docker 使用者群組允許一般用戶無需sudo 即可啟動容器。
usermod -a -G docker 用户名
啟動Docker 容器
#我使用的是支援GPU的版本所以選擇第四個進行安裝.大家看自己的電腦支援什麼版本然後對應指令下載即可.docker run -it
gcr.io/TensorFlow/TensorFlow
2.2使用
2.2.1佔位符##語法: tf.compat.v1.placeholder(dtype,shape=None, name=None)
範例1:
#w = tf.constant([1, 1, 2, 2, 3, 3], shape=[2, 3]) h = tf.constant([7, 7, 9, 9, 11, 11], shape=[3, 2]) #下面语法表示的是两个矩阵相乘 l = tf.matmul(w, h) with tf.Session() as print(sess.run([a,b,c]))
範例2:
首先import进行导入 import TensorFlow as tf w = tf.placeholder(dtype=tf.float32) h = tf.placeholder(dtype=tf.float32) sum = tf.add(w,h) ## 填充数据时,使用run()方法的feed_dict参数指定张量对应的值即可,数据格式和字典类似。 with tf.Session() as sess: # 填充占位符,填充形式类字典 res = sess.run(sum, feed_dict={w: [5], h: [6]}) print(res)##########具體的參數說明:############ ###● ###dtype:張量中元素的資料類型,將被輸入。 ###############● ###shape : 預設為None:將被輸入的張量的形狀,它是一個可選參數。如果沒有指定形狀,人們可以輸入任何形狀的張量。 ##########
● name: 默认为None:操作的名称,可选参数。
Variable()构造函数希望变量有一个初始值,它可以是任何种类或形状的Tensor。变量的类型和形式由其初始值定义。形状和变量一旦被创建就会被固定下来。
在众多的参数中,需要注意的是validate_shape: 默认为True。如果是False,允许变量以未知的形状值初始化。如果是True,初始值的形状必须是已知的,这是默认的。
2.2.2.1创建变量
最常见的创建变量方式是使用Variable()构造函数。
import TensorFlow as tf v = tf.Variable([1,2,3,4,5,6]) #创建变量v,为一个array print(v) #查看v的shape,不是v的值。 ## 结果是: <tf.Variable 'Variable:0' shape=(6,), numpy=array([1,2,3,4,5,6],dtype=int32)> with tf.Session() as sess: sess.run(v.initializer) ##运行变量的initializer。调用op之前,所有变量都应被显式地初始化过。 sess.run(v) ##查看v的值,结果是:array([1,2,3,4,5,6])
注意: 我们在进行初始化的时候也可以按如下书写
init = tf.global_variables_initializer()#全局变量初始化 with tf.Session() as sess: sess.run(init)
2.2.2.2分配或修改变量中的元素
我们使用assign()方法来修改这个变量。
示例一:assign用来更新值
w = tf.Variable([3, 4,5,6]) w [1].assign(2) w
输出结果如下:
<tf.Variable ‘Variable:0’ shape=(4,), numpy=array([3, 2,5,6], dtype=int32)> ## 我们在此处使用assign将数组中的索引为1的值由4更新为2
示例二 : assign_add()用来添加变量值
# create variable w = tf.Variable([3, 4,5,6]) # using assign_add() function w.assign_add([1, 1,1,1]) w
输出结果如下:
<tf.Variable ‘Variable:0’ shape=(4,), numpy=array([4, 5,6,7], dtype=int32)> ## 我们在此处使用assign_add()将数组中的每一个数值加1进行输出
示例三: assign_sub()用来从变量中减去值
# create variable w = tf.Variable([3, 4,5,6]) # using assign_add() function w.assign_sub([1, 1,1,1]) w <tf.Variable ‘Variable:0’ shape=(4,), numpy=array([2, 3,4,5], dtype=int32)> ## 我们在此处使用assign_sub()将数组中的每一个数值减1进行输出
2.2.2.3改变变量的形状
tf.reshape()方法用于改变变量的形状。必须传递变量和形状。
import TensorFlow as tf w= tf.Variable([[3, 5, 6, 7]]) tf.reshape(w, shape=(2, 2)) w
输出结果如下:
<tf.Tensor: shape=(2, 2), , numpy=array([[3, 5],[6, 7]], dtype=int32)>
TensorFlow中只有让Graph(计算图)上的节点在Session(会话)中执行,才会得到结果。Session的开启涉及真实的运算,因此比较消耗资源。在使用结束后,务必关闭Session。
方式一进行手动关闭:
import TensorFlow as tf w= tf.constant(8, dtype=tf.int8) h = tf.constant(6, dtype=tf.int8) result= w + h sess = tf.Session() sess.run(result)#执行运算 sess.close() #手动关闭session
方式二进行自动关闭(使用到with语句):
import TensorFlow as tf w= tf.constant(8, dtype=tf.int8) h = tf.constant(6, dtype=tf.int8) result= w + h with tf.Session() as sess: #运算结束后session自动关闭 sess.run(res)
安装好TensorFlow后,初步入门机器学习的同学可以到中国大学MOOC上学习《 TensorFlow 入门实操课程 》,快速了解如何使用TensorFlow建立和训练神经网络、用自然语言处理系统教会机器理解、分析和回应人类的言语 、构建和训练模型等基本理论。我推荐对模型部署有需求的同学可以去了解《 TensorFlow 入门课程 - 部署篇 》,高效掌握在多种生产场景下灵活部署模型的技巧。大家也可以在TensorFlow官网(https://www.php.cn/link/e48382353dc6c66379fb8e1ebf48c5e8)上探索更多学习资源,持续精进机器学习知识与技能!
张云波,活跃的IT网红讲师,拥有学员31w+,国内早期开始和发布苹果Swift、安卓Kotlin、微信小程序、区块链技术的讲师之一。主攻前端开发、iOS开发、Android开发、Flutter开发、区块链Dapp开发,有丰富的大公司和海外工作经验。
以上是帶你初步了解 TensorFlow 的安裝的詳細內容。更多資訊請關注PHP中文網其他相關文章!