环境搭建好了,第一个想实践的就是用自己的数据训练网络。
参考链接:pytorch用自己的数据训练自己写的网络 - 请叫我小皇帝 的博客 - CSDN博客
步骤和代码是按照上面那个博客链接来的,以下是我实际运行的时候遇到的坑以及如何填坑。
1.在from skimage import io出现了问题,显示我没有安装相应模块。
然后我就打开Anaconda prompt进入Pytorch环境,输入pip install skimage
等待安装。。。

Scikit-image是图像处理和机器视觉的一个算法收集包,官方手册链接如下:skimage — skimage v0.14.2 docs。
2. AssertionError 断言函数抛出异常

出错的是mnist.py里面带的函数,出错部分如下
def read_image_file(path):
with open(path, 'rb') as f:
data = f.read()
assert (data[:4]) == 2051
这里在读取二进制文件后根据data前四位的码来判断文件类型,是image还是label。


读出来的码不是代表图像的2051,抛出异常。单步运行,检测错误的出错点。
>>>path = "H:/learning/pytorch/fashion_mnist/train-images-idx3-ubyte"
>>>f = open(path,"rb")
>>>data = f.read()
>>>data[:4]
Out[11]: b'\x00\x00\x08\x03'
到这里显示data前四位的值是'\x00\x00\x08\x03',和上图image的十六进制值是一样的。然后解码。
>>>b = codecs.decode(a,'hex')
Traceback (most recent call last):
File "<ipython-input-23-57d16b9c49c6>", line 1, in <module>
b = codecs.decode(a,'hex')
NameError: name 'codecs' is not defined
推测应该是codecs包的问题,下载相应package。打开Anaconda navigator,在相应的环境里(我的是Pytorch)搜索codecs,出现相应的包,点击apply。

下载完成之后,再将mnist.py里面的assert (data[:4]) == 2051改成assert get_int(data[:4]) == 2051,然后运行成功。

网友评论