tensor為張量,flow為流圖。
tensorflow內含有很多寫好的工具,如梯度下降演算法,卷積操作等。
在使用tensorflow時,先導入包import tensorflow as tf,在進行定義tensorflow變數時,使用tf.variable(引數),有趣的是乙個叫做佔位符的工具,tf.placeholder(shape)申請乙個佔位符,這類似設定了乙個shape已經知道的未知變數,在後面可以使用feed_dict=來對佔位符進行賦值。這個op在寫完後徐要需要session來進行執行,sess = tf.session()申請會話,最後通過sess.run(要執行的內容)方法來完成計算。
tensorflow 簡單神經網路案例:
y = xw+b
x=先設這個資料集為乙個長為任何長度,寬為28*28的矩陣。
w=再設定權重引數wij,wij為長度為28*28,寬為10的矩陣。
b=然後新增乙個長度為10的偏置項
然後通過交叉熵來作為損失函式,進行迭代,使損失函式逐步減小。
**實現:
import tensorflow as tf
# 申請x佔位符,none表示任意長度。
x = tf.placeholder(tf.float32, [none, 28*28])
w = tf.variable(tf.zeros[28*28, 10])
b = tf.variable(tf.zeros[10])
#建立方程 y = xw+b
y = tf.nn.sotfmax(tf.matmul(x, w) + b)
#申請對應的標籤佔位符
y_ = tf.placeholder("float", [none, 10] )
#交叉熵作為損失函式
cross_entropy = tf.reduce_sum(y_*tf.log(y))
#梯度下降演算法 學習率=0.01
train_step = tf.train.gradientdescentoptimizer(0.01).minimize(cross_entropy)
init = tf.initialize_all_variables()
#建立session
sess = tf.session()
#初始化所有引數
sess.run(init)
#匯入資料集 資料集位址在本地的/home/enche/mnist_data目錄下
import tensorflow.examples.tutorials.mnist.input_data as input_data
mnist = input_data.read_data_sets("/home/enche/mnist_data", one_hot = true)
#將x和y_進行替換成訓練資料
for i in range(1000):
batch_xs, batch_ys = minist.train.next_batch(100)
sess.run(train_step, feed_dict = )
#列印變數
print sess.run(w)
問題:在列印變數時,因為預設情況不會列印出所有矩陣引數,可以通過設定
import numpy as np
np.set_printoptions(threshold=np.inf)
實現列印所有內容,解決出現省略號的問題。
知乎TensorFlow入門學習記錄
import tensorflow as tf a tf.placeholder tf.int16 接受的資料型別 b tf.placeholder tf.int16 add tf.add a,b mul tf.mul a,b with tf.session as sess print additi...
Tensorflow學習記錄
tensorflow是乙個使用採用資料流圖進行數值計算的開源軟體庫。什麼是資料流圖?資料流圖用結點 nodes 和邊 edges 的有向圖來表示數學計算。結點一般用來表示施加的數學操作,但也可以表示資料輸入的起點和資料輸出的終點。邊表示結點之間的輸入 輸出關係。這些邊可以表示多維資料陣列,我們稱這些...
TensorFlow學習記錄
在電腦上按照官方的pip3安裝方法把tensorflow安裝起了。首先學習的是mnist資料集手寫數字分類。這個是入門級的優化方案。剛剛開始的時候對sess。run等很疑惑,反覆研究了幾天。終於知道,學習tensorflow的框架,主要看前面的輸入x和輸出y,以及待優化的引數w和bias項b的關係,...