tensorflow入門應(yīng)用方法(二)——全連接深度網(wǎng)絡(luò)搭建

前一篇文章tensorflow入門應(yīng)用方法——線性回歸和邏輯回歸中,主要闡述了應(yīng)用tensorflow搭建線性回歸和邏輯回歸的相關(guān)代碼刚盈。其中胎许,線性回歸和邏輯回歸模型是一個(gè)簡單的單層網(wǎng)絡(luò)找前。因此丈屹,本文較為深入闡述應(yīng)用tensorflow搭建擁有兩層隱藏層的網(wǎng)絡(luò)方法流程调俘。

具體步驟

  1. 初始化每層的神經(jīng)元數(shù)量 需要定義出每層的輸出神經(jīng)元數(shù)量
  2. 輸入輸出初始化 一般用placeholder占位符定義x,y
  3. 網(wǎng)絡(luò)參數(shù)初始化 w權(quán)值和bias隨機(jī)初始化范圍(-1,1),bias也可初始化為0
  4. 前向計(jì)算 需要選擇激活函數(shù)
  5. 損失函數(shù)和最優(yōu)化定義 可以選擇不同的損失函數(shù)和優(yōu)化算法
  6. 預(yù)測精度函數(shù)定義
  7. 初始化所有變量 init = tf.global_variables_initializer()
  8. 迭代運(yùn)算

深度網(wǎng)絡(luò)代碼實(shí)現(xiàn)

首先加載mnist數(shù)據(jù)集用于模型訓(xùn)練

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data


# 加載數(shù)據(jù)
mnist = input_data.read_data_sets('data/', one_hot=True)

然后旺垒,開始搭建深度模型具體步驟


# 神經(jīng)元個(gè)數(shù)初始化
n_hidden_1 = 256
n_hidden_2 = 128
n_input = 784  # 28*28*1的輸入
n_class = 10
# 輸入和輸出
x = tf.placeholder('float', [None, n_input])
y = tf.placeholder('float', [None, n_class])


# 網(wǎng)絡(luò)參數(shù)初始化
stddev = 0.1  # 指定高斯分布方差
weights = {
    'w1': tf.Variable(tf.random_normal([n_input, n_hidden_1], stddev=stddev)),
    'w2': tf.Variable(tf.random_normal([n_hidden_1, n_hidden_2], stddev=stddev)),
    'out': tf.Variable(tf.random_normal([n_hidden_2, n_class], stddev=stddev))
}

biases = {
    'b1': tf.Variable(tf.random_normal([n_hidden_1])),
    'b2': tf.Variable(tf.random_normal([n_hidden_2])),
    'out': tf.Variable(tf.random_normal([n_class]))
}

print('network ready')


# 訓(xùn)練網(wǎng)絡(luò)

# 前向計(jì)算
def multilayer_perception(_X, _weight, _biases):
    layer1 = tf.nn.sigmoid(tf.add(tf.matmul(_X, _weight['w1']), _biases['b1']))
    layer2 = tf.nn.sigmoid(tf.add(tf.matmul(layer1, _weight['w2']), _biases['b2']))
    return (tf.matmul(layer2, _weight['out']) +_biases['out'])

pred = multilayer_perception(x, weights, biases)


# 損失函數(shù)和最優(yōu)化
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=pred, labels=y))
optm = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(cost)


# 計(jì)算精度
corr = tf.equal(tf.arg_max(pred, 1), tf.arg_max(y, 1))
accr = tf.reduce_mean(tf.cast(corr, 'float'))


# 初始化操作
init = tf.global_variables_initializer()
print('function ready')


# 迭代計(jì)算
training_epochs = 20
batch_size = 100
display_step = 4
sess = tf.Session()
sess.run(init)

for epoch in range(training_epochs):
    avg_cost = 0
    total_batch = int(mnist.train.num_examples/batch_size)
    for i in range(total_batch):
        batch_xs, batch_ys = mnist.train.next_batch(batch_size)
        feeds = {x: batch_xs, y: batch_ys}
        sess.run(optm, feed_dict=feeds)
        avg_cost += sess.run(cost, feed_dict=feeds)/total_batch
    # 顯示結(jié)果
    if (epoch+1) % display_step == 0:
        print('Epoch: %03d/%03d cost: %.9f' % (epoch+1, training_epochs, avg_cost))
        feeds = {x: batch_xs, y: batch_ys}
        train_acc = sess.run(accr, feed_dict=feeds)
        print('Train accuracy: %.3f' % train_acc)
        feeds = {x: mnist.test.images, y: mnist.test.labels}
        test_acc = sess.run(accr, feed_dict=feeds)
        print('Test accuracy: %.3f' % test_acc)

print('optmization finished')

訓(xùn)練模型時(shí)主要使用梯度下降算法彩库,迭代20次,每4步顯示一次結(jié)果:

Epoch: 004/020 cost: 1.835647699
Train accuracy: 0.720
Test accuracy: 0.682
Epoch: 008/020 cost: 0.946993933
Train accuracy: 0.780
Test accuracy: 0.804
Epoch: 012/020 cost: 0.642496496
Train accuracy: 0.890
Test accuracy: 0.849
Epoch: 016/020 cost: 0.519645967
Train accuracy: 0.800
Test accuracy: 0.869
Epoch: 020/020 cost: 0.452667181
Train accuracy: 0.880
Test accuracy: 0.885
optmization finished

總結(jié)

在本文中先蒋,經(jīng)過20次的迭代訓(xùn)練骇钦,模型在訓(xùn)練集上的精度為88.0%,測試集上的精度為88.5%竞漾。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末司忱,一起剝皮案震驚了整個(gè)濱河市皇忿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌坦仍,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叨襟,死亡現(xiàn)場離奇詭異繁扎,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)糊闽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門梳玫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人右犹,你說我怎么就攤上這事提澎。” “怎么了念链?”我有些...
    開封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵盼忌,是天一觀的道長。 經(jīng)常有香客問我掂墓,道長谦纱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任君编,我火速辦了婚禮跨嘉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吃嘿。我一直安慰自己祠乃,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開白布兑燥。 她就那樣靜靜地躺著亮瓷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪贪嫂。 梳的紋絲不亂的頭發(fā)上寺庄,一...
    開封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音力崇,去河邊找鬼斗塘。 笑死,一個(gè)胖子當(dāng)著我的面吹牛亮靴,可吹牛的內(nèi)容都是我干的馍盟。 我是一名探鬼主播,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼茧吊,長吁一口氣:“原來是場噩夢啊……” “哼贞岭!你這毒婦竟也來了八毯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤瞄桨,失蹤者是張志新(化名)和其女友劉穎话速,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芯侥,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡泊交,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了柱查。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片廓俭。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖唉工,靈堂內(nèi)的尸體忽然破棺而出研乒,到底是詐尸還是另有隱情,我是刑警寧澤淋硝,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布雹熬,位于F島的核電站,受9級(jí)特大地震影響奖地,放射性物質(zhì)發(fā)生泄漏橄唬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一参歹、第九天 我趴在偏房一處隱蔽的房頂上張望仰楚。 院中可真熱鬧,春花似錦犬庇、人聲如沸僧界。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捂襟。三九已至,卻和暖如春欢峰,著一層夾襖步出監(jiān)牢的瞬間葬荷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來泰國打工纽帖, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宠漩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓懊直,卻偏偏與公主長得像扒吁,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子室囊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

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