TF基本概念

2021-08-01 15:41:34 字數 3562 閱讀 2709

tf基本概念

graph 表示計算任務

node 可以是operation也可以是資料儲存容器

在session的context中執行graph

使用tensor表示資料

通過variable維護狀態

使用feed和fetch 為任意操作賦值(arbitrary operation)或者從中獲取資料

tensor 類似於numpy 中的陣列

3# a rank 0 tensor; this is a scalar withshape 

[1. ,2., 3.] # a rank 1tensor; this is a vector with shape [3]

[[1., 2., 3.], [4., 5., 6.]] # a rank 2tensor; a matrix with shape [2, 3]

[[[1., 2., 3.]], [[7., 8., 9.]]] # a rank 3tensor with shape [2, 1, 3]

computational graph包括兩步

1、  building the computational graph.

將tf操作轉換成graph nodes的形式,每個node包括input tensor 和 output tensor;constant node 只有固定輸入沒有輸出

eg:

import tensorflow as tf

node1 = tf.constant(3.0, tf.float32)

node2 = tf.constant(4.0) # also tf.float32 implicitly

print node1, node2

[out]

tensor("const:0", shape=tensorshape(), dtype=float32)tensor("const_1:0", shape=tensorshape(), dtype=float32)

sess = tf.session()

print sess.run([node1,node2])

[out]

[3.0, 4.0]

將上述兩個node 相加產生新的node 並輸出computation graph

node3 = tf.add(node1, node2)

print "node3: ", node3

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

[out]

node3: tensor("add:0", shape=tensorshape(), dtype=float32)

sess.run(node3):  7.0

placeholders可以不需要在定義的時候賦值,可以隨後賦值

eg:in:

a = tf.placeholder(tf.float32)

b = tf.placeholder(tf.float32)

adder_node = a + b # + provides a shortcut for tf.add(a, b)

print sess.run(adder_node, )

print sess.run(adder_node, )

out:

7.5[ 3. 7.]

在此基礎上在加乙個graph

in:

add_add_triple = adder_node * 3.

print sess.run(add_add_triple,)

out:

22.5

2、running thecomputational graph.

為了計算node 值(3.0)(4.0)必須使用session

variables 可以將trainableparameters 加到graph中

構造variable需要型別和初值

in:

w = tf.variable([.3], tf.float32)

b = tf.variable([-.3], tf.float32)

x = tf.placeholder(tf.float32)

linear_model = w * x +b

#variable initialize needs call a specialoperation

init = tf.initialize_all_variables()

sess.run(init)

print sess.run(linear_model,)

out:

[ 0.          0.30000001  0.60000002 0.90000004]

計算loss func

in:############ y and calculate loss function

y = tf.placeholder(tf.float32)

squared_deltas = tf.square(linear_model -y)

loss = tf.reduce_sum(squared_deltas)

printsess.run(loss,)

out:

26.09

手動調參 tf.assign

####adjust the parametres by hand

in:

fixw = tf.assign(w,[-1.])

fixb = tf.assign(b,[1.])

sess.run([fixw, fixb])

printsess.run(loss,)

out:

0.0自動調引數gradient decent

in:#gradientdescent optimeze the parameter

optimizer =tf.train.gradientdescentoptimizer(0.01)

train = optimizer.minimize(loss)

sess.run(init)

for i in range(1000):

sess.run(train,)

print sess.run([w,b])

[array([-0.9999969], dtype=float32),array([ 0.99999082], dtype=float32)]

基本概念 C 基本概念

由於工作中需要用到c 編寫的一些工具,有時候需要根據需求修改或者定製工具,所以現在不得不學習一下c 的基礎語法,此為筆記,不成章法!機器語言 組合語言 高階語言 面向過程的程式設計方法 物件導向的程式設計方法 泛型程式設計方法 1 演算法設計 2 源程式編輯 3 編譯 4 連線 5 執行除錯 輸入裝...

基本概念 數控系統基本概念

第一章 基本概念 數控工具機cnc是一種按事先編制好的加工零件程式進行加工的高效 自動化加工裝置。是 computer numerical control machine tools 的簡稱。數控工具機較好地解決了複雜 精密 小批量 多品種的零件加工問題,是一種柔性的 高效能的自動化工具機。西門子系...

XSLT基本概念

我們首先來澄清乙個概念,大家可能聽說過xsl extensible stylesheet language xsl和我們這裡說的xslt從狹義上理解是一樣的,而按照w3c的標準,xslt的說法更嚴格些,因此我們在文章中統一使用xslt的稱法。它們之間具體的關係我們會在下面講述。1.1 什麼是xslt...