出错场景
10.4. Bahdanau 注意力 — 动手学深度学习 2.0.0 documentation在这里学习注意力机制时,代码放到PyCharm里面报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xaf in position 33: illegal multibyte sequence
查错
刚开始看到控制台打印错误信息,出错在代码的这一行:
train_iter, src_vocab, tgt_vocab = d2l.load_data_nmt(batch_size, num_steps)
报错信息是Downloading ..\data\fra-eng.zip from http://d2l-data.s3-accelerate.amazonaws.com/fra-eng.zip
认为是文件下载的问题,但是我复制地址在浏览器直接下载没有问题。所以排除了这个地方的错误。
之后看到报错信息的最后一条是
UnicodeDecodeError: 'gbk' codec can't decode byte 0xaf in position 33: illegal multibyte sequence
这个错误出现的位置是D:\anaconda3\envs\d2l\Lib\site-packages\d2l\torch.py的第858行:
with open(os.path.join(data_dir, 'fra.txt'), 'r') as f:
说明使用了GBK对下载的文件进行解码,应该是这里出现的问题。
于是将此行代码加上encoding='utf-8':
with open(os.path.join(data_dir, 'fra.txt'), 'r', encoding='utf-8') as f:
之后重新运行代码,顺利解决问题。