TensorFlow機器學習&深度學習框架快速入門

 

一.簡介

  TensorFlow是Google第二代機器學習和深度學習框架,支持CNN、RNN和LSTM算法,能夠跨平臺運行。TensorFlow底層部分是C++實現,具備較高的執行效率。支持不一樣的前端,包含Python和C++。html

二.安裝

  安裝TensorFlow框架須要安裝一些依賴工具,這些工具包括:前端

    1.html5lib-0.9999999html5

    2.bleach-1.5.0-py2.py3-none-any.whl算法

    3.Markdown-2.6.11-py2.py3-none-any.whlwindows

    4.protobuf-3.6.1-cp36-cp36m-win_amd64.whl數組

    5.tensorboard-1.10.0-py3-none-any.whl網絡

    6.tensorflow_tensorboard-1.5.1-py3-none-any.whl框架

  注意:在安裝bleach-1.5.0-py2.py3-none-any.whl時會先下載html5lib-0.9999999.tar.gz包,就算是你已經安裝好了html5lib,仍是會繼續下載,這時要是網絡較差,就會一直下載失敗,此時,能夠這樣執行安裝,命令以下:pip install bleach-1.5.0-py2.py3-none-any.whl html5lib-0.9999999.tar.gz,記住,是tag.gz包,在windows下,文件擴展名gz不顯示。  機器學習

  在上面提到的依賴安裝完成後,執行安裝tensorflow框架,安裝成功以下:函數

  驗證:

    

  在程序中引入tensorflow不提示沒法識別!

三.代碼實現

1 # -*- coding: utf-8 -*-
 2 """
 3 Created on Tue Oct  2 15:49:08 2018
 4 
 5 @author: zhen
 6 """
 7 
 8 import tensorflow as tf
 9 import numpy as np
10 from sklearn.datasets import  fetch_california_housing
11 
12 x = tf.Variable(3, name='x')
13 y = tf.Variable(4, name='y')
14 
15 # 任何建立的節點會自動加入到默認的圖中
16 print(x.graph is tf.get_default_graph())
17 
18 # 建立新的圖
19 graph = tf.Graph()
20 
21 with graph.as_default():
22     # 只在with範圍內有效
23     demo = tf.Variable(3)
24 
25 print(demo.graph is graph)
26     
27 demo2 = tf.Variable(3)
28 print(demo2.graph is graph)
29 
30 # 建立常量
31 constant = tf.constant(3)
32 
33 f = x * x * y + x * y + 1
34 f2 = f * constant
35 
36 # 能夠不分別對每一個變量去進行初始化,在run運行時初始化
37 init = tf.global_variables_initializer()
38 
39 with tf.Session() as sess:
40     init.run()
41     result = f.eval()
42     result2 = f2.eval()
43     print(result, result2)
44 
45     f_result, f2_result = sess.run([f, f2])
46     print(f_result, f2_result)
47 
48 # 獲取數據集
49 housing = fetch_california_housing(data_home="C:/Users/zhen/.spyder-py3/data", download_if_missing=True)
50 # 獲取x數據行數和列數
51 m, n = housing.data.shape
52 # 添加額外數據加入特徵
53 housing_data_plus_bias = np.c_[np.ones((m, 1)), housing.data]
54 # 建立兩個Tensorflow常量節點x和y,去持有數據和標籤
55 x = tf.constant(housing_data_plus_bias, dtype=tf.float32, name='x')
56 y = tf.constant(housing.target.reshape(-1, 1), dtype=tf.float32, name='y')
57 # 矩陣操做
58 xt = tf.transpose(x)
59 # 計算最優解
60 theta = tf.matmul(tf.matmul(tf.matrix_inverse(tf.matmul(xt, x)), xt), y)
61 with tf.Session() as sess:
62     theta_value = theta.eval()
63     print(theta_value)

四.代碼詳解

  1.代碼在執行時可能會報一下AVX警告【不影響程序正常執行】:

2020-01-13 09:46:26.930863: W C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\36\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
2020-01-13 09:46:26.931377: W C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\36\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.

  這個警告意思是你安裝的TensorFlow支持AVX/AVX2,可是沒有編譯,不能使用。使用AVX/AVX2能夠提高你CPU的執行效率。通常出現這種狀況是你安裝TensorFlow時使用的是pip install tensorflow而不是源碼安裝。遇到這種狀況能夠在你的代碼中添加一下程序指定日誌級別,屏蔽警告信息:

import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'

  2.fetch_california_housing

    加利福尼亞購房信息數據,這是一個開放的數據源,普遍使用在線性迴歸&邏輯迴歸算法的訓練上。使用fetch_california_housing(data_home="C:/Users/zhen/.spyder-py3/data", download_if_missing=True)這行程序可使用這個數據集。download_if_missing=True表示若data_home目錄下不存在該數據,就直接下載該數據,若存在則直接加載此數據。

  3.tf.Variable() & tf.constant()

    使用tensorflow建立變量,variable是可變變量,constant是常量。

  4.eval()和run()的區別

    eval():將字符串對象轉換爲有效的表達式參與求值運算並返回計算結果。eval()也是啓動計算的一種方式。基於tensorflow的基本原理,首先須要定義圖,而後計算圖,其中計算圖的函數常見的有run()函數,如sess.run()。要注意的是,eval()只能用於tf.Tensor類對象,也就是有輸出的Operation。對於沒有輸出的Operation,能夠用run()或者Session.run(),Session.run()沒有這個限制。

  5.np.ones & np.c_ & np.r_

    np.ones:建立一個全是1的n維數組,有三個參數:shape【指定返回數組的大小】、dtype【數組元素的類型,能夠不指定,自動推演】、order【是否之內存中的C或Fortran連續順序存儲多維數據,能夠不指定】。

    np.c_:按行鏈接兩個矩陣,就是把兩個矩陣按行進行拼接,要求行數一致。

    np.r_:按列鏈接兩個矩陣,就是把兩個矩陣按列進行拼接,要求列數一致。

  6.tf.transpose & tf.matmul

    tf.transpose:矩陣轉置

    tf.matmul:矩陣相乘,與此相似的還有tf.multiply,tf.multiply表示矩陣對應元素相乘!

  7.tf.matrix_diag & tf.matrix_inverse

    tf.matrix_diag:輸入一個向量,輸出二維的對角矩陣。

    tf.matrix_inverse:輸入一個矩陣,獲得該矩陣的逆矩陣。須要矩陣中的數據爲浮點數!

五.執行結果

  

六.備註

  離線包下載:https://pan.baidu.com/s/1DQdOViNreI9OjiGWLWHZ6g 提取碼:ddfp

相關文章
相關標籤/搜索