闲话不多说,直接上可视化这部分的代码
with tf.Session() as sess:
initial_opt=tf.global_variables_initializer()
sess.run(initial_opt)
step=30
for i in range(step):
xs,ys=mnist.train.next_batch(50)
train_loss,op=sess.run([loss,train_op],{x:xs,y_:ys,keep_prob:1.0})
#sess.run(train_step,feed_dict={x:batch[0],y_:batch[1]})
if i%10==0:
test_acc=sess.run(accuracy,feed_dict={x:xs,y_:ys,keep_prob:1.0})
print("step=%d, test_accuracy=%.2f"%(i,test_acc))
#将中间过程及数据可视化
w1_np=(w_conv1.eval()) #将张量转化为np数组
input_slice=train_data[100] #选取其中一张
input_image=np.reshape(input_slice,[28,28])
plt.figure("输入")
plt.imshow(input_image)
conv2_np=sess.run(h_conv2,feed_dict={x:[input_slice],keep_prob:1.0})
conv2_img=conv2_np[0,:,:,15]
plt.figure("卷积层输出")
plt.imshow(conv2_img)
```
以CNN网络为例,进行MNIST手写数字识别
在运行中注意的几点,也是在码代码调试过程中学的哈:
- 要在tf.session()这部分运行
- 将张量转换为numpy数组 w1_np=(w_conv1.eval())
- 在卷积之后的输出即为ndarray,后续处理参考numpy即可
附上输出图