Pycharm 单步调试

Pycharm 单步调试

    • 1.添加断点
    • 2.调试断点
    • 3.打印权重矩阵和偏置值
    • 4.源代码

1.添加断点

断点的添加如下图所示在代码前面左键单击即可
Pycharm 单步调试_第1张图片

2.调试断点

点击那个绿色的甲虫图标,进行断点调试。
Pycharm 单步调试_第2张图片


点击调试按钮后,代码运行到第一个断点处
Pycharm 单步调试_第3张图片


点击Step Over 或者按F8,我们继续往下运行,到下一个断点,按钮如下图所示:
Pycharm 单步调试_第4张图片


可以看到,程序运行到新的断点处,并且在上一行代码中,显示W此时的值
进行多次调试之后,可以看到许多变量的值,并且在不断的调试之中,动态变化。Pycharm 单步调试_第5张图片


其中 该代码将数据集分成了859块,每块有64张照片供训练。在每个批次中的batch_x和batch_y代表,每次抽取64张照片进行训练,batch_x的矩阵形式为64x784,batch_y的矩阵形式为64x10。进行到下一批次时,也将更改batch_x和batch_y的值。
Pycharm 单步调试_第6张图片
点击可跳转到光标处,并且该行处表示一个批次结束,可以看到acc:0.8923
Pycharm 单步调试_第7张图片

3.打印权重矩阵和偏置值

最后出于好奇,我打印出最终的W的值,可以看到训练之后的情况

Pycharm 单步调试_第8张图片
确实发生了变化。

4.源代码

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
import numpy as np
np.set_printoptions(threshold=np.inf)
# 载入数据集
mnist = input_data.read_data_sets("MNIST_data", one_hot=True)

# 批次大小
batch_size = 64
# 计算一个周期一共有多少个批次
n_batch = mnist.train.num_examples // batch_size

# 定义两个placeholder
x = tf.placeholder(tf.float32,[None,784])
y = tf.placeholder(tf.float32,[None,10])

# 创建一个简单的神经网络:784-10
W = tf.Variable(tf.truncated_normal([784,10], stddev=0.1))
b = tf.Variable(tf.zeros([10]) + 0.1)
prediction = tf.nn.softmax(tf.matmul(x,W)+b)

# 二次代价函数
# loss = tf.losses.mean_squared_error(y, prediction)
# 交叉熵
loss = tf.losses.softmax_cross_entropy(y, prediction)

# 使用梯度下降法
train = tf.train.GradientDescentOptimizer(0.3).minimize(loss)

# 结果存放在一个布尔型列表中
correct_prediction = tf.equal(tf.argmax(y,1),tf.argmax(prediction,1))
# 求准确率
accuracy = tf.reduce_mean(tf.cast(correct_prediction,tf.float32))

with tf.Session() as sess:
    # 变量初始化
    sess.run(tf.global_variables_initializer())
    # 周期epoch:所有数据训练一次,就是一个周期
    for epoch in range(21):
        for batch in range(n_batch):
            # 获取一个批次的数据和标签
            batch_xs,batch_ys = mnist.train.next_batch(batch_size) #每一次提取64张图片进行训练
            sess.run(train,feed_dict={x:batch_xs,y:batch_ys})
        # 每训练一个周期做一次测试
        acc = sess.run(accuracy,feed_dict={x:mnist.test.images,y:mnist.test.labels}) #mnist.test.images和mnist.test.labels是测试集,用来测试
        print("Iter " + str(epoch) + ",Testing Accuracy " + str(acc))
    writer = tf.summary.FileWriter('logdir/', sess.graph)
    W_print = sess.run(W)
    print("W: "+str(W_print))
   

你可能感兴趣的:(tensorflow)