雙向迴圈神經網路不僅能捕獲當前狀態與之前狀態的聯絡,也能捕獲與之後的狀態的聯絡。
#coding:utf-8
import tensorflow as tf
import numpy as np
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets('/tmp/data',one_hot = true)
learning_rate = 0.01
max_samples = 400000
batch_size = 128
display_step = 10
n_input = 28
#影象的寬度
n_steps = 28
#lstm的展開步數,影象的高
n_hidden = 256
n_classes = 10
x = tf.placeholder('float',[none,n_steps,n_input])#none 高度 寬度
y = tf.placeholder('float',[none,n_classes])
weights = tf.variable(tf.random_normal([2*n_hidden,n_classes]))
biases = tf.variable(tf.random_normal([n_classes]))
defbirnn
(x,weights,biases):
x = tf.transpose(x,[1,0,2])
x = tf.reshape(x,[-1,n_input])
x = tf.split(x,n_steps)
lstm_fw_cell = tf.contrib.rnn.basiclstmcell(n_hidden,forget_bias = 1.0)
lstm_bw_cell = tf.contrib.rnn.basiclstmcell(n_hidden,forget_bias = 1.0)
outputs,_,_ = tf.contrib.rnn.static_bidirectional_rnn(lstm_fw_cell,lstm_bw_cell,x,dtype = tf.float32)
return tf.matmul(outputs[-1],weights)+biases
pred = birnn(x,weights,biases)
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits = pred,labels = y))
optimizer = tf.train.adamoptimizer(learning_rate=learning_rate).minimize(cost)
correct_pred = tf.equal(tf.argmax(pred,1),tf.argmax(y,1))
accuracy = tf.reduce_mean(tf.cast(correct_pred,tf.float32))
init = tf.global_variables_initializer()
with tf.session() as sess:
sess.run(init)
step = 1
while step*batch_sizeif step % display_step ==0:
acc = sess.run(accuracy,feed_dict=)
loss = sess.run(cost,feed_dict=)
"step",step," acc = ",acc," lost = ",loss
step += 1
"finished!"
迴圈神經網路
原文 迴圈神經網路也可以畫成下面這個樣子 對於語言模型來說,很多時候光看前面的詞是不夠的,比如下面這句話 我的手機壞了,我打算 一部新手機。可以想象,如果我們只看橫線前面的詞,手機壞了,那麼我是打算修一修?換一部新的?還是大哭一場?這些都是無法確定的。但如果我們也看到了橫線後面的詞是 一部新手機 那...
迴圈神經網路
原文 迴圈神經網路也可以畫成下面這個樣子 對於語言模型來說,很多時候光看前面的詞是不夠的,比如下面這句話 我的手機壞了,我打算 一部新手機。可以想象,如果我們只看橫線前面的詞,手機壞了,那麼我是打算修一修?換一部新的?還是大哭一場?這些都是無法確定的。但如果我們也看到了橫線後面的詞是 一部新手機 那...
迴圈神經網路
特點 上一階段 時間步 的輸出作為輸入進入當前時間步。迴圈神經網路由迴圈神經原組成,迴圈神經元一般有兩個輸入,乙個是前階段的資訊,乙個是當前階段的資訊。同時產生乙個輸出,可以作為下一階段的輸入。迴圈神經網路採用多種模型。左上 每個時間步有乙個輸入,同時產生乙個輸出 右上 一串輸入,最後產生乙個輸出。...