将卷积网络过程可视化——以MNIST手写数字识别为例

本文通过CNN网络实现MNIST手写数字识别,详细展示了使用TensorFlow搭建模型、训练及可视化过程。从数据预处理到模型训练,再到卷积层输出可视化,深入解析了CNN在图像识别中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

闲话不多说,直接上可视化这部分的代码

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即可

附上输出图

输入图片

卷积输出

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值