我试图使用PyTorch数据集。它适用于我的笔记本电脑。但是当我在服务器上运行它时,它无法迭代任何东西。当我尝试在 getitem 中打印数据时,会显示
Traceback (most recent call last):
File "test.py", line 98, in <module>
print(fileDataSet[0])
File "/home/cjunjie/NLP/DocSummarization/dataset.py", line 32, in __getitem__
print(abstracts)
UnicodeEncodeError: 'latin-1' codec can't encode character '\u22f1' in position 273: ordinal not in range(256)
我所做的是从PyTorch数据集中只包含整数和逗号的文件中读取数据:
def __getitem__(self, index):
abstracts = np.genfromtxt(os.path.join(self.abstract_path, self.abstract_list[index]),
delimiter=',').astype(int)
abstracts_length = abstracts[:, 0].flatten()
print(abstracts) // It works
abstracts = torch.LongTensor(abstracts[:, 1:])
// Error
print(abstracts)
articles = np.genfromtxt(os.path.join(self.article_path, self.article_list[index]),
delimiter=',').astype(int)
articles_length = articles[:, 0].flatten()
articles = torch.LongTensor(articles[:, 1:])
return {'abstracts_data': abstracts, 'abstracts_length': abstracts_length, 'articles_data': articles,
'articles_length': articles_length}
所以看起来LongTensor有问题,但我不知道为什么会出错。
答案 0 :(得分:0)
没有框架可用于测试它,但我的方法如下:
print(str(fileDataSet[0], encoding='utf-8', errors='ignore'))
当然它也可能不是utf-8,但你也可以改为另一种编码,忽略错误至少会让你打印字符串。
我的理解是它是由打印函数进行的字节字符串转换。
替代方案可能是直接使用bytes.decode(encoding =&#34; utf-8&#34;,errors =&#34; strict&#34;)(假设它是一个字节字符串)