Tensorflow02:手把手搭建CNN

步驟和上一篇一樣,step0~step5

【step0】
準(zhǔn)備工作:下載并檢測(cè)數(shù)據(jù)集判莉,tensorflow.tutorial自帶minist數(shù)據(jù)集,如果下載不成功,可以網(wǎng)頁(yè)手動(dòng)下載后放到代碼已經(jīng)為你創(chuàng)建的文件夾里带迟。

mnist = input_data.read_data_sets('./mnist', one_hot=True)  
test_x = mnist.test.images[:2000]
test_y = mnist.test.labels[:2000]

# plot one example,to see if it's right
print(mnist.train.images.shape)     # (55000, 28 * 28)
print(mnist.train.labels.shape)   # (55000, 10)
plt.imshow(mnist.train.images[0].reshape((28, 28)), cmap='gray')
plt.title('%i' % np.argmax(mnist.train.labels[0]))
plt.show()

別忘了定義batch_size和學(xué)習(xí)速率

BATCH_SIZE = 50
LR = 0.001 

【step1】
定義輸入:batchsize不確定,所以用到None囱桨,-1等參數(shù)仓犬,見(jiàn)tf.placeholder()函數(shù)和tf.reshape()函數(shù),注意經(jīng)過(guò)reshape后的參數(shù)image才是網(wǎng)絡(luò)真正的輸入

tf_x = tf.placeholder(tf.float32, [None, 28*28]) / 255
image = tf.reshape(tf_x, [-1, 28, 28, 1])              # (batch, height, width, channel)
tf_y = tf.placeholder(tf.int32, [None, 10])            # input y

【step2】
定義學(xué)習(xí)參數(shù):最重要的一步舍肠,學(xué)習(xí)參數(shù)是我們的卷積核參數(shù)搀继,很經(jīng)典的結(jié)構(gòu),卷+池+卷+池+全

網(wǎng)絡(luò)結(jié)構(gòu)如圖

代碼如下:

conv1 = tf.layers.conv2d(   # shape (28, 28, 1)
    inputs=image,
    filters=16,
    kernel_size=5,
    strides=1,
    padding='same',
    activation=tf.nn.relu
)           # -> (28, 28, 16)
pool1 = tf.layers.max_pooling2d(
    conv1,
    pool_size=2,
    strides=2,
)           # -> (14, 14, 16)
conv2 = tf.layers.conv2d(pool1, 32, 5, 1, 'same', activation=tf.nn.relu)    # -> (14, 14, 32)
pool2 = tf.layers.max_pooling2d(conv2, 2, 2)    # -> (7, 7, 32)
flat = tf.reshape(pool2, [-1, 7*7*32])          # -> (7*7*32, )
output = tf.layers.dense(flat, 10)              # output layer

【step3】
定義學(xué)習(xí)方法:最重要的是新學(xué)到的softmax函數(shù)翠语,它把網(wǎng)絡(luò)的輸出叽躯,10維轉(zhuǎn)化成1維,其原理是肌括,在這10維度中找到維度最大的那一維(說(shuō)明落到該維度可能性最大)点骑,并因此得到一個(gè)1維參數(shù),就是維度序號(hào)谍夭。
Adam優(yōu)化器適合解決更復(fù)雜的問(wèn)題

loss = tf.losses.softmax_cross_entropy(onehot_labels=tf_y, logits=output)           # compute cost
train_op = tf.train.AdamOptimizer(LR).minimize(loss)

accuracy = tf.metrics.accuracy(          # return (acc, update_op), and create 2 local variables
    labels=tf.argmax(tf_y, axis=1), predictions=tf.argmax(output, axis=1),)[1]

【step4】
初始化模型并訓(xùn)練:比線性回歸的訓(xùn)練回合要多

sess = tf.Session()
init_op = tf.group(tf.global_variables_initializer(), tf.local_variables_initializer()) # the local var is for accuracy_op
sess.run(init_op)     # initialize var in graph

for step in range(600):
    b_x, b_y = mnist.train.next_batch(BATCH_SIZE)
    _, loss_ = sess.run([train_op, loss], {tf_x: b_x, tf_y: b_y})
    if step % 50 == 0:
        accuracy_, flat_representation = sess.run([accuracy, flat], {tf_x: test_x, tf_y: test_y})
        print('Step:', step, '| train loss: %.4f' % loss_, '| test accuracy: %.2f' % accuracy_)

【step5】
測(cè)試:測(cè)試模型我們?cè)趕tep0就確定好了喔

test_output = sess.run(output, {tf_x: test_x[:10]})
pred_y = np.argmax(test_output, 1)
print(pred_y, 'prediction number')
print(np.argmax(test_y[:10], 1), 'real number')
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末黑滴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子慧库,更是在濱河造成了極大的恐慌跷跪,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件齐板,死亡現(xiàn)場(chǎng)離奇詭異吵瞻,居然都是意外死亡葛菇,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)橡羞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)眯停,“玉大人,你說(shuō)我怎么就攤上這事卿泽≥赫” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵签夭,是天一觀的道長(zhǎng)齐邦。 經(jīng)常有香客問(wèn)我,道長(zhǎng)第租,這世上最難降的妖魔是什么措拇? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮慎宾,結(jié)果婚禮上丐吓,老公的妹妹穿的比我還像新娘。我一直安慰自己趟据,他們只是感情好券犁,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著汹碱,像睡著了一般粘衬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上比被,一...
    開(kāi)封第一講書(shū)人閱讀 51,554評(píng)論 1 305
  • 那天色难,我揣著相機(jī)與錄音泼舱,去河邊找鬼等缀。 笑死,一個(gè)胖子當(dāng)著我的面吹牛娇昙,可吹牛的內(nèi)容都是我干的尺迂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼冒掌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼噪裕!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起股毫,我...
    開(kāi)封第一講書(shū)人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤膳音,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后铃诬,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體祭陷,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡苍凛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了兵志。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片醇蝴。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖想罕,靈堂內(nèi)的尸體忽然破棺而出悠栓,到底是詐尸還是另有隱情,我是刑警寧澤按价,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布惭适,位于F島的核電站,受9級(jí)特大地震影響楼镐,放射性物質(zhì)發(fā)生泄漏腥沽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一鸠蚪、第九天 我趴在偏房一處隱蔽的房頂上張望今阳。 院中可真熱鬧,春花似錦茅信、人聲如沸盾舌。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)妖谴。三九已至,卻和暖如春酌摇,著一層夾襖步出監(jiān)牢的瞬間膝舅,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工窑多, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留仍稀,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓埂息,卻偏偏與公主長(zhǎng)得像技潘,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子千康,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容