TensorFlow技術(shù)解析與實(shí)戰(zhàn) 9.6 Mnist的無監(jiān)督學(xué)習(xí)

# -*- coding:utf-8 -*-

import sys

import importlib

importlib.reload(sys)

import numpy as np

import matplotlib.pyplot as plt

from tensorflow.examples.tutorials.mnist import input_data

import tensorflow as tf

# 加載數(shù)據(jù)

mnist = input_data.read_data_sets("./", one_hot=True)

trX, trY, teX, teY = mnist.train.images, mnist.train.labels, mnist.test.images, mnist.test.labels

trX = trX.reshape(-1, 28, 28, 1)? # 28x28x1 input img

teX = teX.reshape(-1, 28, 28, 1)? # 28x28x1 input img

learning_rate = 0.01? # 學(xué)習(xí)率

training_epochs = 20? # 訓(xùn)練的輪數(shù)

batch_size = 256? ?

display_step = 1

examples_to_show = 10

n_hidden_1 = 256

n_hidden_2 = 128

n_input = 784

X = tf.placeholder("float", [None, n_input])

weights = {

'encoder_h1': tf.Variable(tf.random_normal([n_input, n_hidden_1])),

'encoder_h2': tf.Variable(tf.random_normal([n_hidden_1, n_hidden_2])),

'decoder_h1': tf.Variable(tf.random_normal([n_hidden_2, n_hidden_1])),

'decoder_h2': tf.Variable(tf.random_normal([n_hidden_1, n_input])),

}

biases = {

'encoder_b1': tf.Variable(tf.random_normal([n_hidden_1])),

'encoder_b2': tf.Variable(tf.random_normal([n_hidden_2])),

'decoder_b1': tf.Variable(tf.random_normal([n_hidden_1])),

'decoder_b2': tf.Variable(tf.random_normal([n_input])),

}

# 定義壓縮函數(shù)

def encoder(x):

layer_1 = tf.nn.sigmoid(tf.add(tf.matmul(x, weights['encoder_h1']), biases['encoder_b1']))

layer_2 = tf.nn.sigmoid(tf.add(tf.matmul(layer_1, weights['encoder_h2']), biases['encoder_b2']))

return layer_2

# 定義解壓函數(shù)

def decoder(x):

layer_1 = tf.nn.sigmoid(tf.add(tf.matmul(x, weights['decoder_h1']), biases['decoder_b1']))

layer_2 = tf.nn.sigmoid(tf.add(tf.matmul(layer_1, weights['decoder_h2']), biases['decoder_b2']))

return layer_2

# 構(gòu)建模型

encoder_op = encoder(X)

decoder_op = decoder(encoder_op)

# 得出預(yù)測值

y_pred = decoder_op

# 得出真實(shí)值,即輸入值

y_true = X

# 定義損失函數(shù)和優(yōu)化器

cost = tf.reduce_mean(tf.pow(y_true - y_pred, 2))

optimizer = tf.train.RMSPropOptimizer(learning_rate).minimize(cost)

init = tf.global_variables_initializer()

# 訓(xùn)練數(shù)據(jù)及評估模型

with tf.Session() as sess:

sess.run(init)

total_batch = int(mnist.train.num_examples/batch_size)

# 開始訓(xùn)練

for epoch in range(training_epochs):

for i in range(total_batch):

batch_xs, batch_ys = mnist.train.next_batch(batch_size)

_, c = sess.run([optimizer, cost], feed_dict={X:batch_xs})

if epoch % display_step == 0:

print("Epoch:", '%04d' % (epoch+1), "cost=", "{:.9f}".format(c))

print("Optimization Finished!")

# 對測試集應(yīng)用訓(xùn)練好的自動編碼網(wǎng)絡(luò)

encode_decode = sess.run(y_pred, feed_dict={X: mnist.test.images[:examples_to_show]})

# 比較此時集原始圖片和自動編碼網(wǎng)絡(luò)的重建結(jié)果

f, a = plt.subplots(2, 10, figsize=(10, 2))

for i in range(examples_to_show):

a[0][i].imshow(np.reshape(mnist.test.images[i], (28, 28)))

a[1][i].imshow(np.reshape(encode_decode[i], (28, 28)))? # 重建結(jié)果

f.show()

plt.draw()

plt.waitforbuttonpress()



Epoch: 0001 cost= 0.227401376

Epoch: 0002 cost= 0.183739647

Epoch: 0003 cost= 0.171582803

Epoch: 0004 cost= 0.154930770

Epoch: 0005 cost= 0.147431135

Epoch: 0006 cost= 0.138016164

Epoch: 0007 cost= 0.129596651

Epoch: 0008 cost= 0.127187163

Epoch: 0009 cost= 0.123952985

Epoch: 0010 cost= 0.120612435

Epoch: 0011 cost= 0.121103674

Epoch: 0012 cost= 0.118714407

Epoch: 0013 cost= 0.115889899

Epoch: 0014 cost= 0.115912378

Epoch: 0015 cost= 0.112418912

Epoch: 0016 cost= 0.110988192

Epoch: 0017 cost= 0.109182008

Epoch: 0018 cost= 0.109269865

Epoch: 0019 cost= 0.109637171

Epoch: 0020 cost= 0.107125379

Optimization Finished!


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市却音,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌伟众,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拌倍,死亡現(xiàn)場離奇詭異赂鲤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)柱恤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進(jìn)店門数初,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人梗顺,你說我怎么就攤上這事泡孩。” “怎么了寺谤?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵仑鸥,是天一觀的道長。 經(jīng)常有香客問我变屁,道長眼俊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任粟关,我火速辦了婚禮疮胖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘闷板。我一直安慰自己澎灸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布遮晚。 她就那樣靜靜地躺著性昭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪县遣。 梳的紋絲不亂的頭發(fā)上糜颠,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天汹族,我揣著相機(jī)與錄音,去河邊找鬼其兴。 笑死鞠抑,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的忌警。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼秒梳,長吁一口氣:“原來是場噩夢啊……” “哼法绵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起酪碘,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤朋譬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后兴垦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體徙赢,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年探越,在試婚紗的時候發(fā)現(xiàn)自己被綠了狡赐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡钦幔,死狀恐怖枕屉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鲤氢,我是刑警寧澤搀擂,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站卷玉,受9級特大地震影響哨颂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜相种,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一威恼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蚂子,春花似錦沃测、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至别渔,卻和暖如春附迷,著一層夾襖步出監(jiān)牢的瞬間惧互,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工喇伯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留喊儡,地道東北人。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓稻据,卻偏偏與公主長得像艾猜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子捻悯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評論 2 350

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