學習目標:
構建乙個簡單的 tensorflow 程式,使用該程式繪製乙個預設圖
並建立乙個執行該圖的會話
注意:
請仔細閱讀本教程。tensorflow 程式設計模型
很可能與您遇到的其他模型不同,因此可能不如您期望的那樣直觀。
tensorflow 的名稱源自張量
,張量
是任意維度的陣列
。
tensorflow指令
會建立
、銷毀
和操控
張量。典型 tensorflow 程式中的大多數**行都是指令。
tensorflow圖
(也稱為計算圖
或資料流圖
)是一種圖資料結構
。很多 tensorflow 程式由單個圖構成,但是 tensorflow 程式可以選擇建立多個圖。圖
的節點
是指令
;圖
的邊
是張量
。張量流經圖,在每個節點由乙個指令操控。乙個指令的輸出張量通常會變成後續指令的輸入張量。tensorflow 會實現延遲執行模型
,意味著系統僅會根據相關節點的需求在需要時計算節點。
張量可以作為常量
或變數
儲存在圖中。您可能已經猜到,常量儲存的是值不會發生更改的張量,而變數儲存的是值會發生更改的張量。不過,您可能沒有猜到的是,常量和變數都只是圖中的一種指令。常量是始終會返回同一張量值的指令。變數是會返回分配給它的任何張量的指令。
使用tf.constant
指令定義常量,並傳入它的值。例如:
x = tf.constant([5.2])
使用tf.variable
指令定義建立變數,並傳入它的值。例如:
y = tf.variable([5])
或者,您也可以先建立變數
,然後再如下所示地分配乙個值
(注意:您始終需要指定乙個預設值):
y = tf.variable([0])
y = y.assign([5])
定義一些常量或變數後,您可以將它們與其他指令(如tf.add
)結合使用。在評估tf.add
指令時,它會呼叫您的tf.constant
或tf.variable
指令,以獲取它們的值,然後返回乙個包含這些值之和的新張量。
圖
必須在 tensorflow會話
中執行,會話儲存了它所執行的圖的狀態
:
將 tf.session() 作為會話:
initialization = tf.global_variables_initializer()
print y.eval()
在使用tf.variable
時,您必須在會話開始時呼叫tf.global_variables_initializer
,以明確初始化這些變數
,如上所示。
注意:會話
可以將圖分發到多個機器上執行
(假設程式在某個分布式計算框架上執行)。有關詳情,請參閱分布式 tensorflow。
tensorflow程式設計本質上是乙個兩步流程
輸出 tensorflow 版本
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import tensorflow
print(tensorflow.__version__)
輸出
1.8.0
我們來看看如何編寫乙個將兩個常量相加
的簡單 tensorflow 程式
與幾乎所有 python 程式一樣,您首先要新增一些import
語句。
當然,執行 tensorflow 程式所需的import
語句組合取決於您的程式將要訪問的功能。至少,您必須在所有 tensorflow 程式中新增import tensorflow
語句:
import tensorflow as tf
請勿忘記執行前面的**塊(import
語句)。
其他常見的 import 語句包括:
import matplotlib.pyplot as plt # 資料集視覺化
import numpy as np # 低階數字 python 庫
import pandas as pd # 較高階別的數字 python 庫
tensorflow 提供了乙個預設圖。不過,我們建議您明確建立自己的graph
,以便跟蹤狀態
(例如,您可能希望在每個單元格中使用乙個不同的graph
)。
import tensorflow as tf
# create a graph.
g = tf.graph(
)# establish the graph as the "default" graph.
with g.as_default(
): # assemble a graph consisting of the following three operations:
# * two tf.constant operations to create the operands.
# * one tf.add operation to add the two operands.
x = tf.constant(8, name=
"x_const"
) y = tf.constant(5, name=
"y_const"
)sum
= tf.add(x, y, name=
"x_y_sum"
)# now create a session.
# the session will run the default graph.
with tf.session(
) as sess:
print sum.eval(
)
輸出
13
修改上面的**列表,以將三個整數(而不是兩個)相加:
# create a graph.
g = tf.graph(
)# establish our graph as the "default" graph.
with g.as_default(
): # assemble a graph consisting of three operations.
# (creating a tensor is an operation.)
x = tf.constant(8, name=
"x_const"
) y = tf.constant(5, name=
"y_const"
)sum
= tf.add(x, y, name=
"x_y_sum"
)# task 1: define a third scalar integer constant z.
z = tf.constant(4, name=
"z_const"
)# task 2: add z to `sum` to yield a new sum.
new_sum = tf.add(sum, z, name=
"x_y_z_sum"
)# now create a session.
# the session will run the default graph.
with tf.session(
) as sess:
# task 3: ensure the program yields the correct grand total.
print new_sum.eval(
)
Tensorflow 基礎概念
g v,e v operation 圖的節點 e tensor 圖的邊 g graph 圖 tensorflow tensor 多維陣列 flow graph 圖 op session回話上下文管理 variable tensor 多維資料變數 placeholder 外部傳入的引數變數 seesi...
TensorFlow 基本概念
tensorflow使用圖來表示計算任務,圖中的節點被稱之為op operation的縮寫 乙個op獲得n個tensor,執行計算,產生n個tensor。每個tensor是乙個型別化的多維陣列。例如,可以將一小 像集表示為乙個四維浮點數陣列,這個四個維度分別是 batch,height,width,...
TensorFlow程式設計策略
tensorflow程式中的計算過程可以表示為乙個計算圖 computation graph,也可稱為有向圖 directed graph 其作用與外觀都可模擬為程式流程圖。張量是在邊中流動的資料,其資料型別可以在程式設計時事先定義,也可根據計算圖中的上下文來推斷。計算圖的作用可以模擬為程式的流程圖...