資源簡介
mnist手寫字體識別之BP,包括了python代碼,mnist手寫字體數據集,本科實驗作業,講的是BP神經網絡算法的實現
代碼片段和文件信息
import?tensorflow?as?tf
from??tensorflow.examples.tutorials.mnist??import??input_data
import?matplotlib.pyplot?as?plt
mnist?=?input_data.read_data_sets(“MNIST_data/“?one_hot?=?True)
#建立BP神經網絡模型
num_classes?=?10#數據類型0-9
input_size?=?784#28*28
hidden_units_size?=?30#層節點數
batch_size?=?1000#
training_iterations?=?1#迭代次數
#?設置變量
X?=?tf.placeholder?(tf.float32?shape?=?[None?input_size])
Y?=?tf.placeholder?(tf.float32?shape?=?[None?num_classes])
W1?=?tf.Variable?(tf.random_normal?([input_size?hidden_units_size]stddev?=?0.1))#hidden_units_size?=?30#正態分布隨機數
B1?=?tf.Variable?(tf.constant?(0.1)[hidden_units_size])#常數為1,形狀為(11)
W2?=?tf.Variable?(tf.random_normal?([hidden_units_sizenum_classes]?stddev?=?0.1))#正態分布隨機數
B2?=?tf.Variable?(tf.constant?(0.1)?[num_classes])
#?搭建計算網絡?使用?relu?函數作為激勵函數?這個函數就是?y?=?max?(0x)?的一個類似線性函數?擬合程度還是不錯的
#隱藏層
hidden_opt?=?tf.matmul?(X?W1)?+?B1#矩陣運算
hidden_opt?=?tf.nn.relu?(hidden_opt)#激活函數
#輸出層
final_opt?=?tf.matmul?(hidden_opt?W2)?+?B2#矩陣運算
final_opt?=?tf.nn.relu?(final_opt)#激活函數最終的輸出結果
c?=?tf.square(Y?-?final_opt)
loss?=?tf.reduce_mean(c)
#loss?=?tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits?(labels?=?Y?logits?=?final_opt))#損失函數交叉熵方法
opt?=?tf.train.GradientDescentOptimizer?(0.1).minimize?(loss)
print(opt)
correct_prediction?=?tf.equal?(tf.argmax?(Y?1)?tf.argmax?(final_opt?1))
accuracy?=?tf.reduce_mean?(tf.cast?(correct_prediction?‘float‘))#將張量轉化成float
#?進行計算?打印正確率初始化
sess?=?tf.Session?()#生成能進行TensorFlow計算的類
init?=?tf.global_variables_initializer?()#全局變量
sess.run?(init)
for?i?in?range?(training_iterations)?:
????batch?=?mnist.train.next_batch?(batch_size)#每次迭代選用的樣本數100
????batch_input?=?batch[0]
????batch_labels?=?batch[1]
????training_loss?=?sess.run?([opt?loss]?feed_dict?=?{X:?batch_input?Y:?batch_labels})
????if?(i+1)?%?1000?==?0?:
????????train_accuracy?=?sess.run?(accuracy?feed_dict?=?{X:?batch_inputY:?batch_labels})
????????print?(“step?:?%d?training?accuracy?=?%g?“?%?(i+1?train_accuracy))
###測試集輸出結果可視化
def?res_Visual(n):
????#sess=tf.Session()
????#sess.run(tf.global_variables_initializer())
????final_opt_a=sess.run(tf.argmax?(final_opt?1)feed_dict?=?{X:?mnist.test.imagesY:?mnist.test.labels})
????plt.title(final_opt_a[n])
????print(final_opt)
????#圖片可視化展示
????img?=?mnist.test.images[n].reshape((2828))#讀取每行數據,格式為Ndarry
????plt.imshow(img?cmap=‘Greys‘?interpolation=‘nearest‘)#可視化
????plt.show()
res_Visual(14)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-06-21?12:45??作業四?BP神經網絡\MNIST_data\
?????文件?????1648877??2019-06-10?15:18??作業四?BP神經網絡\MNIST_data\t10k-images-idx3-ubyte.gz
?????文件????????4542??2019-06-10?15:18??作業四?BP神經網絡\MNIST_data\t10k-labels-idx1-ubyte.gz
?????文件?????9912422??2019-06-10?15:18??作業四?BP神經網絡\MNIST_data\train-images-idx3-ubyte.gz
?????文件???????28881??2019-06-10?15:18??作業四?BP神經網絡\MNIST_data\train-labels-idx1-ubyte.gz
?????文件????????2873??2019-06-13?14:48??作業四?BP神經網絡\bp.py
?????目錄???????????0??2019-06-21?12:45??作業四?BP神經網絡\
評論
共有 條評論