深度學習(1)---Tensorflow基礎概念


前段時間學習了一下tensorflow,今天重新去學的時候發現之前學的忘掉了,所以打算把之前的重新看一遍並且每一個知識點都記錄下來。


1.首先還是來一段介紹

  • TensorFlow™ 是一個開放源代碼軟件庫,用於進行高性能數值計算• 藉助其靈活的架構,用戶可以輕鬆地將計算工作部署到多種平臺(CPU、GPU、TPU)和設備(桌面設備、服務器集羣、移動設備、邊緣設備等)
  • TensorFlow™ 最初是由 Google Brain 團隊(隸屬於 Google 的 AI 部門)中的研究人員和工程師開發的,可爲機器學習和深度學習提供強力
    2.tensorflow裏的hello world
import tensorflow as tf
# 下面兩句是防止警告信息
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
# 創建一個常值運算,將作爲一個節點加入到默認計算圖中
hello = tf.constant("Hello world!")

# 創建一個TF對話
sess = tf.Session()

# 運行並獲取結果
print(sess.run(hello))

輸出結果:

runfile('/home/tlxy/PycharmProjects/demo1/tensorflow/demo1.py', wdir='/home/tlxy/PycharmProjects/demo1/tensorflow')
b'Hello world!'

TensorFlow計算模型 – 計算圖

1.tensorflow的基本概念

TensorFlow = Tensor + Flow

  • Tensor 張量
    - 數據結構:多維數組
  • Flow 流計算模型:張量之間通過計算而轉換的過程
  • TensorFlow是一個通過計算圖的形式表述計算的編程系統每一個計算都是計算圖上的一個節點,節點之間的邊描述了計算之間的關係。

2.計算圖(數據流圖)的概念

在這裏插入圖片描述
計算圖是一個有向圖(有向圖即爲有箭頭的圖像)
由以下內容構成:
• 一組節點,每個節點都代表一個操作,是一種運算
• 一組有向邊,每條邊代表節點之間的關係(數據傳遞和控制依賴)

Tensorflow有兩種邊:
• 常規邊(實線):代表數據依賴關係。一個節點的運算輸出成爲另一個節點的輸入,兩個節點之間有tensor流動(值傳遞)• 特殊邊(虛線):不攜帶值,表示兩個節點之間的控制相關性。比如,happens-before關係,源節點必須在目的節點執行前完成執行

計算圖的一個小栗子

import tensorflow as tf

# 一個簡單的計算圖
node1 = tf.constant(3.0, tf.float32, name="node1")
node2 = tf.constant(4.0, tf.float32, name="node1")
node3 = tf.add(node1, node2)
print(node3)
print(node1)
print(node2)

我們分別打印出:

Tensor("Add:0", shape=(), dtype=float32)
Tensor("node1:0", shape=(), dtype=float32)
Tensor("node1_1:0", shape=(), dtype=float32)

輸出的是一個張量結構,而不是一個值
在這裏插入圖片描述

計算圖的執行

node1 = tf.constant(3.0, tf.float32, name="node1")
node2 = tf.constant(4.0, tf.float32, name="node1")
node3 = tf.add(node1, node2)

# 可以通過創建會話session來執行數據操作
sess = tf.Session()

print("node1的值:",sess.run(node1))

print("node2的值:",sess.run(node2))

print("node3的值:",sess.run(node3)) 

sess.close()

輸出結果:

node1的值: 3.0
node2的值: 4.0
node3的值: 7.0

通過session我們可以真正執行這個計算圖

今天就記到這裏,之後學的東西還是得記錄,不然容易忘記!