2018-04-18 第四周

????????參數(shù)設(shè)計好之后耿导,需要理解tensorflow存儲數(shù)據(jù)的方式:使用占位符(參考tensorflow的英文文檔

# x y placeholder

x = tf.placeholder(tf.float32, [None, n_steps, n_inputs])

y = tf.placeholder(tf.float32, [None, n_classes])

? ? ? ? 設(shè)置初始權(quán)重和偏置:

# 對 weights biases 初始值的定義

weights = {

# shape (28, 128)

? ? 'in': tf.Variable(tf.random_normal([n_inputs, n_hidden_units])),

# shape (128, 10)

? ? 'out': tf.Variable(tf.random_normal([n_hidden_units, n_classes]))

}

biases = {

# shape (128, )

? ? 'in': tf.Variable(tf.constant(0.1,shape=[n_hidden_units, ])),

# shape (10, )

? ? 'out': tf.Variable(tf.constant(0.1,shape=[n_classes, ]))

}

隨后晦攒,導(dǎo)入前兩周設(shè)計后的數(shù)據(jù):

def init_Vec():

? ? data_vec = open('vectors.txt')

? ? line_vec = data_vec.readlines()

? ? vec_list = []

? ? for s in line_vec:

? ? ? ? num = s.split(" ")

? ? ? ? #print(num)

? ? ? ? #num.remove("\n")

? ? ? ? num = list(map(float, num))

? ? ? ? vec_list.append(num)

? ? return vec_list

def init_Tag():

? ? data_tag = open('tag.txt')

? ? line_tag = data_tag.readlines()

? ? tag_list = []

? ? for s in line_tag:

? ? ? ? num = int(s)

? ? ? ? if num == 0:

? ? ? ? ? ? tag_list.append([0, 0, 1])

? ? ? ? if num == 1:

? ? ? ? ? ? tag_list.append([0, 1, 0])

? ? ? ? if num == 2:

? ? ? ? ? ? tag_list.append([1, 0, 0])

? ? return tag_list

RNN定義:

????????首先,為什么需要矩陣轉(zhuǎn)換呢端辱,我們可以得知n_steps*n_inputs是向量的長度梁剔,我們每次輸入僅僅是1/n_steps的數(shù)據(jù),而我們需要一整塊向量來計算最終的結(jié)果舞蔽,需要用上一次訓(xùn)練好的權(quán)重荣病,偏執(zhí)來計算,然后在這個基礎(chǔ)上在進(jìn)行擬合計算渗柿,可以根據(jù)lstm的結(jié)構(gòu)看出个盆。

def RNN(X, weights, biases):

? ? # 原始的 X 是 3 維數(shù)據(jù), 我們需要把它變成 2 維數(shù)據(jù)才能使用 weights 的矩陣乘法

? ? X = tf.reshape(X, [-1, n_inputs])

? ? # X_in = W*X + b

? ? X_in = tf.matmul(X, weights['in']) + biases['in']

? ? # X_in ==> (128 batches, 28 steps, 128 hidden) 換回3維

? ? X_in = tf.reshape(X_in, [-1, n_steps, n_hidden_units])

? ? # 使用 basic LSTM Cell.

? ? lstm_cell = tf.contrib.rnn.BasicLSTMCell(n_hidden_units, forget_bias=1.0, state_is_tuple=True)

? ? init_state = lstm_cell.zero_state(batch_size, dtype=tf.float32)? # 初始化全零 state

? ? outputs, final_state = tf.nn.dynamic_rnn(lstm_cell, X_in, initial_state=init_state, time_major=False)

? ? results = tf.matmul(final_state[1], weights['out']) + biases['out']

? ? return results

最后,定義main函數(shù)朵栖,即可開始訓(xùn)練:

with tf.Session() as sess:

? ? sess.run(init)

? ? step = 1

? ? while step * batch_size < max_samples:

? ? ? ? batch_x, batch_y = mnist.train.next_batch(batch_size)

? ? ? ? batch_x = batch_x.reshape((batch_size, n_steps, n_input))

? ? ? ? sess.run(optimizer, feed_dict = {x: batch_x, y: batch_y})

? ? ? ? if step % display_step == 0:

? ? ? ? ? ? acc = sess.run(accuracy, feed_dict = {x: batch_x, y: batch_y})

? ? ? ? ? ? loss = sess.run(cost, feed_dict = {x: batch_x, y: batch_y})

? ? ? ? ? ? print("Iter" + str(step * batch_size) + ", Minibatch Loss = " + \

? ? ? ? ? ? ? ? "{:.6f}".format(loss) + ", Training Accuracy = " + \

? ? ? ? ? ? ? ? "{:.5f}".format(acc))

? ? ? ? step += 1

? ? print("Optimization Finished!")

? ? test_len = 10000

? ? test_data = mnist.test.images[:test_len].reshape((-1, n_steps, n_input))

? ? test_label = mnist.test.labels[:test_len]

? ? print("Testing Accuracy:", sess.run(accuracy, feed_dict = {x: test_data, y: test_label}))

現(xiàn)在颊亮,我們可以看一下訓(xùn)練的結(jié)果:

可以看出訓(xùn)練的效果還是不錯,在自己的訓(xùn)練集上做測試出來結(jié)果還算滿意陨溅。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末终惑,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子门扇,更是在濱河造成了極大的恐慌雹有,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件臼寄,死亡現(xiàn)場離奇詭異霸奕,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)吉拳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門质帅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事临梗∥卸螅” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵盟庞,是天一觀的道長吃沪。 經(jīng)常有香客問我,道長什猖,這世上最難降的妖魔是什么票彪? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮不狮,結(jié)果婚禮上降铸,老公的妹妹穿的比我還像新娘。我一直安慰自己摇零,他們只是感情好推掸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著驻仅,像睡著了一般谅畅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上噪服,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天毡泻,我揣著相機(jī)與錄音,去河邊找鬼粘优。 笑死仇味,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的雹顺。 我是一名探鬼主播丹墨,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼无拗!你這毒婦竟也來了带到?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤英染,失蹤者是張志新(化名)和其女友劉穎揽惹,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體四康,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡搪搏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了闪金。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疯溺。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡论颅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出囱嫩,到底是詐尸還是另有隱情恃疯,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布墨闲,位于F島的核電站今妄,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏鸳碧。R本人自食惡果不足惜盾鳞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瞻离。 院中可真熱鬧腾仅,春花似錦、人聲如沸套利。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肉迫。三九已至吹艇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間昂拂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工抛猖, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留格侯,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓财著,卻偏偏與公主長得像联四,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子撑教,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

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