參考:
1、classification分類學習
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets('mnist_data', one_hot=true)
mnist庫是手寫體數字庫,差不多是這樣子的
資料中包含55000張訓練,每張的解析度是28×28,所以我們的訓練網路輸入應該是28×28=784個畫素資料。
搭建網路
xs = tf.placeholder(tf.float32, [none, 784]) # 28x28
每張都表示乙個數字,所以我們的輸出是數字0到9,共10類。
ys = tf.placeholder(tf.float32, [none, 10])
呼叫add_layer函式搭建乙個最簡單的訓練網路結構,只有輸入層和輸出層。
prediction = add_layer(xs, 784, 10, activation_function=tf.nn.softmax)
其中輸入資料是784個特徵,輸出資料是10個特徵,激勵採用softmax函式,網路結構圖是這樣子的
loss函式(即最優化目標函式)選用交叉熵函式。交叉熵用來衡量**值和真實值的相似程度,如果完全相同,它們的交叉熵等於零。
cross_entropy = tf.reduce_mean(-tf.reduce_sum(ys * tf.log(prediction),
reduction_indices=[1])) # loss
train方法(最優化演算法)採用梯度下降法。
train_step = tf.train.gradientdescentoptimizer(0.5).minimize(cross_entropy)
sess = tf.session()
# tf.initialize_all_variables() 這種寫法馬上就要被廢棄
# 替換成下面的寫法:
sess.run(tf.global_variables_initializer())
訓練
現在開始train,每次只取100張,免得資料太多訓練太慢。
batch_xs, batch_ys = mnist.train.next_batch(100)
sess.run(train_step, feed_dict=)
每訓練50次輸出一下**精度
if i % 50 == 0:
print(compute_accuracy(
mnist.test.images, mnist.test.labels))
輸出結果如下:
有沒有很驚訝啊,如此簡單的神經網路結構竟然可以達到這樣的影象識別精度,其實稍作改動後,識別的精度將大幅提高。
tensorflow學習筆記2
1.np.asarray array和asarray都可將結構資料轉換為ndarray型別。舉例 data1 1,1,1 1,1,1 1,1,1 arr2 np.array data1 arr3 np.asarray data1 輸出 arr2 1 1 1 1 1 1 1 1 1 arr3 1 1 ...
Tensorflow學習筆記No 2
函式式api相比於keras.sequential 具有更加靈活多變的特點。函式式api主要應用於多輸入多輸出的網路模型。利用函式式api構建神經網路主要分為3步,1.構建輸入層,2.構建中間層與輸出層並連線神經層,3.生成神經網路模型。輸入層的構建較為簡單,呼叫keras.input 方法來構建輸...
機器學習筆記(2)tensorflow學習
參考資料 單隱層前饋網路結構 問題描述 天氣氣溫,當輸入連續三小時的氣溫時,第四個小時的氣溫。資料 訓練集為20 24小時氣溫資料,測試集為10 24小時資料。網路結構為 3 7 1,即三個輸入神經元,七個隱層神經元,乙個輸出神經元。環境 python3.6.5和tensorflow1.2.1,im...