標籤:

TensorFlow安裝、開發環境設定、使用入門

TensorFlow安裝、開發環境設定、使用入門

來自專欄 深度學習模型

安裝Anaconda

本文主要介紹使用Anaconda安裝TensorFlow, 操作系統為Win10。

首先從Anaconda官網下載並安裝Anaconada:

https://www.anaconda.com/download/

如果訪問anaconda網站有問題的話,國內可以使用清華的鏡像下載:

https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

選擇對應操作系統的anaconda,並安裝。anaconda官方下載更新工具包的速度很慢,所以繼續添加清華大學 提供的Anaconda倉庫鏡像,在終端或cmd中輸入如下命令進行添加:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --set show_channel_urls yesconda install numpy #測試是否添加成功

安裝TensorFlow

打開「開始目錄」,找到Anaconda/Anaconda prompt,以管理員許可權運行。在終端或cmd中輸入以下命令搜索當前可用的tensorflow版本。

anaconda search -t conda tensorflow

選擇一個較新的CPU或GPU版本,如aaronzs/tensorflow,輸入如下命令查詢安裝命令

anaconda show aaronzs/tensorflow

使用上述命令的執行結果的最後一行的提示命令進行安裝

conda install --channel https://conda.anaconda.org/aaronzs tensorflow

conda會自動檢測安裝此版本的Tensorflow所依賴的庫,如果你的Anaconda缺少這些依賴庫,會提示你安裝。因為我之前已經安裝過了,所以這裡只提示我安裝Tensorflow。輸入y並回車之後等待安裝結束即可。

進入python,輸入

import tensorflow as tfhello = tf.constant(Hello, TensorFlow!)sess = tf.Session()print(sess.run(hello))

如果可以正常執行,表示安裝沒有問題。

集成開發環境設定

我們選用pycharm作為tensorflow python的集成開發工具,可以根據需要選擇相應的版本,PyCharm Professional Edition和PyCharm Community Edition。下載地址為:

https://www.jetbrains.com/pycharm/

安裝好後,在新建項目中選擇選擇相應的python 解釋器地址(可以選擇anaconda中的python開發環境):

C:ProgramDataAnaconda3python.exe

然後在開發環境中,新建一個 example.py 文件,測試如下代碼是否可以正常運行:

import tensorflow as tfhello = tf.constant(Hello, TensorFlow!)sess = tf.Session()print(sess.run(hello))

線性回歸用例:

import tensorflow as tf# Model parametersW = tf.Variable([.3], dtype=tf.float32)b = tf.Variable([-.3], dtype=tf.float32)# Model input and outputx = tf.placeholder(tf.float32)linear_model = W*x + by = tf.placeholder(tf.float32)# lossloss = tf.reduce_sum(tf.square(linear_model - y)) # sum of the squares# optimizeroptimizer = tf.train.GradientDescentOptimizer(0.01)train = optimizer.minimize(loss)# training datax_train = [1, 2, 3, 4]y_train = [0, -1, -2, -3]# training loopinit = tf.global_variables_initializer()sess = tf.Session()sess.run(init) # reset values to wrongfor i in range(1000): sess.run(train, {x: x_train, y: y_train})# evaluate training accuracycurr_W, curr_b, curr_loss = sess.run([W, b, loss], {x: x_train, y: y_train})print("W: %s b: %s loss: %s"%(curr_W, curr_b, curr_loss))

TensorFlow程序設計簡介

當安裝完TensorFlow和設定好TensorFlow開發環境後,本章主要介紹TensorFlow程序中的基本概念。

寫TensorFlow程序首先需要調入TensorFlow相關的Python庫,如下所示:

from __future__ import absolute_importfrom __future__ import divisionfrom __future__ import print_function#python numpy庫import numpy asnp#TensorFlow庫importtensorflow as tf

TensorFlow中處理的核心數據定義為Tensor,是一個多維矩陣。矩陣的維度稱之為rank,相應地矩陣每個維度對應的元素個數稱之為shape。如下所示:

3 #rank=0,表示常量,對應的shape為[][1., 2., 3.] # rank=1,表示向量,對應的shape為 [3][[1., 2., 3.],[4., 5., 6.]] # rank=2; 表示二維矩陣,對應的shape為 [2, 3][[[1., 2., 3.]],[[7., 8., 9.]]] # rank=3;表示三維矩陣,對應的shape為 [2, 1, 3]

TensorFlow的核心程序主要由兩部分組成:構建計算圖,稱之為Graph;運行計算圖,稱之為Session。和圖計算的思想一樣,TensorFlow的計算圖同樣由節點和邊組成。TensorFlow中的節點稱之為Operation,主要用於計算操作,操作的輸入和輸出是Tensor。TensorFlow圖中的邊表示Tensor,表示在計算圖中流轉的數據。下面的示例代碼構建了一個簡單的TensorFlow計算圖:

a = tf.constant(3.0, dtype=tf.float32)b = tf.constant(4.0) # also tf.float32 implicitlytotal = a + bprint(a)print(b)print(total)

TensorFlow Tensor

TensorFlow中的Tensor可以是一個標量,向量,二維矩陣或多維矩陣,通常可以認為Tensor是一個多維矩陣。程序中用tf.Tensor來表示TensorFlow的Tensor對象,該對象主要包含以下幾個屬性:

1. 數據類型,例如float32,int32,string。

2. 矩陣的維度大小信息,例如[32,100]表示32行,100列的二維矩陣。

在TensorFlow程序中,可以通過如下操作來生成Tensor:

1. tf.Variable 構建變數

