debug模式
點擊運(yùn)行標(biāo)志旁的小甲蟲標(biāo)志級進(jìn)入debug模式,,也可以右鍵代碼進(jìn)入
debug模式中的按鍵解釋
斷點設(shè)置
在代碼前左鍵點擊會生成紅色的點
開始debug
點擊小甲蟲標(biāo)志之后,,代碼會停在紅點的前一行,,并且會把每一行的數(shù)據(jù)大小,,類型給顯示在對應(yīng)的代碼后面,控制框也可看到 之后可以使用單步調(diào)試也就是F8讓他逐行運(yùn)行代碼 運(yùn)行經(jīng)過數(shù)據(jù)轉(zhuǎn)入代碼之后可以看到 batch_xs,batch_ys中的數(shù)據(jù)信息,,包括他的最值,、類型、元素數(shù)量以及shape,。 當(dāng)需要跳過循環(huán)的時候可以使用F9跳到光標(biāo)位置,。如果自己沒有設(shè)定光標(biāo)位置,則會運(yùn)行整個代碼,。 可以看到acc(精度為)再次按下F9可以得到下一個循環(huán)的精度0.8333是越來越接近1的
也可以查看每個周期的權(quán)重W會發(fā)現(xiàn)是動態(tài)變化的
代碼
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
from tensorflow.examples.tutorials.mnist import input_data
# 載入數(shù)據(jù)集
mnist = input_data.read_data_sets("MNIST_data", one_hot=True)
# 批次大小
batch_size = 64
# 計算一個周期一共有多少個批次
n_batch = mnist.train.num_examples // batch_size
# 定義兩個placeholder
#x表示輸入圖片的數(shù)據(jù),,y表示類別個數(shù)。x被拉伸成為1×784,,y被拉伸成為1×10
x = tf.placeholder(tf.float32,[None,784])
y = tf.placeholder(tf.float32,[None,10])
# 創(chuàng)建一個簡單的神經(jīng)網(wǎng)絡(luò):784-10
#創(chuàng)建規(guī)格為784×10方差為0.1的權(quán)重矩陣和規(guī)格為1×10的偏執(zhí)向量
W = tf.Variable(tf.truncated_normal([784,10], stddev=0.1))
b = tf.Variable(tf.zeros([10]) + 0.1)
#對x*w+b使用softmax激活函數(shù)
prediction = tf.nn.softmax(tf.matmul(x,W)+b)
# 二次代價函數(shù)
# loss = tf.losses.mean_squared_error(y, prediction)
# 交叉熵 000
loss = tf.losses.softmax_cross_entropy(y, prediction)
# 使用梯度下降法
train = tf.train.GradientDescentOptimizer(0.3).minimize(loss)
# 結(jié)果存放在一個布爾型列表中
#tf.argmax(y,1)得到里面的最大值
#tf.equal()判斷函數(shù)內(nèi)部的值是否一樣,,一樣為TRUE否則為FALSE
correct_prediction = tf.equal(tf.argmax(y,1),tf.argmax(prediction,1))
# 將上面correct_prediction的格式轉(zhuǎn)化為32位浮點型,并且求平均值,,得到準(zhǔn)確率
accuracy = tf.reduce_mean(tf.cast(correct_prediction,tf.float32))
with tf.Session() as sess:
# 變量初始化
sess.run(tf.global_variables_initializer())
# 周期epoch:所有數(shù)據(jù)訓(xùn)練一次,,就是一個周期
for epoch in range(21):
for batch in range(n_batch):
# 獲取一個批次的數(shù)據(jù)和標(biāo)簽
batch_xs,batch_ys = mnist.train.next_batch(batch_size)
sess.run(train,feed_dict={x:batch_xs,y:batch_ys})
# 每訓(xùn)練一個周期做一次測試輸出周期數(shù)和準(zhǔn)確率
acc = sess.run(accuracy,feed_dict={x:mnist.test.images,y:mnist.test.labels})
print("Iter " + str(epoch) + ",Testing Accuracy " + str(acc))
w_print = str(sess.run(W))
#在當(dāng)前目錄下創(chuàng)建logdir文件夾,內(nèi)部存放生成文件
writer = tf.summary.FileWriter('logdir/', sess.graph)
#w_print = sess.run(W)
#print(str(w_print))
#b_print = sess.run(b)
#print(str(b_print))
|