リカレントニューラルネットワークLSTMコードの実装(07-3)

インポートtensorflow AS TF
 から tensorflow.examples.tutorials.mnist インポートINPUT_DATA 

#1 負荷データが設定 
MNIST = input_data.read_data_sets(" MNIST_data / "、one_hot = TRUE) 

入力画像が28 * 28である 
n_inputs = 28 入力ライン、ライン28データがある 
= 28 MAX_TIME 合計28行は 
lstm_size = 100 隠れ層 
n_classes = 10 10カテゴリ 
BATCH_SIZE = 50 50サンプルの各バッチについて 
// = BATCH_SIZEのn_batch mnist.train.num_examples 数の合計を算出しますロット

どれも最初の寸法は任意の長さでも示していません
tf.placeholder = X(tf.float32、[なし]、[784 ])
正しいラベル 
Y = tf.placeholder(tf.float32、[なし]、[10 ]) 

初期重み 
重み= tf.Variable(tf.truncated_normal( [lstm_size、n_classes]、STDDEV = 0.1 ))初期値妄想 
バイアス= tf.Variable(tf.constant(0.1、形状= [n_classes])) 

RNNネットワーク定義
DEF RNN(X-、重量、バイアス):
    入力 = tf.reshape(X-、[ - 1 、MAX_TIME、n_inputs])
    は、実質的に細胞LSTMを定義 
    lstm_cell = tf.contrib.rnn.BasicLSTMCell(lstm_size)
    を出力し、final_state = tf.nn.dynamic_rnn(lstm_cell、入力、DTYPE = TFを。 float32)
    結果tf.nn.softmax =(tf.matmul(final_state [1]、重み)+ バイアス)
     リターン結果

計算結果がRNN返さ 
=予測をRNN(X、重み、バイアス)
 #の損失関数 
cross_entropy = tf.reduce_mean(TF。 nn.softmax_cross_entropy_with_logits(= logits予測、ラベル= Y))
使用AdamOptimizer最適化 
trian_step tf.train.AdamOptimizer =(4-1E ).minimize(cross_entropy)
ブールリストに保存結果を 
correct_prediction = tf.equal( tf.argmax(Y ,. 1)、tf.argmax(予測,. 1)) テンソル位置の最大値の一次元位置にARGMAX復帰精度を求める 
= tf.reduce_mean accuarcy(tf.cast(correct_prediction、 tf.float32) 把correct_prediction变为のfloat32类型初始化 
INIT = tf.global_variables_initializer()

のSESとしてtf.Session()を有する:
    sess.run(INIT)
    のためのエポックにおける範囲(6 のためのバッチにおける範囲(n_batch):
            batch_xs、batch_ys = mnist.train.next_batch(BATCH_SIZE)
            sess.run(trian_step、feed_dict = {X:batch_xs、Y:batch_ys})

        ACC = sess.run(accuarcy、feed_dict = {X:mnist.test.images、Y:mnist.test .labels})
         プリント" イーター" + STR(エポック)+ "、テストAccuarcy = " + STR(ACC))

結果:

 

おすすめ

転載: www.cnblogs.com/go-ahead-wsg/p/12543627.html