我的AI之路(8)--体验用OpenCV 3的ANN进行手写数字识别及解决遇到的问题

9 篇文章 1 订阅
8 篇文章 0 订阅

      花了几周的晚上和周末时间断断续续看完了<<Learning OpenCV3 Computer Vision with Python Second Edition>>,把书上的示例代码全部拷贝到PyCharm里整理修改跑了一遍,收获不少,但是呢,不得不说这书的作者和编辑都是丢三落四不大严谨的人敲打,里面文字错误、代码错误不少啊(当然,作者是基于Python 2写的代码,所以一些API和module定义在Python 3下会报错,这些不算作者的错误大笑,读者自己找Python 3对应的API和定义做修改就是),好在我前面看过关于N本ML、TF之类的书了,自己知道那些错误是怎么回事该怎么修改。

       看到最后关于OpenCV ANN部分饶有兴趣想看看OpenCV的NN实现如何,于是跑那个例子:用MNIST数据库训练模型然后识别手写数字,书上提示去http://yann.lecun.com/exdb/mnist/下载数据库,结果这个官方网上是把训练和测试数据分开存放的,根本不是把所有数据放到一个大泡菜缸里(写成一个pkl包)大笑,而作者给出的示例代码却是:

       def load_data():
            mnist = gzip.open('./data/mnist.pkl.gz', 'rb')
            training_data, classification_data, test_data =
            cPickle.load(mnist)
            mnist.close()

            return (training_data, classification_data, test_data)

 

   这种读取数据的方式非常简洁,问题是你得找到mnist.pkl.gz这个数据库文件,网上搜到了一个 http://www.iro.umontreal.ca/~lisa/deep/data/mnist/mnist.pkl.gz 可以下载,然后把所有所有代码整理到PyCharm里,因为我使用的是Python3,需要把import cPickle改成import pickle,并修改上面代码中的cPickle.load为pick.load,然后
一运行,报错:

       

       这里错误 pickle.load(mnist) UnicodeDecodeError: 'ascii' codec can't decode byte 0x90 in position 614: ordinal not in range(128) 说明pickle.load()在读书数据库数据时出错了,编码格式不对,由于Python 3的默认字符集已经是utf-8而不是Python 2使用的ascii,于是试着在代码文件的开头加

        # -*- coding: iso8859-1 -*-

       或

       # encoding=iso8859-1

      结果还是报同样的错误,怎么回事呢?应该是pickle.load()默认使用了ascii,进入源码文件pickle.py果然看到:

 

def _load(file, *, fix_imports=True, encoding="ASCII", errors="strict"):
    return _Unpickler(file, fix_imports=fix_imports,
                     encoding=encoding, errors=errors).load()

        于是把 pickle.load(mnist) 改成 pickle.load(mnist,encoding='iso-8859-1'),再运行,果然OK 了得意

      

 

 

我的AI之路(1)--前言

我的AI之路(2)--安装Fedora 28

我的AI之路(3)--安装Anaconda3 和Caffe

我的AI之路(4)--在Anaconda3 下安装Tensorflow 1.8

我的AI之路(5)--如何选择和正确安装跟Tensorflow版本对应的CUDA和cuDNN版本

我的AI之路(6)--在Anaconda3 下安装PyTorch

我的AI之路(7)--安装OpenCV3_Python 3.4.1 + Contrib以及PyCharm

我的AI之路(8)--体验用OpenCV 3的ANN进行手写数字识别及解决遇到的问题

我的AI之路(9)--使用scikit-learn

我的AI之路(10)--如何在Linux下安装CUDA和CUDNN

我的AI之路(11)--如何解决在Linux下编译OpenCV3时出现的多个错误

我的AI之路(12)--如何配置Caffe使用GPU计算并解决编译中出现的若干错误

我的AI之路(13)--解决编译gcc/g++源码过程中出现的错误

我的AI之路(14)--Caffe example:使用MNIST数据集训练和测试LeNet-5模型

我的AI之路(15)--Linux下编译OpenCV3的最新版OpenCV3.4.1及错误解决

我的AI之路(16)--云服务器上安装和调试基于Tensorflow 1.10.1的训练环境

我的AI之路(16)--云服务器上安装和调试基于Tensorflow 1.10.1的训练环境

我的AI之路(17)--Tensorflow和Caffe的API及Guide

我的AI之路(18)--Tensorflow的模型安装之object_detection

我的AI之路(19)--如何在Windows下安装pycocotools PythonAPI

我的AI之路(20)--用Tensorflow object_detection跑raccoon数据集

我的AI之路(21)--用Tensorflow object_detection跑PASCAL VOC 2012数据集

我的AI之路(22)--使用Object_Detection_Tensorflow_API

我的AI之路(23)--在Windows下编译Bazel和使用Bazel编译tensorflow

 

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arnold-FY-Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值