Tensorflow學習筆記2

2021-08-09 21:31:36 字數 1707 閱讀 1266

參考:

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...