TensotFlow 應用例項:09-classification 分類器
TensotFlow 應用例項:09-classification 分類器
本文是我在學習TensotFlow 的時候所記錄的筆記,共享出來希望能夠幫助一些需要的人。
classification 是一個分類器,用來解決分類的問題
在之前的例子中都是一些線性迴歸的問題,或者非線性資料,輸入輸出就是一(組)對一(組)的數值,之前的都是一些連續的資料,輸出同樣是一組連續的資料
classification是一些分類的問題,輸入的是一組資料,輸出的結果是一組概率,整組概率的值相加結果為1,可以選擇最接近1的值做為輸出的結果
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
# classification 是一個分類器的問題
# 在之前的例子中都是一些線性迴歸的問題,或者非線性資料,輸入輸出就是一(組)對一(組)的數值
# 之前的都是一些連續的資料
# classification是一些分類的問題,輸入的是一組資料,輸出的結果是一組概率,整組概率的值相加
# 結果為1,可以選擇最接近1的值做為輸出的結果
# number 1 to 10 image data
# 如果本地沒有相應的資料包,會先下載,然後解壓資料包
# MNIST_data 是下載資料要儲存的位置
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)
# 新增神經層
def add_layer(inputs, in_size, out_size, activation_function=None):
# Weights define
# 權重,儘量要是一個隨機變數
# 隨機變數在生成初始變數的時候比全部為零效果要好的很多
Weights = tf.Variable(tf.random_normal([in_size, out_size]))
# biases define
# 偏值項,是一個列表,不是矩陣,預設設定為0 + 0.1
biases = tf.Variable(tf.zeros([1, out_size]) + 0.1)
# W * x + b
Wx_plus_b = tf.matmul(inputs, Weights) + biases
# 如果activation_function是空的時候就表示是一個線性關係直接放回即可
if activation_function is None:
outputs = Wx_plus_b
else:
outputs = activation_function(Wx_plus_b)
return outputs
# 計算精確度
# compute_accuracy 要使用
def compute_accuracy(v_xs, v_ys):
global prediction
#
y_pre = sess.run(prediction, feed_dict={xs: v_xs})
correct_prediction = tf.equal(tf.argmax(y_pre, 1), tf.argmax(v_ys, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
# result 是一個百分比,百分比越高證明越準確
result = sess.run(accuracy, feed_dict={xs: v_xs, ys: v_ys})
return result
# define placeholder for inputs to network
# 輸入時一個28*28畫素的圖片 28 * 28 = 784
# 輸出是一個0到9數字概率的矩陣
# 資料形式是float32
# None表示不規定有多少個sample, 可以為任意多
xs = tf.placeholder(tf.float32, [None, 784])
ys = tf.placeholder(tf.float32, [None, 10])
# add output layer
# activation_function 使用的softmax
# softmax 經常用在做分類器的
# prediction 預測值,是一個1*10的概率矩陣
prediction = add_layer(xs, 784, 10, activation_function=tf.nn.softmax)
# the error between prediction and real data
# loss function
# cross_entropy 分類的時候經常使用softmax + cross_entropy來計算的
cross_entropy = tf.reduce_mean(-tf.reduce_sum(ys * tf.log(prediction),
reduction_indices=[1]))
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
sess = tf.Session()
# important step
# tf.initialize_all_variables() no long valid from
# "2017-03-02", "Use `tf.global_variables_initializer` instead."
init = tf.global_variables_initializer()
sess.run(init)
for i in range(1000):
# 從下載好的資料中提取 100 個來學習
# 分批的原因是為了更快的看到結果
# 而且這種方式也不會比全部載入的效果差
batch_xs, batch_ys = mnist.train.next_batch(100)
sess.run(train_step, feed_dict={xs: batch_xs, ys: batch_ys})
if i % 50 == 0:
print(compute_accuracy(mnist.test.images, mnist.test.labels))
本文程式碼GitHub地址 tensorflow_learning_notes
相關文章
- 神經網路加速器應用例項:影象分類神經網路
- 機器視覺應用例項視覺
- dd應用例項
- ”innerHTML“的應用例項HTML
- hive應用例項1Hive
- 智慧Web應用例項Web
- calico docker 應用例項Docker
- SVM分類器演算法總結&應用演算法
- 樸素貝葉斯分類器的應用
- localStorage應用程式碼例項
- sqoop應用例項1OOP
- 霍爾感測器的工作原理、分類及應用
- 物件導向的例項應用:圖形計算器物件
- 選擇介面還是抽象類?---應用例項說明介面與抽象類的應用場合(區別)抽象
- 類和例項
- WebSocket 簡介及應用例項Web
- redis應用場景及例項Redis
- python幾個應用例項Python
- opacity應用程式碼例項
- 基本複製應用例項(轉)
- ORACLE外部表的應用例項Oracle
- 叢集的應用例項(zt)
- 恆訊科技分析:伺服器應用分類有哪些?伺服器
- 樸素貝葉斯分類器的應用(轉載)
- 應用閘道器的演進歷程和分類
- [機器視覺]halcon應用例項 邊緣檢測視覺
- 例項解讀類比電子技術完全學習與應用
- 一個隱馬爾科夫模型的應用例項:中文分詞馬爾科夫模型中文分詞
- 觀察者模式應用場景例項模式
- WPS表格資料應用例項
- onfocus和onblur應用程式碼例項
- Object.defineProperty()應用程式碼例項Object
- eMarketer:各行業VR例項應用分析行業VR
- php和json的應用例項PHPJSON
- findmnt 命令的八個應用例項
- ruby中的類例項變數和例項的例項變數變數
- 【iCore3應用】基於iCore3雙核心板的編碼器應用例項
- 在滴滴雲DC2伺服器上搭建DPDK應用例項伺服器