TensorFlow是Google公司2015年11月開源的第二代深度學習框架,是第一代框架DistBelief的改進版本.
TensorFlow支持python和c/c++語言, 可以在cpu或gpu上進行運算, 支持使用virtualenv或docker打包發布.
定義變量
為了使用tensorflow,首先我們需要導入它
import tensorflow as tf
對于符號變量,我們新建一個
x = tf.placeholder(tf.float32, [None, 784])
這里x并不是一個特定的值,只是一個占位符,后面我們需要用tensorflow進行計算式,我們會把它作為輸入
在模型中,我們需要weights權重和biases偏置,這里就用Variable來處理定義,Variable可以在整個計算過程中modified
w = tf.Variable(tf.zeros([784, 10]))b = tf.Variable(tf.zeros([10]))
在新建Variable的同時,我們也初始化了它,然后
y = tf.nn.softmax(tf.matmul(x, w) + b)
這樣我們就成功的實現了我們的模型
訓練
我們用cross-entropy作為我們的cost function
H_{y'}(y) = -/sum_i y'_i /log(y_i)
y就是我們預測的概率分布,y'是真實的概率分布
為了實現交叉熵,我們需要一個新的占位符來作為正確答案的輸入
y_ = tf.placeholder(tf.float32, [None, 10])cross_entropy = -tf.reducen_sum(y_ * tf.log(y))
通過梯度下降來實現優化模型
train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(cross_entropy)
我們使用這個模型之前,最后一件我們需要做的事是
init = tf.initialize_all_variables()with tf.Session() as sess: sess.run(init)
現在,我能可以訓練1000次這個模型了,☺️
for i in xrange(1000): batch_xs, batch_ys = mnist.train.next_batch(100) sess.run(train_step, feed_dict = {x: batch_xs, y_: batch_ys})使用隨機數據的小batch就稱為隨機訓練
模型評分
首先,我們對比真實的y_和模型所得y之間正確的個數有多少
correct_prediction = tf.equal(tf.argmax(y, 1), tf.agrmax(y_, 1))
這個會返回一個boolean列表,比如[True, False, True, True]
accuracy = tf.reduce_mean(tf.cast(correc_prediction, tf.float32))print (sess.run(accuracy, feed_dict = {x: mnist.test.images, y_: minst.test.labels}))最后就通過以上計算得到準確率
開始使用
TensorFlow并不是一個純粹的神經網絡框架, 而是使用數據流圖進行數值分析的框架.
TensorFlow使用有向圖(graph)表示一個計算任務.圖的節點稱為ops(operations)表示對數據的處理,圖的邊flow 描述數據的流向.
該框架計算過程就是處理tensor組成的流. 這也是TensorFlow名稱的來源.
新聞熱點
疑難解答