TensorFlow实现单隐层神经网络
生活随笔
收集整理的這篇文章主要介紹了
TensorFlow实现单隐层神经网络
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這里使用MNIST數據集,MNIST數據集的下載地址http://yann.lecun.com/exdb/mnist/
from tensorflow.examples.tutorials.mnist import input_data import tensorflow as tf mnist = input_data.read_data_sets(r"D:\PycharmProjects\tensorflow\MNIST_data", one_hot=True)# 創建默認的InteractiveSession,這樣后面執行的各項操作就無需指定Session了 sess = tf.InteractiveSession()in_units = 784 # 輸入節點數 h1_units = 300 # 隱含單元數 W1 = tf.Variable(tf.truncated_normal([in_units, h1_units], stddev=0.1)) b1 = tf.Variable(tf.zeros([h1_units])) W2 = tf.Variable(tf.zeros([h1_units, 10])) # 因為是識別數字,輸出單元數為10 b2 = tf.Variable(tf.zeros([10]))x = tf.placeholder(tf.float32, [None, in_units]) keep_prob = tf.placeholder(tf.float32)hidden1 = tf.nn.relu(tf.matmul(x, W1) + b1) # 使用relu激活函數可以解決梯度彌散 hidden1_drop = tf.nn.dropout(hidden1, keep_prob) # 使用Dropout方法,keep_prob是保留節點的概率 y = tf.nn.softmax(tf.matmul(hidden1_drop, W2) + b2) # 預測的標簽y_ = tf.placeholder(tf.float32, [None, 10]) # 正確的標簽 cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1])) # 損失函數 train_step = tf.train.AdagradOptimizer(0.3).minimize(cross_entropy) # 學習率是0.3# 訓練 tf.global_variables_initializer().run() # 一共采用3000個batch,每個batch100個樣本,一共300000個樣本 # 一個數據集55000個樣本,相當于對全數據集進行5輪(epoch)迭代 for i in range(3000):batch_xs, batch_ys = mnist.train.next_batch(100)train_step.run({x: batch_xs, y_: batch_ys, keep_prob: 0.75})# 測試 correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1)) accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) # 預測時keep_prob應該等于1,即使用全部特征來預測樣本的類別 print(accuracy.eval({x: mnist.test.images, y_: mnist.test.labels, keep_prob: 1.0}))?
總結
以上是生活随笔為你收集整理的TensorFlow实现单隐层神经网络的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: window下打开tensorboard
- 下一篇: 引用文献管理软件Mendeley