tf.Variable([100],name="var1",dtype=tf.float32)

2. tf.constant 構建常量

cons1=tf.constant(-1.0, name="cons1", shape=[2, 3])

3. tf.placeholder 構建佔位符

import tensorflow as tfimport numpy as npx = tf.placeholder(tf.float32, shape=(1024, 1024))y = tf.matmul(x, x)rand_array = np.random.rand(1024, 1024)sess=tf.Session()print(sess.run(y, feed_dict={x: rand_array}))

TensorFlow變數

TensorFlow模型中一般使用tf.get_variable來定義變數,與tf.Variable的主要區別在於tf.get_variable定義的變數可以被重複使用,從而簡化TensorFlow模型的定義。下面主要講解TensorFlow變數的常用用例:

創建變數:

my_variable = tf.get_variable("my_variable", [1, 2, 3])my_int_variable = tf.get_variable("my_int_variable", [1, 2, 3], dtype=tf.int32,initializer=tf.zeros_initializer)other_variable = tf.get_variable("other_variable", dtype=tf.int32,initializer=tf.constant([23, 42]))

其中[1, 2, 3]表示變數的shape,initializer表示變數的初始方法。my_variable的默認數據類型為float32,默認的變數初始化方法為tf.glorot_uniform_initializer的均勻分布。

TensorFlow Graph和Sesssion

在TensorFlow中tf.Graph主要包含兩部內容:

1. 圖結構:包含節點和邊,節點主要指的是TensorFlow中的操作,邊主要指的是Tensor數據。

2. 圖中的集合:TensorFlow中定義了一系列的集合,用來存儲圖中的元數據信息,如全局變數,訓練變數,局部變數等。集合的key值定義在tf.GraphKeys中。

在圖的定義中,可以指定操作的命名空間,如下所示:

c_0 = tf.constant(0, name="c") # => 操作命名為 "c"# 注意c名字已經被使用c_1 = tf.constant(2, name="c") # => 操作命名為 "c_1"# 指定操作的命名空間with tf.name_scope("outer"): c_2 = tf.constant(2, name="c") #=> 操作命名為"outer/c"# 指定操作的命名空間with tf.name_scope("inner"): c_3 = tf.constant(3, name="c") #=> 操作命名為"outer/inner/c"# 相同的命名空間,存在同名的操作c_4 = tf.constant(4, name="c") #=> 操作被命名為"outer/c_1"# 相同的命名空間,存在同名的操作with tf.name_scope("inner"): c_5 = tf.constant(5,name="c") # => 操作命名為"outer/inner_1/c

TensorFlow 模型的保存和回復

保存模型:

import tensorflow as tf# 創建模型變數.v1 = tf.get_variable("v1", shape=[3], initializer = tf.zeros_initializer)v2 = tf.get_variable("v2", shape=[5], initializer = tf.zeros_initializer)inc_v1 = v1.assign(v1+1)dec_v2 = v2.assign(v2-1)#模型全局變數初始操作.init_op = tf.global_variables_initializer()#用於保存模型變數的操作.saver = tf.train.Saver()# 保存模型到磁碟.with tf.Session() as sess: sess.run(init_op) #執行模型中的操作. inc_v1.op.run() dec_v2.op.run() # 保存模型變數到磁碟. save_path = saver.save(sess, "C:\tmp\ckpt\model.ckpt") print("Model saved in path: %s" % save_path)

注意:並沒有物理文件名叫C:\tmp\ckpt\model.ckpt,model.ckpt是checkppoint文件的前綴。

「.meta」文件:圖形結構元數據信息。

「.data」文件:checkpoint數據文件。

「.index」文件:checkpoint數據索引文件。

「checkpoint」文件:最近檢查點的文件列表信息。內容如下所示:

model_checkpoint_path: "C:\tmp\ckpt\model.ckpt"all_model_checkpoint_paths: "C:\tmp\ckpt\model.ckpt"

恢復模型變數:

import tensorflow as tftf.reset_default_graph()# 創建模型變數v1 = tf.get_variable("v1", shape=[3])v2 = tf.get_variable("v2", shape=[5])# 用於回復模型變數saver = tf.train.Saver()with tf.Session() as sess: # 從磁碟回復模型變數 saver.restore(sess, "C:\tmp\ckpt\model.ckpt") print("Model restored.") # 列印變數值 print("v1 : %s" % v1.eval()) print("v2 : %s" % v2.eval())

查看模型變數

from tensorflow.python.tools import inspect_checkpoint as chkp# 列印checkpoint文件中所有變數chkp.print_tensors_in_checkpoint_file("C:\tmp\ckpt\model.ckpt", tensor_name=, all_tensors=True, all_tensor_names=True)# 列印checkpoint文件中的變數v1chkp.print_tensors_in_checkpoint_file("C:\tmp\ckpt\model.ckpt", tensor_name=v1, all_tensors=False, all_tensor_names=False)# 列印checkpoint文件中的變數v2chkp.print_tensors_in_checkpoint_file("C:\tmp\ckpt\model.ckpt", tensor_name=v2, all_tensors=False, all_tensor_names=False)

推薦閱讀:

TF Boys (TensorFlow Boys ) 養成記(二): TensorFlow 數據讀取
Machine Learning(一):基於 TensorFlow 實現寵物血統智能識別
如何評價陳天奇的模塊化深度學習系統NNVM?
NLP(2) Tensorflow 文本- 價格建模 Part2
Kubeflow 安利:在 Kubernetes 上進行機器學習

TAG:TensorFlow |