tensorflow的計算思想

2021-08-20 19:52:53 字數 1863 閱讀 6919

資料流圖用「結點」(nodes)和「線」(edges)的有向圖來描述數學計算。「節點」 一般用來表示施加的數學操作,但也可以表示資料輸入(feed in)的起點/輸出(push out)的終點,或者是讀取/寫入持久變數(persistent variable)的終點。「線」表示「節點」之間的輸入/輸出關係。這些資料「線」可以輸運「size可動態調整」的多維資料陣列,即「張量」(tensor)。張量從圖中流過的直觀圖像是這個工具取名為「tensorflow」的原因。一旦輸入端的所有張量準備好,節點將被分配到各種計算裝置完成非同步並行地執行運算。

tensorflow不是乙個嚴格的「神經網路」庫。只要你可以將你的計算表示為乙個資料流圖,你就可以使用tensorflow。你來構建圖,描寫驅動計算的內部迴圈。我們提供了有用的工具來幫助你組裝「子圖」(常用於神經網路),當然使用者也可以自己在tensorflow基礎上寫自己的「上層庫」。定義順手好用的新復合操作和寫乙個python函式一樣容易,而且也不用擔心效能損耗。當然萬一你發現找不到想要的底層資料操作,你也可以自己寫一點c++**來豐富底層的操作。

我使用隨機數來生成資料集,並展示了如何編寫乙個簡單的bp神經網路程式:

from numpy.random import randomstate

batch_size = 8;

w1 = tf.variable(tf.random_normal([2,3],stddev=1,seed=1));

w2 = tf.variable(tf.random_normal([3,1],stddev=1,seed=1));

x = tf.placeholder(tf.float32,shape=(none,2),name='x-input');

y_ = tf.placeholder(tf.float32,shape=(none,1),name='y-input');

a = tf.matmul(x,w1);

y = tf.matmul(a,w2);

cross_entropy = - tf.reduce_mean(y_ * tf.log(tf.clip_by_value(y,1e-10,1.0)));

train_step = tf.train.adamoptimizer(0.001).minimize(cross_entropy);

rdm = randomstate(1);

dataset_size = 128;

x = rdm.rand(dataset_size,2);

y = [[int(x1+x2<1)] for (x1,x2) in x ];

with tf.session() as sess:

init_op = tf.initialize_all_variables();

sess.run(init_op);

print sess.run(w1);

print sess.run(w2);

steps = 5000;

for i in range(steps):

start = (i*batch_size)%dataset_size;

end = min(start+batch_size,dataset_size);

sess.run(train_step,feed_dict=);

if i%1000==0:

total_cross_entropy = sess.run(cross_entropy,feed_dict=);

print("after %d training steps,cross entropy on all data is %g" %(i,total_cross_entropy));

print sess.run(w1);

print sess.run(w2);

深度學習筆記 TensorFlow 思想

在進行tensorflow程式設計時一定要按照規則來進行,tensorflow程式中包含兩部分 如下圖所示 解釋 例子 實現矩陣乘法y w x w 3.0,5.5 1.0,7.7 x 1.0 1.0 實現如下 import tensorflow as tf 必須先構建計算圖 y w x graph1...

TensorFlow 矩陣計算

1 建立乙個張量矩陣,tensorflow 中使用常量建立函式,即 tf.constant 來建立乙個矩陣 tf.constant 1,2,3 shape 2,3 這行 建立了乙個2行3列的矩陣 2 建立隨機生成矩陣張量 tf.random normal shape,mean 0.0,stddev ...

Tensorflow的平行計算

每個gpu上的模型相同,喂以相同模型不同的訓練樣本。資料並行根據引數更新方式的不同又可以分為同步資料並行和非同步資料並行。每個gpu根據loss計算各自的gradient,彙總所有gpu的gradient,求平均梯度,根據平均梯度更新模型引數,具體過程見下圖。所以同步資料並行的速度取決於最慢的gpu...