所以,我正在尝试开始使用 Tensorflow 和 Python 中的文本分类等。
尝试此类任务的第一步是构建嵌入。因此,我开始使用 GloVe 预训练向量 840B 300d 集(大约 5 GB)。
尝试加载数据集本身时,我立即遇到了问题。我运行基于 CPU 的 Tensor-Flow 版本(没有 NVidia/GPU 的优势:()
它被卡住了很长时间,似乎没有解决方法。我尝试分阶段传递输入,如下所示。
文件已经被初始化为 file=('glove.840B.300d.txt','r') 并且可以工作。现在...
def scanlin(n):
for i in range(n,n+20):
line=file.readline(i)
if line=='':
break
splitline=line.split()
word=splitline[0]
embedding=[float(val) for val in splitline[1:]]
model[word]=embedding
print('Done')
它成功执行,但是当我将该函数称为 scanlin(1) 时,它说
回溯(最后一次调用):文件“”,第 1 行,文件“”,第 8 行,scanlin 文件“”,第 8 行,ValueError:无法将字符串转换为浮点数:'-'
然后我尝试将“嵌入”设置为“embedding.append()”但同样的错误。
但是,当我在有限的范围内这样做时,它可以通过一些努力达到 n=50000 个单词。
def loadset(file):
i=1
for line in file:
if(i>n):
break
values=line.strip().split(" ")
word=values[0]
coefs= [float(val) for val in splitLine[1:]]
embeddings_index[word]=coefs
i=i+1
return coefs,embeddings_index
以上工作,我可以加载每个单词的嵌入,但是如何更改它以顺序处理每次调用的输入数据并将其完全集成到加载数据集中?这是带有 Tensorflow 的 Ubuntu 16.04 上的 Python 3.5,我需要尽快处理更大的数据集。