インポート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))
結果: